docs(creator): FanTalk 탭 Phase 4와 5 검증을 기록한다
This commit is contained in:
@@ -365,7 +365,7 @@
|
||||
|
||||
### Phase 4: FanTalk 목록 UI와 popup 구현
|
||||
|
||||
- [ ] **Task 4.1: Fragment layout과 문자열 추가**
|
||||
- [x] **Task 4.1: Fragment layout과 문자열 추가**
|
||||
- 생성:
|
||||
- `app/src/main/res/layout/fragment_creator_channel_fantalk.xml`
|
||||
- 수정:
|
||||
@@ -384,8 +384,11 @@
|
||||
- 기대 결과:
|
||||
- 신규 layout/string resource merge가 PASS한다.
|
||||
- 검증 기록:
|
||||
- 2026-06-22: `fragment_creator_channel_fantalk.xml`을 추가하고 content 상태 count bar, RecyclerView, error/retry, empty container, floating write button을 배치했다. sort label/icon/popup 진입 영역은 추가하지 않았다.
|
||||
- 2026-06-22: `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` 문자열을 한국어/영어/일본어 리소스에 추가했다.
|
||||
- 2026-06-22: `./gradlew :app:mergeDebugResources` 실행 결과 PASS.
|
||||
|
||||
- [ ] **Task 4.2: FanTalk item layout과 adapter 추가**
|
||||
- [x] **Task 4.2: FanTalk item layout과 adapter 추가**
|
||||
- 생성:
|
||||
- `app/src/main/res/layout/item_creator_channel_fantalk.xml`
|
||||
- `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/fantalk/ui/CreatorChannelFanTalkAdapter.kt`
|
||||
@@ -405,8 +408,11 @@
|
||||
- 기대 결과:
|
||||
- item layout과 adapter 추가 후 resource merge와 Kotlin compile이 PASS한다.
|
||||
- 검증 기록:
|
||||
- 2026-06-22: `item_creator_channel_fantalk.xml`과 `CreatorChannelFanTalkAdapter.kt`를 추가했다. 원글/답글 프로필, 닉네임, 시간, 본문, 권한별 `신고`/`ic_new_more`, reply card와 connector visibility를 UI model 기준으로 바인딩한다.
|
||||
- 2026-06-22: profile image는 `loadUrl`과 `CircleCropTransformation`, `ic_placeholder_profile` placeholder/error를 사용하도록 구현했다.
|
||||
- 2026-06-22: `./gradlew :app:mergeDebugResources`, `./gradlew :app:compileDebugKotlin` 실행 결과 PASS.
|
||||
|
||||
- [ ] **Task 4.3: 더보기 popup 추가**
|
||||
- [x] **Task 4.3: 더보기 popup 추가**
|
||||
- 생성:
|
||||
- `app/src/main/res/layout/view_creator_channel_fantalk_more_popup.xml`
|
||||
- `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/fantalk/ui/CreatorChannelFanTalkMorePopup.kt`
|
||||
@@ -421,8 +427,10 @@
|
||||
- 기대 결과:
|
||||
- popup class 추가 후 컴파일이 PASS한다.
|
||||
- 검증 기록:
|
||||
- 2026-06-22: `view_creator_channel_fantalk_more_popup.xml`과 `CreatorChannelFanTalkMorePopup.kt`를 추가했다. `showEdit`, `showDelete`에 따라 `수정하기`, `삭제하기`를 표시하고 수정은 dismiss만, 삭제는 dismiss 후 callback으로 `fanTalkId`를 전달한다.
|
||||
- 2026-06-22: `./gradlew :app:compileDebugKotlin` 실행 결과 PASS.
|
||||
|
||||
- [ ] **Task 4.4: Fragment layout source 테스트 추가**
|
||||
- [x] **Task 4.4: Fragment layout source 테스트 추가**
|
||||
- 생성:
|
||||
- `app/src/test/java/kr/co/vividnext/sodalive/v2/creator/channel/fantalk/CreatorChannelFanTalkFragmentLayoutTest.kt`
|
||||
- 테스트 케이스:
|
||||
@@ -438,12 +446,14 @@
|
||||
- 기대 결과:
|
||||
- Layout source 테스트가 GREEN이다.
|
||||
- 검증 기록:
|
||||
- 2026-06-22: `CreatorChannelFanTalkFragmentLayoutTest.kt`를 추가했다. fragment layout의 sort UI 부재, count/empty/floating write button, item action/reply container, popup 수정/삭제 TextView, adapter/popup source 계약을 검증한다.
|
||||
- 2026-06-22: RED 확인으로 신규 layout/resource 구현 전 테스트가 layout/id 부재로 실패함을 확인했고, 구현 후 `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.fantalk.CreatorChannelFanTalkFragmentLayoutTest"` 실행 결과 PASS.
|
||||
|
||||
---
|
||||
|
||||
### Phase 5: Fragment 동작, 신고/삭제, empty 상태 연결
|
||||
|
||||
- [ ] **Task 5.1: `CreatorChannelFanTalkFragment` 구현**
|
||||
- [x] **Task 5.1: `CreatorChannelFanTalkFragment` 구현**
|
||||
- 생성:
|
||||
- `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/fantalk/CreatorChannelFanTalkFragment.kt`
|
||||
- 작업:
|
||||
@@ -464,8 +474,11 @@
|
||||
- 기대 결과:
|
||||
- Fragment 추가 후 컴파일이 PASS한다.
|
||||
- 검증 기록:
|
||||
- 2026-06-22: TDD RED로 `CreatorChannelPagerAdapterTest`, `CreatorChannelActivitySourceTest`, `CreatorChannelFanTalkFragmentLayoutTest`에 FanTalk Fragment/Host/source 계약 기대값을 먼저 추가했다. production 변경 전 `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.CreatorChannelPagerAdapterTest" --tests "kr.co.vividnext.sodalive.v2.creator.channel.CreatorChannelActivitySourceTest"` 실행 시 `CreatorChannelFanTalkFragment` unresolved reference로 실패해 신규 Fragment와 wiring 누락을 확인했다.
|
||||
- 2026-06-22: `CreatorChannelFanTalkFragment.kt`를 추가하고 Koin `by viewModel()`, `LinearLayoutManager`, `CreatorChannelFanTalkAdapter`, Loading/Error/Empty/Content visibility, no-op write buttons, report dialog, owner more popup, delete confirmed entry, pagination/action toast consume, Host callback을 구현했다.
|
||||
- 2026-06-22: `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.fantalk.CreatorChannelFanTalkFragmentLayoutTest"` 실행 결과 PASS.
|
||||
|
||||
- [ ] **Task 5.2: `CreatorChannelActivity`에 FanTalk Host 연결**
|
||||
- [x] **Task 5.2: `CreatorChannelActivity`에 FanTalk Host 연결**
|
||||
- 수정:
|
||||
- `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelActivity.kt`
|
||||
- 작업:
|
||||
@@ -482,8 +495,10 @@
|
||||
- 기대 결과:
|
||||
- Activity Host 연결 후 컴파일이 PASS한다.
|
||||
- 검증 기록:
|
||||
- 2026-06-22: `CreatorChannelActivity`가 `CreatorChannelFanTalkFragment.Host`를 구현하도록 추가하고 `findFanTalkFragment()`, 탭 선택/header 변경 dispatch, bottom scroll dispatch, load-more tab 포함, content changed 높이 갱신, 삭제 확인 `SodaDialog` 및 confirm 시 Fragment 삭제 entry 호출을 연결했다.
|
||||
- 2026-06-22: `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.CreatorChannelActivitySourceTest"` 실행 결과 PASS.
|
||||
|
||||
- [ ] **Task 5.3: `CreatorChannelPagerAdapter`에 FanTalk 탭 연결**
|
||||
- [x] **Task 5.3: `CreatorChannelPagerAdapter`에 FanTalk 탭 연결**
|
||||
- 수정:
|
||||
- `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelPagerAdapter.kt`
|
||||
- `app/src/test/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelPagerAdapterTest.kt`
|
||||
@@ -496,8 +511,10 @@
|
||||
- 기대 결과:
|
||||
- PagerAdapter 테스트가 GREEN이다.
|
||||
- 검증 기록:
|
||||
- 2026-06-22: `CreatorChannelTab.FanTalk -> CreatorChannelFanTalkFragment.newInstance(creatorId)` 분기를 추가하고 `CreatorChannelPagerAdapterTest`에서 FanTalk 실제 Fragment 생성 및 placeholder 제외 기대값을 갱신했다.
|
||||
- 2026-06-22: `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.CreatorChannelPagerAdapterTest"` 실행 결과 PASS.
|
||||
|
||||
- [ ] **Task 5.4: Activity source 테스트 갱신**
|
||||
- [x] **Task 5.4: Activity source 테스트 갱신**
|
||||
- 수정:
|
||||
- `app/src/test/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelActivitySourceTest.kt`
|
||||
- 작업:
|
||||
@@ -512,6 +529,8 @@
|
||||
- 기대 결과:
|
||||
- Activity source 테스트가 GREEN이다.
|
||||
- 검증 기록:
|
||||
- 2026-06-22: `CreatorChannelActivitySourceTest`의 FanTalk 분기 부재 기대값을 제거하고 Pager/Activity/Fragment source 계약 검증으로 교체했다. Host 구현, `findFanTalkFragment()`, 탭 선택/header selected dispatch, scrolled bottom, load more tab 포함, content changed callback, delete clicked dialog, delete confirmed callback을 검증한다.
|
||||
- 2026-06-22: `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.CreatorChannelActivitySourceTest"` 실행 결과 PASS.
|
||||
|
||||
---
|
||||
|
||||
@@ -566,3 +585,5 @@
|
||||
- 문서 작성 시점에는 구현을 수행하지 않았으므로 빌드/테스트 검증 기록이 없다.
|
||||
- 2026-06-22: Phase 2, 3 코드 리뷰를 수행했다. API/DTO/Repository/ViewModel/mapper/action model/test 변경이 PRD와 계획 문서의 계약 범위 안에 있으며, 레거시 파일 직접 수정 없이 기존 repository/dialog 계약을 호출하는 구조임을 확인했다. blocking finding은 발견하지 못했다.
|
||||
- 2026-06-22: Phase 2, 3 검증으로 `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.fantalk.*"`, `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.*FanTalk*"`, `./gradlew :app:compileDebugKotlin`, `./gradlew :app:ktlintCheck`, `git diff --check`, `git diff --cached --check`를 실행했고 모두 PASS했다.
|
||||
- 2026-06-22: Phase 4, 5 코드 리뷰를 수행했다. Figma `290:9139`, `290:9000` 기준으로 count bar, sort UI 부재, 원글/답글 item, 권한별 action, more popup, floating/empty write button, empty 문구를 구현과 대조했고 blocking finding은 발견하지 못했다.
|
||||
- 2026-06-22: Phase 4, 5 재검증으로 `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.fantalk.CreatorChannelFanTalkFragmentLayoutTest"`, `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.CreatorChannelActivitySourceTest" --tests "kr.co.vividnext.sodalive.v2.creator.channel.CreatorChannelPagerAdapterTest"`, `./gradlew :app:mergeDebugResources`, `./gradlew :app:compileDebugKotlin`, `./gradlew :app:ktlintCheck`, `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.fantalk.*"`, `git diff --check`를 실행했고 모두 PASS했다. 최초 `mergeDebugResources`는 Gradle wrapper lock 파일 샌드박스 접근 제한으로 실패했으며, 동일 명령을 승인 실행해 PASS를 확인했다.
|
||||
|
||||
Reference in New Issue
Block a user