HBNS100_Shell·헤더
(Hereby) 팀 관리(team-manager) > 간호 스케줄러 > Shell·헤더
| 앱 | 간호 스케줄러 (team-manager 내장, 포트 TBU) |
| 대상 사용자 | 조건1 [간호 관리자] · 조건2 [수간호사] |
| 프로토타입 | TBU |
| 관련 정책 | [[POL_간호스케줄 Lifecycle]] |
| Status | draft |
| Owner | 카나 |
개요
- 간호 스케줄러의 공통 Shell · 상단 헤더. 로그인 게이트, 년/월 선택, 기간 표시, 상태 배지, 병동별 환자수 인라인 입력, 설정/캘린더 유틸, 알림, 뷰 탭 3종을 포함한다.
- 로그인은 타 앱과 통일된 "비밀번호 / 휴대폰 인증" 2탭 구조로, "사번 / 이메일" 라벨(입력 placeholder "사번, 이메일, 또는 전화번호" 유지) + 비밀번호 표시·찾기 + 푸터 "© 2026 Hereby Platform"을 갖춘다.
- 병동 탭마다 "오늘 환자" 인라인 입력 필드가 붙어 준수율 계산의 당일 원천이 된다.
- 헤더 유틸 아이콘 정체(버튼 접근성 이름 기준): 📋 = "월별 환자수 관리"([[HBNS230]]) / ⚙ = "병동 관리 및 설정"([[HBNS240]]).
- 좌측 "병동 관리" 탭은 **비활성(흐림)**이며, 병동 관리 기능은 ⚙ 모달로 통합됐다.
문서 히스토리
| 날짜 | 작성자 | 팀 | 변경 내용 |
|---|---|---|---|
| 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.* 네임스페이스 등) |
Data I/O
Server → Client
| 변수 | DB 엔티티.컬럼 | 값 없을 때 | 비고 |
|---|---|---|---|
${jwt_session} | 인증 세션 | /nurse-scheduler/signin 리다이렉트 | |
${period} | 년(2024-2028) / 월(1-12) | 기본 당월, 기간 "07-01 ~ 07-31" 파생 | |
${state} | nurse_schedules.status → 상태 배지 "초안" 등 | 근무표 없으면 배지 미표시 TBU | 라벨 vs 내부 enum 분리 |
${ward_tabs} | wards[] — "간호부 (IMPORT-간호부-...)" / "1 (WARD_...)" | 병동 없으면 탭 없음 TBU | 표시 라벨 원문 |
${today_census} | ward_daily_records.patientCount (병동별 당일 환자수) | 기본 0 ("간호부 [0] / 1 [0] / 합계 0명") |
Client → Server
| 액션 | 전달 값 | tRPC/SDK | 권한 토큰 |
|---|---|---|---|
| 년/월 변경 | year, month | 근무표 재로드 | TBU |
| 당일 환자수 입력 | wardId, date, patientCount | nurseScheduler.dailyRecord.upsert() (TC 확정: 04:4.6) | TBU |
외부 통합 (cross-app)
| 외부 시스템 | 데이터 | 동기/비동기 | 비고 |
|---|---|---|---|
| 월별 환자수 관리 ([[HBNS230]]) | 병동별 환자수 원장 | 동기 | 📋 아이콘 모달 |
| 병동 관리 및 설정 ([[HBNS240]]) | 병동·인력·교대·교육·주기 5탭 설정 | 동기 | ⚙ 아이콘 5탭 모달 |
화면 플로우 (상태 머신 필수)
Shell은 모든 뷰 공통 프레임. 병동 탭 전환은 [[HBNS250]], 뷰 탭 전환은 각 화면으로 라우팅.
Shell·헤더 사양표
| 번호 | 항목/기능명 | 타입 | 사양 및 기능 설명 | 연관/영향 범위 | 비고 |
|---|---|---|---|---|---|
| 00 | 화면 진입 조건 | - | 조건1 [간호 관리자]·조건2 [수간호사] 인증 시 노출 | 인증 세션 | 간호사 접근 범위 TBU |
| ㄴ00 | case: 미인증 | - | CASE01 [미인증] → 로그인 게이트. 세션 만료 시 재인증 | 인증 실패 시 로그인 화면 유지 | |
| 10 | 타이틀 | Text | "간호 스케줄" 고정 타이틀 표시 | 원문 카피 | |
| 20 | 기간 네비게이터 | - | 년/월 선택으로 대상 기간을 지정하는 영역. 기간 "07-01 ~ 07-31" 파생, 기본 당월 | period 변경 시 근무표 재로드 | 월 단위 |
| ㄴ21 | 년 선택 | Dropdown | • 근무표 대상 연도를 지정하는 기능. 목록 2024-2028 고정, 당해년 기본 • 선택 → 해당 년 근무표 재로드 | period 재로드 | TBU: 재로드 실패 |
| ㄴ22 | 월 선택 | Dropdown | • 근무표 대상 월을 지정하는 기능. 목록 1-12월 고정, 당월 기본 • 선택 → 해당 월 근무표 재로드 | period 재로드 | TBU: 재로드 실패 |
| 30 | 상태 배지 | Badge | nurse_schedules.status 라벨 표시("초안" 등, 읽기 전용) | [[HBNS201]] / [[HBNS202]] | 라벨 vs 내부 enum 분리 |
| ㄴ30 | case: 라벨 전환 | - | CASE01 [초안]/CASE02 [AI 생성]/CASE03 [수정 중]/CASE04 [확정]/CASE05 [공유됨] 전환 | TBU: 전이 조건·근무표 미생성 시 표시 | |
| 40 | 병동별 환자수 인라인 입력 | Input | • 병동 탭마다 당일 환자수를 입력해 준수율 계산의 당일 원천을 만드는 기능. "오늘 환자 / 간호부 [0] / 1 [0] / 합계 0명", 기본 0 • 입력 → upsert → 준수율 재계산 | ward_daily_records / [[HBNS230]] | 준수율 당일 원천, 문구 원문 |
| ㄴ40-E | Empty: 병동 없음 | - | 병동 없으면 입력 필드 미표시 | TBU: upsert 실패 처리 | |
| ㄴ41 | 월별 환자수 관리 | Button | • 병동별 환자수 원장을 여는 유틸(📋 아이콘, 접근성 이름 "월별 환자수 관리") • 클릭 → "월별 환자수 관리" 모달 | [[HBNS230]] | 접근성 이름 원문, TBU: 모달 로드 실패 |
| ㄴ42 | 병동 관리 및 설정 | Button | • 병동·인력·교대·교육·주기 설정을 여는 유틸(⚙ 기어, 접근성 이름 "병동 관리 및 설정") • 클릭 → "병동 관리 및 설정" 5탭 모달 | [[HBNS240]] | 접근성 이름 원문, TBU: 모달 로드 실패 |
| 50 | 우측 유틸 | - | 계정 / 알림(배지 3) / 로그아웃 노출. 배지 없으면 미표시 | ||
| ㄴ51 | 알림 | Button | • 미읽음 알림을 확인하는 유틸. 알림 종 + 미읽음 배지 "3" • 클릭 → TBU | 배지 "3" 원문, TBU: 클릭 동작·미읽음 0 시 배지 | |
| 60 | 뷰 탭 | Tab | • 근무표/간호사/내 희망 일정 3뷰를 전환하는 탭. "📋 근무표"/"👩⚕️ 간호사"/"📝 내 희망 일정" 고정 3탭 • 클릭 → 해당 뷰 전환 | [[HBNS200]] / [[HBNS210]] / [[HBNS220]] | 탭 라벨 원문, TBU: 라우팅 실패 |
| 70 | 좌측 탭 | Tab | • 병동 관리(비활성·흐림)/근무표 좌측 탭. 병동 관리 기능은 ⚙ 모달로 통합됨 • 클릭 → 무반응(설계상 비활성, 버그 아님) | [[HBNS240]] | 설계상 비활성 |
로그인 화면 사양표
| 번호 | 항목/기능명 | 타입 | 사양 및 기능 설명 | 연관/영향 범위 | 비고 |
|---|---|---|---|---|---|
| 00 | 노출 조건 | - | 미인증 상태로 /nurse-scheduler 진입 시 /nurse-scheduler/signin 노출 | 인증 세션 | placeholder 상이(타 앱과) |
| 10 | 인증 탭 | Tab | • 로그인 입력 방식을 고르는 탭. "비밀번호 / 휴대폰 인증" 고정 2탭(타 앱과 통일) • 클릭 → 입력 방식 전환 | 원문 카피 | |
| 20 | 아이디 입력 | Input | • 로그인 식별자를 입력하는 필드. 라벨 "사번 / 이메일", placeholder "사번, 이메일, 또는 전화번호" • 입력 → 값 유지. 미입력 시 로그인 불가 | placeholder 원문 유지, TBU: 인증 실패 메시지 | |
| 30 | 비밀번호 입력 | Input | • 비밀번호를 입력하는 필드. 표시 토글·비밀번호 찾기 노출 • 입력 → 값 유지 - 표시 토글 → 평문/마스킹 전환 - 미입력 시 로그인 불가 | TBU: 인증 실패 메시지 | |
| 40 | 푸터 | Text | "© 2026 Hereby Platform" 고정 텍스트 | 원문 카피 |
권한·상태 분기 요약
| 시나리오 | 트리거 | 결과 | 비고 |
|---|---|---|---|
CASE01 [미인증] | /nurse-scheduler 직접 | /nurse-scheduler/signin 리다이렉트 | placeholder 상이 |
CASE02 [년/월 변경] | 년/월 스피너 | 해당 월·병동 근무표 재로드 | |
CASE03 [당일 환자수 입력] | "오늘 환자" 필드 | ward_daily_records upsert → 준수율 재계산 |
Open Question
- 알림 카테고리/채널 및 클릭 동작 = TBU
- 상태 배지 라벨 전이/표시 조건(근무표 미생성 시 포함) = TBU
- 당일 환자수 upsert 권한 토큰·에러 처리 = TBU
- 병동 미선택/미존재 시 기본 병동 결정 로직 = TBU
- team-manager 포트/프로토타입 = TBU