연차 관리
- 대상 사용자 : 인사 관리자
- 화면의 목적 : 연차 항목을 설정하며, 각 직원의 남은 연차와 연차 규칙 설정을 위한 화면
연차 현황(탭)
1️⃣ 필터링
- 연도
- 옵션: 현재 연도 기준 최근 5개 연도 (예: 2026년 ~ 2022년)
- 기본: 현재 연도
- 동작: 선택 연도 말일(
{연도}-12-31) 기준으로 부여·사용·잔여를 산정
- 소속
- 멀티셀렉트 드롭다운
- 기본: 전체 (미선택)
- placeholder:
소속 선택 - 선택한 팀 중 하나라도 소속된 직원만 표시
- 비활성 팀은 목록에 노출하지 않음 (공통정책)
- 선택 해제(X) 시 필터 초기화 후 목록 갱신
- 검색
- 위치: 필터 영역 오른쪽 (공통정책: 필터 왼쪽 · 버튼/검색 오른쪽)
- placeholder:
사번 / 이름 / 이메일 - 검색 결과 없음:
검색 결과가 없어요.
- 조회 대상 직원
- 재직 상태인 직원만 표시 2️⃣ 요약 통계
- 필터 아래, 표 위에 고정 노출. 필터 결과에 따라 함께 갱신.
| 항목 | 표시 예 | 설명 |
|---|---|---|
| 대상 인원 | 42명 | 현재 필터 조건에 해당하는 직원 수 |
| 평균 사용 | 7.2일 | 대상 인원의 사용일수 평균 (소수 1자리) |
| 평균 잔여 | 7.8일 | 대상 인원의 잔여일수 평균 (소수 1자리) |
- 대상 0명일 때:
0명/0일/0일
3️⃣ 리스트뷰
- 레이아웃
- 상단(사번, 이름, 소속, 입사일, 총 부여, 사용, 잔여, 사용률, 산정기준) 고정
- 표 본문만 세로 스크롤
- 페이지 하단에 페이지네이션 노출
- 정렬
- 기본: 성 → 이름 오름차순
| 사번 | 이름 | 소속 | 입사일 | 부여일수 | 사용일수 | 잔여일수 | 사용률 | 산정 기준 |
|---|---|---|---|---|---|---|---|---|
| ADMIN003 | 홍길동 | 개발팀 | 2024.03.01. | 15일 | 8일 | 7일 | ████░░ 53% | 입사일 기준 |
- 컬럼 정의
- 사번: 없으면
- - 이름: 말줄임 + hover 시 전체 이름
- 소속: 첫 번째 활성 팀명, 없으면
- - 입사일:
YYYY.MM.DD.형식 - 부여일수:
{n}일— 선택 연도 기준 부여된 연차 - 사용일수:
{n}일— 승인된 휴가 중 연차 차감 일수 합계 - 잔여일수:
{n}일— 굵게 표시 - 사용률: 프로그레스 바
- 산정 기준: 배지
입사일 기준(hire_date)전환 기준(transition)회계연도 기준(fiscal_year)
- 사번: 없으면
- 데이터가 없을 때
- 문구 :
데이터가 없어요.
- 문구 :
부여 기준(탭)
1️⃣ 상단 영역
- [규칙 추가] 버튼 (오른쪽)
- 공통정책으로 인해 오른쪽에 위치
- 클릭 시 부여 기준 추가 모달 제공 (4️⃣ 참고) 2️⃣ 기본 규칙 등록 배너 안내 문구와 표 사이에 주황색 안내 박스로 노출.
| 구성 | 내용 |
|---|---|
| 안내 문구 | 근로기준법 제60조 기본 연차규칙을 일괄 등록해요. (입사 1년 미만 월별발생, 1~3년 15일, 3년 이상 근속가산) |
| 버튼 | [기본 규칙 등록] |
- [기본 규칙 등록] 클릭 시 확인 팝업
- title: 기본 연차규칙 등록
- message:
근로기준법 기본 연차규칙을 등록할까요? (기존 규칙은 유지돼요) - 버튼
- [취소], x 버튼: 팝업만 닫힘
- [확인] 버튼 : 아래 12개 기본 규칙을 순서대로 등록 + 해당 팝업 닫힘
- 기존 규칙은 삭제·덮어쓰지 않음
- 동일 규칙이 이미 있으면 해당 건은 건너뜀
등록되는 기본 규칙 (12건)
| # | 근속연수 | 부여일수 | 발생유형 | 최대일수 | 설명 |
|---|---|---|---|---|---|
| 1 | 0년 ~ 1년 미만 | 11일 | 월별 발생 | 11일 | 입사 1년 미만: 매월 1일 발생 (최대 11일) |
| 2 | 1년 ~ 3년 미만 | 15일 | 연간 부여 | - | 1~3년: 연 15일 |
| 3 | 3년 ~ 5년 미만 | 16일 | 연간 부여 | - | 3~5년: 연 16일 (2년 초과 시 1일 가산) |
| 4 | 5년 ~ 7년 미만 | 17일 | 연간 부여 | - | 5~7년: 연 17일 |
| 5 | 7년 ~ 9년 미만 | 18일 | 연간 부여 | - | 7~9년: 연 18일 |
| 6 | 9년 ~ 11년 미만 | 19일 | 연간 부여 | - | 9~11년: 연 19일 |
| 7 | 11년 ~ 13년 미만 | 20일 | 연간 부여 | - | 11~13년: 연 20일 |
| 8 | 13년 ~ 15년 미만 | 21일 | 연간 부여 | - | 13~15년: 연 21일 |
| 9 | 15년 ~ 17년 미만 | 22일 | 연간 부여 | - | 15~17년: 연 22일 |
| 10 | 17년 ~ 19년 미만 | 23일 | 연간 부여 | - | 17~19년: 연 23일 |
| 11 | 19년 ~ 21년 미만 | 24일 | 연간 부여 | - | 19~21년: 연 24일 |
| 12 | 21년 이상 | 25일 | 연간 부여 | - | 21년 이상: 연 25일 (법정 최대) |
3️⃣ 리스트뷰
| # | 근속연수 | 부여일수 | 발생유형 | 최대일수 | 상태 | 설명 | 관리 |
|---|---|---|---|---|---|---|---|
| 1 | 0년 ~ 1년 미만 | 11일 | 월별 발생 | 11일 | 활성 | 입사 1년 미만: 매월 1일 발생 (최대 11일) | ✏️ 🗑️ |
| 2 | 1년 ~ 3년 미만 | 15일 | 연간 부여 | - | 비활성 | 1~3년: 연 15일 | ✏️ 🗑️ |
- 컬럼 정의
- #: 목록 순번 (1부터)
- 근속연수:
{시작}년~{끝}년 미만/ 끝 값 없으면{시작}년 이상 - 부여일수:
{n}일— 굵게, 주황색 - 발생유형: 배지
월별 발생: 노란 배지연간 부여: 청록 배지
- 최대일수:
{n}일/ 없으면- - 설명: 말줄임, 없으면
- - 관리: 아이콘 버튼만 (공통정책)
- [수정] 버튼
- 수정 팝업 제공(4️⃣ 관리 버튼>③ 부여 기준 추가 / 수정 모달 참고)
- [삭제] 버튼 (4️⃣ 관리 버튼>② [삭제] 버튼 과 동일)
- [수정] 버튼
- 상태
- 활성 : 부여기준으로 연차가 발생
- 비활성 : 부여기준으로 연차 발생하지 않음
- 상태 변경
- 비활성 → 활성
- 조건이 중복되는 부여기준의 경우, 먼저 적용된 규칙만 유지한다.
- 활성 → 비활성
- 이미 해당 조건으로 연차가 부여된 경우 연차 수를 변경하지 않는다.
- 비활성 → 활성
- 빈 목록일 때
- 표 중앙:
등록된 연차 부여기준이 없어요. 부여 기준을 추가해 주세요.4️⃣ 관리 버튼 ① [수정] 버튼
- 표 중앙:
- 클릭 시 부여 기준 수정 모달 (추가 모달과 동일 필드, 기존 값 채움)
- title:
부여 기준 수정
② [삭제] 버튼
- 부여 기준이 활성 상태일 때
- title:
삭제 - message:
부여 기준을 삭제할 수 없어요. 먼저 비활성 상태로 변경한 뒤 삭제할 수 있어요. - 버튼: [확인]
- 팝업만 닫힘
- title:
- 부여 기준이 상태 비활성 + 연결된 연차 부여 있음
- title:
삭제 - message:
이 유형을 부여한 연차가 있어요. 삭제하면 {부여 기준 이름} 기준으로 부여된 연차는 다시 계산돼요. - 버튼
- [취소], [X]: 팝업만 닫힘
- [확인] : 부여 기준 삭제 + 팝업 닫힘 + 적용되 기준 중 가장 오래된 것 적용
- title:
- 부여 기준이 상태: 비활성 + 연결된 연차 내역 없음
- title:
삭제 - message:
{부여 기준 이름} 연차 부여 기준을 삭제할까요? - 버튼
- [취소], [X]: 팝업만 닫힘
- [확인] : 부여 기준 삭제 · 팝업 닫힘 · 목록 갱신 +
휴가 규칙을 삭제했어요.토스트
- title:
③ 부여 기준 추가 / 수정 모달
- title
- 추가:
부여 기준 추가 - 수정:
부여 기준 수정
- 추가:
- 모달 규칙: 배경 클릭으로 닫히지 않음 · [X] / [취소]로만 닫힘
- 필수 값인 경우 필드 이름 옆에
*표시
| 필드 | 필수 | 기본값 (추가 시) | 설명 |
|---|---|---|---|
| 이름 | O | 빈칸 | placeholder : 회계년도 연차 발생 |
| 근속연수 시작 (이상) | O | 0 | 0 이상 정수 |
| 근속연수 끝 (미만) | X | 빈칸 | 빈칸 = 무제한 · placeholder: 무제한 |
| 부여일수 | O | 15 | 0 이상, 0.5 단위 입력 가능 |
| 발생유형 | O | 연간 부여 | 드롭다운: 연간 부여 / 월별 발생 |
| 최대일수 (월별 발생 시 상한) | X | 빈칸 | 발생유형 = 월별 발생일 때만 노출 · placeholder: 제한 없음 |
| 설명 | X | 빈칸 | 최대 200자 · placeholder: 예: 근로기준법 제60조 기준 |
| 상태 | O(단 필수 표시 하지 않음) | 활성 | 옵션 : 활성, 비활성 |
상태 툴팁 (필드 옆 ⓘ · hover)
추가 모달
비활성상태일 때 :비활성 상태로 추가하면 규칙이 적용되지 않아요.활성상태일 때 :활성 상태로 추가하면 규칙이 바로 적용돼요. 다른 규칙이 적용된 경우 적용되지 않아요.
수정 모달
비활성상태일 때 :활성 상태로 변경하면 규칙이 바로 적용돼요. 다른 규칙이 적용된 경우 적용되지 않아요.활성상태일 때 :비활성 상태로 변경해도 이미 적용된 경우 변경되지 않아요.
푸터 버튼
- [취소], x 버튼: 저장 없이 모달만 닫힘
- [저장]
- 클릭 시 저장 · 모달 닫힘 · 목록 갱신
- 추가된 목록의 경우 최상단에서 보이도록 수정
- 추가:
휴가 규칙을 추가했어요.토스트 - 수정:
휴가 규칙을 수정했어요.토스트
- 클릭 시 저장 · 모달 닫힘 · 목록 갱신
휴가 유형(탭)
1️⃣ 필터링(추가기능)
- 상태
- 옵션 : 전체, 활성, 비활성
- 기본 : 전체
2️⃣ [휴가 추가] 버튼
리스트 뷰 위쪽에 오른쪽에 위치함(공통정책)
버튼을 누르면 '휴가 유형' 팝업 제공
휴가 유형 추가 팝업
- title : 휴가 유형
- 이름
- 입력란
- 필수입력 표시 (
*) - placeholder : 연차, 반차, 경조 휴가 등
- 시간
- 입력란
- placeholder : 0
- 단위 : 시간
- 소수점 둘째자리까지 입력
- 차감 일수
- 입력란
- placeholder : 0
- 단위 : 일
- 0.5 단위 입력 가능
0이면 연차 잔여에서 차감하지 않음 (예: 경조 휴가)
- 설명(추가)
- 입력란
- placeholder : 일반 휴가
- 스케줄러 연동 체크 박스
- 툴팁 : 체크하면 스케줄러에서 해당 휴가 유형을 사용할 수 있어요.
- 체크박스 선택하면 해당 휴가 유형 스케줄러에서 선택할 수 있도록 제공됨
- 코드
- 필수입력 표시 (
*) - 입력란
- placeholder : D, E, N 등
- 필수입력 표시 (
- 코드 라벨 색상
- 새 휴가 유형 생성 시 사용 가능한 색상을 순차적으로 자동 선택
- 표는 Hereby sign에서 가져온 값임
# 색상 HEX 1 오렌지 #F660142 연두 #A3C75A3 하늘 #A0D3F94 핑크 #F2C7E35 네이비 #26426B6 블루 #2463EB7 퍼플 #826AED8 레드 #E632249 다크그린 #0F662510 브라운 #A2812D11 옐로우 #F09C0012 틸 #00A19D13 테라코타 #B5523914 다크브라운 #71383815 그레이 #B8B8B8- 사용자는 원하는 색상으로 변경 가능 - 모든 색상을 사용한 경우 처음 색상부터 다시 순환하여 선택 - 색상을 사용자가 선택할 수 있도록 진행- 상태
- 드롭다운
- 기본 : 활성
- 옵션 : 활성, 비활성
- 비활성인 경우 Works(mobile) 휴가 신청에서 해당 유형 보이지 않음
- 기존 신청·승인·반려·취소 건의 유형·차감 일수는 변경하지 않음
- 버튼
- [취소], [X]: 저장 없이 팝업만 닫힘
- [저장]
- 활성화: 필수 항목 입력 후 활성화됨
- 클릭: 저장 후 팝업 닫힘 · 목록 갱신 · 추가한 행은 목록 상단으로 이동 3️⃣ 리스트 뷰
| 이름 | 설명 | 코드 | 시간 | 차감 일수 | 스케줄러 연동 | 상태 | 관리 |
|---|---|---|---|---|---|---|---|
| 연차 | 일반 연차 | AL | 8시간 | 1일 | 사용 | 활성 | ✏️ 🗑️ |
| 반차 | 일반 반차 | HD | 4시간 | 0.5일 | 사용 | 활성 | ✏️ 🗑️ |
| 경조 휴가 | 경조사로 인해 사용하는 휴가, 사전 합의 필요 | EV | 8시간 | 0일 | 미사용 | 활성 | ✏️ 🗑️ |
- 컬럼 정의
- 이름 : 휴가 유형 이름 · 말줄임 + hover 시 전체 이름
- 설명 : 없으면
-· 말줄임 - 코드 : 등록된 코드 문자열 (예:
AL,HD)- 배경색 : 등록된 HEX 색상 (
코드 라벨 색상팝업과 동일) - 글자색 : 배경 대비 가독성에 따라 자동(밝은 배경 → 진한 글자, 어두운 배경 → 밝은 글자)
- 배경색 : 등록된 HEX 색상 (
- 시간 :
{n}시간· 소수 둘째 자리까지 (예:8시간,4.00시간) - 차감 일수 :
{n}일· 0.5 단위 (예:1일,0.5일,0일) - 스케줄러 연동 :
사용/미사용배지 - 상태 :
활성/비활성배지 - 관리 : 아이콘 버튼만 (공통정책)
- [수정] · [삭제]
- [수정] 버튼
- 클릭하면 휴가 유형 수정 팝업 제공
- title : 휴가 유형
- 필드는 휴가 유형 추가 팝업과 동일
- 활성 → 비활성 저장 시 확인 팝업
- title : 휴가 유형 비활성화
- message :
이 휴가 유형을 비활성화할까요? 비활성화하면 Works에서 새 휴가 신청 시 선택할 수 없어요. 이미 신청·승인된 휴가는 그대로 유지돼요. - [취소] : 팝업만 닫힘 · 상태 변경 없음
- [확인] : 비활성 저장 · 팝업 닫힘 · 목록 갱신
- [삭제] 버튼
- 활성 상태일 때
- title:
삭제 - message:
휴가 유형을 삭제할 수 없어요. 먼저 비활성 상태로 변경한 뒤 삭제할 수 있어요. - 버튼: [확인] — 팝업만 닫힘
- title:
- 상태 비활성 + 연결된 휴가 내역 있음
- title:
삭제 - message:
이 유형을 사용한 휴가 내역이 있어요. 삭제하면 해당 휴가 내역의 유형은 **삭제**로 표시돼요. - 버튼
- [취소], [X]: 팝업만 닫힘
- [확인] : 유형 삭제 + 팝업 닫힘 + 해당 유형 사용한 휴가 내역의 유형을 '삭제'로 표시
- title:
- 상태: 비활성 + 연결된 휴가 내역 없음
- title:
삭제 - message:
{이름} 휴가 유형을 삭제할까요? - 버튼
- [취소], [X]: 팝업만 닫힘
- [확인] : 유형 삭제 · 팝업 닫힘 · 목록 갱신
- title:
- 활성 상태일 때
- 빈 목록일 때
- 표 중앙 :
등록된 휴가 유형이 없어요. 휴가 유형을 추가해 주세요.
- 표 중앙 :
연차/휴가 결재(탭)
1️⃣ 필터링
- 상태
- 옵션 : 전체, 대기, 승인, 반려, 취소
- 기본 : 전체
- 기간
- 적용 기간(시작일~종료일) 기준 조회
2️⃣ 리스트뷰
| 사번 | 이름 | 유형 | 적용기간 | 차감 일수 | 사유 | 상태 | 관리 |
|---|---|---|---|---|---|---|---|
| ADMIN003 | 홍길동 | 연차 | 2026.06.10. ~ 2026.06.12. | 3 | 가족 행사 | 대기 | [보기] 버튼 |
- 컬럼
- 사번 : 없으면
- - 이름
- 유형 : 휴가 유형 탭에 등록된 이름 · 삭제된 유형은
삭제 - 적용기간 :
YYYY.MM.DD. ~ YYYY.MM.DD.· 시작일=종료일이면 하루 - 사유 : 없으면
-· 말줄임 - 상태 :
대기/승인/반려/취소
- 사번 : 없으면
- 빈 목록 :
휴가 신청 내역이 없어요.
3️⃣ [보기] 버튼
- 휴가 상세 팝업 제공
- ① 대기 상태일 때 '휴가 상세' 팝업
- 휴가신청서
- 직원 :
- 유형 :
- 적용 기간 : 2026.06.10. ~ 2026.06.12.
- 차감 일수 :
- 반차인 경우 0.5로 표시
- 소수점 둘째자리까지 표시 가능
- 사유 : {가족 행사} / 없으면
-
- 푸터 버튼
- [승인]
- 사유 입력: 불필요
- 동작
- 상태 변경되고 모든 팝업 닫힘
- 상태 : 대기 → 승인
- 결재자, 결재 일시 기록
- 연차 현황 사용일수·잔여일수 반영
- [반려]
- 반려 사유 입력 팝업 제공
- title : 휴가 반려
- 사유입력
- 필수 표시 (
*) - 입력란
- placeholder :
반려사유를 입력해 주세요.
- 필수 표시 (
- 버튼
- [취소] : 휴가 반려 팝업만 닫힘
- [확인] 버튼
- 반려 사유를 입력해야 버튼 활성화됨
- 버튼 클릭하면 반려로 변경되고 모든 팝업 닫힘
- 반려 사유 입력 팝업 제공
- [승인]
- 휴가신청서
- ② 반려 상태일 때 '휴가 상세' 팝업
- 휴가 신청 내역과 반려 내역 제공
- 휴가 신청 내역은 '휴가신청서'와 동일
- 반려 내역
- 결재자 :
- 결재 일시 : 2026.06.11. 오후 02:30:00
- 사유 :
- 푸터 버튼
- [확인] : 해당 팝업 닫힘
- ③ 승인 상태일 때 '휴가 상세' 팝업
- 휴가 신청 내역과 승인 내역 제공
- 휴가 신청 내역은 '휴가신청서'와 동일
- 승인 내역
- 결재자 :
- 결재 일시 : 2026.06.11. 오후 02:30:00
- 사유 :
-(승인 시 사유 없음)
- 푸터 버튼
- [확인] : 해당 팝업 닫힘
- ④ 취소 상태일 때 '휴가 상세' 팝업
- 휴가 신청 내역 제공 (휴가신청서와 동일)
- 취소 내역
- 처리자 : {성이름(사번)} 또는
- 처리 일시 : 2026.06.11. 오후 03:00:00
- 사유 :
- 푸터 버튼
- [확인] : 해당 팝업 닫힘
- ① 대기 상태일 때 '휴가 상세' 팝업
연차 사용촉진(annual-leave-promotion)
근로기준법 제61조 연차 사용촉진 워크플로는 이 화면과 별도로 구현돼 있어요. 상세 상태·프로시저는 연차 사용촉진 문서를 참고해 주세요. (요약: 관리자가 잔여 연차 보유 직원에게 메신저로 1차 안내 + hereby Sign 연차 사용계획서를 발송 → 기본 10일 내 미서명 시 자동 취소 → 2차 시기 지정.)
⚠️ 구현 현황 · 하드닝 후보 (2026-08-13)
CODE가 진실이에요.
산정 기준 배지 「전환 기준(transition)」이 enum에 없음 [판단 필요]
- 문서 기술: §연차 현황 3️⃣ 산정 기준 배지 3종 —
입사일 기준(hire_date)·전환 기준(transition)·회계연도 기준(fiscal_year)(off.md:57-59). - 실제 구현:
LeaveAccrualBasisenum 은FISCAL_YEAR("fiscal_year")·HIRE_DATE("hire_date")2종뿐이에요(packages/core/src/enums/leave.enum.ts:42-45).transition코드값은 없어요. - 격차: 「전환 기준」은 입사일→회계연도 이중 운영(입사일 기준 ~2026.12, 2027.01~ 회계연도)의 UI 표시 상태로 추정되나, 저장/필터에 쓰이는 실제 값이 무엇인지 코드상 불명확해요. 배지 값의 출처 확인이 필요해요.