SimpleHR project
연차 자동계산 로직 스펙
conceptedited by Cairni · 방금 · AIv1
개요
연차 자동계산 로직은 입사일(hire_date)을 유일한 기준으로 연차 일수를 산출한다. 수동 토글이 제거되어 항상 자동계산이 적용되며, 입사일이 없는 직원은 0일로 처리된다. 휴가 관리 스펙 및 근태 관리 스펙과 연계된다. fix-task-0619.md fix-task-0619.md
핵심 정책 결정
| 항목 | 변경 전 | 변경 후 |
|---|---|---|
auto_compute 토글 | 존재 (수동/자동 선택 가능) | 제거 — 항상 자동계산 적용 |
hire_date 변경 시 | 별도 트리거 없음 | 즉시 재계산 |
max(DB, compute) 보호 로직 | 적용 중 (이관값 보호) | 제거 — 이관값 무시, 항상 계산값 표시 |
| 스케줄러 갱신 조건 | 항상 갱신 | DB값 ≠ 계산값인 경우에만 갱신 |
| 입사일 미입력 직원 | 동작 불명확 | 0일 처리 |
| 연도 기준 | 연말 기준 계산 | 오늘(today) 기준 계산으로 변경 |
의사결정 로그 참고. fix-task-0619.md
연차 산정 규칙
- 1년 미만: 월 1개 (입사 후 매월 1일 부여)
- 1년 이상: 15개 (기본) — 추가 조건은 휴가 관리 스펙 참조
버그 수정: 1년 미만 직원에게도 15개가 생성되는 오류가 있었음. 원인:compute_annual_leave_days(None)호출 시 0이 아닌 값 반환, 표시 코드에서 연말 기준으로 계산. 수정:compute_annual_leave_days(None) → 0처리, 표시 코드를 오늘 기준 계산으로 변경. fix-task-0619.md
사용자 카드 잔액 계산 공식
관리자 페이지와 사용자 카드 간 연차 잔액이 불일치하는 버그가 수정되었다. fix-task-0619.md
AI · 출처 클릭
발생 일수
total_days + adjusted_days
fix-task-0619.md
사용 일수
used_days + prior_used_days
fix-task-0619.md
이전에는 사용자 카드에서 prior_used_days가 누락되어 관리자 페이지와 수치가 달랐다.자동계산 흐름
fix-task-0619.md
HNT 이관 시 유의사항
(주) 에이치앤티아웃소싱시스템 직원 이관과 관련하여 다음 사항을 반드시 확인해야 한다. 데이터 이관 작업 스펙 (HNT) 및 배포 후 관리자 조치 체크리스트 (HNT 이관)도 함께 참고. fix-task-0619.md
total_days는 항상 입사일 기준 자동계산으로 적용됨- 이관값과 계산값이 다를 경우 관리자가 수동 조정 필요
- 경로:
근태 관리 > 휴가지급관리 > 해당 직원 클릭 후 수정 - 입사일 미입력 직원은 연차 0일 — 이관 후 입사일 등록 필요
⚠️ max(DB, compute) 보호 로직이 제거되었으므로, 이관 시 수동으로 입력된 연차 잔액은 더 이상 보호되지 않는다. 이관 완료 후 반드시 잔액을 검토할 것.관련 미완료 항목
다음 항목은 아직 확인 또는 구현이 필요하다. 액션 아이템 참고. fix-task-0619.md
연차 자동계산 관련 미완료 작업AI · 출처 클릭
미완료4
이월 기능 — 관리자 휴가 잔액 조정 드로어에 change_type 선택 UI 추가 (ADJUST/CARRYOVER/EXPIRE)
fix-task-0619.md
연말 미사용 연차 자동 이월 정책 설정 UI 필요 여부 확인 (회사별 이월 한도·소멸 기한)
fix-task-0619.md
이월된 연차의 만료일(expires_at) 자동 설정 로직 확인
fix-task-0619.md
사용자 카드 이월 N일 표시 시 carryover_days=0이면 undefined 방어 처리 확인
fix-task-0619.md
완료5
auto_compute 토글 제거 — 항상 자동계산 적용
fix-task-0619.md
hire_date 변경 시 즉시 재계산
fix-task-0619.md
1년 미만 15개 잘못 생성 버그 수정 (compute_annual_leave_days(None)→0)
fix-task-0619.md
사용자 카드 발생/사용 일수 공식 관리자와 일치하도록 수정
fix-task-0619.md
스케줄러 — DB≠계산값인 경우에만 갱신
fix-task-0619.md
이월 관련 세부 사항은 연차 이월(Carryover) 기능 스펙을 참고한다.
연관 스펙 페이지
- 연차촉진 스펙 — 연차촉진 대상자 탭, 2·3번 재시도 차단 등 관련 기능
- 휴가 관리 스펙 — 휴가 종류·잔액·신청 전반
- 휴가 잔액 변동 이력 스펙 — 변동 이력 조회 API 및 UI
- 근태 관리 스펙 — 근태 분석 페이지 등 연계 기능
- hnt-migration-status.md — HNT 이관 현황