diff --git a/docs/20260622_FanTalk_탭/plan-task.md b/docs/20260622_FanTalk_탭/plan-task.md index 5be37dc7..2eab0e19 100644 --- a/docs/20260622_FanTalk_탭/plan-task.md +++ b/docs/20260622_FanTalk_탭/plan-task.md @@ -139,7 +139,7 @@ ### Phase 1: 기존 구조 확인과 작업 경계 고정 -- [ ] **Task 1.1: FanTalk 탭 placeholder 연결 지점 확인** +- [x] **Task 1.1: FanTalk 탭 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` @@ -151,8 +151,11 @@ - `rg -n "CreatorChannelTab\\.FanTalk|CreatorChannelPlaceholderFragment|createFragment" app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel app/src/test/java/kr/co/vividnext/sodalive/v2/creator/channel` - 기대 결과: FanTalk placeholder와 관련 테스트 갱신 지점이 확인된다. - 검증 기록: + - 2026-06-22: `rg -n "CreatorChannelTab\\.FanTalk|CreatorChannelPlaceholderFragment|createFragment" app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel app/src/test/java/kr/co/vividnext/sodalive/v2/creator/channel` 실행. + - `CreatorChannelPagerAdapter.kt:20-29`에서 Home/Live/Audio/Series/Community만 실제 Fragment로 분기하고 `FanTalk`은 현재 `else -> CreatorChannelPlaceholderFragment.newInstance(tab)` 경로에 포함됨을 확인했다. + - `CreatorChannelPagerAdapterTest.kt:23-43`은 FanTalk을 포함한 나머지 탭 placeholder 기대값을 갖고 있으며, `CreatorChannelActivitySourceTest.kt:419`는 FanTalk 분기 부재를 검증하므로 Phase 5에서 함께 갱신해야 한다. -- [ ] **Task 1.2: 기존 v2 목록 탭 패턴 확인** +- [x] **Task 1.2: 기존 v2 목록 탭 패턴 확인** - 확인: - `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/community/CreatorChannelCommunityFragment.kt` - `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/community/CreatorChannelCommunityViewModel.kt` @@ -164,8 +167,12 @@ - `rg -n "requestGeneration|paginationErrorMessage|consumePaginationErrorMessage|ScrolledToBottom|RefreshRequested" app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel` - 기대 결과: Community/Series의 pagination과 refresh 패턴이 확인된다. - 검증 기록: + - 2026-06-22: `rg -n "requestGeneration|paginationErrorMessage|consumePaginationErrorMessage|ScrolledToBottom|RefreshRequested" app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel` 실행. + - `CreatorChannelCommunityViewModel.kt:30-38`, `CreatorChannelCommunityViewModel.kt:61-92`, `CreatorChannelCommunityViewModel.kt:94-168`에서 중복 최초 조회 방지, `FIRST_PAGE = 0`, `DEFAULT_PAGE_SIZE = 20`, `requestGeneration`, pagination error 유지/consume 패턴을 확인했다. + - `CreatorChannelSeriesViewModel.kt:30-38`, `CreatorChannelSeriesViewModel.kt:54-85`, `CreatorChannelSeriesViewModel.kt:87-157`에서도 동일한 pagination/requestGeneration 패턴을 확인했다. + - `CreatorChannelCommunityFragment.kt:91-103`, `CreatorChannelCommunityFragment.kt:154-156`에서 탭 선택/하단 스크롤/refresh entry와 pagination toast consume 패턴을 확인했고, `CreatorChannelActivity.kt:820-825`의 현재 탭 하단 스크롤 dispatcher에 FanTalk 분기 추가 지점이 있음을 확인했다. -- [ ] **Task 1.3: 기존 신고/삭제 재사용 경계 확인** +- [x] **Task 1.3: 기존 신고/삭제 재사용 경계 확인** - 확인: - `app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/fantalk/UserProfileFantalkAllViewActivity.kt` - `app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/fantalk/UserProfileFantalkAllViewModel.kt` @@ -182,8 +189,13 @@ - `rg -n "CheersReportDialog|ReportType\\.CHEERS|PutModifyCheersRequest|isActive = false|modifyCheers" app/src/main/java/kr/co/vividnext/sodalive/explorer app/src/main/java/kr/co/vividnext/sodalive/report` - 기대 결과: 기존 신고/삭제 계약이 확인된다. - 검증 기록: + - 2026-06-22: `rg -n "CheersReportDialog|ReportType\\.CHEERS|PutModifyCheersRequest|isActive = false|modifyCheers" app/src/main/java/kr/co/vividnext/sodalive/explorer app/src/main/java/kr/co/vividnext/sodalive/report` 실행. + - `UserProfileFantalkAllViewActivity.kt:111-128`에서 삭제 확인 후 `viewModel.modifyCheers(..., isActive = false)` 호출 패턴을 확인했다. + - `UserProfileFantalkAllViewActivity.kt:200-214`에서 `CheersReportDialog(this, layoutInflater)` 사용, blank reason 시 `screen_user_profile_fantalk_report_reason_required` toast, reason 존재 시 신고 요청 위임 패턴을 확인했다. + - `UserProfileFantalkAllViewModel.kt:85-119`에서 `ReportRequest(ReportType.CHEERS, reason, cheersId = cheersId)`를 `ReportRepository.report()`로 위임하는 계약을 확인했다. + - `UserProfileFantalkAllViewModel.kt:167-232`, `ExplorerRepository.kt:64-67`에서 `PutModifyCheersRequest(cheersId)`에 `isActive`를 설정해 `ExplorerRepository.modifyCheers()`로 위임하는 계약을 확인했다. 레거시 파일은 수정하지 않고 신규 v2 경계에서 호출만 재사용한다. -- [ ] **Task 1.4: FanTalk 문자열과 리소스 재사용 경계 확인** +- [x] **Task 1.4: FanTalk 문자열과 리소스 재사용 경계 확인** - 확인: - `app/src/main/res/values/strings.xml` - `app/src/main/res/values-en/strings.xml` @@ -199,6 +211,11 @@ - `rg -n "ic_new_more|ic_new_fantalk_plus|creator_channel_fantalk_support_action|screen_user_profile_cheer_edit|confirm_delete_title|report|creator_channel_.*all" app/src/main/res` - 기대 결과: 재사용 가능한 리소스와 신규 문자열 추가 대상이 구분된다. - 검증 기록: + - 2026-06-22: `rg -n "ic_new_more|ic_new_fantalk_plus|creator_channel_fantalk_support_action|screen_user_profile_cheer_edit|confirm_delete_title|report|creator_channel_.*all" app/src/main/res` 실행. + - `item_creator_channel_home_fantalk.xml:58-64`, `item_creator_channel_home_fantalk.xml:117-129`에서 `ic_placeholder_profile`, `ic_new_fantalk_plus`, `creator_channel_fantalk_support_action` 재사용 가능성을 확인했다. + - `activity_creator_channel.xml:235`, `item_creator_channel_community_list.xml:131`에서 `ic_new_more` 재사용 사례를 확인했다. + - `strings.xml:99-101`, `strings.xml:331`, `strings.xml:950`, `strings.xml:953` 및 en/ja 대응 문자열에서 `report_button`, `confirm_delete_title`, `creator_channel_fantalk_support_action`, `screen_user_profile_cheer_edit`, `screen_user_profile_fantalk_report_reason_required` 재사용 가능성을 확인했다. + - PRD의 탭 전용 empty/error/retry/count/action 문구 중 기존 문구와 다른 값은 Phase 4에서 `creator_channel_fantalk_empty_message`, `creator_channel_fantalk_error_message`, `creator_channel_fantalk_retry`, `creator_channel_fantalk_all_label`, `creator_channel_fantalk_report`, `creator_channel_fantalk_edit`, `creator_channel_fantalk_delete`로 신규 추가한다. ---