/SimpleHR project
SimpleHR project

출장 관리 스펙 (신청·승인·근태 자동생성)

conceptedited by Cairni · 방금 · AIv1

개요

출장 관리 기능(business_trip_enabled)은 근무 정책 스펙의 하위 기능으로, 직원이 출장 일정을 신청하고 관리자가 승인·반려하면 승인된 기간 내 각 근무일에 자동으로 근태 레코드가 생성되는 end-to-end 흐름을 제공한다. fix-task-0629-26년-06월-29일-수정사항에서 수동 테스트까지 완료된 상태로 기록되어 있다. fix-task-0629 (26년 06월 29일 수정사항)


핵심 데이터 모델

BusinessTripRequest

출장 신청 정보를 저장하는 신규 모델. fix-task-0629-26년-06월-29일-수정사항에서 추가되었다. fix-task-0629 (26년 06월 29일 수정사항)

필드설명
신청 기간 (시작일·종료일)출장 대상 날짜 범위
상태PENDING / APPROVED / REJECTED
연동 모델AttendanceRecord (승인 시 자동 생성·갱신)

AttendanceRecord — work_state 값

의미
ATT_BUSINESS_TRIP출장 승인 후 자동 생성되는 근태 상태
NORMAL (기본값)일반 근무
주의: work_state=BUSINESS_TRIP이면서 attendance_status=ATT_PRESENT인 불일치 데이터가 대시보드 출장 직원 수 집계 오류를 유발했다. 대시보드 집계에 work_state → attendance_status 보정 로직이 적용되어 있다. fix-task-0629 (26년 06월 29일 수정사항)

신청·승인 흐름

결재 관리 스펙의 전자결재 출장/외근 승인 흐름과도 연동된다. fix-task-0629 (26년 06월 29일 수정사항)


API 명세

메서드엔드포인트설명
POST/attendance/business-trip (추정)출장 신청
PUT/attendance/business-trip/{id}/approve (추정)승인 처리
PUT/attendance/business-trip/{id}/reject (추정)반려 처리
엔드포인트의 정확한 경로는 소스에 명시되어 있지 않다. 위 표는 구현 목적(신청/승인/반려 API)을 기준으로 정리한 것이다. fix-task-0629 (26년 06월 29일 수정사항)

관리자 UI — work_state 편집

  • 관리자가 근태 레코드의 work_state를 직접 편집할 때 자동 채움 기능이 동작한다.
  • 출장/외근 상태 목록 표시가 수정되었다. fix-task-0629 (26년 06월 29일 수정사항)

근태 신청 캘린더 날짜 오프셋 수정

  • 근태 신청 캘린더에서 날짜가 1일 밀리는 버그가 수정되었다.
  • 원인: UTC 기준으로 날짜를 처리하던 것을 로컬 타임존 기준으로 변환하도록 수정. fix-task-0629 (26년 06월 29일 수정사항)

테스트 커버리지

테스트 파일검증 내용
test_business_trip.py출장 신청·승인·반려 기본 흐름
test_business_trip_existing_update.py기존 근태 레코드 갱신 동작
test_attendance_doc_approval.py전자결재 연동 후 근태 레코드 자동 생성

수동 테스트까지 완료된 것으로 확인되었다. fix-task-0629 (26년 06월 29일 수정사항)


대시보드 집계 보정 로직

대시보드의 "오늘 출장 직원 수" 집계 시 work_stateattendance_status 간 불일치 데이터로 인해 미래 출장 직원이 현재 집계에 반영되는 오류가 발생했다. work_state → attendance_status 보정 로직을 적용하여 수정되었다. fix-task-0629 (26년 06월 29일 수정사항)

근태 관리 스펙의 전반적인 상태 관리 규칙과 함께 참고할 것.


관련 페이지

Made with CairniExplore public wikis →