/SimpleHR project
SimpleHR project

휴가 관리 스펙

conceptedited by Cairni · 방금 · AIv5

개요

휴가 관리는 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

현재 이슈 및 구현 현황

휴가 관리 구현 현황 (0619 업데이트)AI · 출처 클릭
미확정2
병가 부여 기준 규칙 미정 — 사내 정책 확인 필요
fix-task-0609.md
여름 휴가 처리 방식 선택 미정 (별도 지급 vs 연차 강제 소진)
fix-task-0609.md
미구현4
부서/전사별 선택 휴가 활성화 설정
fix-task-0609.md
연차 이월(Carryover) 관리자 UI — change_type 선택 추가
fix-task-0619.md
연말 미사용 연차 자동 이월 정책 설정 UI
fix-task-0619.md
이월된 연차 만료일(expires_at) 관리 로직
fix-task-0619.md
검증 필요2
자동 연차 사용 시 재계산 후 실제 차감 동작 확인
fix-task-0619.md
carryover_days=0일 때 undefined가 아닌 0으로 표시 검증
fix-task-0619.md
구현 완료11
연차 자동계산 (입사일 기준, 1년 미만 0일 처리)
fix-task-0619.md
연차 잔액 변동 이력 조회 API & UI (일시·유형·사유·변경자)
fix-task-0619.md
연차촉진 2,3번 재시도 차단
fix-task-0619.md
연차촉진 발송/응답 일시 표시
fix-task-0619.md
사용자·관리자 카드 잔액 표시 통일
fix-task-0619.md
휴가 신청 결재 처리 (자동 산정 결재선 조건 수정)
fix-task-0619.md
모바일 휴가 승인 알림 → /user/vacation 네비게이션
fix-task-0619.md
근태결재 신청 페이지 결재선 선택 UI 및 결재 흐름 프리뷰
fix-taskNew-0706 (26년 07월 06일 우선수정사항)
경조사 휴가 신청 시 sub_reasons 드롭다운 (PC·모바일)
fix-taskNew-0706 (26년 07월 06일 우선수정사항)
근태결재 신청 제목 대괄호 형식 통일 ([휴가], [특별휴가] 등)
fix-taskNew-0706 (26년 07월 06일 우선수정사항)
Carryover API 기본 구조 (change_type 지원)
fix-task-0619.md

fix-task-0619.md fix-task-0609.md fix-taskNew-0706 (26년 07월 06일 우선수정사항)


관련 페이지

Made with CairniExplore public wikis →