From a21427b5490311ac7b6eae8630a058e4fd76b7bf Mon Sep 17 00:00:00 2001 From: klaus Date: Tue, 16 Jun 2026 12:20:38 +0900 Subject: [PATCH] =?UTF-8?q?docs(creator):=20=EC=B1=84=EB=84=90=20=ED=99=88?= =?UTF-8?q?=20=ED=83=AD=20=EC=A0=84=ED=99=98=20=EA=B3=84=ED=9A=8D=EC=9D=84?= =?UTF-8?q?=20=EB=B3=B4=EA=B0=95=ED=95=9C=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plan-task.md | 137 +++++++++++++++--- 1 file changed, 114 insertions(+), 23 deletions(-) diff --git a/docs/20260611_크리에이터_채널_홈_탭/plan-task.md b/docs/20260611_크리에이터_채널_홈_탭/plan-task.md index c92692c2..a60b6478 100644 --- a/docs/20260611_크리에이터_채널_홈_탭/plan-task.md +++ b/docs/20260611_크리에이터_채널_홈_탭/plan-task.md @@ -22,7 +22,8 @@ - tab-bar 목록은 `홈`, `라이브`, `오디오`, `시리즈`, `커뮤니티`, `팬Talk`, `후원` 순서를 따른다. - `라이브`, `오디오`, `시리즈`, `커뮤니티`, `팬Talk`, `후원` 탭의 상세 컨텐츠와 pagination은 구현하지 않는다. - 홈 API는 `GET /api/v2/creator-channels/{creatorId}/home`을 사용한다. -- 팔로우/알림 변경은 기존 `UserRepository.creatorFollow()` 및 `CreatorFollowNotifyFragment` 사용 패턴을 재사용한다. +- 팔로우/알림 변경은 기존 `UserRepository.creatorFollow()` API 사용 패턴을 재사용한다. +- Phase 11 이후 팔로잉 상태의 알림 끄기/팔로우 취소는 `CreatorFollowNotifyFragment`를 띄우지 않고 즉시 API를 호출하는 방식으로 보정한다. - `대화하기`는 `TalkApi.createChatRoom` 호출 후 반환된 `chatRoomId`로 `ChatRoomActivity`, `DM 보내기`는 `DmChatRoomActivity.newIntentByCreatorId()`로 이동한다. - title-bar black 전환 기준은 title-bar와 tab-bar의 실제 거리 및 프로필 이미지가 절반 이상 사라졌는지를 함께 사용한다. - 구현 완료 후 최소 다음 명령을 실행한다. @@ -55,13 +56,15 @@ - Phase 8: 필수 참조 - 수동 화면 검증은 Figma와 실제 구현 화면을 비교해 PRD Metrics를 확인한다. - Phase 10: 부분 참조 + - `TabLayout + ViewPager2 + 탭별 Fragment` 전환은 PRD의 Future Tab Architecture Decision과 기존 AndroidX/Material 사용 패턴을 기준으로 한다. +- Phase 11: 부분 참조 - title-bar 닉네임, tab-bar typography, 더보기 BottomSheet, 팔로우/알림 직접 액션은 PRD와 기존 구현 패턴을 기준으로 한다. - tab-bar item font/size는 Figma `296:14894`를 확인한다. -- Phase 11: 필수 참조 - - 후원 empty UI는 Figma `290:8820`, 활동 영역은 Figma `296:15001`, 홈 컨텐츠 보정은 Figma `296:14895`를 기준으로 한다. - Phase 12: 필수 참조 - - 크리에이터 본인 페이지 Floating Button 기본 상태는 Figma `665:19092`, 확장/dim 상태는 Figma `665:19223`을 기준으로 한다. + - 후원 empty UI는 Figma `290:8820`, 활동 영역은 Figma `296:15001`, 홈 컨텐츠 보정은 Figma `296:14895`를 기준으로 한다. - Phase 13: 필수 참조 + - 크리에이터 본인 페이지 Floating Button 기본 상태는 Figma `665:19092`, 확장/dim 상태는 Figma `665:19223`을 기준으로 한다. +- Phase 14: 필수 참조 - 최종 수동 검증은 Figma `296:14890`, `296:14894`, `296:14895`, `290:8820`, `296:15001`, `665:19092`, `665:19223`을 함께 대조한다. --- @@ -995,11 +998,95 @@ --- -### Phase 10: 상단 상태/탭/액션 후속 보강 +### Phase 10: `TabLayout + ViewPager2 + 탭별 Fragment` 컨테이너 전환 + +> PRD `Future Tab Architecture Decision` 반영 Phase다. 후속 `라이브`, `오디오`, `시리즈`, `커뮤니티`, `팬Talk`, `후원` 탭은 API/목록/UI가 독립적이므로, 기존 단일 Activity 내부 커스텀 tab/홈 RecyclerView 구조를 탭별 Fragment를 담는 컨테이너 구조로 바꾼다. + +- [ ] **Task 10.1: 컨테이너 전환 source test와 구조 경계 고정** + - 수정: + - `app/src/test/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelActivitySourceTest.kt` + - 확인: + - `app/src/main/res/layout/activity_creator_channel.xml` + - `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelActivity.kt` + - 기존 프로젝트의 `TabLayout`, `ViewPager2`, `FragmentStateAdapter` 사용 사례 + - 작업: + - `activity_creator_channel.xml`에 `TabLayout`과 `ViewPager2`가 존재해야 한다는 source test를 추가한다. + - `CreatorChannelActivity`가 `FragmentStateAdapter` 또는 전용 pager adapter를 사용한다는 source test를 추가한다. + - `CreatorChannelActivity`가 홈 API/홈 section adapter를 직접 소유하지 않고 홈 탭 Fragment로 위임한다는 source test를 추가한다. + - 기존 커스텀 `HorizontalScrollView` tab-bar 또는 동적 tab `TextView` 생성 로직은 제거 대상으로 고정한다. + - 검증 명령: + - `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.CreatorChannelActivitySourceTest"` + - 기대 결과: + - 구현 전에는 기존 단일 Activity tab 구조 때문에 RED 실패한다. + +- [ ] **Task 10.2: 홈 탭을 `CreatorChannelHomeFragment`로 분리** + - 생성: + - `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelHomeFragment.kt` + - `app/src/main/res/layout/fragment_creator_channel_home.xml` + - 수정: + - `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelActivity.kt` + - `app/src/main/res/layout/activity_creator_channel.xml` + - `app/src/test/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelActivitySourceTest.kt` + - 작업: + - 홈 API observe, 홈 section RecyclerView, 홈 section adapter, 홈 탭 스크롤 컨텐츠를 `CreatorChannelHomeFragment`로 이동한다. + - `CreatorChannelHomeViewModel`, `CreatorChannelHomeUiState`, `CreatorChannelHomeSectionAdapter`, `item_creator_channel_home_*` 이름은 홈 탭 전용 역할이므로 유지한다. + - `CreatorChannelActivity`는 공통 header/title bar/tab container와 Activity-level navigation만 담당한다. + - `creatorId`는 Activity에서 Fragment argument로 전달한다. + - Fragment는 `creatorId > 0`일 때 `viewModel.loadHome(creatorId)`를 호출한다. + - 검증 명령: + - `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.CreatorChannelActivitySourceTest"` + - `./gradlew :app:mergeDebugResources` + - `./gradlew :app:compileDebugKotlin` + - 수동 확인: + - 홈 탭 기본 진입 시 기존 홈 컨텐츠가 동일하게 표시된다. + +- [ ] **Task 10.3: 탭별 placeholder Fragment와 pager adapter 추가** + - 생성: + - `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelPagerAdapter.kt` + - `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelPlaceholderFragment.kt` + - 필요 시 `app/src/main/res/layout/fragment_creator_channel_placeholder.xml` + - 수정: + - `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/CreatorChannelActivity.kt` + - 작업: + - pager adapter는 `홈`, `라이브`, `오디오`, `시리즈`, `커뮤니티`, `팬Talk`, `후원` 7개 탭 순서를 유지한다. + - `홈`은 `CreatorChannelHomeFragment`를 생성한다. + - 나머지 6개 탭은 이번 범위에서 API/목록/UI를 구현하지 않고 placeholder Fragment를 연결한다. + - placeholder Fragment는 후속 탭 상세 화면 구현 전까지 crash 없이 비어 있는 상태를 표시하거나 최소 빈 화면으로 유지한다. + - 후속 탭별 Fragment 후보 이름은 PRD와 동일하게 `CreatorChannelLiveFragment`, `CreatorChannelAudioFragment`, `CreatorChannelSeriesFragment`, `CreatorChannelCommunityFragment`, `CreatorChannelFanTalkFragment`, `CreatorChannelDonationFragment`로 둔다. + - 검증 명령: + - `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.CreatorChannelActivitySourceTest"` + - `./gradlew :app:compileDebugKotlin` + +- [ ] **Task 10.4: `TabLayoutMediator` 연결과 sticky/header 동작 재검증** + - 수정: + - `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelActivity.kt` + - `app/src/main/res/layout/activity_creator_channel.xml` + - `app/src/test/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelActivitySourceTest.kt` + - 작업: + - `TabLayoutMediator`로 `TabLayout`과 `ViewPager2`를 연결한다. + - 탭 label은 기존 `CreatorChannelTab.labelResId`를 사용한다. + - tab item font/size는 Phase 11에서 보정할 수 있도록 custom tab view 또는 `TabLayout` textAppearance 적용 지점을 명확히 둔다. + - 공통 header/title bar/sticky 기준이 ViewPager2 전환 후에도 유지되는지 확인한다. + - 기존 수동 `onTabClicked(tab)` no-op 정책은 ViewPager2 placeholder 연결 정책으로 대체한다. + - ViewPager2 swipe 전환 허용 여부는 PRD Open Question에 맞춰 구현 계획에서 확정하되, 기본은 사용자 입력 swipe를 허용하지 않거나 기존 탭 클릭 UX와 충돌이 적은 방식으로 둔다. + - 검증 명령: + - `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.CreatorChannelActivitySourceTest"` + - `./gradlew :app:mergeDebugResources` + - `./gradlew :app:compileDebugKotlin` + - 수동 확인: + - 7개 탭이 `TabLayout`에 표시된다. + - 홈 탭 컨텐츠가 Fragment 안에서 표시된다. + - 홈 외 탭 선택 시 crash가 없고 placeholder가 표시된다. + - 공통 header와 sticky title/tab 동작이 깨지지 않는다. + +--- + +### Phase 11: 상단 상태/탭/액션 후속 보강 > 2026-06-16 PRD 보강분을 반영하는 Phase다. title-bar sticky 닉네임, tab-bar typography, 더보기 BottomSheet, 팔로우/알림 직접 액션, 본인 페이지 상단 액션 정책을 한 묶음으로 처리한다. -- [ ] **Task 10.1: title-bar sticky 닉네임과 tab-bar typography 보정** +- [ ] **Task 11.1: title-bar sticky 닉네임과 tab-bar typography 보정** - 수정: - `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelActivity.kt` - `app/src/main/res/layout/activity_creator_channel.xml` @@ -1018,7 +1105,7 @@ - `./gradlew :app:mergeDebugResources` - `./gradlew :app:compileDebugKotlin` -- [ ] **Task 10.2: 더보기 BottomSheet와 팔로우/알림 직접 액션 보정** +- [ ] **Task 11.2: 더보기 BottomSheet와 팔로우/알림 직접 액션 보정** - 수정: - `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelActivity.kt` - `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelHomeViewModel.kt` @@ -1040,7 +1127,7 @@ - `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.CreatorChannelActivitySourceTest"` - `./gradlew :app:compileDebugKotlin` -- [ ] **Task 10.3: 크리에이터 본인 페이지 상단 액션 정책 추가** +- [ ] **Task 11.3: 크리에이터 본인 페이지 상단 액션 정책 추가** - 수정: - `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/data/CreatorChannelHomeModels.kt` - `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/model/CreatorChannelHomeUiModels.kt` @@ -1065,7 +1152,7 @@ - `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.CreatorChannelActivitySourceTest"` - `./gradlew :app:compileDebugKotlin` -- [ ] **Task 10.4: 본인 페이지 `DM 확인하기` 진입 추가** +- [ ] **Task 11.4: 본인 페이지 `DM 확인하기` 진입 추가** - 수정: - `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelActivity.kt` - `app/src/main/java/kr/co/vividnext/sodalive/main/MainActivity.kt` @@ -1080,6 +1167,7 @@ - 작업: - 본인 페이지에서는 `대화하기` 버튼을 표시하지 않는다. - 본인 페이지에서는 `DM 보내기` 대신 `DM 확인하기` 버튼을 표시한다. + - `DM 확인하기` 버튼만 표시되어도 버튼은 가운데 정렬되고, 기존 버튼 영역 높이와 여백은 유지한다. - `DM 확인하기` 터치 시 `MainActivity`로 이동하거나 기존 MainActivity instance를 재사용해 메인 `대화` 탭을 선택한다. - `ChatMainFragment`는 진입 파라미터를 받아 `ChatRoomFilter.DM`이 선택된 상태로 표시한다. - 기존 타인 페이지의 `DM 보내기`는 `DmChatRoomActivity.newIntentByCreatorId(context, creatorId)` 이동을 유지한다. @@ -1089,11 +1177,11 @@ --- -### Phase 11: 홈 탭 섹션 후속 UI/액션 보강 +### Phase 12: 홈 탭 섹션 후속 UI/액션 보강 > 후원 empty, 최신 콘텐츠 터치, 날짜 표시, 오디오/시리즈/활동 영역의 세부 Figma 정합성을 묶어서 처리한다. 섹션 하나당 Phase를 나누지 않고 관련 홈 컨텐츠 보정 Task로 묶는다. -- [ ] **Task 11.1: 후원 empty UI와 최신 콘텐츠/날짜 표시 보강** +- [ ] **Task 12.1: 후원 empty UI와 최신 콘텐츠/날짜 표시 보강** - 수정: - `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/ui/CreatorChannelHomeSectionAdapter.kt` @@ -1109,6 +1197,7 @@ - `channelDonations`가 비어 있으면 후원 섹션을 숨기지 않고 empty 안내 UI를 표시한다. - empty card width는 374dp 고정이 아니라 부모 섹션 좌우 여백 안에서 `match_parent`로 처리한다. - empty card는 height 196dp, `gray_900` 배경, 14dp radius, `처음으로 크리에이터를` / `후원해 보세요!`, 흰색 `후원하기` capsule을 표시한다. + - `후원하기` 버튼 터치 동작은 기존 후원 플로우/상세 화면 진입점이 있으면 재사용하고, 없으면 후원 API/화면 확정 필요 항목으로 검증 기록에 남긴다. - 최신 오디오 row/card 터치 시 `latestAudioContent.audioContentId`로 기존 `AudioContentDetailActivity`에 이동한다. - 공지/커뮤니티 게시글 날짜는 API `dateUtc` 원문 대신 기존 앱의 상대 날짜 표시 방식으로 변환한다. - 검증 명령: @@ -1117,7 +1206,7 @@ - `./gradlew :app:mergeDebugResources` - `./gradlew :app:compileDebugKotlin` -- [ ] **Task 11.2: 오디오/시리즈 아이템 세부 UI와 터치 액션 보강** +- [ ] **Task 12.2: 오디오/시리즈 아이템 세부 UI와 터치 액션 보강** - 수정: - `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/ui/CreatorChannelHomeSectionAdapter.kt` - `app/src/main/res/layout/item_creator_channel_home_audio.xml` @@ -1140,7 +1229,7 @@ - `./gradlew :app:mergeDebugResources` - `./gradlew :app:compileDebugKotlin` -- [ ] **Task 11.3: 활동 영역 Figma 정합성과 데뷔 날짜/D+n 버그 수정** +- [ ] **Task 12.3: 활동 영역 Figma 정합성과 데뷔 날짜/D+n 버그 수정** - 수정: - `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/ui/CreatorChannelHomeSectionAdapter.kt` - `app/src/main/res/layout/item_creator_channel_home_activity.xml` @@ -1165,11 +1254,11 @@ --- -### Phase 12: 크리에이터 본인 페이지 Floating Button +### Phase 13: 크리에이터 본인 페이지 Floating Button -> 본인 페이지 전용 홈 탭 FAB와 확장 액션을 추가한다. 상단 액션 정책은 Phase 10에서 처리하고, FAB overlay/animation/버튼 액션은 이 Phase에서 처리한다. +> 본인 페이지 전용 홈 탭 FAB와 확장 액션을 추가한다. 상단 액션 정책은 Phase 11에서 처리하고, FAB overlay/animation/버튼 액션은 이 Phase에서 처리한다. -- [ ] **Task 12.1: Floating Button 기본/확장 layout 추가** +- [ ] **Task 13.1: Floating Button 기본/확장 layout 추가** - 수정: - `app/src/main/res/layout/activity_creator_channel.xml` - `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelActivity.kt` @@ -1191,12 +1280,13 @@ - 아이콘은 순서대로 `ic_new_upload_community_post`, `ic_new_upload_audio`, `ic_new_create_live`, `ic_new_x_black`을 사용한다. - 닫기 버튼은 흰색 배경을 사용하고 터치 시 dim과 확장 버튼을 닫는다. - dim 뒤 홈 컨텐츠, tab-bar, title-bar 액션이 잘못 터치되지 않게 한다. + - dim 영역 터치도 닫기 동작으로 처리할지, `닫기` 버튼만 닫기 동작으로 처리할지는 구현 시 기존 앱 overlay UX를 확인해 확정하고 검증 기록에 남긴다. - 검증 명령: - `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.CreatorChannelActivitySourceTest"` - `./gradlew :app:mergeDebugResources` - `./gradlew :app:compileDebugKotlin` -- [ ] **Task 12.2: Floating Button Spring animation과 하단 inset 보정** +- [ ] **Task 13.2: Floating Button Spring animation과 하단 inset 보정** - 수정: - `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelActivity.kt` - `app/src/test/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelActivitySourceTest.kt` @@ -1210,7 +1300,7 @@ - `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.CreatorChannelActivitySourceTest"` - `./gradlew :app:compileDebugKotlin` -- [ ] **Task 12.3: Floating Button 3개 액션 진입점 연결** +- [ ] **Task 13.3: Floating Button 3개 액션 진입점 연결** - 수정: - `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelActivity.kt` - `app/src/test/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelActivitySourceTest.kt` @@ -1231,16 +1321,16 @@ --- -### Phase 13: 후속 보강 최종 검증과 문서 기록 +### Phase 14: 후속 보강 최종 검증과 문서 기록 -- [ ] **Task 13.1: 후속 보강 단위/source 테스트 실행** +- [ ] **Task 14.1: 후속 보강 단위/source 테스트 실행** - 실행: - `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.*"` - `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.*"` - 기대 결과: - 크리에이터 채널 후속 보강 테스트와 기존 홈 진입점 테스트가 `BUILD SUCCESSFUL`로 통과한다. -- [ ] **Task 13.2: 리소스/컴파일/린트 검증** +- [ ] **Task 14.2: 리소스/컴파일/린트 검증** - 실행: - `./gradlew :app:mergeDebugResources` - `./gradlew :app:compileDebugKotlin` @@ -1250,7 +1340,7 @@ - `mergeDebugResources`, `compileDebugKotlin`, `git diff --check`는 통과한다. - `ktlintCheck`가 기존 `audio_content` 패키지명 underscore 문제로 실패하면, 이번 변경 파일에서 발생한 실패인지 구분해 검증 기록에 남긴다. -- [ ] **Task 13.3: 수동 화면 검증** +- [ ] **Task 14.3: 수동 화면 검증** - 확인: - 타인 페이지에서 팔로우/알림/더보기/대화/DM 동작이 PRD와 일치한다. - 본인 페이지에서 팔로우/알림/더보기/대화가 제거되고 `DM 확인하기`와 FAB가 표시된다. @@ -1261,7 +1351,7 @@ - 기대 결과: - 2026-06-16 이후 추가 PRD Metrics를 모두 만족한다. -- [ ] **Task 13.4: 검증 기록 누적** +- [ ] **Task 14.4: 검증 기록 누적** - 수정: - `docs/20260611_크리에이터_채널_홈_탭/plan-task.md` - `docs/20260611_크리에이터_채널_홈_탭/prd.md` @@ -1354,3 +1444,4 @@ - 2026-06-15: Phase 8 수동 화면 검증 준비로 Figma `296:14890`, `296:14892`, `296:14287`, `296:14288`, `296:14289` 스크린샷을 확인하고, `CreatorChannelHomeActivity.kt`, `activity_creator_channel_home.xml`, `CreatorChannelTitleBarState.kt`, `CreatorChannelScrollState.kt`, `CreatorChannelHomeSectionAdapter.kt`, `CreatorChannelHomeActivitySourceTest.kt`를 대조했다. `./gradlew :app:assembleDebug`는 `BUILD SUCCESSFUL`이었으나, 설치/실행 시점에 연결 기기가 사라져 `adb install -r "app/build/outputs/apk/debug/app-debug.apk"`가 `adb: no devices/emulators found`로 실패했다. 재확인한 `adb devices`에도 기기가 없어 실제 전면 화면 캡처와 스크롤/클릭 육안 검증은 미완료로 남겼다. - 2026-06-15: Phase 9 이름 변경으로 `CreatorChannelHomeActivity`/`activity_creator_channel_home.xml`/`ActivityCreatorChannelHomeBinding`을 `CreatorChannelActivity`/`activity_creator_channel.xml`/`ActivityCreatorChannelBinding`으로 정리하고, Manifest와 모든 진입점 및 source test를 새 이름으로 갱신했다. focused source test, 홈 진입점 테스트, 크리에이터 채널 전체 테스트, 리소스 merge, Kotlin compile, `git diff --check`는 통과했다. `ktlintCheck`는 기존 `audio_content` 패키지명 underscore 규칙 위반으로 실패했으며 이번 변경 범위 밖이라 수정하지 않았다. - 2026-06-16: PRD에 신규 추가된 요구사항을 바탕으로 plan-task 문서를 보강했다. Phase는 섹션 단위로 과도하게 쪼개지 않고 `상단 상태/탭/액션`, `홈 탭 섹션 후속 UI/액션`, `크리에이터 본인 페이지 Floating Button`, `후속 보강 최종 검증`으로 묶었으며, 세부 변경은 Task 체크리스트에 배치했다. 이번 단계는 계획 문서 보강만 수행했으며 구현/빌드/테스트는 실행하지 않았다. +- 2026-06-16: PRD와 plan-task 재대조 중 `TabLayout + ViewPager2 + 탭별 Fragment` 컨테이너 전환 Phase가 누락되어 있음을 확인하고 Phase 10으로 추가했다. 기존 후속 Phase는 11~14로 밀어 정리했고, `후원하기` 버튼 터치 정책, 본인 페이지 `DM 확인하기` 단독 버튼 정렬/높이 보존, Floating Button dim 영역 닫기 정책 확정 항목도 Task에 보강했다. 이번 단계는 계획 문서 보강만 수행했으며 구현/빌드/테스트는 실행하지 않았다.