Skip to content

HBNS202_확인 (확정·게시)

(Hereby) 팀 관리(team-manager) > 간호 스케줄러 > 근무표 그리드 > 확인 (확정·게시)

간호 스케줄러 (team-manager 내장 탭, 포트 4004)
대상 사용자조건1 [간호 관리자] · 조건2 [수간호사] (확정·게시는 항상 사람)
프로토타입TBU
관련 정책[[POL_AI안전경계]] · [[POL_간호스케줄 Lifecycle]] · [[POL_결재워크플로우]]
Statusdraft
Owner카나

개요

  • 확인(확정·게시) 은 "확인"(초록) 버튼으로 근무표를 정본으로 전이시키는 destructive 액션이다. 수정 중·AI 생성 working 상태를 확정/게시로 넘기는 정본 경계이며, 확정·게시는 항상 사람이 실행한다(자동 publish 절대 금지 — [[POL_AI안전경계]]).
  • "확인" 클릭 시 컨펌 다이얼로그가 뜬다 — 제목 "근무표 확정", 본문 "이 근무표를 확정하시겠습니까? 확정 후에는 수정이 제한됩니다." + [취소]/[확인]. [확인] 시 확정이 실행되어 배지가 CASE04 [확정] 으로 전이하고 셀 편집이 잠긴다(잠긴 셀에 키 입력 시 무시됨, 검증됨).
  • 확정은 2단계 워크플로다. 확정 실행 후 액션 버튼이 "확인" → "제출" 로 전환된다. "제출" 실행 시 배지가 CASE05 [공유됨] 으로 전이하고, 확인·제출 버튼이 소멸한다(AI 자동생성 버튼만 잔존). 상태 전이 최종: 초안 → AI 생성 → 수정 중 → 확정 → 공유됨.
  • ERD상 확정 원천은 nurse_schedules.confirmedBy / confirmedAt / publishedAt / confirmedByEmployeeId 다.
  • 확정 시 연차가 자동생성된다. 생성 기준은 확정 시점의 근무표 내 연차 셀 이며(연차 셀 수 = 생성 건수, 역방향 생성), 생성된 연차는 HBTM 팀결재(TM 결재함/연차 큐)로 전달된다 — 사유 문구 "근무표 확정 자동 생성", 상태 승인. 근무표에 연차 셀이 없으면 생성 0건이다(2026-08 근무표는 연차 셀 0 → 생성 0건, 기존 2026-04 확정분의 TM 연차 큐 항목들로 메커니즘 확인).
  • 확정 직전 QA(complianceGapAlert: 연속야간 위험자·저배치일·교육 단독·연차충돌·준수율 미달)는 greenfield(신규 설계 후보)로, 정본 게시 전 사람 게이트를 보강하는 Donue 차별화 표면이다.

문서 히스토리

날짜작성자변경 내용
2026-07-06카나PM최초 작성
2026-07-10카나PM라이브 기능 검토 반영
2026-07-12카나PM실행 검증 반영 (콸 승인)
2026-07-13카나PM버튼 행동 명세 보강
2026-07-21카나PMGC700 깊이 재작성
2026-07-21카나PM셀 스타일 확정판 적용 (콸 승인)
2026-07-21카나PMTC 크로스체크 확정분 반영 (🟡 — nurseScheduler.schedule.confirm/publish 2단계 확정, 엔트리 검증 흐름 신규 추가 등)

Data I/O

Server → Client

변수DB 엔티티.컬럼값 없을 때비고
${schedule}nurse_schedules (status + 상태 배지)working 상태(초안/AI 생성/수정 중)초안/AI 생성/수정 중/확정/공유됨
${confirm_meta}nurse_schedules.confirmedBy / confirmedAt / publishedAt / confirmedByEmployeeId미확정 시 null확정 시 기록
${qa_report}확정 직전 QA 체크리스트 (greenfield)미구현 → 없음연속야간·저배치·교육 단독·연차충돌·준수율 미달
${leave_cells}nurse_schedule_entries[] 중 assignmentType=연차연차 셀 0건연차 자동생성 기준(셀 수 = 건수)

Client → Server

액션전달 값tRPC/SDK권한 토큰
엔트리 검증 (확정 전)scheduleIdnurseScheduler.entry.validate({scheduleId}) (TC 확정: 04:4.3) — 생성 후·확정 전 엔트리 검증schedule:write (추정)
확인(확정)scheduleIdnurseScheduler.schedule.confirm({scheduleId}) (TC 확정: 04:4.4) — destructive, 배지 "확정" 전이 + 셀 편집 잠금, confirmedBy·confirmedAt 기록schedule:confirm (추정)
제출(공유)scheduleIdnurseScheduler.schedule.publish({scheduleId}) (TC 확정: 04:4.4) — 배지 "공유됨" 전이, publishedAt 기록. 확정 후 "확인"→"제출" 2단계schedule:publish (추정)

외부 통합 (cross-app)

외부 시스템데이터동기/비동기비고
HBTM 팀결재 (TM 결재함/연차 큐)확정 시점 연차 셀 기준 연차 자동생성(역방향)비동기 (확정 부작용)사유 "근무표 확정 자동 생성", 상태 승인

화면 플로우 (상태 머신 필수)

확정·제출(공유)은 정본 경계 — destructive. QA는 확정 직전까지만, 제출(공유)은 항상 사람(자동 publish 금지). 확정 → 제출 2단계.

확인 (확정·게시) 사양표

