From 102c454f9c076713ea950f004695d5b4dfe38a73 Mon Sep 17 00:00:00 2001 From: klaus Date: Thu, 25 Jun 2026 15:58:42 +0900 Subject: [PATCH] =?UTF-8?q?docs(content):=20=EC=BD=98=ED=85=90=EC=B8=A0=20?= =?UTF-8?q?=EB=9E=AD=ED=82=B9=20rank=20=EB=B3=B4=EC=A0=95=20=EA=B3=84?= =?UTF-8?q?=ED=9A=8D=EC=9D=84=20=EA=B8=B0=EB=A1=9D=ED=95=9C=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plan-task.md | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/docs/20260623_메인_콘텐츠_탭_내부_랭킹_탭/plan-task.md b/docs/20260623_메인_콘텐츠_탭_내부_랭킹_탭/plan-task.md index 32c793db..c7a30b6c 100644 --- a/docs/20260623_메인_콘텐츠_탭_내부_랭킹_탭/plan-task.md +++ b/docs/20260623_메인_콘텐츠_탭_내부_랭킹_탭/plan-task.md @@ -643,6 +643,38 @@ --- +### Phase 7: rank-num 간격 시각 보정 + +- [x] **Task 7.1: rank 텍스트 하단 보정 회귀 테스트 추가** + - 수정: `app/src/test/java/kr/co/vividnext/sodalive/v2/widget/contentranking/ContentRankingCardViewTest.kt` + - 구현 내용: + - Large, Medium grid, Small grid, Horizontal variant의 순위 `TextView`가 `includeFontPadding=false`를 유지하는지 검증한다. + - 순위 `TextView`에 variant별 하단 padding이 적용되어 Pattaya glyph가 rank-num 영역에 붙어 보이지 않도록 검증한다. + - 검증 명령: `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.widget.contentranking.ContentRankingCardViewTest"` + - 기대 결과: production 수정 전 padding assertion이 실패한다. + +- [x] **Task 7.2: rank 텍스트 내부 하단 padding 보정** + - 수정: `app/src/main/java/kr/co/vividnext/sodalive/v2/widget/contentranking/ContentRankingLargeCardView.kt` + - 수정: `app/src/main/java/kr/co/vividnext/sodalive/v2/widget/contentranking/ContentRankingGridCardView.kt` + - 수정: `app/src/main/java/kr/co/vividnext/sodalive/v2/widget/contentranking/ContentRankingHorizontalCardView.kt` + - 구현 내용: + - 기존 Figma 좌표값과 rank-num top/left는 변경하지 않는다. + - 순위 숫자 `TextView` 내부에 scale 기반 하단 padding을 적용해 폰트 glyph가 위쪽으로 보정되도록 한다. + - 검증 명령: `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.widget.contentranking.ContentRankingCardViewTest"` + - 기대 결과: RED 테스트가 `BUILD SUCCESSFUL`로 전환된다. + +- [x] **Task 7.3: 후속 검증과 문서 기록 누적** + - 실행: + - `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.widget.contentranking.*"` + - `./gradlew :app:mergeDebugResources` + - `./gradlew :app:ktlintCheck` + - `git diff --check` + - 수정: `docs/20260623_메인_콘텐츠_탭_내부_랭킹_탭/prd.md` + - 수정: `docs/20260623_메인_콘텐츠_탭_내부_랭킹_탭/plan-task.md` + - 기대 결과: 모두 통과, Verification Log 누적. + +--- + ## Verification Log - 구현 중 여러 Phase에 걸친 통합 검증, 회귀 검증, 최종 수동 확인 기록을 이 아래에 누적한다. - 2026-06-24: Phase 1~3 구현 후 `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.widget.contentranking.*"` 실행 결과 `BUILD SUCCESSFUL`. @@ -664,3 +696,6 @@ - 2026-06-24: Phase 6 최종 자동 검증으로 `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.widget.contentranking.*"`, `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.content.*"`, `./gradlew :app:mergeDebugResources`, `./gradlew :app:compileDebugKotlin`, `./gradlew :app:ktlintCheck`, `git diff --check` 실행 결과 모두 통과했다. Kotlin LSP 진단은 환경에 `kotlin-lsp`가 설치되어 있지 않아 실행 불가했고, `ktlintCheck`의 `.editorconfig disabled_rules` deprecation 경고는 기존 설정 경고로 남아 있다. - 2026-06-24: Phase 6 수동 검증 중 Figma `24:6857` design context/screenshot과 source/test 대조로 Text Tab/Capsule Tab 순서, 랭킹 목록 배치, 초기 `WEEKLY_POPULAR`, `showRankChange=false`, routing guard, `전체` 탭 제외 범위를 확인했다. ADB 권한 상승 조회에서 일시적으로 연결 device와 기존 debug 앱 실행 화면은 확인했으나, 현재 로컬 변경 기준 최신 APK 설치를 위한 `./gradlew :app:installDebug`는 `No connected devices!`로 실패했다. 최신 APK가 설치된 device/emulator 기반 최종 화면 터치 검증은 후속 환경에서 확인 필요하므로 Task 6.4는 [blocked]로 남긴다. - 2026-06-24: Phase 6 코드 리뷰 및 재검증을 수행했다. `ContentMainFragment` routing guard, `ContentRankingViewModel` stale response/loading 처리, mapper의 rank 필터/정렬과 `showRankChange` 전달, widget rank-num `GONE` 처리를 PRD/계획과 대조했고 추가 수정이 필요한 결함은 발견하지 못했다. `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.widget.contentranking.*"`, `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.content.*"`, `./gradlew :app:mergeDebugResources`, `./gradlew :app:compileDebugKotlin`, `./gradlew :app:ktlintCheck`, `git diff --check` 재실행 결과 모두 통과했다. `:app:mergeDebugResources`는 샌드박스 내 Gradle wrapper lock 접근 제한으로 1차 실패 후 권한 상승 재실행에서 통과했다. +- 2026-06-25: Phase 7.1로 `ContentRankingCardViewTest`에 순위 `TextView`의 `includeFontPadding=false` 유지와 variant별 하단 padding(1위 10px, 2~7위 6px, 8~10위 5px, 11위 이후 4px) 검증을 추가했다. Phase 7.2로 기존 Figma 좌표와 rank-num top/left는 유지하고 콘텐츠 랭킹 Large/Grid/Horizontal 카드의 순위 `TextView` 내부 하단 padding만 scale 기반으로 적용했다. +- 2026-06-25: Phase 7 검증 중 최초 병렬 Gradle 실행에서 Kotlin incremental cache 충돌과 timeout이 발생해 `./gradlew --stop`, `./gradlew clean` 후 순차 재실행했다. `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.widget.contentranking.ContentRankingCardViewTest"`, `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.widget.contentranking.*"`, `./gradlew :app:mergeDebugResources`, `./gradlew :app:compileDebugKotlin`은 모두 `BUILD SUCCESSFUL`로 통과했다. `./gradlew :app:ktlintCheck`는 변경 파일이 아닌 기존 전역 위반(`Agora.kt`, `audio_content` package-name, 기존 `ContentRankingAdapter.kt` 긴 줄 등)으로 실패했으며, `git diff --check`는 출력 없이 통과했다. +- 2026-06-25: 리뷰 게이트에서 콘텐츠 랭킹 horizontal rank `TextView`가 고정 박스 없이 bottom padding만 적용되어 rank-num 위치가 밀릴 수 있고, 콘텐츠 rank `TextView`의 중앙 정렬 계약이 부족하다는 blocking 이슈를 확인했다. 후속 보완으로 `ContentRankingHorizontalCardView`에 `48x52` 고정 rank box를 적용하고, 콘텐츠 랭킹 rank XML 3종에 `android:gravity="center"`를 추가했으며, `ContentRankingCardViewTest`가 rank box 크기/위치, gravity, `includeFontPadding=false`, bottom padding을 함께 검증하도록 확장했다. 보완 후 `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.widget.contentranking.ContentRankingCardViewTest"`가 `BUILD SUCCESSFUL`로 통과했다.