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