docs(gift): 선물 사용자 흐름을 검증한다

This commit is contained in:
Yu Sung
2026-10-08 12:33:16 +09:00
parent a683f76e16
commit 034b32f3f4
@@ -0,0 +1,76 @@
# Phase 8 선물 사용자 흐름 최종 리뷰
## 1. 리뷰 정보
| 항목 | 내용 |
|---|---|
| 리뷰 대상 | Phase 8 / `P8-T1`, `P8-T2`, `P8-GATE` 코드·정적 범위 |
| 기준 commit 또는 working tree | working tree |
| 리뷰 일자 | 2026-10-07 |
| 리뷰어 | Oracle, 세션 검증 근거 기반 문서 정리 |
| 기준 문서 | `prd.md` §14, `plan-task.md`, `docs/sample/sample-review.md` |
| 리뷰 상태 | 코드·정적 판정 완료, 인증 runtime gate 미완료 |
## 2. 리뷰 목적과 범위
- 선물 딥링크가 기존 공통 상세 경로를 사용하고 SENT/RECEIVED를 미리 선택하지 않는지 확인한다.
- Phase 8 자동·정적 검증 근거와 PRD §14의 남은 runtime 검증을 구분한다.
- 대상은 `AppDeepLinkHandler.swift`, focused Swift harness, 선물 회귀 검사와 양 스킴 build다. 기존 `AppStep.giftDetail(applicationNo:)`는 수정 없이 재사용한다.
- 실제 푸시 수신, 인증 서버 동작, navigation/replace 실행, 수동 journey와 Figma pixel fidelity·screenshot·VoiceOver·keyboard·Dynamic Type 검증은 환경 부재로 제외한다.
- 판정 기준은 요구사항과 검증 근거의 일치다. 확정 결함만 수정 Task로 전환하고, 실행하지 못한 항목은 성공으로 판정하지 않는다.
## 3. 검토한 근거
아래는 이 세션에서 직접 확인한 fresh 실행 결과다. 저장소에 테스트 번들이 없어 production-source Swift harness를 자동 검증 대안으로 사용했다.
| 검증 | 결과와 근거 |
|---|---|
| `work/tests/AppDeepLinkGiftDetailCheck.swift`, `work/tests/check-app-deep-link-gift-detail.sh` | `PASS AppDeepLinkGiftDetailCheck assertions=14` |
| received privacy | 19 assertions 및 금지 멤버 5개 compiler probe 성공 |
| recipient address | 266 assertions 성공 |
| foundation, recipient-form, received-states | 검사 성공 |
| `SodaLive` generic iOS Debug build | `BUILD SUCCEEDED` |
| `SodaLive-dev` generic iOS Debug build | `BUILD SUCCEEDED` |
| Swift parse, shell parse, `git diff --check` | 성공 |
| Oracle | `APPROVE`, Critical/Important 발견 사항 없음 |
parser는 `deepLinkValue=GIFT_DETAIL`과 양끝 공백 제거 후 비어 있지 않은 문자열 `deepLinkId`를 받는다. splash에서는 pending action으로 보관하고 일반 진입에서는 공통 `.giftDetail(applicationNo:)` route로 연결한다. SENT/RECEIVED를 미리 선택하지 않고 상세 API 응답으로 결정한다. 이 근거는 실제 푸시 수신이나 인증 navigation 실행 증거가 아니다.
### PRD §14 수용 기준 대조
| 수용 영역 | 자동·정적 상태 | runtime 공백 |
|---|---|---|
| §14.1 신청 context·필수값·면책·성공 replace | 기존 P3 기록과 양 스킴 build 근거 있음. 이번 fresh 목록에 신청 전용 재검사 없음 | 실제 신청, back stack 미검증 |
| §14.1 `type=ALL`·direction 카드·섹션 타이틀 제외 | 기존 P4 정적 기록과 build 근거 있음 | 인증 목록·카드 tap 미검증 |
| §14.1 리스트·신청·푸시의 공통 상세 | 기존 route 기록과 딥링크 14 assertions | 실제 푸시 수신·인증 상세 진입 미검증 |
| §14.1 5단계 progress·상세 상태 | foundation·received-states 검사 성공 | 실제 화면의 상태 전이 미검증 |
| §14.1 운송장·배송지 성공 후 재조회 | recipient address 266 assertions, recipient-form 성공. 운송장은 기존 P6 기록 | 인증 POST 이후 GET 일관성·toast·복귀 미검증 |
| §14.1 확인 후 취소·취소 완료 replace | 기존 P5/P6 검증 기록과 build 근거 있음. 이번 fresh 목록에 취소 전용 재검사 없음 | 실제 dialog·취소·replace 미검증 |
| §14.2 SENT 개인정보 경계 | 기존 P5 경계 검증 기록과 foundation 성공 | 인증 SENT 화면 미검증 |
| §14.2 RECEIVED 개인정보·null 주소·전달 불가 | privacy 19 assertions, 금지 멤버 5개 compiler probe, received-states 성공 | 인증 RECEIVED 화면 미검증 |
| §14.3 요구사항·Task·Gate·Decision Log 추적 | 기존 연결과 Progress 유지, P8 기록·본 리뷰 추가. 새 계약 충돌 보고 없음 | runtime Gate 근거는 미완료로 명시 |
## 4. 발견 사항 요약
확정 발견 사항 없음. Oracle 판정은 `APPROVE`이며 Critical/Important 발견 사항은 없다.
인증 runtime과 Figma 접근 부재는 제품 결함 확정이 아닌 검증 공백이다. build·harness 성공만으로 실제 서버 동작, replace-navigation, 화면·접근성 품질을 승인하지 않는다.
## 5. plan·goal 전환
확정 결함에 따른 신규 수정 Task 전환 항목 없음. `P8-T1`, `P8-T2` 코드·자동 검증 및 문서 기록은 완료로 표시하고 `P8-GATE`는 코드·정적 승인과 전체 runtime 미완료를 분리한다.
남은 검증은 `P8-GATE` 담당자가 인증 실행 환경 확보 후 수동 체크박스 8개를 수행한다. Figma 접근과 기기 검증 환경 확보 후 pixel fidelity·screenshot·VoiceOver·keyboard·Dynamic Type도 확인한다. PRD와 이전 Phase 체크박스 및 기존 Progress는 변경하지 않는다.
## 6. 리뷰 종료 판정
| 판정 항목 | 결과 | 근거 |
|---|---|---|
| 딥링크 코드·자동 검증 | 충족 | 14 assertions, 공통 route 및 splash pending action |
| fresh 회귀·정적 검사·양 스킴 build | 충족 | §3 실행 결과 |
| 확정 발견 사항의 수정 Task 반영 | 해당 없음 | Oracle Critical/Important 발견 사항 없음 |
| 검증 공백·재개 조건 기록 | 충족 | §4~5와 plan의 미완료 수동 항목 |
| 전체 인증 runtime 사용자 흐름 | 미충족 | 인증 실행 환경 부재, 수동 항목 8개 미수행 |
| Figma·runtime visual/accessibility QA | 미충족 | Figma 및 인증 runtime 환경 부재 |
**최종 결론:** Phase 8 코드·정적 gate 승인. 전체 인증 runtime 사용자 흐름 gate는 완료되지 않았다. 수동 검증 체크박스는 모두 미완료로 유지한다.