docs(auth): 콘텐츠 설정 요구사항과 검증 결과를 기록한다
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
# 본인인증 후 콘텐츠 보기 설정 리뷰
|
||||
|
||||
## 1. 리뷰 정보
|
||||
|
||||
| 항목 | 내용 |
|
||||
|---|---|
|
||||
| 대상 | Phase 1~3 / 현재 main working tree의 인증 설정 변경 |
|
||||
| 일자 | 2026-10-12 |
|
||||
| 기준 | `../prd.md`, `../plan-task.md` |
|
||||
| 검토 | Oracle 기능/회귀 검토, 독립 시각 검토, coordinator 실행 검증 |
|
||||
| 상태 | 코드 결함 미발견 / 실제 인증 통합 QA 증거 대기 |
|
||||
|
||||
## 2. 목적과 범위
|
||||
|
||||
- 범위: `MyPageViewModel`, 인증 DTO/repository, 공용 `AuthContentSettingsSheet`, 7개 인증 caller, I18n, Xcode 등록, serializer check.
|
||||
- 기준: 확인 전 요청·저장 금지, ON/ALL, 확인 후 닫힘→POST, POST 실패 시 동일 draft 재개, callback 경로 GET/로컬 동기화 후 action, GET 실패 재시작, 기존 마이페이지 재시작 유지.
|
||||
- 제외: 기존 콘텐츠 설정 autosave 변경, SDK/인증 서버 변경, unrelated 경고 정리, 사용자 계정의 임의 인증.
|
||||
|
||||
## 3. 판정 기준
|
||||
|
||||
확정된 사용자 요구사항 위반은 수정 대상으로 판정한다. 실제 서버/화면 통합 증거가 없는 항목은 코드 결함과 분리해 보류하고 최종 Gate를 통과로 표시하지 않는다.
|
||||
|
||||
## 4. 검토한 근거
|
||||
|
||||
### 소스
|
||||
|
||||
- `SodaLive/Sources/MyPage/MyPageViewModel.swift`: receipt capture, immutable request, onDismiss submit, POST/GET 실패 분리, callback 소비.
|
||||
- `SodaLive/Sources/V2/Component/Modal/AuthContentSettingsSheet.swift`: binding-only 입력, native sheet dismissal 금지, onDismiss 전송, 오류/로딩 연결.
|
||||
- `MyPageView`, `HomeView`, `HomeTabView`, `ChatTabView`, `LiveNowAllView`, `V2/Main/MainView`, `CreatorChannelView`: provider 닫기와 설정 시트 연결, pending action 보존.
|
||||
- `ContentView:22`, `SplashView:73`, `MainView:59`: 재시작 시 MainView 제거·재생성과 기존 member GET 연결. 런타임 성공 증거는 아님.
|
||||
|
||||
### 실행 환경과 증거
|
||||
|
||||
- macOS Intel, Xcode 26.0, iOS 26.0 iPhone 17 Pro Simulator. deployment target 16.6.
|
||||
- 증거 루트: `/var/folders/yh/8xsbvpsj5wg2qnxzxdp11_gm0000gn/T/opencode`.
|
||||
|
||||
| 실행 | 결과 | 근거/한계 |
|
||||
|---|---|---|
|
||||
| 실제 DTO swiftc compile/run | PASS / exit 0 | 4개 조합 exact keys/types/values. RED는 새 initializer 인자 부재 compile 실패 |
|
||||
| 실제 VM/repository + native Combine 임시 driver | PASS / exit 0 | malformed6, POST failure6, GET failure7, callback 순서·중복 방지. transport/AppState/UserDefaults는 임시 stubs |
|
||||
| 네이티브 실제 sheet/modifier 임시 앱 XCTest | PASS / 2 tests, 0 failures | toggle/radio/swipe 차단/confirm dismiss. VM·toast stub으로 실서버/오류 토스트 미검증 |
|
||||
| 한·영 ON/OFF native screenshots | 시각 검토 APPROVE | 잘림·겹침 없음. Android 대비 iOS26 floating 외곽 차이, pixel-perfect 주장 없음 |
|
||||
| 기존 `work/tests/check-*.sh` 전체 | PASS / exit 0 | 변경 전 및 변경 후 회귀 확인 |
|
||||
| 두 workspace Debug Simulator builds | PASS / exit 0 | SodaLive-dev, SodaLive, coordinator 재실행 포함. 기존 SDK/중복 소스/dSYM 경고 존재 |
|
||||
| Swift parse / plutil / git diff --check | PASS / exit 0 | LSP 도구 미제공, LSP 실행 성공으로 대체 표기하지 않음 |
|
||||
|
||||
UI 증거: `auth-settings-qa/{EVIDENCE.md,interactions.log,NativeInteractions.xcresult,ko-on-all.png,ko-off-all.png,en-on-all.png,en-off-all.png}`. 실제 sheet hash는 `ff44380bedf20a364d59b5ad5b07164f97dfaa87cb78bbb09a1e1dc3f80eddff`이며 캡처 이후 소스 변경이 없다.
|
||||
|
||||
## 5. 발견 사항 요약
|
||||
|
||||
**확정 코드 결함 없음.** 아래는 최종 수용 판단을 위한 증거 부족 항목이다.
|
||||
|
||||
| ID | 상태 | 내용 | 소유 Goal |
|
||||
|---|---|---|---|
|
||||
| QA-001 | 보류 | 실제 7개 인증 caller의 provider-dismiss-sheet, POST 실패 오류/재개 통합 증거 없음 | P3-QA |
|
||||
| QA-002 | 보류 | GET 실패 후 실제 앱 재시작으로 member GET과 로컬 저장이 이루어지는 증거 없음 | P3-QA |
|
||||
|
||||
## 6. 발견 사항 상세
|
||||
|
||||
### QA-001: 실제 인증 진입점 통합
|
||||
|
||||
- 관련 기준: AUTH-002/003/006/007. 실제 마이페이지의 inline provider와 다른 6개 cover를 종료한 뒤 시트가 정상 표시되는지 검증해야 한다.
|
||||
- 현재 증거: 7개 caller 소스/컴파일, shared VM 실행, native modifier 단독 상호작용. 실제 전체 화면 계층·Bootpay와의 연동 성공을 대신하지 않는다.
|
||||
- 재개: 승인된 QA 계정/유효한 receipt로 모든 진입점 정상·전송 실패 경로 실행. raw receipt/token 기록 금지.
|
||||
|
||||
### QA-002: 재시작 후 실제 동기화
|
||||
|
||||
- 관련 기준: PRD §14.1의 restart fallback 실제 member refresh 및 로컬 반영.
|
||||
- 현재 증거: VM driver에서 GET 실패→재시작 1회/추가 POST 0회/callback 0회; 소스에서 새 MainView의 member GET 경로 확인.
|
||||
- 미검증: 실제 화면 재생성과 GET 응답/로컬 상태 반영. 임시 AppState 카운터만으로 통과 처리하지 않는다.
|
||||
- 재개: POST 성공 후 GET만 실패시키고, 재시작 뒤 GET 성공을 허용해 auth/content 설정 갱신과 pending action 미실행을 관찰한다.
|
||||
|
||||
## 7. plan·goal 전환
|
||||
|
||||
코드 수정 확정 항목이 없어 신규 회귀 수정 Task는 없다. QA-001/002는 기존 `P3-QA`에 [blocked]로 유지한다. 실패가 실제 재현되면 코드 수정 전에 신규 회귀 Task를 추가한다.
|
||||
|
||||
## 8. 리뷰 종료 판정
|
||||
|
||||
- 소스/격리 실행/네이티브 시각 검토: 완료, 확정 production defect 없음.
|
||||
- 전체 사용자 흐름 최종 Gate: **외부 QA 조건 대기**. Oracle은 코드 결함이 아니라 실제 통합 증거 부족으로 최종 승인을 보류했다.
|
||||
- 실서버 지원은 사용자 확인에 근거한다. receipt 만료/재시도 idempotency 및 작은 화면·큰 글자 실사용은 별도 미검증이다.
|
||||
|
||||
## 9. 후속 검증 기록
|
||||
|
||||
- 2026-10-12: coordinator가 현재 소스의 양쪽 앱 incremental build와 기존 회귀 스크립트 전체를 재실행해 exit 0을 확인했다. 배경 탭 차단 추가 네이티브 검사는 별도 후속 기록으로 남긴다.
|
||||
- 2026-10-12 후속: 실제 dimmed 영역 `(0.5,0.2)` 탭 뒤 시트 유지, 그 후 설정 완료로만 닫힘을 focused XCTest 1개/실패 0개로 확인했다. `auth-settings-qa/NativeBackdrop.xcresult`, `backdrop.log` 및 `backdrop-attachments`에 증거가 있다. 임시 앱·runner 제거와 simulator 종료를 확인했다. 추가 검사는 단독 native host 증거로 QA-001/002의 실제 인증 통합 차단을 해소하지 않는다.
|
||||
Reference in New Issue
Block a user