docs(home): 팔로잉 크리에이터 전체 버튼을 기록한다
This commit is contained in:
@@ -582,6 +582,58 @@
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
### Phase 8: 팔로잉 크리에이터 전체 버튼 후속 추가
|
||||||
|
|
||||||
|
- [x] **Task 8.1: PRD 반영과 RED 테스트 추가**
|
||||||
|
- 수정:
|
||||||
|
- `docs/20260625_메인_홈_팔로잉_탭/prd.md`
|
||||||
|
- `docs/20260625_메인_홈_팔로잉_탭/plan-task.md`
|
||||||
|
- `app/src/test/java/kr/co/vividnext/sodalive/v2/main/home/HomeFollowingFragmentSourceTest.kt`
|
||||||
|
- 작업:
|
||||||
|
- 팔로잉 크리에이터 RecyclerView 마지막 item에 `전체` 버튼을 항상 추가하는 후속 요구사항을 문서화한다.
|
||||||
|
- `전체` 버튼 layout이 `wrap_content`, creator item과 동일한 높이, `paddingHorizontal=16dp`, `@color/soda_400`를 갖는지 source test로 고정한다.
|
||||||
|
- adapter가 creator item과 all item view type을 분리하고 마지막 item count를 보장하는지 source test로 고정한다.
|
||||||
|
- `전체` 버튼 클릭이 기존 `FollowingCreatorActivity`로 연결되는지 source test로 고정한다.
|
||||||
|
- 검증:
|
||||||
|
- Run: `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.HomeFollowingFragmentSourceTest"`
|
||||||
|
- Expected: 구현 전 RED 실패.
|
||||||
|
- Result: RED 확인. `following creators list appends all button as last item`가 `item_home_following_creator_all.xml` 누락으로 실패했다.
|
||||||
|
|
||||||
|
- [x] **Task 8.2: 팔로잉 크리에이터 전체 버튼 구현**
|
||||||
|
- 수정:
|
||||||
|
- `app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/ui/HomeFollowingCreatorAdapter.kt`
|
||||||
|
- `app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/HomeMainFragment.kt`
|
||||||
|
- `app/src/main/res/layout/item_home_following_creator_all.xml`
|
||||||
|
- 작업:
|
||||||
|
- `HomeFollowingCreatorAdapter`에 creator/all view type을 추가한다.
|
||||||
|
- `submitItems()`에 1개 이상 creator가 들어오면 adapter 마지막 item으로 `전체` 버튼을 표시한다.
|
||||||
|
- `전체` 버튼은 `width=wrap_content`, creator item과 동일한 높이, `paddingHorizontal=16dp`, `textColor=@color/soda_400`를 XML에 명시한다.
|
||||||
|
- `전체` 버튼 클릭 시 `ensureMainV2NavigationAllowed` 안에서 `FollowingCreatorActivity`를 시작한다.
|
||||||
|
- 검증:
|
||||||
|
- Run: `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.HomeFollowingFragmentSourceTest"`
|
||||||
|
- Expected: PASS.
|
||||||
|
- Result: PASS. adapter creator/all view type, 마지막 `전체` item, `FollowingCreatorActivity` 이동 연결, `전체` layout token이 source test로 검증됐다.
|
||||||
|
|
||||||
|
- [x] **Task 8.3: 후속 변경 통합 검증**
|
||||||
|
- 검증:
|
||||||
|
- Run: `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.*Following*"`
|
||||||
|
- Expected: 팔로잉 관련 local unit/source test가 모두 PASS.
|
||||||
|
- Run: `./gradlew :app:mergeDebugResources`
|
||||||
|
- Expected: layout/resource merge PASS.
|
||||||
|
- Run: `./gradlew :app:compileDebugKotlin`
|
||||||
|
- Expected: Kotlin compile PASS.
|
||||||
|
- Run: `./gradlew :app:ktlintCheck`
|
||||||
|
- Expected: ktlint PASS 또는 기존 unrelated failure만 발생.
|
||||||
|
- Run: `git diff --check`
|
||||||
|
- Expected: whitespace error 없음.
|
||||||
|
- 검증 기록:
|
||||||
|
- 2026-06-30 팔로잉 크리에이터 `전체` 버튼 후속 검증: `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.*Following*"` PASS.
|
||||||
|
- 2026-06-30 팔로잉 크리에이터 `전체` 버튼 후속 검증: `./gradlew :app:mergeDebugResources`는 최초 sandbox 실행에서 Gradle wrapper lock 권한 오류로 실패했고, 승인 실행 재시도에서 PASS.
|
||||||
|
- 2026-06-30 팔로잉 크리에이터 `전체` 버튼 후속 검증: `./gradlew :app:compileDebugKotlin`, `./gradlew :app:ktlintCheck`, `git diff --check` PASS. `ktlintCheck`에서는 기존 `.editorconfig disabled_rules` deprecation warning만 출력됐다.
|
||||||
|
- 2026-06-30 팔로잉 크리에이터 `전체` 버튼 높이 보정 후 재검증: creator item 전체 높이에 맞추기 위해 invisible nickname spacer를 추가했다. `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.HomeFollowingFragmentSourceTest"`, `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.*Following*"`, `./gradlew :app:mergeDebugResources`, `./gradlew :app:compileDebugKotlin`, `./gradlew :app:ktlintCheck`, `git diff --check` PASS. `mergeDebugResources`는 최초 sandbox lock 권한 오류 후 승인 실행으로 PASS했고, `ktlintCheck`에서는 기존 `.editorconfig disabled_rules` deprecation warning만 출력됐다.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Verification Log
|
## Verification Log
|
||||||
- 2026-06-25 Phase 1-3 구현 검증: `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.*Following*"`, `./gradlew :app:mergeDebugResources`, `./gradlew :app:compileDebugKotlin`, `./gradlew :app:ktlintCheck`, `git diff --check` 모두 PASS.
|
- 2026-06-25 Phase 1-3 구현 검증: `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.*Following*"`, `./gradlew :app:mergeDebugResources`, `./gradlew :app:compileDebugKotlin`, `./gradlew :app:ktlintCheck`, `git diff --check` 모두 PASS.
|
||||||
- 2026-06-25 Phase 1-3 코드 리뷰 및 재검증: blocking finding 없음. `./gradlew :app:mergeDebugResources`는 최초 sandbox lock 권한 오류 후 승인 실행으로 PASS했고, 나머지 검증 명령도 PASS.
|
- 2026-06-25 Phase 1-3 코드 리뷰 및 재검증: blocking finding 없음. `./gradlew :app:mergeDebugResources`는 최초 sandbox lock 권한 오류 후 승인 실행으로 PASS했고, 나머지 검증 명령도 PASS.
|
||||||
@@ -594,3 +646,5 @@
|
|||||||
- 2026-06-26 최근 소식 Feed 위젯 재사용 후속 검증: 최근 소식 chevron 제거와 `FeedCommunityView`/`FeedRankView`/`FeedContentView` 재사용을 source test로 고정했다. `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.HomeFollowingFragmentSourceTest"`, `./gradlew :app:mergeDebugResources`, `./gradlew :app:compileDebugKotlin`, `./gradlew :app:ktlintCheck`, `git diff --check` 모두 PASS. `ktlintCheck`에서는 기존 `.editorconfig disabled_rules` deprecation warning만 출력됐다.
|
- 2026-06-26 최근 소식 Feed 위젯 재사용 후속 검증: 최근 소식 chevron 제거와 `FeedCommunityView`/`FeedRankView`/`FeedContentView` 재사용을 source test로 고정했다. `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.HomeFollowingFragmentSourceTest"`, `./gradlew :app:mergeDebugResources`, `./gradlew :app:compileDebugKotlin`, `./gradlew :app:ktlintCheck`, `git diff --check` 모두 PASS. `ktlintCheck`에서는 기존 `.editorconfig disabled_rules` deprecation warning만 출력됐다.
|
||||||
- 2026-06-30 최근 소식 ranking/content 후속 검증: Figma `24:5717`, `1229:27212` 기준으로 ranking 문장형 message와 content feed `88dp` 이미지/간격을 RED 테스트로 고정한 뒤 GREEN 확인했다. `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.HomeFollowingFragmentSourceTest" --tests "kr.co.vividnext.sodalive.v2.widget.feed.FeedViewTest"`, `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.*Following*"`, `./gradlew :app:mergeDebugResources`, `./gradlew :app:compileDebugKotlin`, `git diff --check` PASS. `./gradlew :app:ktlintCheck`는 이번 변경과 무관한 `CreatorRankingTopCardView.kt:11` 기존 unused import로 FAIL.
|
- 2026-06-30 최근 소식 ranking/content 후속 검증: Figma `24:5717`, `1229:27212` 기준으로 ranking 문장형 message와 content feed `88dp` 이미지/간격을 RED 테스트로 고정한 뒤 GREEN 확인했다. `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.HomeFollowingFragmentSourceTest" --tests "kr.co.vividnext.sodalive.v2.widget.feed.FeedViewTest"`, `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.*Following*"`, `./gradlew :app:mergeDebugResources`, `./gradlew :app:compileDebugKotlin`, `git diff --check` PASS. `./gradlew :app:ktlintCheck`는 이번 변경과 무관한 `CreatorRankingTopCardView.kt:11` 기존 unused import로 FAIL.
|
||||||
- 2026-06-30 content feed clipping 위치 수정 검증: `docs/agent-guides/code-style.md`의 XML `android:clipToOutline` 금지 규칙에 맞춰 `view_feed_content.xml` 속성을 제거하고 `FeedContentView` Kotlin 코드에서 root `clipToOutline`/`outlineProvider`를 설정했다. `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.widget.feed.FeedViewTest"`, `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.*Following*"`, `./gradlew :app:mergeDebugResources`, `./gradlew :app:compileDebugKotlin`, `git diff --check` PASS.
|
- 2026-06-30 content feed clipping 위치 수정 검증: `docs/agent-guides/code-style.md`의 XML `android:clipToOutline` 금지 규칙에 맞춰 `view_feed_content.xml` 속성을 제거하고 `FeedContentView` Kotlin 코드에서 root `clipToOutline`/`outlineProvider`를 설정했다. `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.widget.feed.FeedViewTest"`, `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.*Following*"`, `./gradlew :app:mergeDebugResources`, `./gradlew :app:compileDebugKotlin`, `git diff --check` PASS.
|
||||||
|
- 2026-06-30 팔로잉 크리에이터 `전체` 버튼 후속 검증: 팔로잉 크리에이터 RecyclerView 마지막에 `전체` item을 추가하고 `FollowingCreatorActivity` 이동을 연결했다. `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.HomeFollowingFragmentSourceTest"` RED/GREEN, `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.*Following*"`, `./gradlew :app:mergeDebugResources`, `./gradlew :app:compileDebugKotlin`, `./gradlew :app:ktlintCheck`, `git diff --check` PASS. `mergeDebugResources`는 최초 sandbox lock 권한 오류 후 승인 실행으로 PASS했고, `ktlintCheck`에서는 기존 `.editorconfig disabled_rules` deprecation warning만 출력됐다.
|
||||||
|
- 2026-06-30 팔로잉 크리에이터 `전체` 버튼 높이 보정 후 재검증: `전체` item root는 `wrap_content` 높이로 두고 invisible nickname spacer로 creator item 전체 높이를 맞췄다. `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.HomeFollowingFragmentSourceTest"`, `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.*Following*"`, `./gradlew :app:mergeDebugResources`, `./gradlew :app:compileDebugKotlin`, `./gradlew :app:ktlintCheck`, `git diff --check` PASS. `mergeDebugResources`는 최초 sandbox lock 권한 오류 후 승인 실행으로 PASS했고, `ktlintCheck`에서는 기존 `.editorconfig disabled_rules` deprecation warning만 출력됐다.
|
||||||
|
|||||||
@@ -181,6 +181,9 @@ Figma `24:5682` 기준 상단 title bar와 tab bar는 기존 홈 화면 구조
|
|||||||
#### Requirements
|
#### Requirements
|
||||||
- profile image와 creator nickname을 표시한다.
|
- profile image와 creator nickname을 표시한다.
|
||||||
- item 터치 시 해당 크리에이터 채널로 이동한다.
|
- item 터치 시 해당 크리에이터 채널로 이동한다.
|
||||||
|
- `followingCreators`가 1명 이상이면 가로 RecyclerView의 마지막 item으로 `전체` 버튼을 항상 표시한다.
|
||||||
|
- `전체` 버튼 item은 `width=wrap_content`, creator item 전체 높이와 동일한 높이, `paddingHorizontal=16dp`, `textColor=@color/soda_400`로 표시한다.
|
||||||
|
- `전체` 버튼 터치 시 기존 전체 팔로잉 크리에이터 목록 화면으로 이동한다.
|
||||||
- 리스트가 비어 있으면 섹션을 숨긴다.
|
- 리스트가 비어 있으면 섹션을 숨긴다.
|
||||||
- 이미지 URL이 비어 있거나 로드 실패하면 기존 홈 creator profile placeholder 정책을 따른다.
|
- 이미지 URL이 비어 있거나 로드 실패하면 기존 홈 creator profile placeholder 정책을 따른다.
|
||||||
- 기존 `HomeCreatorProfileAdapter`, `HomeRecentActivityCreatorAdapter`, `HomeCreatorProfileImageLoader` 재사용 가능성을 우선 검토한다.
|
- 기존 `HomeCreatorProfileAdapter`, `HomeRecentActivityCreatorAdapter`, `HomeCreatorProfileImageLoader` 재사용 가능성을 우선 검토한다.
|
||||||
|
|||||||
Reference in New Issue
Block a user