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

This commit is contained in:
2026-06-13 17:20:17 +09:00
parent 3027934295
commit 654a74aacf

View File

@@ -233,7 +233,7 @@
### Phase 4: UI 모델/매퍼/ViewModel 구현 ### Phase 4: UI 모델/매퍼/ViewModel 구현
- [ ] **Task 4.1: 홈 응답 매퍼 RED 테스트 작성** - [x] **Task 4.1: 홈 응답 매퍼 RED 테스트 작성**
- 생성: - 생성:
- `app/src/test/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelHomeMapperTest.kt` - `app/src/test/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelHomeMapperTest.kt`
- 작업: - 작업:
@@ -247,7 +247,7 @@
- 기대 결과: - 기대 결과:
- UI model/mapper 미구현으로 RED 실패한다. - UI model/mapper 미구현으로 RED 실패한다.
- [ ] **Task 4.2: UI model과 mapper 구현** - [x] **Task 4.2: UI model과 mapper 구현**
- 생성: - 생성:
- `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/model/CreatorChannelHomeUiModels.kt` - `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/model/CreatorChannelHomeUiModels.kt`
- `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/model/CreatorChannelHomeMappers.kt` - `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/model/CreatorChannelHomeMappers.kt`
@@ -262,7 +262,7 @@
- 기대 결과: - 기대 결과:
- 매퍼 테스트가 PASS한다. - 매퍼 테스트가 PASS한다.
- [ ] **Task 4.3: title-bar 상태 순수 모델 테스트와 구현** - [x] **Task 4.3: title-bar 상태 순수 모델 테스트와 구현**
- 생성: - 생성:
- `app/src/test/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelTitleBarStateTest.kt` - `app/src/test/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelTitleBarStateTest.kt`
- `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/model/CreatorChannelTitleBarState.kt` - `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/model/CreatorChannelTitleBarState.kt`
@@ -276,7 +276,7 @@
- 기대 결과: - 기대 결과:
- title-bar 상태 테스트가 PASS한다. - title-bar 상태 테스트가 PASS한다.
- [ ] **Task 4.4: ViewModel RED 테스트와 구현** - [x] **Task 4.4: ViewModel RED 테스트와 구현**
- 생성: - 생성:
- `app/src/test/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelHomeViewModelTest.kt` - `app/src/test/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelHomeViewModelTest.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`
@@ -538,3 +538,12 @@
- 2026-06-13: `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.common.*" --tests "kr.co.vividnext.sodalive.v2.creator.channel.*" --tests "kr.co.vividnext.sodalive.v2.main.home.*" :app:compileDebugKotlin`를 실행해 `BUILD SUCCESSFUL`을 확인했다. - 2026-06-13: `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.common.*" --tests "kr.co.vividnext.sodalive.v2.creator.channel.*" --tests "kr.co.vividnext.sodalive.v2.main.home.*" :app:compileDebugKotlin`를 실행해 `BUILD SUCCESSFUL`을 확인했다.
- 2026-06-13: 패키지 이동 후 `./gradlew :app:ktlintCheck`를 실행해 `BUILD SUCCESSFUL`을 확인했다. - 2026-06-13: 패키지 이동 후 `./gradlew :app:ktlintCheck`를 실행해 `BUILD SUCCESSFUL`을 확인했다.
- 2026-06-13: 사용자 확인에 따라 백엔드 `CreatorActivityType` 원본 enum이 `LIVE`, `AUDIO`, `COMMUNITY`, `LIVE_REPLAY` 대문자 code를 내려주는 계약임을 Phase 2/3 작업 항목에 명시했다. 이후 코드리뷰에서는 별도 서버 계약 변경 근거가 없는 한 크리에이터 채널 홈 DTO의 `CreatorActivityType` 직접 사용과 Gson enum TypeAdapter 부재를 대소문자 대응 문제로 제기하지 않는다. 이번 단계는 문서 수정만 수행했으며 빌드/테스트는 실행하지 않았다. - 2026-06-13: 사용자 확인에 따라 백엔드 `CreatorActivityType` 원본 enum이 `LIVE`, `AUDIO`, `COMMUNITY`, `LIVE_REPLAY` 대문자 code를 내려주는 계약임을 Phase 2/3 작업 항목에 명시했다. 이후 코드리뷰에서는 별도 서버 계약 변경 근거가 없는 한 크리에이터 채널 홈 DTO의 `CreatorActivityType` 직접 사용과 Gson enum TypeAdapter 부재를 대소문자 대응 문제로 제기하지 않는다. 이번 단계는 문서 수정만 수행했으며 빌드/테스트는 실행하지 않았다.
- 2026-06-13: Phase 4 TDD RED로 `CreatorChannelHomeMapperTest`, `CreatorChannelTitleBarStateTest`, `CreatorChannelHomeViewModelTest`를 먼저 추가했다. 각 focused 명령은 `CreatorChannelHomeUiModels`, `CreatorChannelHomeMappers`, `CreatorChannelTitleBarState`, `CreatorChannelHomeViewModel` 미구현 참조로 `compileDebugUnitTestKotlin` 실패함을 확인했다.
- 2026-06-13: Phase 4 GREEN으로 UI state/tab/header/section/SNS 모델, `CreatorChannelHomeResponse.toUiContent()`, title-bar 상태 모델, `CreatorChannelHomeViewModel`, `AppDI` ViewModel 등록을 최소 구현했다. `ic_bar_bell_colored`는 기존 `drawable-mdpi/ic_bar_bell_colored.png`가 있어 신규 리소스를 추가하지 않았다.
- 2026-06-13: Phase 4 검증으로 `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.CreatorChannelHomeMapperTest"`, `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.CreatorChannelTitleBarStateTest"`, `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.CreatorChannelHomeViewModelTest"`, `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.*"`, `./gradlew :app:compileDebugKotlin` 모두 `BUILD SUCCESSFUL`을 확인했다. 병렬 Gradle 실행 중 KSP 캐시 `StreamCorruptedException`이 한 차례 발생해 `./gradlew --stop` 후 순차 재실행했다.
- 2026-06-13: Phase 4 자체 검증 중 `CreatorChannelHomeViewModelTest``null data` 케이스 assertion이 실제로는 API failure만 검증하고 있음을 확인해 별도 `홈 API null data는 Error와 unknown toast를 emit한다` 테스트를 추가했다. 이후 `./gradlew :app:ktlintCheck`는 unused import와 긴 `whenever(...)` 라인으로 실패했으며, 테스트 파일 import/line wrapping을 수정했다.
- 2026-06-13: Phase 4 보강 후 `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.CreatorChannelHomeViewModelTest"`, `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.*"`, `./gradlew :app:compileDebugKotlin`, `./gradlew :app:ktlintCheck`를 재실행해 모두 `BUILD SUCCESSFUL`을 확인했다. `ktlintCheck``.editorconfig disabled_rules` deprecation 경고는 기존 설정 경고로 이번 변경과 무관하다.
- 2026-06-13: Phase 4 review-work gate에서 code quality 리뷰어가 `chatRoomIdLiveData`를 일반 `MutableLiveData<Long>`로 두면 화면 재생성/재구독 시 채팅방 이동이 반복될 수 있다고 지적해 FAIL했다. 기존 `DmChatEvent<T>.consume()` 패턴을 참고해 `CreatorChannelEvent<T>` 소비형 이벤트로 변경하고, `chatRoomIdLiveData` 테스트에서 첫 번째 `consume()``chatRoomId`, 두 번째 `consume()``null`임을 검증하도록 보강했다.
- 2026-06-13: 소비형 이벤트 수정 후 `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.CreatorChannelHomeViewModelTest"`, `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.*"`, `./gradlew :app:compileDebugKotlin`, `./gradlew :app:ktlintCheck`를 재실행해 모두 `BUILD SUCCESSFUL`을 확인했다.
- 2026-06-13: 추가 코드리뷰에서 팔로우/채팅방 생성 액션 실패도 `showUnknownError()`를 통해 홈 상태를 `Error`로 덮어 기존 Content가 사라질 수 있다는 P1 지적을 받았다. `팔로우 실패는 현재 content를 유지하고 unknown toast만 emit한다`, `채팅방 생성 실패는 현재 content를 유지하고 unknown toast만 emit한다` 테스트를 먼저 추가했고, 기존 구현에서 `ClassCastException`으로 실패하는 RED를 확인했다.
- 2026-06-13: 홈 로드 실패는 기존처럼 `CreatorChannelHomeUiState.Error`를 유지하되, 팔로우/채팅방 생성 액션 실패는 `showUnknownErrorToast()`만 호출하도록 분리했다. 수정 후 `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.CreatorChannelHomeViewModelTest"`를 실행해 `BUILD SUCCESSFUL`을 확인했다.