직원 등록 플로우
개요
필수 서류 관리
직원 등록 시 필수 서류 자동 생성
직원을 새로 등록하면 기본 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에 따른 현재 미완료(□) 항목:
관련 기능 및 페이지
신규 업체 초기 세팅 가이드
초기 설정 순서 (완료)
신규 업체 로그인 시 세팅 메뉴얼을 제공하도록 초기 설정 가이드 순서가 실제 세팅 흐름에 맞게 재조정되었다. fix-task-0702 (26년 07월 02일 수정사항)
- 1.회사 기본값 설정
- 2.직인·로고 등록
- 3.부서 등록
- 4.기본 정책 등록
- 5.직원 등록
- 6.관리자 등록
고객 문의 채널 (검토 중)
신규 업체(예: 모아댄 의원)의 초기 세팅이 복잡하다는 피드백에 따라 원격 지원/1:1 채팅/고객센터 등 문의 채널 운영 방안을 검토 중이다. 홈페이지 내 도입문의 및 1:1 채팅 문의 기능 추가도 병행 검토 중이다. fix-task-0702 (26년 07월 02일 수정사항)
- 직원 재직 상태 변경 워크플로: 입사·퇴사·휴직 상태 전환
- 휴일 관리 스펙: 휴일 지정 및 휴일근무 처리 정책
- 액션 아이템: 등록 플로우 관련 미해결 작업 목록
- 의사결정 로그: 주요 결정 사항 기록
- 사직서 처리 워크플로 스펙: 사직서 제출·결재 프로세스
- fix-task-0702 (26년 07월 02일 수정사항): 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 | 관리자 해제를 수행한다 | 해당 계정의 관리자 권한이 제거된다 |