/SimpleHR project
SimpleHR project

직원 등록 플로우

conceptedited by Cairni · 방금 · AIv6

개요

직원 등록 플로우는 신규 직원을 시스템에 초대·등록하는 시점부터 필수 서류 제출, 근로계약서 서명, 근무 정책 연동까지 이어지는 일련의 절차를 의미한다. 현재 시스템에서 여러 단계의 버그가 수정되고 기능이 개선되었으며, 일부 항목은 추가 작업이 필요한 상태이다. fix-task-0611.md


필수 서류 관리

직원 등록 시 필수 서류 자동 생성

직원을 새로 등록하면 기본 3개의 필수 서류가 자동으로 생성된다. 그러나 현재 목록 필수서류 표헤더에 서류가 제대로 표시되지 않는 버그가 존재한다. fix-task-0611.md

  • 현황: 필수 서류는 생성되지만, 목록 헤더에 "-" 기호로만 표시됨
  • 진행 상태: 계획 중

사직서 제출 프로세스 (확인 완료)

직원 사직서 제출은 별도 전용 기능 없이 양식 편집기를 통해 처리한다. 회사가 사직서 양식을 등록(결재가 필요하면 기안서 유형으로 설정)하면, 직원은 서류 결재 > 서류 작성 탭에서 사직서를 선택하여 작성·제출할 수 있다. 상세 프로세스는 사직서 처리 워크플로 스펙을 참고한다. fix-task-0702 (26년 07월 02일 수정사항)


직원 정보 수정 및 UI 버그 수정

부서 변경 기능 개선 (완료)

직원관리 화면에서 직원 정보를 수정할 때 부서를 변경할 수 있도록 개선되었다. fix-task-0611.md

문제점:

  • 백엔드/API는 부서 변경 기능이 완전히 구현되어 있었으나, 프론트엔드 수정 모달에 부서 선택 UI가 없었음

해결 방법:

  • 수정 모드에서 소속부서 필드를 드롭다운으로 교체 (employees/page.tsx)
  • 근로정책은 수동 유지 (자동 변경 미적용)

스크롤 고정 버그 수정 (완료)

직원관리에서 정보를 수정하고 저장하면 페이지 스크롤이 해제되지 않는 문제가 발생했다. fix-task-0611.md

원인:

  • 드롭다운(선택 박스)이 열릴 때 화면 스크롤을 잠그는 처리를 직접 구현했는데, 드롭다운 라이브러리 자체에도 동일한 잠금 기능이 내장되어 있었음
  • 두 곳에서 동시에 스크롤을 껐다 켜려다 보니 순서가 엇갈려 스크롤이 잠긴 채로 남음

해결 방법:

  • 직접 만든 스크롤 잠금 코드 제거
  • 라이브러리 내장 기능만 사용하도록 변경 (simple-select.tsx, date-picker.tsx, period-picker.tsx)

근무 일정 표시 개선 (진행 중)

현황

근무 탭에 현재 근무 일정만 표시되고 있으며, 실제 출퇴근 시간 정보도 함께 노출할 필요가 있다. fix-task-0611.md

검토 중인 옵션

옵션 A: 별도 탭 신설

  • 근무 일정 탭 vs 실제 근무 시간 탭 분리

옵션 B: 기존 근무표에 실제 근무 시간을 함께 표기

최종 방향은 아직 결정되지 않았으며, 레이아웃 설계가 진행 중이다.


근로계약서 관리

탄력근로제 서면합의서 표시 개선 (진행 중)

탄력근로제 서면합의서 제출 시 근로계약서 탭에서 구분되어 표시되도록 개선 중이다. fix-task-0611.md

문제점:

  • 탄력근로제 서면합의서를 제출해도 근로계약서 탭에서 "근로계약서"로만 표시됨

원인:

  • ContractOverrideEditor에 contractFormId가 전달되지 않아 "근로계약서" 이름으로 폴백됨

개선 방안 (진행 중):

  • contracts/page.tsx에서 contractFormId={detailDrawer.form_id} 전달
  • 계약 이력 미리보기 모달도 live context + edited_body 적용으로 동일 내용 표시

계약서 상세보기 미리보기 개선 (완료)

근로계약서 상세보기의 리스트 각 항목을 클릭하면 근로계약서 미리보기 모달이 표시되도록 개선되었다. fix-task-0611.md

페이징 처리 통일 (계획 중)

근로계약서 페이징 처리를 통일하는 작업이 계획 중이다. fix-task-0611.md


재직 상태 변경 및 근태 관리

출퇴근관리 화면 - 날짜별 재직인원 연동 (완료)

출퇴근관리 화면에서 날짜를 변경해도 현재 전체 인원으로 표시되던 문제가 해결되었다. fix-task-0611.md

