From a0274518d2f91b737f72a40725053a17134d8add Mon Sep 17 00:00:00 2001 From: klaus Date: Fri, 19 Jun 2026 14:48:01 +0900 Subject: [PATCH] =?UTF-8?q?docs(creator):=20=EC=98=A4=EB=94=94=EC=98=A4=20?= =?UTF-8?q?=ED=83=AD=20Phase=201=20=EA=B2=80=EC=A6=9D=EC=9D=84=20=EA=B8=B0?= =?UTF-8?q?=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 | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/docs/20260619_크리에이터_채널_오디오_탭/plan-task.md b/docs/20260619_크리에이터_채널_오디오_탭/plan-task.md index 53aea1a7..0448b9d8 100644 --- a/docs/20260619_크리에이터_채널_오디오_탭/plan-task.md +++ b/docs/20260619_크리에이터_채널_오디오_탭/plan-task.md @@ -129,7 +129,7 @@ ### Phase 1: 기존 구조 확인과 작업 경계 고정 -- [ ] **Task 1.1: 라이브 탭 재사용 경계 확인** +- [x] **Task 1.1: 라이브 탭 재사용 경계 확인** - 확인: - `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/live/CreatorChannelLiveFragment.kt` - `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/live/CreatorChannelLiveViewModel.kt` @@ -142,8 +142,13 @@ - 라이브 탭 파일을 무리하게 리팩터링하지 않고 오디오 탭 구현에 필요한 최소 공용화만 계획에 반영한다. - 검증: - 라이브 탭 기존 테스트가 공용화 후에도 유지되어야 할 검증 목록을 기록한다. + - 검증 기록: + - 2026-06-19 확인 완료. `CreatorChannelLiveFragment`는 `CreatorChannelLiveSortPopup`, `CreatorChannelLiveReplayAdapter`, `toReplayUiModel()`을 직접 사용하고, sort label은 `ContentSort.toLabelResId()` 확장으로 분리되어 있다. + - `CreatorChannelLiveSortPopup`은 class/package명과 `view_creator_channel_live_sort_menu`, `layout_creator_channel_live_sort_options`, `tv_creator_channel_live_sort_option_sample` id가 모두 live 전용이므로 Phase 3에서 `creator/channel/ui/CreatorChannelSortPopup.kt`와 공용 layout으로 이동하는 방식이 오디오 참조에 적합하다. + - replay item 상태 정책은 mapper의 `Owned > Rented > Play(무료) > Price` 우선순위와 adapter의 badge/tag/status bind를 오디오 item에 동일 적용할 수 있다. 단, layout id prefix는 오디오 전용으로 유지해 라이브 adapter를 무리하게 공용화하지 않는다. + - 공용화 후 유지해야 할 회귀 검증은 `CreatorChannelLiveFragmentLayoutTest`, `CreatorChannelActivitySourceTest`의 live sort/pagination/owner CTA 관련 source 검증, `CreatorChannelPagerAdapterTest`이다. -- [ ] **Task 1.2: 오디오 업로드 CTA와 기존 진입점 확인** +- [x] **Task 1.2: 오디오 업로드 CTA와 기존 진입점 확인** - 확인: - `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelActivity.kt` - `app/src/main/res/layout/activity_creator_channel.xml` @@ -155,8 +160,13 @@ - 검증: - `rg -n "onOwnerFabAudioClicked|ic_new_upload_audio|AudioContentUploadActivity" app/src/main/java app/src/main/res` - 기대 결과: 기존 오디오 업로드 진입점과 icon 리소스 참조가 확인된다. + - 검증 기록: + - 2026-06-19 `rg -n "onOwnerFabAudioClicked|ic_new_upload_audio|AudioContentUploadActivity|CreatorChannelTab\.Audio|CreatorChannelPlaceholderFragment|CreatorChannelPagerAdapterTest|CreatorChannelActivitySourceTest" app/src/main/java app/src/main/res app/src/test/java` 실행으로 기존 진입점과 icon 참조를 확인했다. + - `CreatorChannelActivity`는 `binding.ownerFabAudioButton.setOnClickListener { onOwnerFabAudioClicked() }`를 가지고, `onOwnerFabAudioClicked()`에서 `collapseOwnerFab(animate = false)` 후 `AudioContentUploadActivity`를 `startActivity`로 연다. + - `activity_creator_channel.xml`에 `owner_fab_audio_button`과 `@drawable/ic_new_upload_audio`가 이미 존재한다. 오디오 탭 하단 CTA는 새 업로드 경로를 만들지 말고 기존 `onOwnerFabAudioClicked()`를 호출하도록 연결한다. + - 기존 source test는 `AudioContentUploadActivity`, `onOwnerFabAudioClicked()`, `startActivity(Intent(this, AudioContentUploadActivity::class.java))`, `@drawable/ic_new_upload_audio`를 검증하고 있으므로 Phase 6에서 하단 CTA 추가 시 이 검증을 유지/확장한다. -- [ ] **Task 1.3: 오디오 탭 placeholder 연결 지점 확인** +- [x] **Task 1.3: 오디오 탭 placeholder 연결 지점 확인** - 확인: - `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelPagerAdapter.kt` - `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/model/CreatorChannelHomeUiModels.kt` @@ -165,6 +175,10 @@ - 신규 `CreatorChannelAudioFragment.newInstance(creatorId)`로 교체할 수 있는지 확인한다. - 검증: - `CreatorChannelPagerAdapterTest`에 오디오 탭 연결 테스트를 추가할 준비가 되었는지 기록한다. + - 검증 기록: + - 2026-06-19 확인 완료. `CreatorChannelPagerAdapter`는 현재 `CreatorChannelTab.Home`과 `CreatorChannelTab.Live`만 실제 Fragment로 연결하고 `else -> CreatorChannelPlaceholderFragment.newInstance(tab)`로 Audio 포함 후속 탭을 placeholder 처리한다. + - `CreatorChannelActivitySourceTest`는 현재 `CreatorChannelTab.Audio ->`가 source에 없어야 한다고 검증하고, `CreatorChannelPagerAdapterTest`는 Home/Live 외 탭이 placeholder임을 검증한다. + - Phase 6에서 `CreatorChannelTab.Audio -> CreatorChannelAudioFragment.newInstance(creatorId)`를 추가하면서 `CreatorChannelPagerAdapterTest`는 Audio 실제 Fragment 검증으로 변경하고, source test의 기존 placeholder/no-op 기대값도 오디오 연결 정책에 맞게 갱신한다. ---