Skip to content

HBTM210_연차·휴가 승인 큐

(Hereby) 내부 결재 > 연차·휴가 승인 큐

내부 결재 (HBTM)
대상 사용자조건1 [TEAM_LEADER] / 조건2 [SUPER_ADMIN]
프로토타입TBU
관련 정책[[POL_결재워크플로우]] · [[POL_권한(RBAC)]] · [[POL_간호스케줄 Lifecycle]]
Statusreview
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카나PMGC700 깊이 재작성 + 확정 스타일
2026-07-21카나PMTC 크로스체크 확정분 반영 (🟡)

Data I/O

Server → Client

변수엔티티.컬럼값 없을 때비고
$leave_requests[]큐 emptyteam 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[], reasonteamManager.rejectLeaveRequests(ids[], reason) (TC 확정: 02:2.3) → status=rejected, rejectionReason 기록approval:leave (추정)
취소requestIdsdk.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는 취소 action10 / 20
10상태 필터Tab/Dropdown• 목록을 상태로 거르는 필터
• 선택 시: 해당 상태 목록 재조회
 - 원문 5종: "전체" / "처리 대기" / "승인완료" / "반려" / "취소"
leave_requests.status
20목록Table• 휴가 신청 목록. 7컬럼: 사번 / 이름 / 유형 / 적용 기간 / 사유 / 상태 / 관리leave_requeststeam scope
ㄴ21대기 rowListItem• 미처리 신청 1행. 관리 action "승인완료 | 반려" 인라인
 - 예: "ADMIN003 안세희 테스트111 2026-06-24 - 2026-06-24 여행 대기"
40 / 50census 원문
ㄴ22완료 rowListItem• 반려·승인 처리된 1행. 관리 action "취소"(결재 결과 취소 가능)60
ㄴ23자동생성 rowListItem• 사유 "근무표 확정 자동 생성" 행 = 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