동의서 · 서명 (키오스크 K-04) — feature/consent_record/app
앱(키오스크) 번들 consent_record 의 화면 K-04(/consent_record). 조립된 스캐폴드를 지우고 Figma K-04 화면으로 바꿨다.
앞 화면은 admission_form(K-03).
라우트 화면(ConsentRecordPage)이 공용 데모 세계 · 세션을 서비스 로케이터에서 받는다(없으면 S-05). 코드가 입실 코드가
아니거나 제출 · 만료됐으면 /code, K-03 을 끝내지 않았으면 /admission_form 으로 돌려보낸다. 제출은 한 트랜잭션
(AdmissionPaperwork.sign — 서류 행들 + stays.steps.orientation(코드를 발급한 직원) + 코드 submitted + 고객
privacyAgreed · marketingAgreed) → 세션 endPass() → /done. 틀은 공용 KioskFrame(제출 버튼은 이 화면의 「서명하고 제출」).
화면
- 동의 항목 6개 — 필수 4(입실 규정 확인 · 개인정보 수집 · 이용 · 건강정보(민감정보) 처리 · 감염 · 안전 교육 확인), 선택 2(에스테틱 시술 동의 · 알림톡 · 문자 수신). 전체 동의는 3상태(모두 · 일부 · 없음). 항목마다 「전문 보기」(화면 언어) — 다른 언어일 때는 「한국어 원문 보기」를 함께 둔다.
- 서명 패드 — co-package
open_board를 쓴다. 그린 획을 PNG 로 내보내 data URI 문자열(ConsentSignature, 최대 120000자)로 넘긴다. 「지우기」, 안내 글(「서명 칸에 서명해 주세요」). - 제출 막힘 사유 — 필수 미동의 · 서명 없음(
ConsentRecordKeys.blocker). 선택 미동의는 막지 않는다(FR-122). - 이전 →
/admission_form, 처음으로 →/code, 제출 →/done.
FR ↔ 구현 ↔ 시험
| FR | 상태 | 구현 | 시험 |
|---|---|---|---|
| FR-122 동의서 · 서명(선택 분리) | 실동작 | ConsentItem · ConsentSelection · ConsentSignature · SignaturePad · AdmissionPaperwork.sign |
consent_domain_test · consent_record_view_test · consent_record_page_test(필수만 서명 → 한 트랜잭션) · admission_paperwork_test · BDD consent_record.feature |
| FR-123 제출 뒤 정리 | 실동작 | endPass() → /done, 코드 없음 → /code |
consent_record_page_test |
| FR-41(입실 쪽) | 실동작 | 서명 → C-07 ① 「서명 완료」 · ① 기록 | stay_world_pages_test(두 세션 · 같은 세계) |
서류 행(documents, kind 는 data-model §3 DocumentKind — 상담 WP 와 같은 이름): 입실신청서(admissionForm — K-03
입력 · 입실 규정 확인 · 서명 이미지 한 번) · 개인정보 필수(privacyRequired — 수집 · 이용 · 건강정보) · 감염 · 안전 교육
(infectionSafety) · 동의한 선택(procedureConsent · marketingOptional). 다른 행은 서명 이미지 대신
signatureDocId 로 입실신청서 행을 가리킨다(스냅샷 크기).
골든: test/golden/consent_record_golden_test.dart.
모의 경계
- 서명은 데모 세계에 이미지 문자열로만 남는다 — 전자서명 인증 · 법적 효력은 없다(화면에 그렇게 쓰지 않는다).
Figma 와 다르게 둔 점
- 서명 용지는 다크 테마에서도 흰 용지다(획 대비 — 원시 색 예외 주석). 테두리는 실선.
- 제출 버튼은 공용 틀의 「제출」 대신 「서명하고 제출」(서명 아이콘)이다 — 틀의
actions자리.