docs(main): 로그인 가드 진행을 기록한다

This commit is contained in:
2026-06-27 02:35:45 +09:00
parent 6299259f89
commit 39dd003b4e

View File

@@ -21,7 +21,7 @@
- 지정된 source test, 컴파일, ktlint, diff whitespace 검증이 통과한다. - 지정된 source test, 컴파일, ktlint, diff whitespace 검증이 통과한다.
### Phase 1: 현재 이동 지점과 기존 로그인 진입점 확인 ### Phase 1: 현재 이동 지점과 기존 로그인 진입점 확인
- [ ] **Task 1.1: `HomeMainFragment` 이동 지점 확인** - [x] **Task 1.1: `HomeMainFragment` 이동 지점 확인**
- 파일: `app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/HomeMainFragment.kt` - 파일: `app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/HomeMainFragment.kt`
- 확인 대상: - 확인 대상:
- `openHomeOnAirLive` - `openHomeOnAirLive`
@@ -36,7 +36,7 @@
- 검증 기록: - 검증 기록:
- 2026-06-27: source 확인 결과 위 함수들이 실제 화면 이동 지점이다. `onLiveClick`, `onFollowingSectionMoreClick`, `onFollowingLiveClick`, `onFollowingScheduleClick`, `onFollowingNewsClick`은 현재 `Unit` 또는 이동 없음이므로 이번 가드 적용 대상이 아니다. - 2026-06-27: source 확인 결과 위 함수들이 실제 화면 이동 지점이다. `onLiveClick`, `onFollowingSectionMoreClick`, `onFollowingLiveClick`, `onFollowingScheduleClick`, `onFollowingNewsClick`은 현재 `Unit` 또는 이동 없음이므로 이번 가드 적용 대상이 아니다.
- [ ] **Task 1.2: `ContentMainFragment` 이동 지점 확인** - [x] **Task 1.2: `ContentMainFragment` 이동 지점 확인**
- 파일: `app/src/main/java/kr/co/vividnext/sodalive/v2/main/content/ContentMainFragment.kt` - 파일: `app/src/main/java/kr/co/vividnext/sodalive/v2/main/content/ContentMainFragment.kt`
- 확인 대상: - 확인 대상:
- `onBannerClick` - `onBannerClick`
@@ -47,14 +47,14 @@
- 검증 기록: - 검증 기록:
- 2026-06-27: source 확인 결과 `onBannerClick`, `openAudioContentDetail`, `openSeriesDetail`이 실제 화면 이동 지점이다. 랭킹/카드 클릭은 이 함수들로 위임되므로 최종 이동 함수에 가드를 적용하면 된다. - 2026-06-27: source 확인 결과 `onBannerClick`, `openAudioContentDetail`, `openSeriesDetail`이 실제 화면 이동 지점이다. 랭킹/카드 클릭은 이 함수들로 위임되므로 최종 이동 함수에 가드를 적용하면 된다.
- [ ] **Task 1.3: 기존 로그인 진입점 확인** - [x] **Task 1.3: 기존 로그인 진입점 확인**
- 파일: `app/src/main/java/kr/co/vividnext/sodalive/v2/main/MainV2Activity.kt` - 파일: `app/src/main/java/kr/co/vividnext/sodalive/v2/main/MainV2Activity.kt`
- 확인 대상: `MainV2Activity.showLoginActivity()` - 확인 대상: `MainV2Activity.showLoginActivity()`
- 검증 기준: `SharedPreferenceManager.token.isBlank()` 조건에서 `LoginActivity`를 시작하는 기존 메서드를 재사용할 수 있다. - 검증 기준: `SharedPreferenceManager.token.isBlank()` 조건에서 `LoginActivity`를 시작하는 기존 메서드를 재사용할 수 있다.
- 검증 기록: - 검증 기록:
- 2026-06-27: `MainV2Activity.showLoginActivity()`는 token blank 조건에서 `LoginActivity`를 시작한다. helper는 이 메서드를 호출하는 방식으로 계획한다. - 2026-06-27: `MainV2Activity.showLoginActivity()`는 token blank 조건에서 `LoginActivity`를 시작한다. helper는 이 메서드를 호출하는 방식으로 계획한다.
- [ ] **Task 1.4: 기존 성인 콘텐츠/본인인증 정책 확인** - [x] **Task 1.4: 기존 성인 콘텐츠/본인인증 정책 확인**
- 파일: - 파일:
- `app/src/main/java/kr/co/vividnext/sodalive/common/AdultContentVisibilityPolicy.kt` - `app/src/main/java/kr/co/vividnext/sodalive/common/AdultContentVisibilityPolicy.kt`
- `app/src/main/java/kr/co/vividnext/sodalive/common/SharedPreferenceManager.kt` - `app/src/main/java/kr/co/vividnext/sodalive/common/SharedPreferenceManager.kt`
@@ -71,7 +71,7 @@
- 2026-06-27: `countryCode` 기본값은 `KR`이고, blank country도 `KR`로 취급하는 기존 패턴을 확인했다. `ContentSettingsActivity``Constants.EXTRA_SHOW_SENSITIVE_CONTENT_GUIDE``true`이면 민감 콘텐츠 안내 Toast를 표시한다. - 2026-06-27: `countryCode` 기본값은 `KR`이고, blank country도 `KR`로 취급하는 기존 패턴을 확인했다. `ContentSettingsActivity``Constants.EXTRA_SHOW_SENSITIVE_CONTENT_GUIDE``true`이면 민감 콘텐츠 안내 Toast를 표시한다.
### Phase 2: v2 메인 전용 이동 guard helper 추가 ### Phase 2: v2 메인 전용 이동 guard helper 추가
- [ ] **Task 2.1: helper source test 추가** - [x] **Task 2.1: helper source test 추가**
- 파일: `app/src/test/java/kr/co/vividnext/sodalive/v2/main/MainV2LoginGuardSourceTest.kt` - 파일: `app/src/test/java/kr/co/vividnext/sodalive/v2/main/MainV2LoginGuardSourceTest.kt`
- 검증 기준: - 검증 기준:
- helper가 `SharedPreferenceManager.token.isBlank()`를 사용한다. - helper가 `SharedPreferenceManager.token.isBlank()`를 사용한다.
@@ -88,8 +88,10 @@
./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.MainV2LoginGuardSourceTest" ./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.MainV2LoginGuardSourceTest"
``` ```
- 기대 결과: 구현 전에는 helper 파일 부재로 실패한다. - 기대 결과: 구현 전에는 helper 파일 부재로 실패한다.
- 검증 기록:
- 2026-06-27: `MainV2LoginGuardSourceTest`를 추가하고 구현 전 실행했다. `MainV2LoginGuard.kt` 파일 부재로 실패해 RED 상태를 확인했다.
- [ ] **Task 2.2: helper 구현** - [x] **Task 2.2: helper 구현**
- 파일: `app/src/main/java/kr/co/vividnext/sodalive/v2/main/MainV2LoginGuard.kt` - 파일: `app/src/main/java/kr/co/vividnext/sodalive/v2/main/MainV2LoginGuard.kt`
- 구현 방향: - 구현 방향:
```kotlin ```kotlin
@@ -123,8 +125,12 @@
} }
``` ```
- 검증 기준: Task 2.1 source test가 통과한다. - 검증 기준: Task 2.1 source test가 통과한다.
- 검증 기록:
- 2026-06-27: `MainV2LoginGuard.kt`를 추가했다. token blank 시 `MainV2Activity.showLoginActivity()`, 성인 콘텐츠 요청 시 한국/본인인증 확인, `SodaDialog` 본인인증 안내, `Auth.auth`, `ContentSettingsActivity` 민감 콘텐츠 안내 extra, 최종 `onAllowed()` 흐름을 포함한다.
- 2026-06-27: 리뷰 지적에 따라 `Auth.auth` 완료 콜백에서 `BootpayResponse`를 파싱하고 `AuthVerifyRequest`를 생성해 `MyPageViewModel.authVerify()`로 서버 검증 후 `SplashActivity`를 재시작하는 기존 인증 완료 후처리를 추가했다.
- 2026-06-27: 코드 리뷰에서 `Auth.auth` 성공 콜백 후처리 누락을 지적받았고, 같은 Phase 2 범위에서 기존 패턴과 동일한 서버 본인인증 검증 및 상태 갱신 흐름으로 보완했다.
- [ ] **Task 2.3: 한국 접속 미인증 사용자 처리 방식 확정** - [x] **Task 2.3: 한국 접속 미인증 사용자 처리 방식 확정**
- 파일: - 파일:
- `app/src/main/java/kr/co/vividnext/sodalive/v2/main/MainV2LoginGuard.kt` - `app/src/main/java/kr/co/vividnext/sodalive/v2/main/MainV2LoginGuard.kt`
- 필요 시 v2 main 하위 신규 auth guide helper - 필요 시 v2 main 하위 신규 auth guide helper
@@ -215,3 +221,6 @@
- 2026-06-27: 사용자 요청에 따라 이번 작업은 문서 생성만 수행한다. source/test/helper 구현 및 Gradle 검증은 아직 실행하지 않는다. - 2026-06-27: 사용자 요청에 따라 이번 작업은 문서 생성만 수행한다. source/test/helper 구현 및 Gradle 검증은 아직 실행하지 않는다.
- 2026-06-27: 사용자 요청에 따라 본인인증/성인 콘텐츠 설정 가드를 문서 범위에 추가했다. 구현은 아직 수행하지 않는다. - 2026-06-27: 사용자 요청에 따라 본인인증/성인 콘텐츠 설정 가드를 문서 범위에 추가했다. 구현은 아직 수행하지 않는다.
- 2026-06-27: 한국 접속 미인증 사용자 본인인증 안내 흐름은 v2 helper에서 기존 `SodaDialog` + `Auth.auth` 패턴을 직접 재사용하는 것으로 확정했다. - 2026-06-27: 한국 접속 미인증 사용자 본인인증 안내 흐름은 v2 helper에서 기존 `SodaDialog` + `Auth.auth` 패턴을 직접 재사용하는 것으로 확정했다.
- 2026-06-27: Phase 1/2 진행 결과 `MainV2LoginGuardSourceTest`와 `MainV2LoginGuard`를 추가했다. 구현 전 단일 source test는 helper 파일 부재로 실패했고, 구현 후 `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.MainV2LoginGuardSourceTest"`, `./gradlew :app:compileDebugKotlin`, `./gradlew :app:ktlintCheck`, `git diff --check`가 통과했다.
- 2026-06-27: 리뷰 지적에 따라 빈 `Auth.auth` 콜백을 금지하는 source test를 추가한 뒤 RED를 확인했고, 서버 검증/상태 갱신 후처리 구현 후 `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.MainV2LoginGuardSourceTest"`와 `./gradlew :app:compileDebugKotlin`이 통과했다.
- 2026-06-27: Phase 1/2 코드 리뷰 지적을 반영한 뒤 검증을 재수행했다. `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.MainV2LoginGuardSourceTest"`, `./gradlew :app:compileDebugKotlin`, `./gradlew :app:ktlintCheck`, `git diff --check`는 모두 통과했다.