From 747569c1cc96b2bde144b9e743e957255c384f59 Mon Sep 17 00:00:00 2001 From: klaus Date: Wed, 17 Jun 2026 19:14:03 +0900 Subject: [PATCH] =?UTF-8?q?docs(creator):=20=EB=9D=BC=EC=9D=B4=EB=B8=8C=20?= =?UTF-8?q?=EB=8B=A4=EC=8B=9C=EB=93=A3=EA=B8=B0=20mapper=20=EA=B2=80?= =?UTF-8?q?=EC=A6=9D=EC=9D=84=20=EA=B8=B0=EB=A1=9D=ED=95=9C=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plan-task.md | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/docs/20260617_크리에이터_채널_라이브_탭/plan-task.md b/docs/20260617_크리에이터_채널_라이브_탭/plan-task.md index c8c7dad0..b5899d92 100644 --- a/docs/20260617_크리에이터_채널_라이브_탭/plan-task.md +++ b/docs/20260617_크리에이터_채널_라이브_탭/plan-task.md @@ -302,7 +302,7 @@ ### Phase 3: UI model과 상태 표시 mapper 구현 -- [ ] **Task 3.1: 라이브 다시듣기 표시 정책 RED 테스트 작성** +- [x] **Task 3.1: 라이브 다시듣기 표시 정책 RED 테스트 작성** - 생성: - `app/src/test/java/kr/co/vividnext/sodalive/v2/creator/channel/live/CreatorChannelLiveMapperTest.kt` - 작업: @@ -316,8 +316,11 @@ - `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.live.CreatorChannelLiveMapperTest"` - 기대 결과: - mapper 미구현 상태에서 RED 실패한다. + - 검증 기록: + - 2026-06-17: `CreatorChannelLiveMapperTest`를 추가해 `isOwned && isRented` 동시 true 시 `소장중` 우선, 무료 콘텐츠의 free tag/play CTA, 19금 shield, point tag, `seriesName` 미표시, `isFirstContent`/`isOriginalSeries` tag 정책, `ContentSort` label resource 매핑을 검증하도록 했다. + - 2026-06-17: production mapper 구현 전 `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.live.CreatorChannelLiveMapperTest"` 실행 결과 `CreatorChannelLiveReplayStatus`, `toReplayUiModel`, `toLabelResId` 미구현으로 `:app:compileDebugUnitTestKotlin FAILED`가 발생해 RED를 확인했다. -- [ ] **Task 3.2: UI model/mapper 구현** +- [x] **Task 3.2: UI model/mapper 구현** - 생성 후보: - `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/live/model/CreatorChannelLiveUiModels.kt` - `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/live/model/CreatorChannelLiveMappers.kt` @@ -329,6 +332,16 @@ - `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.live.CreatorChannelLiveMapperTest"` - 기대 결과: - mapper 테스트가 PASS한다. + - 검증 기록: + - 2026-06-17: `CreatorChannelLiveReplayUiModel`, `CreatorChannelLiveReplayStatus`, `CreatorChannelLiveSortOptionUiModel`을 추가하고 `CreatorChannelAudioContentResponse.toReplayUiModel()`, `ContentSort.toLabelResId()`, `ContentSort.toSortOptionUiModel()`을 구현했다. + - 2026-06-17: 가격/상태 우선순위는 `소장중` > `대여중` > 무료 play > 가격 표시로 고정했다. tag는 기존 오디오 정책과 동일하게 `isOriginalSeries == true`이면 `Original`, `isFirstContent`이면 `First`, `isPointAvailable`이면 `Point`, `price == 0`이면 `Free`를 매핑한다. `secondaryText`는 `duration`만 사용해 `seriesName`을 표시하지 않는다. + - 2026-06-17: `ContentSort` label은 `LATEST`/`POPULAR`/`PRICE_HIGH`/`PRICE_LOW`에 기존 리소스 `screen_audio_content_sort_newest`, `screen_audio_content_sort_popularity`, `screen_audio_content_sort_price_high`, `screen_audio_content_sort_price_low`를 재사용하고, 기존 리소스가 없는 `OWNED`의 `소장순` label은 `creator_channel_live_sort_owned` 문자열로 추가했다. + - 2026-06-17: `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.live.CreatorChannelLiveMapperTest"` 실행 결과 `BUILD SUCCESSFUL`로 통과했다. + - 2026-06-17: `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.live.*"` 실행 결과 `BUILD SUCCESSFUL`로 통과했다. + - 2026-06-17: `./gradlew :app:compileDebugKotlin` 실행 결과 `BUILD SUCCESSFUL`로 통과했다. + - 2026-06-17: `./gradlew :app:ktlintCheck` 실행 결과 `BUILD SUCCESSFUL`로 통과했다. 기존 `.editorconfig`의 `disabled_rules` deprecation 경고는 출력되었으나 Phase 3 변경과 무관하다. + - 2026-06-17: 리뷰 게이트에서 `LATEST`가 `최신 콘텐츠`, `OWNED`가 `소장중` 리소스에 매핑되는 문제가 지적되어 `LATEST`는 `screen_audio_content_sort_newest`, `OWNED`는 신규 `creator_channel_live_sort_owned`로 보정했다. + - 2026-06-17: label 보정 후 `./gradlew :app:mergeDebugResources` PASS, `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.live.CreatorChannelLiveMapperTest"` PASS, `./gradlew :app:compileDebugKotlin` PASS, `./gradlew :app:ktlintCheck` PASS. 병렬 실행 중 `:app:dataBindingGenBaseClassesDebug`가 Gradle 생성물 경합으로 `R-def.txt` 누락 실패했으나 동일 compile 명령 순차 재실행에서 PASS했다. --- @@ -542,3 +555,8 @@ - 2026-06-17: `./gradlew :app:ktlintCheck` 최초 실행에서 신규 live test 줄바꿈과 `CreatorChannelLiveModels.kt` 파일명 규칙 위반으로 FAIL. 테스트 helper 줄바꿈을 정리하고 응답 모델 파일명을 `CreatorChannelLiveTabResponse.kt`로 변경한 뒤 재실행해 PASS. - 2026-06-17: ktlint 보정 후 `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.live.*"` PASS, `./gradlew :app:compileDebugKotlin` PASS, `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.*Live*"` PASS. - 2026-06-17: ktlint 보정 후 `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.*"` 재실행 결과 동일한 `CreatorChannelActivitySourceTest` 3개 실패가 재현됐다. +- 2026-06-17: Phase 3 진행. 라이브 다시듣기 UI model/mapper와 mapper RED/GREEN 테스트를 추가했다. Fragment/layout/sort popup/tab 연결은 Phase 4 이후 범위라 변경하지 않았다. +- 2026-06-17: Phase 3 RED 확인. production mapper 구현 전 `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.live.CreatorChannelLiveMapperTest"` 실행 시 `CreatorChannelLiveReplayStatus`, `toReplayUiModel`, `toLabelResId` 미구현으로 `:app:compileDebugUnitTestKotlin FAILED`가 발생했다. +- 2026-06-17: Phase 3 GREEN 확인. `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.live.CreatorChannelLiveMapperTest"` PASS. +- 2026-06-17: Phase 3 회귀 검증. `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.live.*"` PASS, `./gradlew :app:compileDebugKotlin` PASS, `./gradlew :app:ktlintCheck` PASS. ktlint 실행 중 기존 `.editorconfig`의 `disabled_rules` deprecation 경고가 출력되었다. +- 2026-06-17: Phase 3 리뷰 게이트 보정. `LATEST` label은 `최신순` 리소스 `screen_audio_content_sort_newest`로, `OWNED` label은 신규 다국어 리소스 `creator_channel_live_sort_owned`로 변경했다. 보정 후 `./gradlew :app:mergeDebugResources` PASS, `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.live.CreatorChannelLiveMapperTest"` PASS, `./gradlew :app:compileDebugKotlin` PASS, `./gradlew :app:ktlintCheck` PASS.