7.9 KiB
Phase 1 Yandex 잔여 참조 제거 리뷰
1. 리뷰 정보
| 항목 | 내용 |
|---|---|
| 리뷰 대상 | Phase 1 / P1-T1~T3 및 P1-GATE 증거 |
| 기준 working tree | 사용자 선행 SDK·상수·프로젝트 형식 변경 위에 잔여 참조 삭제 적용, 커밋 없음 |
| 리뷰 일자 | 2026-10-13 |
| 리뷰어 | Oracle 독립 읽기 전용 검토, 주 에이전트 실행 증거 대조 |
| 기준 문서 | PRD, 계획 |
| 리뷰 상태 | 코드 판정 완료, 전체 수동 QA 외부 조건 대기 |
2. 리뷰 목적과 범위
목적
승인 범위의 Yandex 참조가 제거되고, 광고와 무관한 캔 구매·마케팅·프로젝트 설정이 보존되는지 확인한다. 코드 승인과 실제 화면·구매 QA 완료는 구분한다.
포함 범위
- 계획에 열거한 배너 View 11개, ChatRoomViewModel, ChatQuotaPurchaseRequest, I18n, AppDelegate, 삭제된 YandexAdSupport 및 프로젝트 전용 등록 6줄.
- 캔 구매 UI → ViewModel → Repository → TalkApi 연결과 요청 직렬화.
- 보존 파일 13개 체크섬, 정적 검사, parser·빌드·실제 DTO 실행, 앱 시작 smoke 기록.
제외 범위
사용자 선행 Pod/Constants/Project Format 변경 자체의 재설계, 비활성 Pods 생성물 정리, 다른 SDK·인증·결제 구조 개선. 실행하지 않은 화면·거래를 검증 통과로 추정하지 않는다.
3. 판정 기준
YAN-001~005 및 PRD §14 성공 기준을 사용한다. 삭제 누락·캔 계약 변경·보존 설정 수정은 코드 차단 사유다. 환경 때문에 실행하지 못한 수동 검증은 결함으로 단정하지 않고 별도 미완료 Gate로 남긴다.
4. 검토한 근거
문서와 코드
- PRD YAN-001
005, 계획 P1-T1T3/P1-GATE. SodaLive/Sources/Chat/Talk/Room/ChatRoomViewModel.swift: 광고 함수 삭제 후updateQuota의 잔액 저장·표시 조건 및 기존 캔 구매 성공/실패 흐름 유지.SodaLive/Sources/Chat/Talk/Room/Quota/ChatQuotaPurchaseRequest.swift:.ad만 제거, 기존 CAN payload와 두 옵션 수치 유지.- 배너 View 11개의 diff·주변 코드: 광고 전용 modifier와 장르 광고 전용 조건문만 제거, 콘텐츠·공용 간격 유지.
SodaLive/Sources/App/AppDelegate.swift,SodaLive.xcodeproj/project.pbxproj: Yandex 연결만 삭제, 다른 SDK 및 사용자 선행 변경 유지.- Oracle 세션
ses_ecc05fbd9ffe65w6Gb41Ii1HYZ/ 작업bg_16ac91d2: 코드 APPROVE, 수정 차단 사항 없음. 실제 수동 QA와 기록 연결을 전체 Gate의 잔여 조건으로 제시했다.
실행 환경
macOS, Xcode 26.0, CocoaPods 1.16.2. XCTest 타깃·Testables 및 세션의 LSP 진단 도구 없음. 기기용 두 Debug 빌드와 개발 시뮬레이터 빌드를 수행했다. Native smoke는 이번에 생성한 iPhone 17 Pro / iOS 26.0 전용 시뮬레이터에서 수행했다.
실행한 검증
| 명령 또는 검증 | 결과 | 핵심 증거 |
|---|---|---|
계획의 배너·광고 함수·enum·SDK 부재 rg |
성공 | 변경 전 일치(0), 변경 후 부재(1); Oracle도 재확인 |
xcrun swiftc -frontend -parse 수정 Swift 15개 |
성공 | 종료 코드 0, 전체 Xcode 컴파일로 보완 |
plutil -lint 프로젝트·두 plist |
성공 | 모두 OK |
ruby -rxcodeproj 읽기 검사 |
성공 | 두 타깃에 Yandex 참조 없음, objectVersion 77, Oracle도 누락 소스 확인 |
shasum -a 256 -c .../yandex-ios-preserved.sha256 |
성공 | 13개 파일 모두 OK, Oracle도 기준선 대조 |
xcodebuild ... -scheme SodaLive -configuration Debug build |
성공 | BUILD SUCCEEDED, 종료 코드 0 |
xcodebuild ... -scheme SodaLive-dev -configuration Debug build |
성공 | BUILD SUCCEEDED, 종료 코드 0 |
| 개발 스킴 simulator build | 성공 | BUILD SUCCEEDED, 종료 코드 0 |
| 실제 DTO와 임시 Swift 드라이버 실행 | 성공 | CAN_10, CAN_20, nil canOption 및 옵션 수치 3/3 통과 |
두 기기용 앱 루트·Frameworks와 otool -L |
성공 | Yandex/AppMetrica/DivKit/VGSL 및 MobileAdsBundle 잔존 없음 |
git diff --check |
성공 | 종료 코드 0 |
simctl install, launch, io screenshot |
시작 smoke 성공 | PID 61239, 홈 콘텐츠·ATT 팝업 직접 확인 |
| 11개 변경 화면 전체·캔 구매 실제 거래 | 미실행 | native 화면 탐색 자동화·승인 테스트 계정 및 데이터 없음 |
| XCTest 전체 suite / LSP | 미실행 | 실행 가능한 Testables / 세션 도구 미제공, 통과로 표기하지 않음 |
| 전용 simulator terminate/shutdown/delete, 임시 driver·binary 삭제 | 성공 | 종료 코드 0, 기기·파일 부재 재확인 |
전체 명령과 로그 경로는 계획의 Gate 검증 결과에 기록했다. 증거는 /var/folders/yh/8xsbvpsj5wg2qnxzxdp11_gm0000gn/T/opencode/의 yandex-ios-*.log, yandex-ios-preserved.sha256, yandex-ios-launch-smoke.png에 있다.
5. 발견 사항 요약
확정 코드 결함 없음. 독립 코드 판정은 APPROVE다. 다음은 코드 수정 요구가 아닌 미완료 검증 항목이다.
| ID | 심각도 | 상태 | 제목 | 소유 Task | 후속 |
|---|---|---|---|---|---|
| QA-P1-001 | Medium | 보류 | 11개 변경 화면의 전체 native QA 미실행 | P1-GATE | 수동 환경 준비 후 검증 |
| QA-P1-002 | Medium | 보류 | 캔 구매 성공·실패의 실서버 회귀 미실행 | P1-GATE | 승인된 테스트 계정·재화 준비 후 검증 |
6. 발견 사항 상세
QA-P1-001: 전체 화면 검증 공백
- 관련 요구사항: YAN-001, PRD §14.
- 관찰: 11개 호출과 광고 전용 레이아웃 삭제는 코드·빌드로 검증했지만, 실제 화면은 홈 시작과 ATT 팝업까지만 확인했다. 해당 홈은 11개 변경 화면의 검증을 대체하지 않는다.
- 재개 조건: native 조작 가능한 환경에서 11개 화면의 데이터 유무·스크롤·이동·빈 공간을 확인하고 화면별 증거를 기록한다. 담당은 사용자 또는 해당 QA 환경을 제공받은 에이전트다.
- 판정: 수동 visual QA 미완료. 캡처가 없는 화면에 대한 독립 시각 리뷰·픽셀 비교 통과를 주장하지 않는다.
QA-P1-002: 실제 캔 구매 검증 공백
- 관련 요구사항: YAN-005, PRD §11·§14.
- 관찰: 실제 요청 DTO 직렬화는 변경 전후 통과하고 구매 코드 경로는 그대로지만, 서버 거래와 잔액/쿼터 결과를 직접 실행하지 않았다.
- 재개 조건: 승인된 테스트 계정·재화로 두 옵션의 성공 결과, 잔액 부족·실패 상태를 확인한다. 실운영 비용이 발생하는 검증은 별도 승인이 필요하다.
- 판정: 안전 경계를 유지하며 거래를 임의 실행하지 않았다. 정적·DTO 검증만으로 실제 구매 성공을 추정하지 않는다.
7. 확정 항목의 plan·goal 전환
코드 회귀 수정 Task로 전환할 항목 없음. QA-P1-001~002는 기존 P1-GATE의 미완료 체크와 YAN-QA-001로 추적한다. 실제 QA에서 결함이 확정되면 코드 수정 전에 신규 회귀 Task를 추가한다.
8. 리뷰 종료 판정
| 판정 항목 | 결과 | 근거 |
|---|---|---|
| 코드 리뷰 범위 확인 | 충족 | 독립 Oracle APPROVE, 차단 코드 결함 없음 |
| 보존 범위 확인 | 충족 | 13개 SHA-256 일치, 프로젝트 참조 대조 |
| 자동 검증·빌드 | 충족 | 두 기기용 스킴 + 개발 시뮬레이터 성공 |
| 실제 화면·거래 전체 QA | 미충족 | QA-P1-001~002 보류 |
| 미완료 조건·재개 조건 기록 | 충족 | P1-GATE [blocked]와 본 문서 |
최종 결론: 코드 승인, 전체 Gate는 외부 QA 조건 대기.
남은 항목: 11개 화면 native QA 및 승인된 테스트 계정의 캔 구매 회귀. 기존 중복 소스·Firebase dSYM·AppIntents·관련 없는 미사용 변수 경고는 별도 범위로 유지한다.
9. 수정 후 검증 기록
리뷰로 인한 코드 수정 없음. 향후 수동 QA 또는 확정 회귀 수정 결과를 이 절에 누적한다.