휴가 관리 스펙
개요
휴가 관리는 Simple HR 프로젝트의 핵심 기능으로, 근태 관리, 근무 정책, 결재 관리와 밀접하게 연동된다. 시스템은 연차(0.5일 단위)를 기본 관리 대상으로 하며, 병가·특별 휴가 등은 신청 시에만 발급되는 원칙을 따른다. fix-task-0609.md
휴가 유형
| 유형 | 설명 | 단위 | 관리 방식 | 비고 |
|---|---|---|---|---|
| 연차 | 법정 기본 연차 | 0.5일 | 시스템 자동 부여·차감 | 근속 기준 자동 계산 필요 |
| 병가 | 질병·부상으로 인한 휴가 | 일 | 신청 시에만 발급 | 부여 기준 미확정 |
| 출산 휴가 | 출산 전후 법정 휴가 | 법정 | 특별 휴가로 별도 지급 | 연차와 분리 관리 |
| 육아 휴직 | 육아 목적 휴직 | 법정 | 특별 휴가로 별도 지급 | 연차와 분리 관리 |
| 여름 휴가 | 회사 지정 하계 휴가 | 별도 설정 | 기간 지정 or 연차 포함 | 두 방식 중 선택 가능 |
| 생리 휴가 | 해당 회사만 적용 | 월 1일 | 부서/전사 선택 적용 | 회사별 옵션 |
| 주부 휴가 | 해당 회사만 적용 | 미정 | 부서/전사 선택 적용 | 회사별 옵션 |
| 특별 휴가 | 경조사 등 기타 | 사유별 | 별도 지급, 신청 시에만 발급 | 연차 외 관리 |
| 경조사 휴가 | 경조사(FAMILY_EVENT) 사유별 특별 휴가 | 사유별 | 신청 시 sub_reasons 드롭다운으로 사유 선택 | PC·모바일 모두 적용 fix-taskNew-0706 (26년 07월 06일 우선수정사항) |
| 임시 휴일(선거일 등) | 임시 공휴일 지정 | 1일 | 전사 또는 부서별 적용 | 휴일근로 카운트 |
fix-task-0609.md
중요 규칙
신청 시에만 발급 원칙
- 연차를 제외한 모든 휴가(병가, 특별 휴가 등)는 신청 시에만 발급된다.
- 예) 병가는 미리 잔여일수로 표시되지 않으며, 신청 및 승인 시에 차감 처리된다.
적용 범위 설정
- 휴가 정책은 전사 적용 또는 부서별 적용 중 선택 가능해야 한다.
- 생리 휴가·주부 휴가·임시 휴일 등 선택적 휴가는 회사·부서 단위로 활성화 여부를 설정할 수 있어야 한다.
- 여름 휴가의 경우 ① 별도 지급 방식과 ② 해당 기간에 연차를 강제 소진하는 방식 중 선택할 수 있어야 한다. fix-task-0609.md
임시 휴일(선거일 등) 관리
- 관리자 모드: 임시 휴일로 등록된 날짜에 근무하면 휴일 근로로 카운트
- 직원 모드: 임시 휴일로 표시되며 출근 기능 비활성화, 필요 시 휴일근로 신청으로 근무 가능 fix-task-0609.md
연차 자동계산 및 관리
자동계산 정책
연차는 항상 입사일 기준으로 자동 계산되며, 관리자가 수동으로 입사일을 변경할 경우 즉시 재계산된다. fix-task-0619.md
- 근속 1년 미만: 월 1회(연 약 12일)
- 근속 1년 이상 3년 미만: 15일
- 근속 3년 이상: 추가 누진(회사 정책)
HNT 이관 관련 특사항
{{ref_note}}HNT 이관 데이터의 경우 직원별 입사일이 불명확하거나 누락된 케이스가 존재한다. fix-task-0619.md
- 입사일 미입력 직원: 연차
total_days = 0으로 계산됨 - 입사일 기준 계산값과 이관값 불일치: 관리자가 휴가지급관리 드로어에서 수동 조정 필요 (근태 관리 > 휴가지급관리 > 해당 직원 클릭 후 수정)
- 자동계산 보호 제거: 이관 시 DB 값을 무시하고 항상 계산값을 표시하며, 스케줄러는 DB ≠ 계산값일 때만 갱신
사용자 카드 vs 관리자 페이지 일치
사용자 페이지의 연차 잔액 카드와 관리자 페이지의 표시를 통일했다. fix-task-0619.md
- 사용자 카드:
total_days + adjusted_days(부여량) - 사용 추적:
used_days + prior_used_days(소비량) - 잔여: 부여량 - 소비량
휴가 잔액 변동 이력 관리
휴가 잔액 변동 이력을 추적하여 감사·분석 목적으로 활용할 수 있다. fix-task-0619.md
API 및 UI 구현
- GET
/admin/leave/balances/history: 연차 차감·이월·조정 등 모든 변동 이력 조회 - 휴가지급관리 드로어: 변동 이력 테이블 추가 (일시·유형·휴가종류·변동·잔여·사유·변경자)
- 시간대 표시: UTC → KST 자동 변환 처리 fix-task-0619.md
연차 이월(Carryover) 기능
연차 이월 기능의 구현 상황은 다음과 같다. fix-task-0619.md
현재 구현 상태
- API:
change_type: "CARRYOVER"기반 이월 기록 생성 완료 - 사용자 카드: "이월 N일" 표시 구현 완료
- 관리자 UI: 이월 지정 선택지 미구현 → 추가 필요
미구현 항목
| 항목 | 설명 | 우선순위 |
|---|---|---|
| change_type 선택 UI | 관리자 잔액 조정 드로어에 ADJUST/CARRYOVER/EXPIRE 선택 추가 | 높음 |
| 자동 이월 정책 설정 | 연말 미사용 연차 자동 이월 정책(한도·소멸 기한 등) UI 구현 필요 | 중간 |
| 이월 만료일 관리 | expires_at 자동 설정 로직 확인 필요 | 중간 |
| carryover_days 표시 검증 | 0일일 때 undefined가 아닌 0으로 표시 확인 | 낮음 |
fix-task-0619.md
연차촉진 기능
연차촉진 기능은 근속 요건을 충족하지 못한 직원의 촉진 대상을 관리한다. fix-task-0619.md
완료된 개선사항
- ✅ 촉진 대상자 탭 구현
- ✅ 2, 3번 재시도 차단 (동일 대상자 중복 발송 방지)
- ✅ 발송일시·응답일 시간 표시 (사용자/관리자 vacation 페이지 7곳 적용) fix-task-0619.md
휴가 신청 및 승인 프로세스
승인 유형별 처리
결재선 선택 UI (0706 추가)
근태결재 신청 페이지에 결재선 선택 UI가 추가되었다. fix-taskNew-0706 (26년 07월 06일 우선수정사항)
- 결재선 드롭다운 제공, 선택 시 결재 흐름 프리뷰 표시
- 미선택 시 자동 결재선 프리뷰 표시
- submit 시
approval_line_id전달 - 근태결재 신청 제목은
[휴가],[특별휴가]등 대괄호 형식으로 통일
결재 관리 시스템과 연동된 휴가 신청은 다음과 같이 처리된다. fix-task-0619.md
- 출결 승인: 관리자 전용 페이지에서만 처리 가능
- 자동 산정 결재선:
use_approval_workflow or not auto_approve조건에 따라 Document 생성 여부 판단 approval_line_id = None일 경우 조직도 기반 자동 결재선 Fallback 동작- 조건 미충족 시 결재자에게 알림/배지 미전달 이슈 해결 fix-task-0619.md
모바일 승인 후 네비게이션
모바일에서 휴가 신청 승인 알림 클릭 후 동작: fix-task-0619.md
- 이전: 신청 결재 상세 페이지로 이동
- 개선:
/user/vacation연차/휴가 탭으로 이동하여 직관성 강화 fix-task-0619.md
경조사 휴가 신청 사유 선택
경조사(FAMILY_EVENT) 선택 시 PC·모바일 모두 sub_reasons 드롭다운이 표시되어 세부 사유를 선택할 수 있다. fix-taskNew-0706 (26년 07월 06일 우선수정사항)
자동 연차 사용 및 재계산
휴가 신청 후 자동으로 재계산하여 연차를 채우는 로직의 동작 확인이 필요하다. fix-task-0619.md
- 재계산 시 실제로 연차가 감소하는지 검증 필요
사용자 플로우
fix-task-0609.md
요구사항 상세
연차 자동 부여
- 근속 기간 기준으로 연차를 자동 계산하여 부여한다.
- 부여 기준(회계연도 기준 vs. 입사일 기준)은 근무 정책 스펙에서 정의한 회계 정책과 연동된다.
근무표·근태와의 연동
- 휴가 승인 시 근태 관리 화면에 자동 반영되어야 한다.
- 임시 휴일이 관리자가 전사로 등록될 경우, 직원의 근태 화면에도 자동 반영되어야 한다. fix-task-0609.md
- 교대·변형 근무 시 휴가 인원 수에 따라 근무 패턴이 변동될 수 있으므로, 근무표 편성 단계에서 휴가 데이터를 참조해야 한다.
관리자 기능
- 관리자는 직원별 연차 현황(총 부여 / 사용 / 잔여)을 목록 형태로 조회할 수 있어야 한다.
- 수동 차감 시 사유 입력 필드가 반드시 제공되어야 한다.
- 특별 휴가(병가·출산 등)는 연차 잔여와 분리된 별도 항목으로 표시되어야 한다.
- 휴일 관리: 전체 적용 / 부서별 적용 구분 탭으로 관리하며, 휴일 생성 시 모달이 반응형으로 작동해야 한다. fix-task-0609.md
알림
- 휴가 신청 시 결재자에게 알림이 전송되어야 한다.
- 결재 완료(승인/반려) 시 신청자에게 알림이 전송되어야 한다.
엣지 케이스
| 상황 | 처리 방안 | 상태 |
|---|---|---|
| 시스템 도입 전 기사용 연차 | 수동 차감 + 사유 기록 | 기능 필요 |
| 연차 잔여 부족 시 신청 | 신청 불가 처리 또는 경고 표시 | 미정 |
| 여름 휴가 기간 중 연차 강제 소진 | 기간 설정 + 포함 여부 선택 | 미구현 |
| 병가 부여 기준 불명확 | 사내 규정 확인 후 시스템 반영 필요 | 미확정 |
| 생리 휴가 등 선택 휴가 미적용 부서 | 부서별 옵션에서 비활성화 | 미구현 |
| 임시 휴일 등록 후 직원 근태 미반영 | 관리자 휴일 등록 시 전사 직원에게 자동 반영 | 이슈 fix-task-0609.md |
| 경조사 휴가 신청 시 세부 사유 미선택 | PC·모바일 모두 FAMILY_EVENT 선택 시 sub_reasons 드롭다운 표시 | ✅ 해결 fix-taskNew-0706 (26년 07월 06일 우선수정사항) |
| 1년 미만 근속자 연차 생성 오류 | 1년 미만이면 0일로 계산, 표시 기준 오늘 기준으로 변경 | ✅ 해결 fix-task-0619.md |
| 근로계약서 페이징 처리 불통일 | 통일된 페이징 처리 필요 | work-contract-spec |
현재 이슈 및 구현 현황
fix-task-0619.md fix-task-0609.md fix-taskNew-0706 (26년 07월 06일 우선수정사항)
관련 페이지
- Simple HR 프로젝트 개요 — 전체 프로젝트 범위 및 현황
- 근무 정책 스펙 — 회계 정책, 소정 근무 설정과 연동
- 근태 관리 스펙 — 출퇴근 기록과 휴가 반영 연동
- 교대(변형)근로 관리 스펙 — 휴가와 근무표 연동
- 결재 관리 스펙 — 휴가 신청 결재 프로세스
- 직원 등록 플로우 — 신규 직원 온보딩 시 연차 자동 부여 트리거
- GPS 출퇴근 스펙 — 퇴근 시 GPS 기반 인증
- 급여관리 스펙 — 급여 대장 및 명세서 관리
- 액션 아이템 — 병가 기준 확인 등 미결 사항
- fix-taskNew-0706 (26년 07월 06일 우선수정사항) — 경조사 휴가 사유 선택, 결재선 UI 등 최신 수정사항