Files
sodalive-ios/docs/20261006_선물_UI_추가/reviews/phase10-contact-tracking-validation.md
T

86 lines
4.5 KiB
Markdown

# 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는 실행 환경 확보 후 재개한다.