인사발령 결재선 스펙
개요
26년 07월 01일 수정사항에서 구현된 기능으로, PersonnelOrder(인사발령)에 결재선을 연동하여 등록 → 결재 → Employee 반영까지 자동화하는 스펙이다. 기존 결재 관리 스펙의 RequestApprovalStep 테이블을 request_type="personnel" 로 확장하는 방식으로 통합된다. fix-task-0701 (26년 07월 01일 수정사항)
데이터 모델 변경
| 컬럼 | 설명 |
|---|---|
PersonnelOrder.status | 발령 결재 상태 (PENDING / APPROVED / REJECTED) |
PersonnelOrder.approval_line_id | 연결된 결재선 ID (nullable — 미선택 시 자동 결재선 적용) |
- 두 컬럼은
RequestApprovalStep과 자동 동기화된다. fix-task-0701 (26년 07월 01일 수정사항) - 변경 파일:
models.py,personnel_order_service.py,request_approval_service.py,documents.py,employees.py,api.ts,personnel-order-panel.tsx,approvals/page.tsx,approval-detail-body.tsx,user/approval/page.tsx
결재 흐름
상태 전이 규칙
| 상황 | 결과 상태 |
|---|---|
| 발령 등록 직후 (결재선 있음) | PENDING → 순차 승인 대기 |
| 자동승인 조건 충족 | 즉시 APPROVED |
| 모든 결재 Step 승인 완료 | APPROVED + Employee 반영 |
| 중간 Step 반려 | REJECTED + 이후 Step 전체 CANCELLED |
| 결재선 미선택 | 조직도 기반 자동 결재선 적용 후 위 흐름과 동일 |
fix-task-0701 (26년 07월 01일 수정사항)
관리자 인박스 통합
- 관리자 결재관리 인박스에 인사발령 유형이 통합 노출된다.
- 승인 / 반려 / 일괄 처리 모두 지원한다.
- 일괄 처리 툴바(체크박스 + 일괄 승인/반려)는 같은 수정사항에서 함께 구현되었다. fix-task-0701 (26년 07월 01일 수정사항)
- 사용자 결재 페이지(
user/approval/page.tsx)에서도 인사발령 타입 표시를 지원한다.
결재 시스템 전체 구조 내의 위치
결재 관리 스펙에 따르면 결재 시스템은 현재 이원화 상태로 유지하기로 결정되었다. fix-task-0701 (26년 07월 01일 수정사항)
| 테이블 | 적용 대상 |
|---|---|
RequestApprovalStep | 휴가 / 연장근로 / 출퇴근정정 / 인사발령 (request_type 확장) |
DocumentApprovalStep | 기안서 / 필수서류 (DRAFT → 보완 → 재제출 라이프사이클) |
- 인사발령은
RequestApprovalStep경로를 사용한다. - 추후 출장·외근·교육·병가도
RequestApprovalStep으로 이관 예정이나, 현재는 미처리 상태이다. - 출장(출장 관리 스펙):
request_type="business_trip"추가 예정 - 병가: Document + LeaveRequest 이중 경로 → 휴가 관리 스펙
LeaveRequest경로로 통일 예정
관련 페이지
- 사직서 처리 워크플로 스펙 — 동일 수정사항에서 함께 구현된 사직 결재선 스펙
- 직원 재직 상태 변경 워크플로 — 발령 승인 완료 시 Employee 상태 반영과 연관
- 직무 관리 (직위·직급·직무 3단 구성) — 인사발령의 주요 변경 대상
- 결재 관리 스펙 — 결재선 전반 스펙
- fix-task-0630 — 직전 일자 수정사항 (사직 결재선 선행 작업)
- fix-task-0702 — 결재선 초기화 버그 수정
- fix-task-0714 — 인사발령 결재 목록 신청자 부서/직위 누락 수정, 연장근로 직위 누락 조사 중
결재선 초기화 버그 수정 (07-02)
결재선을 수정하고 저장해도 다시 열면 이전 값으로 돌아가고, 서류 작성 시에도 수정 전 결재선이 표시되는 문제가 확인되었다. 내부 데이터 저장 방식을 수정하여 결재선 변경 사항이 정상적으로 반영되도록 수정 완료되었다. fix-task-0702 (26년 07월 02일 수정사항)
- 증상: 조직관리 > 결재선 수정 후 재진입 시 원위치로 복원됨; 서류 작성 화면에서도 수정 전 결재선이 그대로 노출됨
- 조치: 결재선 저장 시 내부 데이터 저장 방식 수정 → 이후 변경 사항 정상 반영 확인
결재 목록 신청자 정보 표시 수정 (07-14)
인사발령 결재 목록 신청자 부서/직위 누락
인사발령 결재 목록에서 신청자(관리자)의 부서/직위가 -로 표시되는 문제가 수정 완료되었다. fix-task-0714 (26년 07월 14일 수정사항)
- 원인: 백엔드 인사발령 API에 생성자의 부서명·직위명 필드가 없었음
- 조치:
- 백엔드 인사발령 API 응답에
created_by_department(부서명)·created_by_position(직위명) 필드 추가 - 프론트엔드 결재 목록(
approvals/page.tsx)에서 해당 값을 표시하도록 수정 - 기존 발령 건도 조회 시 실시간으로 생성자 정보를 조회하므로 자동 반영
연장근로 신청 결재 목록 직위 누락 (조사 중)
관리자 결재 목록(/admin/approvals)에서 연장근로 신청의 직위가 -로 표시되는 문제는 추가 조사 중이다. fix-task-0714 (26년 07월 14일 수정사항)
- 백엔드 API는
position_name을 정상 반환하고, 프론트엔드 코드도position_name을 읽고 있어 코드상 문제가 없음 - 브라우저 네트워크 응답 확인 또는 화면 재현을 통해 원인 추가 조사 필요
최고관리자 결재선 변경 미반영 (미해결)
최고관리자가 결재선을 변경해도 조직관리자에게 결재를 받도록 되어 있어 수정이 안 되는 문제가 미해결 상태이다. fix-task-0714 (26년 07월 14일 수정사항)