docs(v2): 공통 접근 가드 계획을 보강한다

This commit is contained in:
2026-07-14 20:44:06 +09:00
parent 9f70bcd3eb
commit 98db0b657e
3 changed files with 226 additions and 13 deletions

View File

@@ -71,7 +71,7 @@
#### Requirements
- Access 요구사항은 최소 `Login`, `AdultContent`를 명시적으로 표현한다.
- `AdultContent`는 로그인 확인 후 국가/본인인증, 성인 콘텐츠 표시 설정 순서로 평가한다.
- 로그인 여부는 기존과 동일하게 `SharedPreferenceManager.token.isBlank()` 기준을 사용한다.
- 로그인 여부는 기존 `MainV2Activity.isLoggedIn()`과 동일하게 `SharedPreferenceManager.token.isNotBlank() && SharedPreferenceManager.token.length > 10` 기준을 사용한다.
- `countryCode.ifBlank { "KR" } == "KR"`이면 국내 사용자로 판단한다.
- 국내 사용자이고 `SharedPreferenceManager.isAuth == false`이면 본인인증 필요 결과를 반환한다.
- `SharedPreferenceManager.isAdultContentVisible == false`이면 성인 콘텐츠 설정 필요 결과를 반환한다.
@@ -223,7 +223,7 @@ Access 판단 결과를 기존 로그인, 본인인증, 설정 이동 UX에 연
- Community 변경처럼 호출 화면이 갱신 대상을 결정하는 경우 도메인 결과와 feature invalidation handler를 분리하고, observer는 Activity 밖의 다수 소비자에게 전파할 요구가 생길 때만 도입한다.
- 각 도메인 Phase에서 Activity result, callback, refresh 후처리를 조사하고 단일 handler가 필요한 흐름만 최소 범위로 통합한다.
- 기존 source test가 이전 함수명을 고정한 경우 새 공개 계약을 검증하도록 최소 수정한다.
- 각 Phase는 관련 단위 테스트, `:app:compileDebugKotlin`, `:app:ktlintCheck`, `git diff --check`를 통과해야 한다.
- 각 Phase는 관련 단위 테스트, `:app:compileDebugKotlin`, `git diff --check`를 통과해야 한다. `:app:ktlintCheck`는 전체 기준선을 재실행하고, 저장소 기존 위반으로 실패하는 경우 Phase 변경 파일에 신규 ktlint 위반이 없음을 완료 gate로 삼아 실패 위치를 `plan-task.md`에 기록한다.
- 테스트 클래스가 추가되면 `docs/agent-guides/build-test-style.md`에 단일 실행 예시를 추가한다.
- 작업 범위가 변경되면 구현 전에 `plan-task.md`를 먼저 갱신한다.
@@ -232,7 +232,7 @@ Access 판단 결과를 기존 로그인, 본인인증, 설정 이동 UX에 연
## 10. Metrics
- 로그인과 성인 접근 정책을 독립적으로 판단하는 구현이 `v2` 내 한 곳에만 존재한다.
- `CreatorChannelActivity``HomeOnAirLiveActivity`에 화면 전용 `ensureLoginAndAdultAuth` 구현이 남지 않는다.
- 대상 UI 호출부에서 `SharedPreferenceManager.token.isBlank()`로 개별 행동 접근을 판단하지 않는다.
- 대상 UI 호출부에서 `SharedPreferenceManager.token`로 개별 행동 접근을 판단하지 않는다.
- 오디오, 시리즈, 라이브, 크리에이터, 커뮤니티, 채팅의 합의된 호출부가 각각 단일 Action 진입점을 사용한다.
- Creator Channel의 Community 작성, 수정, 삭제, 고정 변경 성공 경로가 명시적 `CommunityChange`를 거쳐 하나의 composition handler에서 projection을 갱신한다.
- 공통 Action 공개 계약이 feature 전용 UI model 또는 DTO에 의존하지 않는다.