HBNS210_간호사 프로필 관리
(Hereby) 팀 관리(team-manager) > 간호 스케줄러 > 간호사 프로필 관리
| 앱 | 간호 스케줄러 (team-manager 내장, 포트 TBU) |
| 대상 사용자 | 조건1 [간호 관리자] · 조건2 [수간호사] |
| 프로토타입 | TBU |
| 관련 정책 | [[POL_간호스케줄 Lifecycle]] |
| Status | draft |
| Owner | 카나 |
개요
- 2026-09-28 #833(v0.14.0) 용어·구조 개편: "간호사" 뷰 → 「인력」 탭(admin 스케줄러 탭 「근무표」/「인력」). 용어 통일 — 간호사→인력, 간호사 등록→직원 배정, 삭제→배정 해제, 근무 형태→교대 형태. 근무표 그리드([[HBNS200]])의 행이 되는 인력 마스터를 관리한다.
- 인력 탭(실측 2026-09-29): 검색(placeholder 원문 "간호사 찾기") + 「자동등록」 / 「직원 배정」 버튼 + 6컬럼 테이블(사번 / 이름 / 교대 형태 / 소속 병동 / 스케줄러 / 관리). 행 관리 액션 = 「편집」 / 「배정 해제」. 툴바는 축소됨(#833).
- 「직원 배정」은 병동 관리([[HBAD230]])의 직원 배정 팝업과 동일 계열(검색·다중·교대 형태 지정) — 팝업 상세는 [[HBAD230]] 참조.
- 프로필은 nurse_profiles(employeeId / workType enum / wardId / isHeadNurse)에 저장된다. 소속 병동은 **Admin 병동 관리([[HBAD230]])**가 원천. 수간호사는 「책임자」 표기로 통일(#833).
문서 히스토리
| 날짜 | 작성자 | 팀 | 변경 내용 |
|---|---|---|---|
| 2026-07-06 | 카나 | PM | 최초 작성 |
| 2026-07-10 | 카나 | PM | 라이브 기능 검토 반영 |
| 2026-07-13 | 카나 | PM | 버튼 행동 명세 보강 |
| 2026-07-21 | 카나 | PM | GC700 깊이 재작성 |
| 2026-07-21 | 카나 | PM | 셀 스타일 확정판 적용 (콸 승인) |
| 2026-07-21 | 카나 | PM | TC 크로스체크 확정분 반영 (🟡 — nurseScheduler.profile.create/list, NurseWorkType enum(two_shift 없음) 등) |
| 2026-08-18 | 카나 | 라이브 재검증 정정 | 등록 모달 근무 형태 select 라이브 4종 = "3교대 / 야간전담 / 데이전담 / 이브닝전담" (evening_dedicated 추가 관찰). 기존 스펙 2~3종(데이전담/3교대/야간전담)에 이브닝전담 신규. two_shift 없음은 유지 |
| 2026-09-15 | 카나 | 콸 | 간호 프로필 검증·예약 이동 충돌 안전 반영(1e70fde): 프로필 생성·수정은 같은 조직 병동·직원만 허용, 이미 배정된 병동으로는 예약 이동 불가, 적용 시 겹치면 원래 프로필을 합침, 예약마다 따로 처리해 간호사 목록이 멈추지 않게 함 |
| 2026-09-29 | 카나 | PM | #833/#912(v0.14.0) 용어·구조 개편 반영 — 「인력」 탭 전환(탭 「근무표」/「인력」), 간호사 등록→직원 배정·삭제→배정 해제·근무 형태→교대 형태, 6컬럼 갱신(수간호사→스케줄러 열, 작업→관리 「편집」/「배정 해제」), 검색 "간호사 찾기"·툴바 축소, 수간호사→책임자 표기 — 라이브 실사(admin 스케줄러) 기준 |
Data I/O
Server → Client
| 변수 | DB 엔티티.컬럼 | 값 없을 때 | 비고 |
|---|---|---|---|
${profiles} | nurse_profiles[] (employeeId / workType / wardId / isHeadNurse) | 빈 테이블 → Empty 행(-E) 노출 | 사번 / 이름 / 근무 형태 / 소속 병동 / 수간호사 표시 원천 |
${wards} | wards[] ([[HBAD230]] 원천) | select 옵션 없음 → TBU(선택 불가/안내 문구 미확인) | 소속 병동 선택지 |
${worktype_enum} | NurseWorkType enum (2026-08-18 라이브 4종) = three_shift / night_dedicated / day_dedicated / evening_dedicated (two_shift 없음) | 고정 enum → 항상 존재 | 라벨 "3교대" / "야간전담" / "데이전담" / "이브닝전담" |
Client → Server
| 액션 | 전달 값 | tRPC/SDK | 권한 토큰 |
|---|---|---|---|
| 간호사 등록 | employeeId, workType, wardId, isHeadNurse | nurseScheduler.profile.create() (TC 확정: 04:4.1) | TBU |
| 프로필 목록 조회 | wardId | nurseScheduler.profile.list({wardId}) (TC 확정: 04:4.1) | TBU |
| 자동등록 | 일괄 프로필 생성 (대상 범위·동선 상세 TBU) | TBU | TBU |
| 삭제 | profileId | nurseScheduler.profile.delete() (추정 — TC 미검증), destructive | TBU |
외부 통합 (cross-app)
| 외부 시스템 | 데이터 | 동기/비동기 | 비고 |
|---|---|---|---|
| Admin 병동 관리 ([[HBAD230]]) | 소속 병동(wardId) 마스터 | 동기(select 로드) | 병동 원천 |
| 인사 마스터 (employees) | 직원 검색 → employeeId 매핑 | 동기(등록 모달 검색) | 직원 선택 원천 |
화면 플로우 (상태 머신 필수)
프로필은 그리드([[HBNS200]]) 행의 원천. 소속 병동은 [[HBAD230]]에서 생성된 병동을 참조한다.
간호사 프로필 관리 사양표
| 번호 | 항목/기능명 | 타입 | 사양 및 기능 설명 | 연관/영향 범위 | 비고 |
|---|---|---|---|---|---|
| 00 | 화면 진입 조건 | - | • 조건1 [간호 관리자]/조건2 [수간호사] 인증 시 "👩⚕️ 간호사" 뷰로 노출 | 인증 세션 | TBU: 조건3 [간호사] 노출 여부 |
| 10 | 정체성 | - | • 그리드 행의 원천이 되는 간호사 마스터 CRUD 화면 | [[HBNS200]] | nurse_profiles |
| 20 | 자동등록 | Button | • 간호사 프로필을 일괄 생성하는 기능 • 클릭 → 일괄 프로필 생성 ( CASE02 [자동등록]) | TBU: 대상 범위·동선·실패 동작 | |
| 25 | 검색 | Search | • 인력 검색 필드. placeholder 원문 "간호사 찾기" • 입력 → 목록 필터링 | nurse_profiles[] | 신설(#833) · 실측 2026-09-29 |
| 30 | 직원 배정 | Button | • 인력을 배정하는 팝업을 여는 버튼. 원문 "직원 배정"(구 "+ 간호사 등록") • 클릭 → 직원 배정 팝업 오픈 — 상세는 [[HBAD230]] 직원 배정 팝업 사양표(공용 계열) | [[HBAD230]] | 용어 개편(#833) · nurseScheduler.profile.create (TC 확정: 04:4.1) · TBU: 스케줄러측 팝업과 HBAD230 팝업의 차이 재검증 |
| 40 | 인력 테이블 | Table | • 등록 인력을 6컬럼(사번 / 이름 / 교대 형태 / 소속 병동 / 스케줄러 / 관리)으로 렌더(실측 2026-09-29). Empty = 아래 40-E 행 | nurse_profiles[] | 컬럼 개편(#833): 수간호사→스케줄러, 작업→관리 |
| ㄴ41 | 사번 | Cell | • 인력 사번 표시 | employeeId | 식별자(mono 금지)·TBU: 미매핑 표시 |
| ㄴ42 | 이름 | Cell | • 인력 성명 표시 | TBU: 값 없음 표시 | |
| ㄴ43 | 교대 형태 | Cell | • "데이전담" / "3교대" 등 표시(구 라벨 "근무 형태") | nurse_profiles_worktype_enum | 용어 개편(#833) · TBU: enum 외 값 표시 |
| ㄴ44 | 소속 병동 | Cell | • 배속 병동 표시. [[HBAD230]] 생성 병동 참조 | [[HBAD230]] / wardId | 원천·TBU: 미배정/삭제 병동 표시 |
| ㄴ45 | 스케줄러 | Cell | • 스케줄러 등록 상태 표시(구 수간호사 열 대체 — 책임자 여부 표시 위치는 재검증) | nurse_profiles | 신설(#833) · TBU: 셀 값 형식·책임자(구 수간호사) 표시 위치 |
| ㄴ46 | 관리 | Button | • 행 관리 액션 2종(실측): 「편집」 / 「배정 해제」(구 "삭제") • 「편집」 클릭 → 프로필 편집 (동선 상세 TBU) • 「배정 해제」 클릭 → 배정 해제 ( CASE03 [배정 해제]) | [[HBNS200]] | 용어 개편(#833) · TBU: 컨펌 유무·확정 근무표 배정 인력 해제 차단 규칙·권한 |
| ㄴ40-E | 프로필 없음(Empty) | -E | • 프로필 0건일 때 테이블 Empty 상태 | Empty·TBU: 안내 문구·CTA |
간호사 등록 모달 사양표 (구 — #833에서 「직원 배정」 팝업으로 대체)
⚠ 2026-09-28 #833로 진입 버튼이 「직원 배정」으로 바뀌고 팝업이 병동 관리([[HBAD230]]) 직원 배정 팝업 계열로 교체됨. 아래 구 모달 사양은 참고용 존치 — 스케줄러측 팝업의 필드 셋(교대 형태·책임자 체크 등) 재실사 후 재작성 예정(TBU). 검증 규칙(1e70fde 조직 스코프·예약 이동 충돌 안전)은 유효.
| 번호 | 항목/기능명 | 타입 | 사양 및 기능 설명 | 연관/영향 범위 | 비고 |
|---|---|---|---|---|---|
| 00 | 노출 조건 | - | • "+ 간호사 등록" 클릭 시 "간호사 등록" 모달 오픈 | 프로필 관리 표 30 | |
| 10 | 직원 선택 | Search | • 인사 마스터에서 직원을 검색해 employeeId로 매핑하는 검색 필드 • 입력 → "사번 또는 이름으로 검색..." placeholder로 검색, 일치 직원 매핑 - CASE01 [검색 결과 없음]: Empty(-E, 아래 10-E) | employees | 원문 카피·TBU: 미선택 등록 시 검증 |
| ㄴ10-E | 검색 결과 없음(Empty) | -E | • 사번/이름 검색 결과 0건일 때 표시 | Empty·TBU: 문구 | |
| 20 | 근무 형태 | Select | • 근무 형태를 선택하는 드롭다운 (기본값 "3교대") • 옵션 4종(2026-08-18 라이브): "3교대" / "야간전담" / "데이전담" / "이브닝전담" | nurse_profiles_worktype_enum | 2026-08-18: 전체 enum 값 확정(이브닝전담 포함) |
| 30 | 소속 병동 | Select | • 배속 병동을 선택하는 드롭다운. [[HBAD230]] 생성 병동 참조 • 선택 → 배속 병동 지정 | [[HBAD230]] / wardId | 원천·TBU: 병동 0건 옵션·기본값 |
| 40 | 수간호사 | Checkbox | • 수간호사 여부를 지정하는 체크박스 • 클릭 → 체크 시 isHeadNurse = true | isHeadNurse | 미체크 기본값 false(추정) |
| 50 | 취소 | Button | • 등록을 취소하고 모달을 닫는 버튼 • 클릭 → 모달 닫기(변경 폐기, 저장 없음) | ||
| 51 | 등록 | Button | • 입력 값으로 간호사 프로필을 생성하는 버튼 • 클릭 → 프로필 생성 후 모달 닫힘 + 테이블/그리드 반영 ( CASE01 [간호사 등록])- 검증(1e70fde): 프로필 생성·수정은 같은 조직의 병동·직원만 받는다(타 조직 병동/직원 거부). 이미 배정된 병동으로는 예약 이동을 걸 수 없고, 예약 이동 적용 시 대상이 겹치면 원래 프로필을 합치며 예약마다 따로 처리해 간호사 목록이 멈추지 않는다 | [[HBNS200]] · nurse-scheduler.router | nurseScheduler.profile.create (TC 확정: 04:4.1) · 조직 스코프·예약 이동 충돌 안전(1e70fde, 9/15) · TBU: 필수 미입력(직원 미선택)·생성 실패(중복 employeeId) 동작 |
권한·상태 분기 요약
| 시나리오 | 트리거 | 결과 | 권한 | 비고 |
|---|---|---|---|---|
CASE01 [간호사 등록] | "+ 간호사 등록" → 모달 "등록" | nurse_profiles 생성 → 그리드 행 반영 | 조건1/조건2 | [[HBNS200]] |
CASE02 [자동등록] | "자동등록" | 일괄 프로필 생성 | TBU | 동선 상세 TBU |
CASE03 [배정 해제] | 행 관리 「배정 해제」 | 배정 해제 (구 "삭제") | TBU | 컨펌 유무 TBU |
Open Question
- "자동등록" 동선 상세(원천·대상 범위·중복 처리·실패 동작) = TBU
- 근무 형태 enum =
NurseWorkTypethree_shift / night_dedicated / day_dedicated (two_shift 없음) 확정 (TC 04:4.5); 야간전담(night_dedicated) 라벨·AI 편성 패턴 = TBU - 수간호사(isHeadNurse) 사후 수정 UI(기등록 프로필 편집) = TBU — 등록 모달 "수간호사" 체크로 최초 설정만 확인
- 프로필 테이블 Empty 안내 문구·CTA = TBU
- 삭제 destructive 컨펌 다이얼로그 유무 및 문구 = TBU(미실행)
- 확정 근무표에 배정된 인력 「배정 해제」 시 처리(차단/경고) = TBU
- #833 「직원 배정」 팝업(스케줄러측) 필드 셋 — HBAD230 팝업과의 차이·책임자(구 수간호사) 설정 위치 = TBU
- 「편집」 액션 동선(인라인/모달) = TBU
- 「스케줄러」 열 셀 값 형식 = TBU