객실 현황 · 입실 체크인 — feature/stay/console

콘솔 번들 console_stay 의 화면 C-06 객실 현황(/room)과 C-07 입실 체크인(/check_in). WP-STAY(cocode#1276) 가 만든다. 키오스크 쪽 입실 서류는 admission_form · consent_record.

구조

층 파일 하는 일
라우트 화면 page/room_board_page.dart · page/check_in_page.dart 공용 데모 세계 · 세션 · 표시 투영기를 서비스 로케이터에서 받고(StayConnection — 없으면 S-05), 세계 · 세션 신호(useStayRevision)마다 다시 읽는다. 지점 범위 · 상태 미리보기 · 역할별 동작을 정한다
세계 읽기 data/stay_world_reader.dart 세계 → 화면 값(RoomBoardData · CheckInCase). 이름(B)은 StayNames(DisplayProjector)
세계 쓰기 data/stay_world_writes.dart 한 동작 = 한 트랜잭션. 지점 범위 · 역할(ia.md §5) · 객실 상태 머신(§7) · 체크인 단계 규칙을 트랜잭션 안에서 다시 판정(fail-closed)
화면 presentation/board · presentation/check_in 값과 콜백만 받는다(위젯북 · 골든 · 위젯 시험이 손 값으로 돈다)
도메인 domain/ 타임라인 · 배정 판정 · 집계 · 공실 예정 · 체크인 규칙(순수 로직)
세계 계약 package/postpartum_world/lib/src/kiosk/admission_paperwork.dart 입실 코드 발급 · K-03 초안 · K-04 서명 · 서류 현황 — 세 번들이 함께 쓴다(BRIEF-contract §10, 주인 WP-STAY)

화면

화면 넓이 구간 받는 값 · 동작
C-06 객실 현황 ≥960 이면 왼쪽 열에 집계 · 공실 예정 · 범례, 좁으면 위로 쌓는다. 타임라인 날짜 수는 가용 폭(7~28일, R-3) 원장 · 상담실장: 배정 · 소독 완료. 그 밖의 역할은 보기만
C-07 입실 체크인 대상이 여럿이면 탭, 좁으면 진행 칩을 칩 줄로 오늘 입실(예약완료 · 입실중) 대상. 단계마다 그 역할만 기록

세계 읽기 · 쓰기

동작 쓰는 것(한 트랜잭션)
배정 reservations.roomId · 객실 「배정됨」(오늘 · 내일 입실이면) · 옮겨 간 앞 객실 되돌리기
소독 완료 rooms.status(오늘 · 내일 입실이 잡혀 있으면 배정됨, 아니면 사용 가능) · lastDisinfectedAt
입실 코드 발급 kioskPasses(입실 목적 · 입실 태블릿 · 10분 · pass_admission_<n>) — 아직 안 쓴 앞 코드는 만료. 살아 있는 코드가 있으면 화면이 버튼을 숨긴다
① 오리엔테이션 · 서류 K-04 제출(AdmissionPaperwork.sign)이 함께 기록한다(by = 코드를 발급한 직원). 수동 「① 완료」도 서명 뒤에만
② 수유 계획 stays.feedingPlan · steps.feedingPlan{pumpRentals, pumpExplained}
③ 신생아 인수 newborns.tests · assessment(세계 키) · note(C) · steps.newbornIntake — 8부위를 다 살펴야
④ 산모 초기 체크 motherVitals `mv_<체류 꼬리><am
⑤ 완료 steps.done · stays.admittedAt · 예약 inHouse(+ history) · 객실 occupied · 신생아 stayId

FR ↔ 구현 ↔ 시험

FR 상태 구현 시험
FR-30 객실 보드 · 배정 · 소독 실동작 RoomTimeline · RoomAssignment · StayWorldWrites.assignRoom · markCleaned room_timeline_test · room_assignment_test · stay_world_writes_test(겹침 거절 · 간호사 거절 · 배정) · stay_world_pages_test(308 소독 완료 → 세계 · 화면) · BDD room_board.feature
FR-31 입실 예정자 카드 실동작(인쇄는 모의) StayWorldReader 의 AdmissionNotice · AdmissionNoticeDialog stay_world_reader_test(서보미 703 · 튼튼이 3240g) · room_board_view_test
FR-32 카드 보기 · 집계 실동작 RoomBoardSummary · VacancyForecast stay_world_reader_test — 세계 집계 식(PostpartumFacts)과 같은 숫자 34 · 1/3 · 1/2 · 2
FR-40 입실 체크인 실동작 StayWorldWrites 다섯 단계 · CheckInRules stay_world_writes_test(①~⑤ → 입실중 · 703 사용중 · 재실 35) · check_in_view_test · BDD check_in.feature
FR-41 서류 연동 실동작 AdmissionPaperwork.stateOf → ① 서류 카드 stay_world_pages_test — 두 세션 · 같은 세계: 키오스크 K-03 완료 → K-04 서명 → 콘솔 ① 이 새로고침 없이 「서명 완료」
FR-42 신생아 인수 실동작 ③ → newborns stay_world_pages_test(신생아실 8부위 → 행)
FR-43 수유 · 산모 초기 체크 실동작 ② · ④ → stays · motherVitals stay_world_writes_test
FR-120 입실 코드 발급 실동작 AdmissionPaperwork.issuePass(KioskCodeIssuer) admission_paperwork_test · stay_world_pages_test(만료 뒤 다시 발급)

위젯 시험은 역할별 칸 노출, 아랍어(RTL), testScaleInvariant(scaling 1.25 × textScaler 4조합)를 함께 돈다. 골든: test/golden/room_board_golden_test.dart · check_in_golden_test.dart(ko · en · ar × 라이트 · 다크 pairwise — 기준 PNG 는 CI 가 만든다).

시드

모의 경계

Figma 와 다르게 둔 점