HBTM210_연차·휴가 승인 큐
(Hereby) 내부 결재 > 연차·휴가 승인 큐
| 앱 | 내부 결재 (HBTM) |
| 대상 사용자 | 조건1 [TEAM_LEADER] / 조건2 [SUPER_ADMIN] |
| 프로토타입 | TBU |
| 관련 정책 | [[POL_결재워크플로우]] · [[POL_권한(RBAC)]] · [[POL_간호스케줄 Lifecycle]] |
| Status | review |
| Owner | 카나 (PM) |
개요
- 연차/휴가 탭(/team-manager/leave)의 휴가 승인 큐다. 상태 필터 + 7컬럼 목록 + row별 결재 action으로 구성된다.
- Admin 연차/휴가 결재([[HBAD251_연차 현황·결재]])와 동일 원천이다.
- 상태별 행 액션 체계가 다르다: 대기 row = "승인완료 | 반려" 인라인, 반려·승인 row = "취소"(결재 결과 취소 가능). 승인·반려·취소는 모두 destructive이며 사람 확정이다. 반려 시 반려 사유 필수 다이얼로그는 원천 화면 [[HBAD251_연차 현황·결재]]를 참조한다.
- 자동생성 row: 사유가 "근무표 확정 자동 생성"인 행은 [[HBNS202_확인 (확정·게시)]] 간호 근무표 확정 시 연차가 자동 승인 record로 생성된 것이다 (역방향 연동, [[POL_간호스케줄 Lifecycle]]).
문서 히스토리
| 날짜 | 작성자 | 팀 | 변경 내용 |
|---|---|---|---|
| 2026-07-06 | 카나 | PM | 최초 작성 |
| 2026-07-10 | 카나 | PM | 라이브 기능 검토 반영 |
| 2026-07-13 | 카나 | PM | 버튼 행동 명세 보강 |
| 2026-07-21 | 카나 | PM | GC700 깊이 재작성 + 확정 스타일 |
| 2026-07-21 | 카나 | PM | TC 크로스체크 확정분 반영 (🟡) |
Data I/O
Server → Client
| 변수 | 엔티티.컬럼 | 값 없을 때 | 비고 |
|---|---|---|---|
| $ | leave_requests[] | 큐 empty | team scope. 페이지네이션 "총 31건 중 1-30건" |
| $ | leave_requests.status (enum: pending/approved/rejected/cancelled) | 기본 "전체" | 상태 필터 값. 큐 조회 = teamManager.listLeaveRequests({status: TeamManagerStatusFilter.PENDING}) (TC 확정: 02:2.2) |
Client → Server
| 액션 | 전달 값 | tRPC procedure | 권한 토큰 |
|---|---|---|---|
| 승인 | ids[] | teamManager.approveLeaveRequests(ids[]) (TC 확정: 02:2.2) → status=approved, approvedBy·approvedAt 기록 | approval:leave (추정) |
| 반려 | ids[], reason | teamManager.rejectLeaveRequests(ids[], reason) (TC 확정: 02:2.3) → status=rejected, rejectionReason 기록 | approval:leave (추정) |
| 취소 | requestId | sdk.teamManager.approval.cancel() (추정) → status=cancelled, cancelledBy·cancelledAt·cancellationReason 기록 | approval:leave (추정) |
외부 통합 (cross-app)
| 외부 시스템 | 데이터 | 방향 | 비고 |
|---|---|---|---|
| 직원 앱 ([[HBEA400_결재 허브]]) | 휴가 신청 생성 (대기) | EA → TM | 신청 원천 |
| Nurse Scheduler ([[HBNS202_확인 (확정·게시)]]) | 근무표 확정 → 연차 자동 승인 record 생성 | NS → TM | 역방향, 사유 "근무표 확정 자동 생성" |
화면 플로우
승인·반려·취소는 destructive·사람 확정. HBNS 근무표 확정은 연차 자동생성으로 역연동된다(자동생성 row).
연차·휴가 승인 큐 사양표
| 번호 | 항목/기능명 | 타입 | 사양 및 기능 설명 | 연관/영향 범위 | 비고 |
|---|---|---|---|---|---|
| 00 | 화면 진입 조건 | - | 조건1 [TEAM_LEADER] 이상 인증 · "연차/휴가" 탭 클릭 시 /team-manager/leave | 인증 세션 | token 내부 key TBU |
| 01 | 초기 상태 | - | 상태 필터 기본 "전체" + 7컬럼 목록. 대기 row는 인라인 결재, 완료 row는 취소 action | 10 / 20 | |
| 10 | 상태 필터 | Tab/Dropdown | • 목록을 상태로 거르는 필터 • 선택 시: 해당 상태 목록 재조회 - 원문 5종: "전체" / "처리 대기" / "승인완료" / "반려" / "취소" | leave_requests.status | |
| 20 | 목록 | Table | • 휴가 신청 목록. 7컬럼: 사번 / 이름 / 유형 / 적용 기간 / 사유 / 상태 / 관리 | leave_requests | team scope |
| ㄴ21 | 대기 row | ListItem | • 미처리 신청 1행. 관리 action "승인완료 | 반려" 인라인 - 예: "ADMIN003 안세희 테스트111 2026-06-24 - 2026-06-24 여행 대기" | 40 / 50 | census 원문 |
| ㄴ22 | 완료 row | ListItem | • 반려·승인 처리된 1행. 관리 action "취소"(결재 결과 취소 가능) | 60 | |
| ㄴ23 | 자동생성 row | ListItem | • 사유 "근무표 확정 자동 생성" 행 = HBNS 근무표 확정 시 연차가 자동 승인 record로 생성된 행 (관찰됨) | [[HBNS202_확인 (확정·게시)]] → leave_requests | 역방향 연동 핵심 |
| 30 | 페이지네이션 | Pagination | • 목록 페이지 이동. "총 31건 중 1-30건", "« ‹ 1 2 › »" • 클릭 시: 해당 페이지 목록 재조회 | ||
| 40 | 승인 | Button | • 대기 신청을 승인 처리하는 기능 — destructive • 클릭 시: 즉시 실행, 성공: 상태 대기→승인완료 (leave_requests.status=approved, approvedBy·approvedAt 기록) - STEP1 승인 처리 (근무표/잔여연차/HR 입력 영향 가능) - STEP2 해당 row 관리 action이 "취소"로 전환 | destructive · approvedBy·approvedAt · teamManager.approveLeaveRequests(ids[]) | 사람 확정 · (TC 확정: 02:2.2) |
| 50 | 반려 | Button | • 대기 신청을 반려 처리하는 기능 — destructive. 반려 사유 필수 • 클릭 시: "반려 사유" 다이얼로그 오픈 (원천 HBAD251 동일) - STEP1 사유* 입력 (미입력 시 확인 disabled) - STEP2 확인 → 반려 처리, 상태 대기→반려 (rejectionReason 기록) - STEP3 해당 row 관리 action이 "취소"로 전환 | destructive · rejectionReason · [[HBAD251_연차 현황·결재]] · teamManager.rejectLeaveRequests(ids[], reason) | 사유 필수 · (TC 확정: 02:2.3) |
| 60 | 취소 | Button | • 반려·승인 처리된 결재 결과를 되돌리는 기능 — destructive • 클릭 시: 즉시 실행, 성공: 기존 상태 되돌림 (status=cancelled, cancelledBy·cancelledAt·cancellationReason 기록) - 되돌림 범위(잔여연차 복원·HR 반영 롤백) = TBU | destructive · cancelledBy·cancellationReason | 되돌림 범위 TBU |
권한·상태 분기 요약
| 시나리오 | 트리거 | 결과 | 비고 |
|---|---|---|---|
CASE01 [승인] | 대기 row "승인완료" | status=approved, 잔여연차·HR 반영 가능 | destructive, 사람 |
CASE02 [반려] | 대기 row "반려" → 사유 입력 | status=rejected (사유 필수) | destructive |
CASE03 [취소] | 완료 row "취소" | status=cancelled, 기존 상태 되돌림 | destructive, 되돌림 범위 TBU |
CASE04 [자동생성] | HBNS 근무표 확정 | 연차 자동 승인 record 생성 | 역방향, 사유 "근무표 확정 자동 생성" |
조건1 [TEAM_LEADER] | 큐 진입 | 소속 팀 scope 큐 | token 내부 key TBU |
조건2 [SUPER_ADMIN] | 큐 진입 | 전체 팀 scope 큐 | token 내부 key TBU |
Open Question
- 반려 사유는 필수 다이얼로그로 확인됨 (원천 HBAD251 참조). 첨부(attachments) 지원 여부 = TBU
- 취소 시 되돌림 범위(잔여연차 복원·HR 반영 롤백) = TBU
- 승인/반려/취소 후 audit trail UI (승인자·시각·사유) 노출 여부 = TBU
- 자동생성 연차 record의 취소/수정 가능 여부 및 근무표와의 정합성 = TBU