docs(creator): 채널 홈 Phase 7 검증을 기록한다

This commit is contained in:
2026-06-15 21:01:58 +09:00
parent b529a83fe6
commit a2be1739a6

View File

@@ -819,7 +819,7 @@
### Phase 7: 팔로우/알림 변경과 탭 동작 연결 ### Phase 7: 팔로우/알림 변경과 탭 동작 연결
- [ ] **Task 7.1: 팔로우/알림 click 흐름 연결** - [x] **Task 7.1: 팔로우/알림 click 흐름 연결**
- 수정: - 수정:
- `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelHomeActivity.kt` - `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelHomeActivity.kt`
- `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelHomeViewModel.kt` - `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelHomeViewModel.kt`
@@ -833,8 +833,10 @@
- `./gradlew :app:compileDebugKotlin` - `./gradlew :app:compileDebugKotlin`
- 기대 결과: - 기대 결과:
- 팔로우/알림 상태 변경 테스트와 컴파일이 PASS한다. - 팔로우/알림 상태 변경 테스트와 컴파일이 PASS한다.
- 검증 기록:
- 2026-06-15: RED로 `CreatorChannelHomeViewModelTest``isFollowInProgressLiveData` 진행 상태 계약을 추가해 `Unresolved reference 'isFollowInProgressLiveData'` 컴파일 실패를 확인했다. 구현 후 `CreatorChannelHomeViewModel`에 팔로우 요청 진행 상태 LiveData를 노출하고, `CreatorChannelHomeActivity`에서 `layout_follow_capsule`/`iv_bell` 클릭을 `onFollowActionClicked()`로 연결했다. 미팔로우 상태는 `viewModel.follow(follow = true, notify = true)`를 직접 호출하고, 팔로우 중 상태는 `CreatorFollowNotifyFragment`를 표시해 `알림 모두 받기`, `알림 받지 않기`, `언팔로우`를 각각 `true/true`, `true/false`, `false/false` 조합으로 호출한다. 요청 중에는 `CreatorChannelTitleBarState.from(..., isInProgress = true)` 기반으로 follow/bell click을 비활성화한다. `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.CreatorChannelHomeActivitySourceTest"``./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.CreatorChannelHomeViewModelTest"`가 PASS했다.
- [ ] **Task 7.2: tab-bar 7개 항목 표시와 홈 외 탭 클릭 정책 적용** - [x] **Task 7.2: tab-bar 7개 항목 표시와 홈 외 탭 클릭 정책 적용**
- 수정: - 수정:
- `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelHomeActivity.kt` - `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelHomeActivity.kt`
- `app/src/main/res/layout/activity_creator_channel_home.xml` - `app/src/main/res/layout/activity_creator_channel_home.xml`
@@ -852,8 +854,10 @@
- 수동 확인: - 수동 확인:
- 7개 탭이 가로 폭을 초과해도 표시/스크롤이 가능하다. - 7개 탭이 가로 폭을 초과해도 표시/스크롤이 가능하다.
- 홈 외 탭을 눌러도 crash가 발생하지 않는다. - 홈 외 탭을 눌러도 crash가 발생하지 않는다.
- 검증 기록:
- 2026-06-15: RED로 `CreatorChannelHomeActivitySourceTest``selectedTab` 기반 홈 기본 선택과 홈 외 탭 no-op 정책 계약을 추가했다. 구현 후 tab 생성은 `CreatorChannelTab.Home`을 기본 선택으로 유지하고, 각 tab view click은 `onTabClicked(tab)`로 연결했다. 이번 범위에서 홈 외 상세 컨텐츠는 구현하지 않으므로 `tab != CreatorChannelTab.Home`이면 즉시 return하여 선택 상태와 홈 컨텐츠를 유지한다. 기존 `index == 0` 고정 source test는 Phase 7 정책에 맞게 `tab == selectedTab` 계약으로 갱신했다. `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.CreatorChannelHomeActivitySourceTest"`가 PASS했다.
- [ ] **Task 7.3: 기존 크리에이터 채널 진입점을 신규 화면으로 전환** - [x] **Task 7.3: 기존 크리에이터 채널 진입점을 신규 화면으로 전환**
- 확인: - 확인:
- `app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/UserProfileActivity.kt` - `app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/UserProfileActivity.kt`
- 기존 코드에서 `UserProfileActivity``Intent`로 여는 호출부 전체 - 기존 코드에서 `UserProfileActivity``Intent`로 여는 호출부 전체
@@ -872,6 +876,10 @@
- 전달된 `creatorId`로 홈 API가 호출되고 신규 크리에이터 채널 화면이 표시된다. - 전달된 `creatorId`로 홈 API가 호출되고 신규 크리에이터 채널 화면이 표시된다.
- 기대 결과: - 기대 결과:
- 기존 크리에이터 채널 확인 경로가 신규 크리에이터 채널 홈 화면으로 연결된다. - 기존 크리에이터 채널 확인 경로가 신규 크리에이터 채널 홈 화면으로 연결된다.
- 검증 기록:
- 2026-06-15: `UserProfileActivity` 진입 호출부를 확인한 결과, Phase 7 범위에서는 `v2/main/home`의 홈 추천/랭킹/크리에이터 카드처럼 이미 `creatorId`를 직접 보유한 확정 진입점만 신규 화면으로 전환했다. `HomeRecommendationBannerRoute.Creator``CreatorChannelHomeActivity.newIntent(context, creatorId)`를 반환하도록 변경하고, `HomeMainFragment.openCreatorProfile(creatorId)``CreatorChannelHomeActivity.newIntent(requireContext(), creatorId)`를 사용하도록 변경했다. 딥링크/알림/기존 프로필 화면 내부와 같이 정책 범위가 넓거나 다른 식별자 의미가 섞일 수 있는 호출부는 변경하지 않았다. `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.HomeMainFragmentLayoutTest"`가 PASS했다.
- 2026-06-15: 사용자 피드백에 따라 Task 7.3 의도를 재확인했고, 기존 크리에이터 채널인 `UserProfileActivity`로 이동하던 프로덕션 진입점을 신규 `CreatorChannelHomeActivity`로 전환하는 것이 요구사항임을 확인했다. RED로 `CreatorChannelHomeActivitySourceTest``app/src/main/java`에서 `UserProfileActivity::class.java``UserProfileActivity` import가 남으면 실패하는 검증을 추가했고, 기존 구현에서 실패함을 확인했다. 이후 딥링크/메인/홈/라이브/탐색/검색/팔로잉/알림설정/마이페이지/오디오 콘텐츠/시리즈/오디션/라이브 상세의 기존 채널 진입점을 모두 `CreatorChannelHomeActivity.newIntent(..., creatorId)`로 전환했다. 수정 후 동일 RED 테스트가 PASS했고, `rg``app/src/main/java`에 외부 `UserProfileActivity` 직접 진입점이 남지 않음을 확인했다.
- 2026-06-15: 후속 검증으로 `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.CreatorChannelHomeActivitySourceTest"`, `./gradlew :app:compileDebugKotlin`, `git diff --check`가 PASS했다. `rg -n "Intent\([^\n]*UserProfileActivity|UserProfileActivity::class\.java|import kr\.co\.vividnext\.sodalive\.explorer\.profile\.UserProfileActivity" app/src/main/java`는 match 없이 종료되어 프로덕션 직접 진입점이 제거되었음을 확인했다. `./gradlew :app:ktlintCheck``audio_content` 패키지명 underscore 기존 규칙 위반 4건(`AudioContentNewAllActivity.kt`, `AudioContentAllByThemeActivity.kt`, `AudioContentDetailActivity.kt`, `SeriesDetailActivity.kt`)으로 실패했다. 패키지명 변경은 범위 밖이고 전역 ktlint rule 변경은 기존 전체 lint 부채를 노출해 범위를 크게 늘리므로 적용하지 않았다.
--- ---