원인 1: update_employee()에서 EMP_RETIRED 전환 시 resignation_date 미설정

  • 해당 직원이 모든 날짜 headcount에서 제외되는 버그 발생

원인 2: hire_date가 자정이 아닌 시간(예: 05:30 UTC)으로 저장된 경우

  • 당일 날짜 비교에서 제외되는 버그 발생

원인 3: _build_unpresent_rows(전체 인원 목록)의 필터가 headcount 기준과 달라 숫자 불일치 발생

해결 방법:

  • 해결 1: update_employee()EMP_RETIRED 전환 시 resignation_date = 오늘 자동 설정 추가
  • 해결 2: hire_date 비교를 func.date(hire_date) <= 날짜로 변경 (시간 제거 후 날짜만 비교)
  • 해결 3: _build_unpresent_rows 필터를 headcount 기준과 동일하게 정렬 (오늘 퇴사자·EMP_ONBOARDING 제외)
  • 실서버 쿼리 → fix_retired_resignation_date 마이그레이션으로 대체 (배포 시 자동 실행)

관리자 권한 및 등급 관리

관리자 최고관리자 설정 버그 수정 (완료)

관리자 최고관리자로 설정했는데 배포 후 이전 상태로 돌아가는 문제가 해결되었다. fix-task-0611.md

원인:

  • 서버 재시작마다 admin_status_realign_migration이 실행되며, 부서장이 아닌 모든 관리자를 강등 처리
  • 수동 부여된 최고관리자도 구분 없이 강등됨

해결 방법:

  • _recompute_admin_status_for_user에서 admin_role_id가 조직관리자(부서장 자동 부여)가 아닌 경우 강등 차단
  • 파일: organization_service.py

동일 브라우저 동시접속 차단 (완료)

같은 브라우저에서 여러 계정으로의 동시접속을 차단하는 기능이 구현되었다. fix-task-0611.md


이용요금(과금) 정책

가격 체계

fix-task-0611.md에 따른 가격 정책:

직원 수요금
5명 이하무료
5~10명20,000원 (기본비용 청구)
10명 초과기본 20,000원 + 초과분(1인당 요금 적용)

플랜별 단가 (10명 초과 시):

플랜단가포함 기능
무료0원급여관리/이러닝 제외
베이직2,000원/1인당이러닝 메뉴 제외
스탠다드3,000원/1인당전체 메뉴
스페셜10,000원/1인당전체 메뉴 + 페이롤 연동

자동 계산 적용 (계획 중)

10명에서 1명 추가 시 기본 20,000원 + 추가 2,000원(베이직 기준) = 22,000원을 자동 계산해서 청구하는 기능이 계획 중이다. fix-task-0611.md


추가 관리 요청사항

원가 및 정산

fix-task-0611.md에 따른 미진행 작업:

  • 월 단가(원가) - 서버 및 유지관리비용 산정
  • 업체별 판매금액 차등 적용 및 정산 페이지 구축
  • 예) 업체 A: 3,000원 → 2,000원 할인 적용
  • 예) 업체 B: 3,000원 → 4,000원 추가요금 발생 시 수정 적용

심플HR 홍보 관련

fix-task-0611.md에 따른 작업 현황:

항목상태비고
홈페이지 업데이트 (이용요금/제품/회사/약관)계획 중
기본회사소개서 홈페이지에서 다운로드 제공계획 중
사용신청하기 > 즉시 승인 > 관리자메일 발송 > 로그인계획 중

근로계약서 직인 관리

기존 직인 없는 계약서 확인 (진행 중)

기존에 직인이 없었던 계약서에 직인을 등록한 후 승인할 때, 근로계약서에 직인이 남아있는지 검증이 필요하다. fix-task-0611.md

분석 완료:

  • 직인은 context_snapshot 또는 context 키로 EmployeeContract.content에 저장됨
  • sign_specific_contract (관리자 발송→직원 서명): context_snapshot.company_seal 저장
  • sign_my_required_contract (직원 자체 서명): context.company_seal 저장

수정 완료:

  • 관리자 계약서 목록 미리보기에서 context_snapshot → context → previewContext 우선순위로 직인 표시
  • 이전에는 항상 현재 직인(previewContext)을 사용하여 직인 교체 시 이전 계약서도 바뀌는 버그 있었음

테스트 미완료: 직인 교체 후 이전 계약서 직인 유지 여부 최종 확인 필요

  • 테스트 계정: seal.test@simplehr.co.kr / Test1234! (샘플회사, 개발팀, 사번 SEAL-TEST)
  • 테스트 순서: 직인 A 등록 → 계약서 발송 → 직원 서명 → 직인 B 교체 → 관리자 승인 → 미리보기에서 직인 A 표시 확인

서류 유형 관리 및 UI 개선

