# 20260327 마이페이지 본인인증 아이템 국가 조건 적용 ## 개요 - `MyPageView`의 카테고리 버튼 중 `본인인증/인증완료` 아이템을 접속국가가 한국(`KR`)인 경우에만 노출되도록 변경한다. - 기존 인증 플로우(Bootpay 호출, 인증 상태 문구)는 한국 사용자에서만 기존대로 유지한다. ## 요구사항 요약 - 대상 파일: `SodaLive/Sources/MyPage/MyPageView.swift` - 변경 조건: - 접속국가 코드가 `KR`(정규화 기준 적용)일 때만 `본인인증/인증완료` 아이템 표시 - 국가코드 미수신(빈값) 시 기존 저장소 관례에 맞춰 한국 정책(`KR`)으로 취급 - `KR`이 아니면 해당 아이템 미표시 ## 완료 기준 (Acceptance Criteria) - [x] AC1: `MyPageView`에서 접속국가 코드 정규화(`trim + uppercased`)가 적용된다. - [x] AC2: `CategoryButtonsView`의 `본인인증/인증완료` 아이템이 한국 사용자에게만 노출된다. - [x] AC3: 한국 사용자의 기존 인증 플로우(`isShowAuthView = true`)가 유지된다. - [x] AC4: 빌드/진단 검증 결과가 문서에 기록된다. ## 구현 체크리스트 - [x] `MyPageView`에서 국가코드 기반 불리언(`isKoreanCountry`) 계산 로직 추가 - [x] `CategoryButtonsView`에 국가코드 조건 전달 파라미터 추가 - [x] 카테고리 그리드의 `본인인증/인증완료` 아이템 KR 조건부 렌더링 적용 - [x] 수정 파일 진단 및 워크스페이스 빌드/테스트 명령 실행 - [x] 검증 결과 문서화 ## 검증 계획 - [x] 정적 진단: `lsp_diagnostics("SodaLive/Sources/MyPage/MyPageView.swift")` - [x] 빌드: `xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive" -configuration Debug build` - [x] 빌드(개발): `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` 문서 포맷을 기준으로 요구사항/완료기준/검증계획을 정리 - 실행 명령/도구: `read(docs/)`, `apply_patch(문서 생성)` - 결과: 구현용 계획 문서 초안 생성 완료 - 일시: 2026-03-27 - 무엇: 마이페이지 `본인인증/인증완료` 아이템 KR 조건부 노출 구현 및 검증 - 왜: 비한국 접속국가에서 해당 아이템이 노출되지 않도록 정책을 적용하기 위함 - 어떻게: - `MyPageView`에서 `countryCode`를 `trim + uppercased`로 정규화하고 `isKoreanCountry = normalizedCountryCode.isEmpty || normalizedCountryCode == "KR"` 계산 - `CategoryButtonsView`에 `isKoreanCountry` 전달 파라미터를 추가하고, `ic_my_auth` 아이템을 `if isKoreanCountry`로 감싸 조건부 렌더링 - 사용자 요청 search-mode에 맞춰 explore/librarian 병렬 탐색 + Grep/ast-grep 직접 탐색 결과를 교차 검증 - 실행 명령/도구: - Background agents: - `task(subagent_type="explore", description="Find KR gating patterns")` - `task(subagent_type="explore", description="Trace MyPage auth item")` - `task(subagent_type="librarian", description="Find SwiftUI conditional item patterns")` - `task(subagent_type="librarian", description="Find locale/country code handling examples")` - Direct search: - `grep("본인인증|인증완료|ic_my_auth", MyPageView.swift)` - `ast_grep_search("CategoryButtonItem(icon: \"ic_my_auth\", title: $TITLE) { $$$ }", lang: "swift")` - `rg` 시도(`command not found: rg`)로 환경 미설치 확인 - 검증: - `lsp_diagnostics("SodaLive/Sources/MyPage/MyPageView.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` - 결과: - `SodaLive` / `SodaLive-dev` Debug 빌드 모두 `BUILD SUCCEEDED` - 테스트는 두 스킴 모두 `Scheme ... is not currently configured for the test action`으로 실행 불가(테스트 액션 미구성) - `lsp_diagnostics`는 SourceKit 환경에서 `No such module 'Bootpay'`를 보고했으나, 실제 `xcodebuild` 통과로 컴파일 정상 확인 - 수동 QA는 현재 CLI 환경 한계로 미실행(실기기/시뮬레이터에서 KR/non-KR 노출 확인 필요)