docs(ads): Yandex 광고 제거 요구사항과 검증을 기록한다
This commit is contained in:
@@ -0,0 +1,116 @@
|
||||
# Phase 1 Yandex 잔여 참조 제거 리뷰
|
||||
|
||||
## 1. 리뷰 정보
|
||||
|
||||
| 항목 | 내용 |
|
||||
|---|---|
|
||||
| 리뷰 대상 | Phase 1 / P1-T1~T3 및 P1-GATE 증거 |
|
||||
| 기준 working tree | 사용자 선행 SDK·상수·프로젝트 형식 변경 위에 잔여 참조 삭제 적용, 커밋 없음 |
|
||||
| 리뷰 일자 | 2026-10-13 |
|
||||
| 리뷰어 | Oracle 독립 읽기 전용 검토, 주 에이전트 실행 증거 대조 |
|
||||
| 기준 문서 | [PRD](../prd.md), [계획](../plan-task.md) |
|
||||
| 리뷰 상태 | 코드 판정 완료, 전체 수동 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-T1~T3/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 검증 결과](../plan-task.md)에 기록했다. 증거는 `/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 또는 확정 회귀 수정 결과를 이 절에 누적한다.
|
||||
Reference in New Issue
Block a user