From 25d549b06fb5b8dd5552b2c41dc24d509670bff3 Mon Sep 17 00:00:00 2001 From: klaus Date: Fri, 27 Mar 2026 18:25:10 +0900 Subject: [PATCH] =?UTF-8?q?docs(plan):=20=EC=97=B0=EB=A0=B9=EC=A0=9C?= =?UTF-8?q?=ED=95=9C=20=ED=91=9C=EC=8B=9C=20=EC=A1=B0=EA=B1=B4=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20=EA=B2=80=EC=A6=9D=20=EA=B8=B0=EB=A1=9D=EC=9D=84=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=ED=95=9C=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/20260327_연령제한표시조건수정.md | 35 +++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 docs/20260327_연령제한표시조건수정.md diff --git a/docs/20260327_연령제한표시조건수정.md b/docs/20260327_연령제한표시조건수정.md new file mode 100644 index 00000000..cc410bb3 --- /dev/null +++ b/docs/20260327_연령제한표시조건수정.md @@ -0,0 +1,35 @@ +# 연령제한 설정 UI 표시 조건 수정 + +## 작업 목표 +- 라이브 생성, 콘텐츠 업로드 페이지의 연령제한 설정 UI 표시 조건을 접속국가와 `isAdultContentVisible` 기준으로 조정한다. + +## 체크리스트 +- [x] AC1: 공통 필수조건으로 `isAdultContentVisible == true`일 때만 연령제한 설정 UI를 표시한다. + - QA: `isAdultContentVisible=false`에서 UI 미표시, `isAdultContentVisible=true`에서 국가별 추가 조건 적용 확인 +- [x] AC2: 접속국가가 한국(`countryCode == "KR"`)인 경우 `isAuth == true`일 때만 연령제한 설정 UI를 표시한다. + - QA: KR + `isAuth=false` 미표시, KR + `isAuth=true` 표시 +- [x] AC3: 접속국가가 한국이 아닌 경우 `isAuth`와 무관하게 AC1만 충족하면 UI를 표시한다. + - QA: non-KR + `isAdultContentVisible=true`에서 `isAuth` true/false 모두 표시 +- [x] AC4: 라이브 생성/콘텐츠 업로드 양쪽 페이지에 동일 규칙이 적용된다. + - QA: 두 화면에서 동일 입력 조건 대비 동일 표시 결과 확인 +- [x] AC5: 변경 파일 진단/테스트/빌드 검증을 통과한다. + - QA: Kotlin LSP 미지원 환경 확인, `./gradlew :app:testDebugUnitTest`, `./gradlew :app:assembleDebug` + +## 검증 기록 +- 무엇/왜/어떻게: 라이브 생성(`LiveRoomCreateActivity`)과 콘텐츠 업로드(`AudioContentUploadActivity`)의 연령제한 UI 노출 조건을 공통 정책(`AdultContentVisibilityPolicy`)으로 통합했다. 요청 조건(필수 `isAdultContentVisible=true`, KR 추가 `isAuth=true`)을 두 화면에서 동일하게 적용하기 위해 기존 `isAuth` 단일 조건을 정책 함수 호출로 교체했다. + - 실행 명령: 코드 수정(해당 3개 Kotlin 파일 + 정책 테스트 1개 파일 추가) + - 결과: 두 화면 모두 `shouldShowAdultRestrictionSetting()` 기반으로 `llSetAdult` 표시 및 연령선택 핸들러 등록 조건이 동작하도록 반영됨 + +- 무엇/왜/어떻게: 정책 로직의 조건 분기 오동작을 방지하기 위해 단위 테스트(`AdultContentVisibilityPolicyTest`)로 KR/non-KR, `isAdultContentVisible`, `isAuth`, 빈 `countryCode` 조합을 검증했다. + - 실행 명령: `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.common.AdultContentVisibilityPolicyTest"` + - 결과: BUILD SUCCESSFUL + +- 무엇/왜/어떻게: 변경 영향 범위의 회귀 확인을 위해 디버그 단위 테스트 전체와 디버그 빌드를 수행했다. + - 실행 명령: `./gradlew :app:testDebugUnitTest` + - 결과: BUILD SUCCESSFUL + - 실행 명령: `./gradlew :app:assembleDebug` + - 결과: BUILD SUCCESSFUL + +- 무엇/왜/어떻게: 정적 진단 요구사항 확인을 위해 LSP diagnostics를 시도했으나 현재 실행 환경에는 `.kt`용 LSP 서버가 구성되어 있지 않음을 확인했다. 대신 Gradle 컴파일/테스트/빌드 성공으로 Kotlin 컴파일 오류 유무를 검증했다. + - 실행 명령: `lsp_diagnostics` (4개 Kotlin 파일) + - 결과: `No LSP server configured for extension: .kt`