번호항목/기능명타입사양 및 기능 설명연관/영향 범위비고
00확인 버튼Button• working(초안/AI 생성/수정 중) 근무표를 정본으로 전이시키는 destructive 액션
• 클릭 → "근무표 확정" 컨펌 다이얼로그 노출(05) → [확인] 시 확정 실행
 - CASE01 [AI 생성/수정 중]: 버튼 활성
 - CASE02 [확정 이후]: 버튼이 "제출"로 전환
[[HBNS200]] 액션 바사람 실행 필수 · TBU: 간호사 권한
04엔트리 검증 (확정 전)-• 생성 후·확정 전 근무표 엔트리를 검증하는 라이브 단계(nurseScheduler.entry.validate({scheduleId}))
• 확정 컨펌(05) 진입 전 엔트리 무결성 검증에 사용 (TC 확정: 04:4.3)
 - greenfield QA(30, complianceGapAlert)와 별개 — 이쪽은 라이브 procedure
[[HBNS200]] ㄴ41b신규 흐름 (TC 확정) · UI 노출 위치·검증 규칙 상세 TBU
05확정 컨펌 다이얼로그Modal• "확인" 클릭 시 뜨는 확정 확인 다이얼로그. 제목 "근무표 확정", 본문 "이 근무표를 확정하시겠습니까? 확정 후에는 수정이 제한됩니다." + [취소]/[확인]
• 클릭 시:
 - CASE01 [취소]: working 상태 유지, 전이 없음
 - CASE02 [확인]: 확정 실행
[[POL_간호스케줄 Lifecycle]]TBU: 확정 API 실패 처리
10확정 전이-• [확인] 시 배지 "확정" 전이 + 셀 편집 잠금 + confirmedBy/confirmedAt/confirmedByEmployeeId 기록
 - STEP1 CASE02 [AI 생성]/CASE03 [수정 중]CASE04 [확정]
 - STEP2 셀 편집 잠금(잠긴 셀 키 입력 무시, 검증됨)
[[POL_간호스케줄 Lifecycle]]배지 "확정"
ㄴ11제출 (공유)Button• 확정된 근무표를 공유 상태로 게시하는 2단계 액션. 확정 후 액션 버튼이 "확인"→"제출" 전환
• 클릭 → 즉시 실행(컨펌 없음) → 배지 CASE05 [공유됨] 전이, publishedAt 기록, 확인·제출 버튼 소멸(AI 자동생성만 잔존)
[[POL_AI안전경계]]배지 "공유됨" · 항상 사람 실행
ㄴ12lock 수준-• 확정 시 근무표 셀이 편집 잠금됨 — 잠긴 셀 키 입력 시 무시(편집 불가, 검증됨)
 - CASE01 [잠금 상태 편집 시도]: 무반응(피드백 없음)
[[HBNS200]] 배정 셀셀 편집 잠금 검증
20연차 자동생성-• 확정 시점의 근무표 내 연차 셀 기준으로 연차를 자동생성해 HBTM 팀결재(TM 결재함/연차 큐)로 전달하는 확정 부작용(비동기)HBTM 팀결재 (연계)확정 부작용
ㄴ20a생성 규칙 (역방향)-• 역방향 생성 — 연차 셀 수 = 생성 건수nurse_schedule_entries (assignmentType=연차)셀 수 = 건수
ㄴ20b결재 항목 메타-• 사유 문구 "근무표 확정 자동 생성", 상태 승인HBTM 팀결재UI 원문
ㄴ20-E연차 셀 0건-E• 연차 셀 0건이면 생성 0건 (2026-08 근무표: 연차 셀 0 → 0건)Empty 케이스
ㄴ20c메커니즘 검증-• 2026-04 확정분의 TM 연차 큐 항목들로 메커니즘 확인HBTM 팀결재검증 사실
30확정 직전 QAAI/Read• 확정 직전 체크리스트: 연속야간 위험자 / 저배치일 / 교육 단독 / 연차충돌 / 준수율 미달구간. greenfield — 미구현[[POL_AI안전경계]] / [[POL_간호인력·준수율]]complianceGapAlert — 미구현, RFP 결정타
40정본 경계-• 생성·설명·제안·QA까지 AI, 확정·게시(publish)는 항상 사람. 자동 publish 절대 금지(전 역할 공통)[[POL_AI안전경계]] / [[POL_결재워크플로우]]환자안전 직결

권한·상태 분기 요약

시나리오트리거결과비고
CASE04 [확정]"확인"(초록) → 컨펌 → 확인확정, 배지 "확정" + 셀 편집 잠금(키 입력 무시), confirmedBy·confirmedAt 기록, 버튼 "확인"→"제출"destructive, 검증됨
CASE05 [공유됨]확정 후 "제출"(사람)공유됨, 배지 "공유됨", publishedAt 기록, 확인/제출 버튼 소멸(AI 자동생성만 잔존)자동 publish 금지, 2단계
연차 자동생성확정연차 셀 기준 역방향 자동생성 → HBTM 팀결재 인박스(사유 "근무표 확정 자동 생성", 상태 승인)연차 셀 0이면 0건 · 2026-04로 확인
컨펌 취소"확인" → 컨펌 → 취소working 상태 유지, 전이 없음

Open Question

  • 확정/공유 상태 배지에 대응하는 status enum 정확한 값(confirmed/published 매핑) = TBU
  • 확정 직전 QA(complianceGapAlert) 구현 여부 = TBU (greenfield)
  • 연차 자동생성 → HBTM 팀결재 결재 워크플로우 상세(반려·수정 시 근무표 반영) = TBU
  • 확정 API 실패 시 처리·롤백 = TBU
  • 조건3 [간호사] 확정·제출 실행 권한 = TBU