docs(creator): 후원 탭 Phase 1 검증을 기록한다

This commit is contained in:
2026-06-22 19:16:33 +09:00
parent 3a94878020
commit 5a9449059b

View File

@@ -127,7 +127,7 @@
### Phase 1: 기존 구조 확인과 작업 경계 고정 ### Phase 1: 기존 구조 확인과 작업 경계 고정
- [ ] **Task 1.1: Donation 탭 placeholder 연결 지점 확인** - [x] **Task 1.1: Donation 탭 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/CreatorChannelPagerAdapter.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/CreatorChannelHomeUiModels.kt`
@@ -139,9 +139,9 @@
- 실행: `rg -n "CreatorChannelTab\\.Donation|CreatorChannelPlaceholderFragment|createFragment" app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel app/src/test/java/kr/co/vividnext/sodalive/v2/creator/channel` - 실행: `rg -n "CreatorChannelTab\\.Donation|CreatorChannelPlaceholderFragment|createFragment" app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel app/src/test/java/kr/co/vividnext/sodalive/v2/creator/channel`
- 기대 결과: Donation placeholder와 관련 테스트 갱신 지점이 확인된다. - 기대 결과: Donation placeholder와 관련 테스트 갱신 지점이 확인된다.
- 검증 기록: - 검증 기록:
- 미실행. 구현 시 기록한다. - 2026-06-22: `rg -n "CreatorChannelTab\\.Donation|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.createFragment()`에서 `Home/Live/Audio/Series/Community/FanTalk`만 실제 Fragment로 연결되고 `Donation``else -> CreatorChannelPlaceholderFragment.newInstance(tab)` 경로를 타는 것을 확인했다. `CreatorChannelPagerAdapterTest`도 현재 실제 Fragment 탭 외 나머지는 placeholder로 유지된다는 기대를 가진다. 향후 교체 위치는 `CreatorChannelPagerAdapter.kt``when (tab)` 분기다.
- [ ] **Task 1.2: 기존 후원 dialog와 홈 후원 성공 처리 확인** - [x] **Task 1.2: 기존 후원 dialog와 홈 후원 성공 처리 확인**
- 확인 파일: - 확인 파일:
- `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelActivity.kt` - `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelActivity.kt`
- `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelHomeFragment.kt` - `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelHomeFragment.kt`
@@ -155,9 +155,9 @@
- 실행: `rg -n "onCreatorChannelDonationClicked|LiveRoomDonationDialog|postChannelDonation|SharedPreferenceManager.can" app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel` - 실행: `rg -n "onCreatorChannelDonationClicked|LiveRoomDonationDialog|postChannelDonation|SharedPreferenceManager.can" app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel`
- 기대 결과: 홈 후원 dialog 옵션, repository 위임, can 차감, 홈 재조회 흐름이 확인된다. - 기대 결과: 홈 후원 dialog 옵션, repository 위임, can 차감, 홈 재조회 흐름이 확인된다.
- 검증 기록: - 검증 기록:
- 미실행. 구현 시 기록한다. - 2026-06-22: `rg -n "onCreatorChannelDonationClicked|LiveRoomDonationDialog|postChannelDonation|SharedPreferenceManager.can" app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel` 실행. `CreatorChannelActivity.onCreatorChannelDonationClicked()`가 owner가 아닐 때 `LiveRoomDonationDialog``isLiveDonation = true`, `messageMaxLength = 100`, `secretToggleLabelResId = R.string.screen_user_profile_channel_donation_secret`, `applySecretMissionMessageHint = false` 옵션으로 열고, submit 시 `homeActionDelegate?.postChannelDonation(...)`로 위임하는 것을 확인했다. `CreatorChannelHomeViewModel.postChannelDonation()``CreatorChannelRepository.postChannelDonation()` 호출 성공 시 `SharedPreferenceManager.can = (SharedPreferenceManager.can - can).coerceAtLeast(0)`로 차감하고 `loadHome(content.header.creatorId)`로 홈을 재조회한다.
- [ ] **Task 1.3: 기존 후원 전체보기 Activity 호출 계약 확인** - [x] **Task 1.3: 기존 후원 전체보기 Activity 호출 계약 확인**
- 확인 파일: - 확인 파일:
- `app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/donation/UserProfileDonationAllViewActivity.kt` - `app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/donation/UserProfileDonationAllViewActivity.kt`
- `app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/UserProfileActivity.kt` - `app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/UserProfileActivity.kt`
@@ -171,9 +171,9 @@
- 실행: `rg -n "UserProfileDonationAllViewActivity|EXTRA_USER_ID|creatorId|userId" app/src/main/java/kr/co/vividnext/sodalive/explorer/profile app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel app/src/main/java/kr/co/vividnext/sodalive/common/Constants.kt` - 실행: `rg -n "UserProfileDonationAllViewActivity|EXTRA_USER_ID|creatorId|userId" app/src/main/java/kr/co/vividnext/sodalive/explorer/profile app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel app/src/main/java/kr/co/vividnext/sodalive/common/Constants.kt`
- 기대 결과: 전체보기 Activity 인자 계약과 크리에이터 채널 보유 식별자가 확인된다. - 기대 결과: 전체보기 Activity 인자 계약과 크리에이터 채널 보유 식별자가 확인된다.
- 검증 기록: - 검증 기록:
- 미실행. 구현 시 기록한다. - 2026-06-22: `rg -n "UserProfileDonationAllViewActivity|EXTRA_USER_ID|creatorId|userId" app/src/main/java/kr/co/vividnext/sodalive/explorer/profile app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel app/src/main/java/kr/co/vividnext/sodalive/common/Constants.kt` 실행. `UserProfileDonationAllViewActivity``intent.getLongExtra(Constants.EXTRA_USER_ID, 0)`를 읽고, 기존 `UserProfileActivity``Intent(..., UserProfileDonationAllViewActivity::class.java)``Constants.EXTRA_USER_ID``userId`를 전달한다. 크리에이터 채널의 `creatorId`도 채널 owner/member 식별자로 사용되고 있어 Phase 6에서 `putExtra(Constants.EXTRA_USER_ID, creatorId)`로 연결 가능한 전제를 확인했다. 추가로 `UserProfileChannelDonationAllViewActivity``Constants.EXTRA_USER_ID`를 받는 채널 후원 목록 전체보기 화면으로 존재함을 확인했다. 현재 계획의 버튼은 `후원 랭킹` 섹션의 `전체보기`이므로 `UserProfileDonationAllViewActivity` 전제는 유지하되, 향후 요구가 후원 내역 전체보기로 바뀌면 `UserProfileChannelDonationAllViewActivity`로 계획을 먼저 갱신해야 한다.
- [ ] **Task 1.4: 기존 목록 탭 pagination/viewport 패턴 확인** - [x] **Task 1.4: 기존 목록 탭 pagination/viewport 패턴 확인**
- 확인 파일: - 확인 파일:
- `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/fantalk/CreatorChannelFanTalkFragment.kt` - `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/fantalk/CreatorChannelFanTalkFragment.kt`
- `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/fantalk/CreatorChannelFanTalkViewModel.kt` - `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/fantalk/CreatorChannelFanTalkViewModel.kt`
@@ -186,7 +186,7 @@
- 실행: `rg -n "requestGeneration|paginationErrorMessage|consumePaginationErrorMessage|ScrolledToBottom|RefreshRequested|ViewportHeightChanged" app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel` - 실행: `rg -n "requestGeneration|paginationErrorMessage|consumePaginationErrorMessage|ScrolledToBottom|RefreshRequested|ViewportHeightChanged" app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel`
- 기대 결과: FanTalk/Community의 pagination, refresh, viewport 패턴이 확인된다. - 기대 결과: FanTalk/Community의 pagination, refresh, viewport 패턴이 확인된다.
- 검증 기록: - 검증 기록:
- 미실행. 구현 시 기록한다. - 2026-06-22: `rg -n "requestGeneration|paginationErrorMessage|consumePaginationErrorMessage|ScrolledToBottom|RefreshRequested|ViewportHeightChanged" app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel` 실행. `CreatorChannelFanTalkViewModel``CreatorChannelCommunityViewModel``requestGeneration`, `paginationErrorMessage`, `consumePaginationErrorMessage()` 패턴을 사용하고, `FIRST_PAGE = 0`, `DEFAULT_PAGE_SIZE = 20` 기준으로 첫 페이지와 pagination을 구분하는 것을 확인했다. Fragment entry는 `onCreatorChannelFanTalkScrolledToBottom()`, `onCreatorChannelFanTalkRefreshRequested()`, `onCreatorChannelFanTalkViewportHeightChanged(minHeight)` 및 Community의 scrolled/refresh 패턴을 확인했다. Activity는 현재 Live/Audio/Series/Community/FanTalk에 대해 하단 스크롤 dispatcher와 load-more 탭 판정을 가지고 있으며, Donation 추가 지점은 `notifyCurrentCreatorChannelTabScrolledToBottom()`, `isCreatorChannelLoadMoreTab()`, `updateCreatorChannelTabViewportHeight()`다.
### Phase 2: API/DTO/Repository/ViewModel 계약 추가 ### Phase 2: API/DTO/Repository/ViewModel 계약 추가