Skip to content

HBAD262_연차 부여 기준

(Hereby) 관리자 패널 > 근태 현황 > 연차 탭 > 유형·기준 관리 모달 > 연차 부여 기준

메타앱: 관리자 패널 (HBAD)대상 사용자: 조건1 [근태 관리] (설정 수정)프로토타입: TBU관련 정책: [[POL_연차관리]]Status: draft (모달 내부 라이브 미확인)Owner: 카나

개요

연차 부여 기준은 근속연수 구간별 연차 부여 일수·발생유형을 정의하는 설정으로, 원천은 leave_entitlement_rules다.근태 현황 > 연차 탭 > "연차 부여 기준" 버튼 → "유형·기준 관리" 모달의 연차 부여 기준 섹션으로 진입한다.각 규칙은 근속연수 구간에 매칭되어 [[HBAD251_연차 현황·결재]]의 "산정기준"과 부여 일수 원천이 된다. ⚠️ 연차 부여 일수·근속 구간 등 수치 규칙은 정책 [[POL_연차관리]]에 정의되며, 본 사양서는 UI 필드만 기술한다 (정의 복사 금지). 모달은 라이브 프로브 미오픈(s3-attend TAB_NOT_FOUND) → census/ERD 기반, TBU 다수.

잔여 계산·부여 모델 (코드 반영)

  • 불변 원장 전환: 연차 잔여 계산이 불변 원장(LeaveLedgerEntry, append-only) 기반으로 전환됨. 부여/사용/이월/소멸/조정이 분 단위로 적재되며, UPDATE/DELETE는 DB 트리거로 차단, 정정은 상쇄 엔트리로 처리 (코드 반영: 318f7e1).
  • 부여 계산 computeEntitlement: 입사일·근속연수 기반. 매칭 규칙이 없으면 근로기준법 기본값 적용 — 1년 미만 월 1일(최대 11) / 1년 15일 / 3년+ 2년당 +1(최대 25) (코드 반영: 42e22ee).
  • 병원별 정책 8플래그 (leavePolicySchema, 기본 permissive) 존재 (코드 반영: 318f7e1) — 세부 플래그 목록 TBU.
  • 정책 화면 재구성: 연차(휴가) 정책 화면이 그룹형 선택지로 재구성됨 (코드 반영: ba2775a) — 세부 UI TBU.

문서 히스토리

  • 2026-07-06 최초 작성 - 카나/콸
  • 2026-07-10 라이브 기능 검토 반영 (진입 경로 확인, 모달 내부 미오픈) - 카나/콸
  • 2026-07-13 버튼 행동 명세 보강 - 카나/콸
  • 2026-07-21 GC700 깊이 재작성 - 카나/콸
  • 2026-07-21 가독성 패스 (GUIDE §7) - 카나/PM
  • 2026-07-21 셀 스타일 확정판 적용 (콸 승인) - 카나/PM
  • 2026-07-23 코드 변경 반영(42e22ee·318f7e1·ba2775a) - 카나/콸

Data I/O

Server → Client

변수

메타$

Client → Server

액션전달 값tRPC procedure권한 토큰
규칙 추가/수정yearsOfServiceMin/Max·entitledDays·accrualType·maxDays·name·descriptionsdk.leaveRule.upsert() (추정)근태 관리
삭제ruleIdsdk.leaveRule.delete() (추정)근태 관리
부여 실행 (추정)규칙 기반 leave_grants 생성 (batch/스케줄)(batch)시스템

외부 통합

대상데이터방향비고
연차현황 ([[HBAD251_연차 현황·결재]])매칭 규칙 → "산정기준" 컬럼 · 부여 일수소비leave_grants

연차 부여 기준 사양표

번호항목/기능명타입사양 및 기능 설명연관/영향 범위비고
00노출 조건-조건1 [근태 관리 권한] 인증 후 연차 탭 "연차 부여 기준" 버튼 진입
 - CASE01 [미인증]: /admin/signin 리다이렉트
인증 세션 · RBAC
01초기 상태-• 모달 좌측 네비 "연차 부여 기준" 선택 상태라이브 미오픈
10부여 기준 그리드Grid• 근속연수 구간별 규칙을 그리드로 표시 (sortOrder 정렬)
 - CASE01 [규칙 0건]: Empty state (원문 TBU)
