HBNS210_간호사 프로필 관리
(Hereby) 팀 관리(team-manager) > 간호 스케줄러 > 간호사 프로필 관리
| 앱 | 간호 스케줄러 (team-manager 내장, 포트 TBU) |
| 대상 사용자 | 조건1 [간호 관리자] · 조건2 [수간호사] |
| 프로토타입 | TBU |
| 관련 정책 | [[POL_간호스케줄 Lifecycle]] |
| Status | draft |
| Owner | 카나 |
개요
- "👩⚕️ 간호사" 뷰 = "간호사 프로필 관리" 화면. 근무표 그리드([[HBNS200]])의 행이 되는 간호사 마스터를 등록·관리한다.
- 상단 "자동등록" / "+ 간호사 등록" 버튼, 하단 6컬럼 테이블(사번 / 이름 / 근무 형태 / 소속 병동 / 수간호사 / 작업). row 작업은 "삭제"(destructive).
- "+ 간호사 등록" = 간호사 등록 모달. 직원 선택("사번 또는 이름으로 검색...") + 근무 형태 select + 소속 병동 select + "수간호사" 체크 + 하단 "취소" / "등록".
- 직원 선택은 인사 마스터(employees)에서 검색해 employeeId로 매핑한다. 프로필은 nurse_profiles(employeeId / workType enum / wardId / isHeadNurse)에 저장된다.
- 근무 형태는 데이전담 / 3교대(nurse_profiles_worktype_enum), 소속 병동은 **Admin 병동 관리([[HBAD230]])**가 원천이다.
문서 히스토리
| 날짜 | 작성자 | 팀 | 변경 내용 |
|---|---|---|---|
| 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 없음은 유지 |
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: 대상 범위·동선·실패 동작 | |
| 30 | 간호사 등록 모달 진입 | Button | • 개별 간호사 프로필을 등록하는 모달을 여는 버튼 • 클릭 → "간호사 등록" 모달 오픈 (상세 아래 별도 표) | 아래 모달 표 | nurseScheduler.profile.create (TC 확정: 04:4.1) |
| 40 | 프로필 테이블 | Table | • 등록된 간호사 프로필을 6컬럼(사번 / 이름 / 근무 형태 / 소속 병동 / 수간호사 / 작업)으로 렌더. Empty = 아래 40-E 행 | nurse_profiles[] | |
| ㄴ41 | 사번 | Cell | • 간호사 사번 표시 | employeeId | 식별자(mono 금지)·TBU: 미매핑 표시 |
| ㄴ42 | 이름 | Cell | • 간호사 성명 표시 | TBU: 값 없음 표시 | |
| ㄴ43 | 근무 형태 | Cell | • "데이전담" / "3교대" 표시 | nurse_profiles_worktype_enum | TBU: enum 외 값 표시 |
| ㄴ44 | 소속 병동 | Cell | • 배속 병동 표시. [[HBAD230]] 생성 병동 참조 | [[HBAD230]] / wardId | 원천·TBU: 미배정/삭제 병동 표시 |
| ㄴ45 | 수간호사 | Cell | • 수간호사 여부(isHeadNurse) 표시 | isHeadNurse | TBU: false 표시 형태 |
| ㄴ46 | 작업 | Button | • 해당 행 간호사 프로필을 제거하는 destructive 액션 • 클릭 → 프로필 제거 ( CASE03 [삭제]) | [[HBNS200]] | destructive · TBU: 컨펌 유무·확정 근무표 배정 프로필 삭제 차단 규칙·삭제 권한 |
| ㄴ40-E | 프로필 없음(Empty) | -E | • 프로필 0건일 때 테이블 Empty 상태 | Empty·TBU: 안내 문구·CTA |
간호사 등록 모달 사양표
"+ 간호사 등록" 클릭 시 노출되는 개별 등록 모달. 하단 "취소" / "등록".
| 번호 | 항목/기능명 | 타입 | 사양 및 기능 설명 | 연관/영향 범위 | 비고 |
|---|---|---|---|---|---|
| 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 [간호사 등록]) | [[HBNS200]] | nurseScheduler.profile.create (TC 확정: 04:4.1) · TBU: 필수 미입력(직원 미선택)·생성 실패(중복 employeeId) 동작 — 무반응이면 버그 후보 |
권한·상태 분기 요약
| 시나리오 | 트리거 | 결과 | 권한 | 비고 |
|---|---|---|---|---|
CASE01 [간호사 등록] | "+ 간호사 등록" → 모달 "등록" | nurse_profiles 생성 → 그리드 행 반영 | 조건1/조건2 | [[HBNS200]] |
CASE02 [자동등록] | "자동등록" | 일괄 프로필 생성 | TBU | 동선 상세 TBU |
CASE03 [삭제] | row 작업 "삭제" | 프로필 제거 (destructive) | 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