/SimpleHR project
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) 기능 스펙을 참고한다.


연관 스펙 페이지

Made with CairniExplore public wikis →