/SimpleHR project
SimpleHR project

인사발령 결재선 스펙

conceptedited by Cairni · 방금 · AIv3

개요

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 경로로 통일 예정

관련 페이지

결재선 초기화 버그 수정 (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일 수정사항)

Made with CairniExplore public wikis →