Files
sodalive-ios/docs/20261006_선물_UI_추가/reviews/phase11-gift-links-creator-display.md
T

5.0 KiB

Phase 11 선물 링크·크리에이터 표시 코드 리뷰

1. 리뷰 정보

항목 내용
리뷰 대상 Phase 11 / P11-T1~P11-T3, P11-GATE
기준 commit 또는 working tree main working tree의 미커밋 변경
리뷰 일자 2026-10-08
리뷰어 Oracle 기능 리뷰, Oracle 정적 시각 리뷰 2개
기준 문서 docs/20261006_선물_UI_추가/prd.md, docs/20261006_선물_UI_추가/plan-task.md
리뷰 상태 코드·정적 판정 완료, 인증 runtime 시각 검증 대기

2. 리뷰 목적과 범위

목적

  • COMMON-006, COMMON-007, SEND-008, GIFT-004 구현이 승인된 요구사항과 기존 선물 흐름을 보존하는지 확인한다.
  • RED/GREEN 기록, focused 회귀, 양 스킴 build와 실제 변경이 일치하는지 확인한다.

포함 범위

  • 코드: AppDeepLinkHandler, 선물 route, CreatorChannel action/header, GiftSendView, GiftAgreementRow, GiftConstants.
  • 테스트: AppDeepLinkGiftDetailCheck.swift, check-gift-phase11.sh, 기존 Gift focused checks.
  • UI: 선물 버튼 구조와 asset, 선물 보내기 수신자 프로필의 정적 SwiftUI 구조.

제외 범위

  • 인증 계정이 필요한 실제 크리에이터 채널·선물 보내기 화면 캡처와 VoiceOver 실행.
  • API 계약, 선물 제출 payload, 기존 Talk/DM 디자인 변경.

3. 판정 기준

  • Blocker/High: 확정 요구사항 위반, 핵심 이동 불능, 기존 약관·API·개인정보 경계 회귀.
  • Medium: 제한 조건의 기능·접근성·레이아웃 결함.
  • Low: 비핵심 유지보수성 또는 문서 정합성 문제.

4. 검토한 근거

문서와 코드

  • 요구사항: COMMON-006, COMMON-007, SEND-008, GIFT-004.
  • 계획: P11-T1, P11-T2, P11-T3, P11-GATE.
  • 코드: SodaLive/Sources/App/**, SodaLive/Sources/ContentView.swift, SodaLive/Sources/V2/CreatorChannel/**, SodaLive/Sources/V2/Gift/**의 Phase 11 변경.
  • 테스트: work/tests/AppDeepLinkGiftDetailCheck.swift, work/tests/check-gift-phase11.sh와 직접 영향 회귀.

실행 환경

OS: macOS
Xcode: 현재 xcodebuild 기본 toolchain
Build destination: generic/platform=iOS
Signing: CODE_SIGNING_ALLOWED=NO
Runtime capture: 인증 실행 환경 부재로 미수행

실행한 검증

명령 또는 수동 검증 결과 핵심 증거
bash work/tests/check-app-deep-link-gift-detail.sh 성공 PASS AppDeepLinkGiftDetailCheck assertions=22
bash work/tests/check-gift-phase11.sh 성공 profile, policy, button 3개 mode PASS
Gift address/contact/recipient/received/decoding focused checks 성공 address 15, contact 80, recipient 280, decoding 22 assertions 및 source checks PASS
xcodebuild ... -scheme SodaLive-dev ... build 성공 BUILD SUCCEEDED
xcodebuild ... -scheme SodaLive ... build 성공 BUILD SUCCEEDED; 기존 Crashlytics dSYM·dependency scan warning 유지
bash -n work/tests/check-gift-phase11.sh, git diff --check 성공 출력 없음, exit 0
인증 화면 screenshot·VoiceOver 불가 인증된 실행 상태와 화면 캡처 부재

5. 발견 사항 요약

확정 발견 사항 없음.

  • 기능 리뷰: APPROVE, Critical/Important/Minor 없음.
  • 정적 시각 리뷰: SwiftUI 구조, design token 재사용, 38pt 원형 프로필, 20pt icon, 검정 문구·흰 capsule, 접근성 이미지 제외를 승인했다.
  • 증거 공백: 좁은 화면·접근성 글꼴에서 세 버튼 동시 표시, 실제 이미지 로딩, 링크 이동, VoiceOver는 runtime 증거가 없어 시각 QA 완료 판정을 보류했다.

6. 발견 사항 상세

확정된 제품 결함 없음. 정적 리뷰가 제기한 버튼 폭·Dynamic Type 항목은 실제 재현이 없는 위험 후보이므로 추정 수정하지 않는다. 인증 실행 환경에서 재현될 때만 별도 review ID와 회귀 Task를 만든다.

7. 확정 항목의 plan·goal 전환

전환 항목 없음.

8. 리뷰 종료 판정

판정 항목 결과 근거
리뷰 범위 전체 확인 충족 관련 diff, source contract, focused checks, 양 스킴 build 검토
후보 항목 판정 완료 충족 제품 결함 미확정, runtime 증거 공백으로 분리
확정 항목 plan 반영 해당 없음 확정 발견 사항 없음
보류 항목의 담당·재개 조건 기록 충족 인증 실행 환경 확보 후 screenshot·VoiceOver 재검증
검증 명령과 결과 기록 충족 §4 및 plan-task.md Progress

최종 결론: 코드·정적 Gate 승인, 인증 runtime 시각 Gate 대기.

남은 항목: 양 scheme 실제 딥링크, 파손 정책 링크 탭, 프로필 이미지 로딩, 좁은 화면·Dynamic Type 버튼 배치와 VoiceOver 확인.

9. 수정 후 검증 기록

확정 수정 항목 없음. Gate 검토 중 계획에 있던 경로형 신청번호 누락 거부와 splash pending coverage를 harness에 보강했고 22 assertions로 재검증했다.