# Phase 10 연락처·운송장 검증 리뷰 ## 1. 리뷰 정보 | 항목 | 내용 | |---|---| | 리뷰 대상 | Phase 10 / `P10-T1`~`P10-T5` 코드·정적 범위 | | 기준 commit 또는 working tree | working tree | | 리뷰 일자 | 2026-10-08 | | 리뷰어 | Oracle 요구사항 리뷰, Oracle UI 정적 리뷰 | | 기준 문서 | `prd.md`, `plan-task.md` | | 리뷰 상태 | 수정 검증 완료, runtime visual gate 미완료 | ## 2. 리뷰 목적과 범위 - 이름의 한글 IME 보호, 휴대폰 `010` 11자리 제출, 운송장 숫자 10~14자리 제출 계약을 검토한다. - 기존 request·mutation·navigation과 입력 화면의 layout·copy·타이포그래피 정책 보존 여부를 검토한다. - 실제 한글 조합, 키보드, 붙여넣기, Dynamic Type, VoiceOver, screenshot fidelity는 부팅된 인증 실행 환경 부재로 제외한다. ## 3. 검토한 근거 | 검증 | 결과와 근거 | |---|---| | `bash work/tests/check-gift-contact-input.sh` | 80 assertions와 양 폼·ViewModel source contract 성공 | | `bash work/tests/check-gift-recipient-address.sh` | 실제 recipient ViewModel 280 assertions 성공 | | `GiftTrackingRegistrationCheck.swift` harness | 142 assertions 성공 | | address/recipient-form 회귀, Swift/shell parse, project lint, `git diff --check` | 성공 | | `SodaLive-dev`, `SodaLive` generic iOS Debug build | 각각 `BUILD SUCCEEDED` | | 기능 독립 리뷰 | `APPROVE`, 차단 결함 없음 | | UI 정적 리뷰 | `REQUEST_CHANGES`, `REV-P10-001` 확정 | ## 4. 발견 사항 요약 | ID | 심각도 | 상태 | 제목 | 소유 Task | |---|---|---|---|---| | `REV-P10-001` | Medium | 수정 완료 | 연락처 UIKit 필드가 기존 언어별 폰트 정책을 우회함 | `P10-R1` | ## 5. 발견 사항 상세 ### REV-P10-001 — 연락처 UIKit 필드가 기존 언어별 폰트 정책을 우회함 - **심각도:** Medium - **상태:** 수정 완료 - **관련 요구사항:** `SEND-007`, `RECV-007` - **소유 Task:** `P10-R1` **관찰 내용** `GiftContactTextField`가 `Pretendard-Regular`를 직접 지정해, 한국어는 Pretendard, 일본어는 NotoSansJP, 기타 언어는 system font를 선택하는 기존 `.appFont(.body3)` 정책을 따르지 않는다. **근거** - 코드: `SodaLive/Sources/V2/Gift/Components/GiftContactTextField.swift`의 `UIFont(name: Font.preRegular.rawValue, ...)`. - 비교 기준: `SodaLive/Sources/Extensions/FontModifier.swift`의 localized `fontName` 해석과 `FontModifier.body`. - 테스트: `work/tests/check-gift-contact-input.sh`에는 IME·키보드·폼 연결 검사는 있으나 localized font 사용 검사가 없다. **영향** 일본어와 기타 언어에서 이름·휴대폰 입력란만 주변 SwiftUI 입력/텍스트와 다른 font family를 사용할 수 있다. 입력 검증 자체와 데이터 전송에는 영향이 없다. **권장 조치** 기존 `FontModifier`의 언어 해석을 UIKit에서도 재사용할 최소 진입점을 제공하고, 연락처 필드가 `.body3` 크기·weight로 이를 사용하도록 한다. 다른 UIKit wrapper와 전역 폰트 정책은 변경하지 않는다. ## 6. plan·goal 전환 확정 항목을 구현 전에 `plan-task.md`의 `P10-R1`로 전환했다. focused RED/GREEN과 양 스킴 build 후 이 문서에 수정 검증 결과를 누적한다. ### 수정 검증 — 2026-10-08 - source contract에서 `Font.preRegular` 직접 사용과 공용 resolver 미연결을 RED로 확인했다. - `SodaTypography.localizedFontName`이 기존 localized `fontName`에 위임하고, `GiftContactTextField`가 `.body3` 이름·크기와 system regular fallback을 사용하도록 수정했다. - contact 80 assertions와 localized typography contract, recipient 280 assertions, tracking 142 assertions, Swift/shell parse, `git diff --check`, 양 스킴 generic iOS Debug build가 성공했다. - Oracle 정적 재리뷰 결과 `APPROVE_STATIC`, 추가 코드 수정 사항 없음. ## 7. 리뷰 종료 판정 | 판정 항목 | 결과 | 근거 | |---|---|---| | 요구사항·검증 로직 | 충족 | 기능 리뷰 `APPROVE`, focused checks | | 확정 결함 plan 반영 | 충족 | `P10-R1` | | 확정 결함 수정 | 충족 | `P10-R1`, focused RED/GREEN, 재리뷰 `APPROVE_STATIC` | | runtime visual/accessibility QA | 미충족 | 부팅된 인증 실행 환경과 fresh screenshot 부재 | **최종 결론:** Phase 10 코드·정적 gate와 `REV-P10-001` 수정 검증은 완료했다. 실제 입력·시각·접근성 gate는 실행 환경 확보 후 재개한다.