docs(content): 콘텐츠 랭킹 작업 기록을 추가한다
This commit is contained in:
@@ -656,9 +656,52 @@ Expected: `BUILD SUCCESSFUL`
|
||||
Expected:
|
||||
- 실행한 명령, 결과, 실패 시 원인과 후속 조치를 이 문서 하단 `검증 기록`에 누적한다.
|
||||
|
||||
### Task 8: Horizontal rank=20 표시 보정
|
||||
|
||||
**Files:**
|
||||
- Modify: `docs/prd/20260520_콘텐츠랭킹위젯컴포넌트_prd.md`
|
||||
- Modify: `docs/plan-task/20260520_콘텐츠랭킹위젯컴포넌트.md`
|
||||
- Modify: `app/src/test/java/kr/co/vividnext/sodalive/v2/widget/contentranking/ContentRankingCardViewTest.kt`
|
||||
- Modify: `app/src/main/res/layout/view_content_ranking_horizontal_card.xml`
|
||||
- Modify: `app/src/main/java/kr/co/vividnext/sodalive/v2/widget/contentranking/ContentRankingHorizontalCardView.kt`
|
||||
|
||||
- [x] **Step 1: 원인 확인과 문서 반영**
|
||||
|
||||
Expected:
|
||||
- `ContentRankingHorizontalCardView`의 rank group과 rank `TextView`가 고정 폭/높이를 받아 `20` 표시가 잘릴 수 있음을 기록한다.
|
||||
- Horizontal rank group과 rank `TextView`는 `wrap_content` 폭을 유지하도록 계약을 갱신한다.
|
||||
|
||||
- [x] **Step 2: RED - rank=20 wrap_content 테스트 갱신**
|
||||
|
||||
Run: `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.widget.contentranking.ContentRankingCardViewTest"`
|
||||
|
||||
Expected: production 수정 전 rank group/rank `TextView` 고정 폭 assertion 때문에 실패한다.
|
||||
|
||||
Result: production 수정 전 `ContentRankingCardViewTest`를 실행해 Horizontal rank group fixed width assertion 실패를 확인했다.
|
||||
|
||||
- [x] **Step 3: GREEN - Horizontal rank 고정 폭 제거**
|
||||
|
||||
Expected:
|
||||
- `view_content_ranking_horizontal_card.xml`의 `ll_content_ranking_rank_group` width를 `wrap_content`로 유지한다.
|
||||
- `ContentRankingHorizontalCardView.positionViews()`에서 rank group width와 rank `TextView` width/height 고정 설정을 제거한다.
|
||||
- 이미지/텍스트 영역, API/ViewModel/Adapter 동작은 변경하지 않는다.
|
||||
|
||||
Result: `view_content_ranking_horizontal_card.xml`의 rank group width를 `wrap_content`로 바꾸고, `ContentRankingHorizontalCardView.positionViews()`에서 rank group/rank `TextView` 고정 width/height와 rank padding 설정을 제거했다. `ContentRankingCardViewTest`가 `BUILD SUCCESSFUL`로 통과했다.
|
||||
|
||||
- [x] **Step 4: 검증 기록 누적**
|
||||
|
||||
Run:
|
||||
- `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.widget.contentranking.ContentRankingCardViewTest"`
|
||||
- `./gradlew :app:mergeDebugResources`
|
||||
- `./gradlew :app:compileDebugKotlin`
|
||||
|
||||
Result: 세 명령이 모두 `BUILD SUCCESSFUL`로 통과했다. 병렬 Gradle 실행 중 Kotlin incremental cache 충돌이 있었으나 `./gradlew --stop` 후 순차 재실행으로 통과했다.
|
||||
|
||||
---
|
||||
|
||||
## 검증 기록
|
||||
- 2026-06-29: 후속 요구사항으로 `ContentRankingHorizontalCardView`에서 `20` 순위가 잘리는 문제를 분석했다. `view_content_ranking_horizontal_card.xml`의 rank group 49dp, `ContentRankingHorizontalCardView.positionViews()`의 rank group `49 * scale` 및 rank `TextView` `48 * scale x 52 * scale` 고정 크기가 원인일 수 있음을 확인했고, 구현 전 PRD와 계획 문서에 Horizontal rank group/rank `TextView` `wrap_content` 계약을 반영했다.
|
||||
- 2026-06-29: `ContentRankingCardViewTest`를 갱신해 Horizontal `rank=20`, rank group `WRAP_CONTENT`, rank `TextView` `WRAP_CONTENT`를 검증하도록 했다. production 수정 전에는 rank group fixed width assertion이 실패했고, `ContentRankingHorizontalCardView`와 `view_content_ranking_horizontal_card.xml` 보정 후 동일 테스트가 `BUILD SUCCESSFUL`로 통과했다. `mergeDebugResources`, `compileDebugKotlin`, `ktlintCheck`, `git diff --check`도 통과했다.
|
||||
- 2026-05-20: 문서만 먼저 작성하는 요청이므로 구현/빌드/테스트는 실행하지 않았다. Figma `20:3715`, `20:3718`, `20:3721`, `20:3724`의 design context와 screenshot을 확인해 PRD 및 구현 계획에 반영했다.
|
||||
- 2026-05-20: `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.widget.creatorranking.CreatorRankingItemTest" --tests "kr.co.vividnext.sodalive.v2.widget.creatorranking.CreatorRankingDeltaPresentationTest" --tests "kr.co.vividnext.sodalive.v2.widget.contentranking.*"`를 먼저 실행해 `RankingChangeType` 및 콘텐츠 랭킹 contract 미구현으로 실패하는 RED를 확인했다.
|
||||
- 2026-05-20: 공용 `RankingChangeType`, 콘텐츠 랭킹 placement/item/delta/layout calculator, XML/custom view/adapter를 구현한 뒤 동일 단위 테스트 명령을 재실행해 `BUILD SUCCESSFUL`을 확인했다.
|
||||
|
||||
Reference in New Issue
Block a user