붙여넣기 기능 개선 (계획 중)

직원이 서류 유형을 붙여넣기하는 기능을 제거하고, 관리자만 엑셀로 붙여넣기하도록 변경할 계획이다. fix-task-0611.md

  • 서류 유형 붙여넣기 제거 (직원 대상)
  • 붙여넣기 유형의 경우에도 관리자가 설정한 양식은 직원에게 보여지도록 개선

결재 관리 UI 개선 (계획 중)

기업사용자의 신청 결재 화면 UI 개선이 계획 중이다. fix-task-0611.md

  • 기업사용자 > 신청 결재 > 결재하기 (user/approval) UI 개선

「기안서 작성」→「서류 작성」명칭 변경 (완료)

사이드바, 상단바, 모바일 탭, 페이지 제목 모두 "기안서 작성" → "서류 작성"으로 변경되었다. 직원은 서류 결재 > 서류 작성 탭에서 사직서 등 양식을 선택하여 작성할 수 있다. fix-task-0702 (26년 07월 02일 수정사항)


미완료 항목 요약

fix-task-0611.md에 따른 현재 미완료(□) 항목:

직원 등록 관련 미완료 작업 (0611 기준)AI · 출처 클릭
차단 이슈 🔴2
첫 기업 가입 후 최고 관리자 생성 → 권한 설정 실패
fix-task-0611.md
직원 새로 등록 후 필수 서류 목록 헤더에 미표시
fix-task-0611.md
진행 중 ⏳3
근로계약서 탄력근로제 서면합의서 구분 표시
fix-task-0611.md
직원 근무 일정 표시 개선 (모바일·PC, 옵션 검토)
fix-task-0611.md
기존 직인 없는 계약서 직인 유지 검증
fix-task-0611.md
계획 중 📋5
10명 초과 자동 과금 계산 적용
fix-task-0611.md
월 단가(원가) 및 정산 페이지
fix-task-0611.md
홈페이지 이용요금 및 회사정보 업데이트
fix-task-0611.md
서류 붙여넣기 기능 제거 및 양식 개선
fix-task-0611.md
결재하기(user/approval) UI 개선
fix-task-0611.md

관련 기능 및 페이지


신규 업체 초기 세팅 가이드

초기 설정 순서 (완료)

신규 업체 로그인 시 세팅 메뉴얼을 제공하도록 초기 설정 가이드 순서가 실제 세팅 흐름에 맞게 재조정되었다. fix-task-0702 (26년 07월 02일 수정사항)

  1. 1.회사 기본값 설정
  2. 2.직인·로고 등록
  3. 3.부서 등록
  4. 4.기본 정책 등록
  5. 5.직원 등록
  6. 6.관리자 등록

고객 문의 채널 (검토 중)

신규 업체(예: 모아댄 의원)의 초기 세팅이 복잡하다는 피드백에 따라 원격 지원/1:1 채팅/고객센터 등 문의 채널 운영 방안을 검토 중이다. 홈페이지 내 도입문의 및 1:1 채팅 문의 기능 추가도 병행 검토 중이다. fix-task-0702 (26년 07월 02일 수정사항)


E2E 테스트 시나리오 (직원관리)

E2E 테스트 시나리오 - Part 1 관리자에서 직원 등록·관리와 관련된 주요 시나리오를 정의하고 있다. E2E 테스트 시나리오 - Part 1 관리자 (대시보드, 근태, 직원관리)

신규 직원 등록

#시나리오기대 결과
1관리자가 직원 단건 등록을 수행한다직원이 등록되고 목록에 표시된다
2관리자가 직원 일괄 등록을 수행한다복수 직원이 일괄 등록된다
3신규 직원 등록 후 근로계약서 서명이 필요한 경우서명 완료 전까지 hard/soft gate 적용

필수 서류 및 서류보관함

#시나리오기대 결과
1직원 등록 후 필수 서류 현황을 조회한다직원서류보관함에서 제출 현황이 표시된다
2관리자가 필수서류를 승인/반려한다해당 서류의 상태가 변경된다

인사발령 및 사직 처리

#시나리오기대 결과
1관리자가 부서이동/승진/승급 발령을 등록한다결재선 승인/반려 흐름이 동작한다 (→ personnel-order-approval-spec
2관리자가 퇴직을 등록하고 사직서를 승인한다해당 직원의 로그인이 차단된다 (→ resignation-workflow

관리자 관리

#시나리오기대 결과
1최고관리자가 신규 관리자를 등록한다관리자 목록에 추가되고 권한이 부여된다
2관리자 등급 및 권한을 수정한다변경된 권한이 즉시 반영된다 (→ admin-role-management-spec
3관리자 해제를 수행한다해당 계정의 관리자 권한이 제거된다
Made with CairniExplore public wikis →