docs(content): 랭킹 Phase 6 검증을 기록한다
This commit is contained in:
@@ -571,7 +571,7 @@
|
||||
|
||||
### Phase 6: routing, 통합 검증, 문서 검증 기록
|
||||
|
||||
- [ ] **Task 6.1: 랭킹 item 클릭 routing guard 연결**
|
||||
- [x] **Task 6.1: 랭킹 item 클릭 routing guard 연결**
|
||||
- 수정:
|
||||
- `app/src/main/java/kr/co/vividnext/sodalive/v2/main/content/ContentMainFragment.kt`
|
||||
- 구현:
|
||||
@@ -581,7 +581,7 @@
|
||||
- 코드 형태:
|
||||
```kotlin
|
||||
private fun openRankingAudioContentDetail(item: ContentRankingItem) {
|
||||
val audioContentId = item.contentId.toLongOrNull() ?: return
|
||||
val audioContentId = item.contentId.toLongOrNull()?.takeIf { it > 0L } ?: return
|
||||
openAudioContentDetail(audioContentId)
|
||||
}
|
||||
```
|
||||
@@ -589,18 +589,24 @@
|
||||
- Run: `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.content.ContentMainFragmentSourceTest"`
|
||||
- Expected: routing source assertion PASS.
|
||||
- 검증 기록:
|
||||
- 구현 시 실행 결과를 이 아래에 누적한다.
|
||||
- 2026-06-24 RED: `ContentMainFragmentSourceTest`에 랭킹 routing guard source assertion을 추가한 뒤 `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.content.ContentMainFragmentSourceTest"` 실행 시 `ContentMainFragmentSourceTest.kt:97` assertion 실패로 `openRankingAudioContentDetail` 내부의 명시적 `contentId > 0` guard 미반영 상태를 확인했다.
|
||||
- 2026-06-24 GREEN: `openRankingAudioContentDetail`에서 `item.contentId.toLongOrNull()?.takeIf { it > 0L } ?: return`으로 변환 실패와 `contentId <= 0`을 모두 무시하도록 보강했다. 같은 테스트 재실행 결과 `BUILD SUCCESSFUL`.
|
||||
- 2026-06-24: Kotlin LSP 진단은 환경에 `kotlin-lsp`가 설치되어 있지 않아 실행 불가(`Command not found: kotlin-lsp`). `ContentMainFragmentSourceTest`, package test, compile 검증으로 대체했다.
|
||||
- 2026-06-24: Phase 6 코드 리뷰에서 `openRankingAudioContentDetail`의 `toLongOrNull()?.takeIf { it > 0L } ?: return` guard가 PRD의 `contentId <= 0` 클릭 무시 요구와 일치함을 재확인했다.
|
||||
|
||||
- [ ] **Task 6.2: mapper/widget/content package 단위 테스트 실행**
|
||||
- [x] **Task 6.2: mapper/widget/content package 단위 테스트 실행**
|
||||
- 검증:
|
||||
- Run: `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.widget.contentranking.*"`
|
||||
- Expected: PASS.
|
||||
- Run: `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.content.*"`
|
||||
- Expected: PASS.
|
||||
- 검증 기록:
|
||||
- 구현 시 실행 결과를 이 아래에 누적한다.
|
||||
- 2026-06-24: `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.widget.contentranking.*"` 실행 결과 `BUILD SUCCESSFUL`.
|
||||
- 2026-06-24: `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.content.*"` 실행 결과 `BUILD SUCCESSFUL`.
|
||||
- 2026-06-24: Phase 6 재검증으로 `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.widget.contentranking.*"` 재실행 결과 `BUILD SUCCESSFUL`.
|
||||
- 2026-06-24: Phase 6 재검증으로 `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.content.*"` 재실행 결과 `BUILD SUCCESSFUL`.
|
||||
|
||||
- [ ] **Task 6.3: 리소스/컴파일/스타일 검증**
|
||||
- [x] **Task 6.3: 리소스/컴파일/스타일 검증**
|
||||
- 검증:
|
||||
- Run: `./gradlew :app:mergeDebugResources`
|
||||
- Expected: `BUILD SUCCESSFUL`
|
||||
@@ -611,9 +617,14 @@
|
||||
- Run: `git diff --check`
|
||||
- Expected: trailing whitespace 또는 conflict marker 없음
|
||||
- 검증 기록:
|
||||
- 구현 시 실행 결과를 이 아래에 누적한다.
|
||||
- 2026-06-24: `./gradlew :app:mergeDebugResources` 실행 결과 `BUILD SUCCESSFUL`.
|
||||
- 2026-06-24: `./gradlew :app:compileDebugKotlin` 실행 결과 `BUILD SUCCESSFUL`.
|
||||
- 2026-06-24: `./gradlew :app:ktlintCheck` 실행 결과 `BUILD SUCCESSFUL`. `.editorconfig`의 `disabled_rules` deprecation 경고는 기존 설정 경고로 남아 있다.
|
||||
- 2026-06-24: `git diff --check` 실행 결과 출력 없음. trailing whitespace 또는 conflict marker 없음.
|
||||
- 2026-06-24: Phase 6 재검증에서 `./gradlew :app:mergeDebugResources`는 샌드박스 내 Gradle wrapper lock 접근 제한으로 1차 실패 후 권한 상승 재실행 결과 `BUILD SUCCESSFUL`.
|
||||
- 2026-06-24: Phase 6 재검증으로 `./gradlew :app:compileDebugKotlin`, `./gradlew :app:ktlintCheck`, `git diff --check` 실행 결과 모두 통과했다.
|
||||
|
||||
- [ ] **Task 6.4: 수동 화면 검증**
|
||||
- [ ] **Task 6.4: 수동 화면 검증 [blocked]**
|
||||
- 확인:
|
||||
- 메인 콘텐츠 탭 진입 시 기본 `추천` 탭 화면이 기존처럼 표시된다.
|
||||
- Text Tab bar에 `추천`, `랭킹`, `전체`이 보인다.
|
||||
@@ -624,7 +635,11 @@
|
||||
- `contentId > 0` item 터치 시 오디오 상세로 이동한다.
|
||||
- `전체` 탭은 항목만 표시하고 별도 API/content 구현이 없다.
|
||||
- 검증 기록:
|
||||
- 구현 시 실행 결과를 이 아래에 누적한다.
|
||||
- 2026-06-24: Figma `24:6857` design context와 screenshot으로 Text Tab `추천`/`랭킹`/`전체`, Capsule Tab `주간 인기`/`지금 뜨는 중`/`매출`/`판매량`/`댓글수`/`좋아요` 순서, 랭킹 목록의 1위 대형/2~7위 2열/8~10위 3열/11위 이후 가로형 배치를 대조했다.
|
||||
- 2026-06-24: source/test 기준으로 `랭킹` 최초 선택 시 `AudioRankingType.WEEKLY_POPULAR` 로드, `ContentRankingAdapter` mixed layout 연결, `showRankChange=false` rank-num `GONE`, `contentId > 0` routing과 invalid id 무시, `전체` 탭의 별도 API/content 미구현 상태를 확인했다.
|
||||
- 2026-06-24 [blocked]: ADB 권한 상승 조회에서 연결 device 1대와 기존 `kr.co.vividnext.sodalive.debug` 설치 상태를 확인했고, 기존 설치 앱 실행 스크린샷에서 콘텐츠 추천 화면 진입 상태를 확인했다.
|
||||
- 2026-06-24 [blocked]: 현재 로컬 변경 기준 최신 APK 수동 QA를 위해 `./gradlew :app:installDebug`를 실행했으나 Gradle install 단계에서 `No connected devices!`로 실패했다. 재확인 시 `adb devices -l`도 빈 목록을 반환해 최신 debug APK 설치/실행 기반 화면 검증은 완료하지 못했다.
|
||||
- 2026-06-24: Phase 6 재검증에서 Figma `24:6857` design context와 screenshot을 다시 확인했다. 최신 APK가 설치된 device/emulator 기반 터치 검증은 계속 blocked 상태로 유지한다.
|
||||
|
||||
---
|
||||
|
||||
@@ -645,3 +660,7 @@
|
||||
- 2026-06-24: 리뷰 게이트 보완 후 `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.content.*"`, `./gradlew :app:mergeDebugResources`, `./gradlew :app:compileDebugKotlin`, `./gradlew :app:ktlintCheck`, `git diff --check` 재실행 결과 모두 통과했다.
|
||||
- 2026-06-24: Phase 4~5 코드 리뷰에서 stale response loading 조기 종료 문제를 발견해 RED/GREEN 테스트로 보완했다. Figma `24:6857` 스크린샷으로 Text Tab `추천`/`랭킹`/`전체`, Capsule Tab `주간 인기`/`지금 뜨는 중`/`매출`/`판매량`/`댓글수`/`좋아요` 순서와 랭킹 목록 위치를 재확인했다. `./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차 실패 후 권한 상승 실행에서 `BUILD SUCCESSFUL`을 확인했다. `ktlintCheck`의 `.editorconfig disabled_rules` deprecation 경고는 기존 설정 경고로 남아 있다.
|
||||
- 2026-06-24: Phase 4~5 현재 워크트리 기준 코드 리뷰 및 재검증을 수행했다. `ContentRankingViewModel`의 캐시 재방출, stale response 무시, loading 종료 조건과 `ContentMainFragment`의 Text Tab/Capsule Tab 연결, visibility 전환, ranking adapter 연결, loading dialog 통합, routing guard를 확인했고 추가 결함은 발견하지 못했다. Figma `24:6857`, `24:6882` design context와 screenshot으로 `추천`/`랭킹`/`전체`, `주간 인기`/`지금 뜨는 중`/`매출`/`판매량`/`댓글수`/`좋아요` 순서와 랭킹 목록 위치를 대조했다. `./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차 실패 후 권한 상승 실행에서 `BUILD SUCCESSFUL`을 확인했다.
|
||||
- 2026-06-24: Phase 6에서 랭킹 item 클릭 routing guard를 명시적으로 보강했다. RED는 `ContentMainFragmentSourceTest.kt:97` assertion 실패로 확인했고, GREEN은 `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.content.ContentMainFragmentSourceTest"` `BUILD SUCCESSFUL`로 확인했다.
|
||||
- 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차 실패 후 권한 상승 재실행에서 통과했다.
|
||||
|
||||
Reference in New Issue
Block a user