연차 이월(Carryover) 기능 스펙
개요
연차 이월(Carryover)은 연말 기준 미사용 연차를 다음 연도로 넘기는 기능이다. 0622 수정사항에 따르면, 백엔드 API 및 사용자 카드 표시는 구현 완료되었으나, 관리자가 이월을 직접 지정·설정할 수 있는 UI는 아직 미완성이다. 휴가 관리 스펙 및 휴가 잔액 변동 이력 스펙과 밀접하게 연관된다.
구현 현황
API 스펙 (현재 구현 기준)
| 항목 | 내용 |
|---|---|
지원 change_type | CARRYOVER (이월), ADJUST (수동 조정), EXPIRE (소멸) |
| 이월 잔액 조회 | 휴가 잔액 변동 이력 — GET /admin/leave/balances/history |
| 사용자 카드 표시 | "이월 N일" 레이블로 carryover_days 값 표시 |
주의:carryover_days가 0일 때undefined로 표시되는 버그 여부는 아직 확인이 필요하다. fix-task-0622.md
미완성 기능 상세
1. 관리자 드로어 — change_type 선택 UI
현재 관리자 휴가 잔액 조정 드로어에는 ADJUST 외의 유형을 선택하는 UI가 없다. 추가되어야 할 선택지:
ADJUST— 수동 조정CARRYOVER— 이월EXPIRE— 소멸(만료)
휴가 관리 스펙의 관리자 화면과 연동 필요. fix-task-0622.md
2. 연말 자동 이월 정책 설정 UI
회사마다 이월 한도·소멸 기한이 다를 수 있으므로 회사별 정책 설정 화면이 필요할 수 있다. 필요 여부 자체가 아직 결정되지 않은 상태다. 근무 정책 스펙과 함께 검토가 필요하다. fix-task-0622.md
3. 이월 만료일(expires_at) 자동 설정 로직
이월된 연차에 대해 만료일을 자동으로 설정하는 서버 로직이 올바르게 구현되었는지 확인이 필요하다. fix-task-0622.md
4. 사용자 카드 조건부 표시
사용자 카드에서 "이월 N일" 텍스트가 표시될 때, carryover_days가 0인 경우 undefined로 렌더링되지 않도록 검증 필요. fix-task-0622.md
이월과 연차 자동계산의 관계
연차 자동계산 로직 스펙에 따르면 total_days는 항상 입사일 기준 자동계산되며, max(DB, compute) 보호 로직은 제거되어 이관값이 아닌 계산값이 우선 적용된다. 이에 따라 이월(CARRYOVER)로 추가된 잔액은 total_days가 아닌 carryover_days 필드를 통해 별도 관리되어야 한다. fix-task-0622.md
관련 페이지
- 휴가 관리 스펙
- 휴가 잔액 변동 이력 스펙
- 연차 자동계산 로직 스펙
- 연차촉진 스펙
- 근무 정책 스펙
- 근태 관리 스펙
- (주) 에이치앤티아웃소싱시스템 — 이관 시 이월 잔액 불일치 케이스 존재
- 데이터 이관 작업 스펙 (HNT)