fix(content): 성인 콘텐츠 설정 동기화와 국가별 인증 분기를 적용한다
This commit is contained in:
64
docs/20260327_캐릭터상세진입인증국가분기적용.md
Normal file
64
docs/20260327_캐릭터상세진입인증국가분기적용.md
Normal file
@@ -0,0 +1,64 @@
|
||||
# 20260327 캐릭터 상세 진입 인증 국가 분기 적용
|
||||
|
||||
## 개요
|
||||
- 캐릭터(또는 크리에이터) 터치로 상세 페이지로 이동할 때 수행되는 인증 체크를 접속국가 기준으로 분기한다.
|
||||
- 한국(`KR`) 사용자는 기존 본인인증 체크를 유지하고, 비한국 사용자는 콘텐츠 보기 설정 경로를 안내하는 기존 정책과 동일하게 맞춘다.
|
||||
|
||||
## 요구사항 요약
|
||||
- 대상: 캐릭터 상세 진입 탭 핸들러의 인증 가드 로직
|
||||
- 변경 사항:
|
||||
- `KR`(정규화 기준, 빈값 포함) 사용자: 기존 본인인증 체크 유지
|
||||
- `non-KR` 사용자: 인증 대신 콘텐츠 보기 설정 유도 정책 적용
|
||||
|
||||
## 완료 기준 (Acceptance Criteria)
|
||||
- [x] AC1: 캐릭터 상세 진입 인증 가드에서 국가코드 정규화(`trim + uppercased`)가 적용된다.
|
||||
- [x] AC2: 한국 사용자는 기존 본인인증 체크 흐름이 유지된다.
|
||||
- [x] AC3: 비한국 사용자는 콘텐츠 보기 설정 유도 분기로 동작한다.
|
||||
- [x] AC4: 기존 네비게이션/팝업 흐름과 충돌 없이 동작한다.
|
||||
- [x] AC5: 빌드/진단/테스트 시도 결과가 문서에 기록된다.
|
||||
|
||||
## 구현 체크리스트
|
||||
- [x] 캐릭터 상세 진입 인증 체크 위치 식별
|
||||
- [x] 기존 국가 분기 정책 스니펫 확인 및 재사용 지점 선정
|
||||
- [x] 탭 핸들러 분기 로직 변경
|
||||
- [x] 수정 파일 진단 및 워크스페이스 빌드/테스트 실행
|
||||
- [x] 검증 기록 문서화
|
||||
|
||||
## 검증 계획
|
||||
- [x] 정적 진단: 수정 파일 `lsp_diagnostics`
|
||||
- [x] 빌드:
|
||||
- `xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive" -configuration Debug build`
|
||||
- `xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive-dev" -configuration Debug build`
|
||||
- [x] 테스트 시도:
|
||||
- `xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive" test`
|
||||
- `xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive-dev" test`
|
||||
|
||||
## 검증 기록
|
||||
- 일시: 2026-03-27
|
||||
- 무엇: 캐릭터 상세 진입 인증 국가 분기 적용 작업 계획 문서 작성
|
||||
- 왜: 구현 전 변경 범위와 완료 기준을 고정해 요청사항을 정확히 반영하기 위함
|
||||
- 어떻게: docs 규칙에 맞춰 요구사항/완료기준/검증계획을 체크리스트로 구성
|
||||
- 실행 명령/도구: `apply_patch(문서 생성)`
|
||||
- 결과: 구현 계획 문서 생성 완료
|
||||
|
||||
- 일시: 2026-03-27
|
||||
- 무엇: 캐릭터 상세 진입 인증 체크를 국가코드 기준(KR/non-KR)으로 분기 적용
|
||||
- 왜: 기존 “모든 국가 auth 필수” 로직을 정책 변경사항(한국은 본인인증, 비한국은 콘텐츠 보기 설정 유도)에 맞추기 위함
|
||||
- 어떻게:
|
||||
- `ChatTabView.handleCharacterSelection(_:)`와 `HomeTabView.handleCharacterSelection(_:)`에 `countryCode` 정규화(`trim + uppercased`) 추가
|
||||
- `isKoreanCountry`일 때만 기존 `auth == false` 본인인증 팝업(`isShowAuthConfirmView`) 흐름 유지
|
||||
- `!isKoreanCountry && !UserDefaults.isAdultContentVisible()` 조건에서
|
||||
- `AppState.shared.errorMessage = I18n.Settings.adultContentEnableGuide`
|
||||
- `AppState.shared.isShowErrorPopup = true`
|
||||
- `AppState.shared.setAppStep(step: .contentViewSettings)`
|
||||
로 유도하고 상세 진입 차단
|
||||
- 실행 명령/도구:
|
||||
- 탐색: `task(subagent_type="explore", description="Find character detail auth gate")`, `task(subagent_type="explore", description="Find country branch conventions")`
|
||||
- 진단: `lsp_diagnostics(ChatTabView.swift)`, `lsp_diagnostics(HomeTabView.swift)`
|
||||
- 빌드: `xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive" -configuration Debug build`, `xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive-dev" -configuration Debug build`
|
||||
- 테스트 시도: `xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive" test`, `xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive-dev" test`
|
||||
- 결과:
|
||||
- 두 스킴 Debug 빌드 모두 `BUILD SUCCEEDED`
|
||||
- 테스트는 두 스킴 모두 `Scheme ... is not currently configured for the test action`으로 실행 불가(테스트 액션 미구성)
|
||||
- `lsp_diagnostics`는 SourceKit 환경에서 `No such module 'Bootpay'`를 보고하지만 실제 xcodebuild는 통과하여 컴파일 정상 확인
|
||||
- 수동 QA는 현재 CLI 환경에서 UI 탭/팝업 플로우 실행이 불가하여 미실행(실기기/시뮬레이터에서 KR/non-KR 분기 확인 필요)
|
||||
Reference in New Issue
Block a user