leave_entitlement_rulescensus · TBU: Empty 원문
ㄴ10+ 규칙 추가Button• 새 부여 규칙을 생성하는 진입
• 클릭 시: 규칙 폼(20) 열림 (근속연수 시작/끝/부여일수/발생유형/최대일수)
leave_entitlement_rules
ㄴ11근속연수 시작Number• 구간 하한(년) 입력 — 이상
• 입력 시: NOT NULL 필수
leave_entitlement_rules.yearsOfServiceMin (NOT NULL)이상
ㄴ12근속연수 끝Number• 구간 상한(년) 입력 — 미만
• 입력 시: 빈칸 = 무제한
leave_entitlement_rules.yearsOfServiceMax (nullable)미만 · 빈칸=무제한
ㄴ13부여일수Number• 해당 구간 부여 연차 일수(일) 입력 — 수치 규칙 [[POL_연차관리]] 참조leave_entitlement_rules.entitledDays (numeric(4,1))
ㄴ14발생유형Dropdown• 발생 방식 선택 (연간 일괄 / 월별 발생 등, default annual)
• 선택 시: CASE01 [월별 발생] → 최대일수(ㄴ15) 상한 적용
leave_entitlement_rules.accrualType (accrualtype_enum)TBU: enum 전체 값
ㄴ15최대일수Number월별 발생 시 연간 최대 부여 일수 상한 입력 (nullable)
• 입력 시: 값 없음 → 상한 없음
leave_entitlement_rules.maxDays (numeric(4,1))월별 발생 상한
ㄴ16이름 / 설명Input• 규칙 이름 / 설명 입력 (선택)leave_entitlement_rules.name / description
ㄴ17상태 / 관리Badge/Action• 활성/비활성 배지 + 편집/삭제 액션
• 클릭 시: "편집" → 규칙 폼(20) · "삭제" → 컨펌 후 삭제
leave_entitlement_rules.isActiveTBU: 삭제 컨펌 문구
20규칙 폼Modal• 부여 규칙을 생성/수정하는 폼 모달
• 클릭 시: "+ 규칙 추가"/"편집"으로 열림
 - CASE01 [저장]: 규칙 생성/갱신
 - CASE02 [근속연수 시작 미입력]: 저장 불가 (NOT NULL, 추정)
sdk.leaveRule.upsert() (추정)TBU: 구간 중첩/공백 검증 UX

부여 실적 연동

항목ERD 근거비고
부여 실적leave_grants (periodKey·grantedDays·policy)규칙 → 실제 부여 레코드
불변 원장LeaveLedgerEntry (append-only, 분 단위, UPDATE/DELETE 트리거 차단)잔여 계산 원천 (코드 반영: 318f7e1)
부여 계산computeEntitlement (입사일·근속연수, 규칙 없으면 근로기준법 기본값)코드 반영: 42e22ee
산정기준 표시매칭 규칙 → [[HBAD251_연차 현황·결재]] "산정기준" 컬럼 (라이브 값 "입사일")연차현황 소비
구간 매칭[Min(이상), Max(미만)) 반열린 구간Max 빈칸=무제한

권한 · 상태 분기 요약

시나리오트리거결과 화면비고
CASE01 [조회]부여 기준 진입규칙 그리드근태 관리
CASE02 [규칙 추가]"+ 규칙 추가"규칙 폼 → 생성
CASE03 [무제한 구간]끝(미만) 빈칸상한 없는 구간반열린 구간
CASE04 [월별 발생]발생유형 = 월별최대일수 상한 적용
CASE05 [권한 없음]근태 관리 권한 미보유추가/편집 비활성 (추정)TBU

Open Question

구분미확인 항목
모달 전체⚠️ 유형·기준 관리 모달 라이브 미오픈 (s3-attend TAB_NOT_FOUND) → census/ERD 기반, 실화면 대조 필요
발생유형leave_entitlement_rules_accrualtype_enum 전체 값 (annual 외)
최대일수월별 발생 시 최대일수 상한 적용 계산식 → [[POL_연차관리]] 참조 (사양서 정의 금지)
부여 실행부여 실행 트리거 (입사기념일 / 회계연도 batch)
규칙 폼구간 경계 중첩·공백 검증 UX
상태·관리삭제 컨펌 원문 문구
Empty규칙 0건 시 Empty state 원문 문구