사직서 처리 워크플로 스펙
개요
Simple HR 에서 직원이 사직 의사를 밝혔을 때 거치는 일련의 단계—사직서 제출, 관리자 승인, 최종 퇴사 처리—를 정의하는 워크플로 스펙이다.
26년 06월 26일 수정사항 기준에서는 해당 플로우가 미구현(설계 미확정) 상태였으나, 26년 07월 02일 수정사항 기준으로 처리 방식이 확정되어 구현이 완료되었으며, 07월 03일 수정사항에서 DB 모델·API·관리자 UI·결재선 연동·퇴직 처리(EMP_RETIRED)까지 전 영역이 구현 완료되었으며, 07월 09일 수정사항에서 사직서 처리가 Document(서류 결재) 기반으로 전환되고 근태결재 탭에서 사직 건이 분리되었다. fix-task-0702 (26년 07월 02일 수정사항) fix-task-0703 (26년 07월 03일 수정사항) fix-task-0709
현황 요약
확정된 처리 흐름
주요 변경 사항 (2026-07-03)
주요 변경 사항 (2026-07-06)
주요 변경 사항 (2026-07-09)
07월 09일 수정사항에서 사직서 처리 구조가 Document(서류 결재) 기반으로 전환되었다. fix-task-0709
- 사직서 신청 — 관리자 사직 등록 시 Document(서류 결재) 기반으로 변경:
RequestApprovalStep→Document + DocumentApprovalStep구조로 전환 - 근태결재 탭에서 사직 건 제거: 기존에 휴가·연장근로 사이에 사직 건이 섞여 노출되던 문제 해소 — 이제 서류결재 탭에서 승인/반려 처리
- 서류신청에서 퇴사일 지정 승인/반려 처리: 사직서는 내역 확인 + 관리자 직접 등록 역할만 담당
- 빈 사직서 안내 메시지 추가: PC 및 모바일 모두 반영
- 통합 테스트 4건 추가
처리 채널 통합 원칙: 사직 관련 결재는 서류결재 탭에서 일원화하여 처리한다. 관리자 사직처리 등록 시에도 서류 결재로 흐른다. fix-task-0709
07월 06일 우선수정사항에서 사직서 워크플로와 직접 관련된 항목이 완료되었다. fix-taskNew-0706 (26년 07월 06일 우선수정사항)
- 퇴직 처리된 직원 계정 접근 차단: 탈퇴 시 DB 삭제 없이 로그인만 차단하는 방식으로 구현 완료
- 사직서 분류 체계 정비 및 기본 생성 재확인: 테넌트 생성 시 사직서 기본 포함, 회사 양식 추가 화면에 사직서 분류 추가 완료
사직서 처리 전 영역 구현 완료
07월 03일 수정사항에서 사직서 처리에 필요한 모든 레이어가 구현 완료되었다. fix-task-0703 (26년 07월 03일 수정사항)
- DB 모델 · API(CRUD/승인/반려): Resignation 엔티티 및 관련 엔드포인트 완성
- 관리자 UI: 목록·등록·승인·반려 화면 완성
- 직원 기안서 최종승인 → Resignation 자동 생성 연동 완성
- 결재선(RequestApprovalStep) 연동 완성
- 퇴직 처리(EMP_RETIRED) 완성
form_category=RESIGNATION분류 완성 (기존 문자열 매칭 방식에서 전환)- 신규 테넌트 생성 시 사직서 기본 양식 자동 생성 및 회사 양식 추가 화면에 RESIGNATION 분류 추가
처리 경로는 두 가지: 경로 A(관리자 직접 등록 — 해고/권고사직, 결재선 유무에 따라 즉시 처리 또는 결재 진행), 경로 B(직원 기안 제출 → Document 최종승인 → Resignation 자동 생성(SUBMITTED) → 관리자 COMPLETED 처리). fix-task-0703 (26년 07월 03일 수정사항)
주요 변경 사항 (2026-07-02)
메뉴 명칭 변경: 기안서 작성 → 서류 작성
기존 "기안서 작성" 명칭이 "서류 작성"으로 전면 변경되었다. fix-task-0702 (26년 07월 02일 수정사항)
| 위치 | 변경 전 | 변경 후 |
|---|---|---|
| 사이드바 | 기안서 작성 | 서류 작성 |
| 상단바 | 기안서 작성 | 서류 작성 |
| 모바일 탭 | 기안서 작성 | 서류 작성 |
| 페이지 제목 | 기안서 작성 | 서류 작성 |
기안서 양식과의 관계: 결재가 필요한 서류(사직서 포함)는 양식 등록 시 "기안서"로 설정하면, 서류 작성 탭에서 선택하여 작성 시 결재선을 통해 처리된다. "기안서"라는 개념은 양식 유형으로서 존속하며, 단지 진입 메뉴 명칭만 "서류 작성"으로 통일된 것이다. fix-task-0702 (26년 07월 02일 수정사항)
단계별 고려 사항
1단계 — 사직서 양식 등록 (관리자)
- 관리자가 양식 편집기(폼 빌더)를 통해 사직서 양식을 생성
- 결재가 필요하면 양식 유형을 기안서로 설정
- 결재가 필요하지 않으면 일반 서류 유형으로 등록 가능
2단계 — 사직서 작성 및 제출 (직원)
- 직원은 신청결재 > 서류 작성 탭에서 사직서 양식을 선택하여 작성·제출
- 기안서 유형인 경우 결재 관리 흐름과 자동 연동
3단계 — 결재 처리 (관리자, 기안서 유형인 경우)
- 결재 관리 스펙의 승인/반려 체계를 통해 처리
- 관리자 등급 및 권한 에 따라 결재 권한 범위 결정
4단계 — 퇴사 처리
승인 이후 후속 처리 항목:
| 항목 | 내용 | 관련 스펙 |
|---|---|---|
| 재직 상태 변경 | 직원 상태를 퇴직으로 전환 | employment-status-workflow |
| 계약 종료일 기록 | EmployeeContract.end_date 및 Employee.contract_end_date 동기화 | employment-contract-spec |
| 연차수당 정산 | 미사용 연차에 대한 수당 정산 | annual-leave-auto-calc |
| 급여 정산 | 퇴직 월 급여 일할 계산 등 | payroll-management-spec |
| 서류 보관 | 퇴직 관련 서류를 직원 서류 보관함에 보존 | form-builder-spec |
연관 미결 항목
관리자 권한 세부 제어 (추가 논의 필요)
07월 02일 수정사항에서 확인된 사항으로, 사직서 접근 권한과 관련하여 아래 문제가 존재한다. fix-task-0702 (26년 07월 02일 수정사항)
- 근로계약서 탭에 대한 접근 권한을 차단해도, 인사관리 > 직원 상세 화면에서 근로계약서 발송이 가능한 상태
- 탭 단위 숨김뿐 아니라 세부 기능 단위의 권한 제어 방식에 대한 설계 논의 필요
- 예: 근로계약서 탭 접근 불가인 경우, 직원 상세의 근로계약서 관련 버튼도 함께 제거 필요
관련 세부 내용은 관리자 등급 및 권한 관리 스펙 참조.
사직서 기본 양식 및 분류 (구현 완료)
07월 02일 우선수정사항에서 미결로 확인되었던 사항이 07월 03일 수정사항에서 모두 완료되었다. fix-task-0703 (26년 07월 03일 수정사항)
- 신규 테넌트 생성 시 사직서 양식 기본 생성 완료
- 회사 양식 추가 화면에 사직서 분류(RESIGNATION) 추가 완료
- 기존 문자열 매칭 방식 →
form_category=RESIGNATION기반으로 변경 완료
계약일 이중저장 불일치
Employee 테이블과 EmployeeContract 테이블 간 contract_end_date 불일치 문제가 존재하며, 배포 전 데이터 보정이 필요하다. fix-task-0626 (26년 06월 26일 수정사항) → 계약일 이중저장 불일치 보정 절차 참조
의사결정 필요 항목
E2E 테스트 시나리오 (Part 3. 관리자↔사용자 연계)
E2E 테스트 시나리오 명세의 섹션 8에 해당하는 사직서 관련 시나리오를 아래에 정리한다. E2E 테스트 시나리오 - Part 3. 관리자↔사용자 연계 시나리오
8-1. 사직서 기안 경로 (직원이 직접 제출)
| # | 액터 | 시나리오 | 기대 결과 | 비고 |
|---|---|---|---|---|
| 1 | 김소민 | 서류 신청에서 사직서(RESIGNATION) 양식을 선택하고 퇴사일, 사유를 입력하여 제출한다 | Document가 PENDING 상태로 생성되고, 결재자에게 알림이 전송된다 | |
| 2 | 허빈 | 결재하기에서 김소민의 사직서를 확인하고 승인한다 | Resignation이 COMPLETED로 처리된다 | |
| 3 | — | 퇴사일이 오늘 이전이면 | Employee.employment_status가 EMP_RETIRED, User.status가 RESIGNED로 변경되고, 모든 세션이 무효화된다 | 미래 퇴사일은 스케줄러 처리 |
| 4 | 김소민 | 퇴직 처리 후 로그인을 시도한다 | 로그인이 차단된다 | User.status=RESIGNED |
8-2. 관리자 직접 처리 경로
| # | 액터 | 시나리오 | 기대 결과 | 비고 |
|---|---|---|---|---|
| 1 | 허빈 | 직원관리 > 퇴직처리에서 김소민을 선택하고, 퇴사일과 퇴직사유를 입력하여 처리한다 | Resignation이 COMPLETED 상태로 즉시 생성되고, 퇴직이 처리된다 | 결재선 없이 즉시 처리 |
| 2 | — | 퇴사일이 오늘 이전이면 | Employee가 EMP_RETIRED, User가 RESIGNED로 변경되고, 세션이 무효화된다 | |
| 3 | 김소민 | 로그인을 시도한다 | 로그인이 차단된다 |
8-3. 사직서 반려
| # | 액터 | 시나리오 | 기대 결과 | 비고 |
|---|---|---|---|---|
| 1 | 김소민 | 사직서를 제출한다 | PENDING 상태로 생성된다 | |
| 2 | 허빈 | 사직서를 반려한다 | Resignation이 REJECTED로 변경되고, 김소민에게 "반려" 알림이 전송된다 | |
| 3 | 김소민 | 로그인한다 | 정상적으로 로그인된다 (퇴직 처리 안 됨) |