Files
sodalive-ios/docs/20260327_캐릭터상세진입인증국가분기적용.md

65 lines
4.4 KiB
Markdown

# 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 분기 확인 필요)