docs(content): 전체 탭 이동 검증을 기록한다

This commit is contained in:
2026-06-27 06:32:49 +09:00
parent b6cc37fe50
commit 1416db105e

View File

@@ -217,7 +217,7 @@
### Phase 3: 기존 콘텐츠 전체 탭 이동 contract 추가
- [ ] **Task 3.1: ContentAllTabViewModel 외부 선택 API 추가**
- [x] **Task 3.1: ContentAllTabViewModel 외부 선택 API 추가**
- 수정:
- `app/src/main/java/kr/co/vividnext/sodalive/v2/main/content/ContentAllTabViewModel.kt`
- `app/src/test/java/kr/co/vividnext/sodalive/v2/main/content/ContentAllTabViewModelTest.kt`
@@ -231,8 +231,12 @@
- Expected: 기존 테스트와 신규 외부 선택 테스트 PASS.
- 검증 기록:
- 구현 시 이 Task 아래에 명령, 결과, 확인 내용을 한국어로 누적한다.
- 2026-06-27 구현: `ContentAllTabViewModel.selectTypeAndSort(type, sort)`를 추가해 `selectedType`, `selectedSort`, `selectedDayOfWeek`를 갱신하고 첫 페이지를 재조회하도록 했다. `SERIES`가 아닌 type은 `selectedDayOfWeekFor(type)` 경로로 `dayOfWeek = null`을 유지한다.
- 2026-06-27 테스트 추가: `ContentAllTabViewModelTest`에 외부 선택 요청 `FREE` + `POPULAR`, `ORIGINAL` + `LATEST`가 모두 `page=0`, `dayOfWeek=null`로 호출되는 검증을 추가했다.
- 2026-06-27 실행: `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.content.ContentAllTabViewModelTest"`
- 결과: PASS.
- [ ] **Task 3.2: ContentMainFragment에 내부 전체 탭 선택 API 추가**
- [x] **Task 3.2: ContentMainFragment에 내부 전체 탭 선택 API 추가**
- 수정:
- `app/src/main/java/kr/co/vividnext/sodalive/v2/main/content/ContentMainFragment.kt`
- `app/src/test/java/kr/co/vividnext/sodalive/v2/main/content/ContentMainFragmentSourceTest.kt`
@@ -246,8 +250,12 @@
- Expected: 내부 전체 탭 선택 source 테스트 PASS.
- 검증 기록:
- 구현 시 이 Task 아래에 명령, 결과, 확인 내용을 한국어로 누적한다.
- 2026-06-27 구현: `ContentMainFragment.selectAllTab(type, sort)`를 추가하고 view 생성 전 호출은 `pendingAllTabSelection`에 저장한 뒤 `onViewCreated` 이후 적용하도록 했다.
- 2026-06-27 확인: pending 적용 시 `hasSelectedAllTab = true`를 먼저 설정한 뒤 `textTabBarContent.root.selectTab(CONTENT_TAB_ALL)``showContentTab(CONTENT_TAB_ALL)`을 호출해 `TextTabBarView.selectTab` listener가 유발할 수 있는 기본 `loadInitial()` 중복 호출을 피했다. 실제 데이터 재조회는 `contentAllTabViewModel.selectTypeAndSort(...)` 단일 경로로 수행한다.
- 2026-06-27 실행: `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.content.ContentMainFragmentSourceTest"`
- 결과: PASS.
- [ ] **Task 3.3: MainV2Activity 콘텐츠 전체 탭 진입 API 추가**
- [x] **Task 3.3: MainV2Activity 콘텐츠 전체 탭 진입 API 추가**
- 수정:
- `app/src/main/java/kr/co/vividnext/sodalive/v2/main/MainV2Activity.kt`
- `app/src/test/java/kr/co/vividnext/sodalive/v2/main/MainV2ActivitySourceTest.kt`
@@ -261,12 +269,16 @@
- Expected: MainV2 콘텐츠 전체 탭 routing source 테스트 PASS.
- 검증 기록:
- 구현 시 이 Task 아래에 명령, 결과, 확인 내용을 한국어로 누적한다.
- 2026-06-27 구현: `MainV2Activity.openContentAllTab(type, sort)`를 추가해 CONTENT 탭이 아니면 `viewModel.clickTab(MainV2Tab.CONTENT)``changeFragment(MainV2Tab.CONTENT)`로 콘텐츠 Fragment를 준비한 뒤 기존/new `ContentMainFragment.selectAllTab(type, sort)`를 호출하도록 했다.
- 2026-06-27 확인: 이미 CONTENT 탭인 경우 `changeFragment`를 직접 호출하지 않고 기존 `ContentMainFragment`를 찾아 `selectAllTab`만 호출하므로 fragment 중복 생성을 피한다.
- 2026-06-27 실행: `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.MainV2ActivitySourceTest"`
- 결과: PASS.
---
### Phase 4: 기존 콘텐츠 전체 탭 이동 섹션 연결
- [ ] **Task 4.1: 콘텐츠 추천 탭 기존 전체 탭 목적지 연결**
- [x] **Task 4.1: 콘텐츠 추천 탭 기존 전체 탭 목적지 연결**
- 수정:
- `app/src/main/java/kr/co/vividnext/sodalive/v2/main/content/ContentMainFragment.kt`
- 테스트:
@@ -283,6 +295,10 @@
- Expected: 기존 전체 탭 이동 섹션별 목적지 source 테스트 PASS.
- 검증 기록:
- 구현 시 이 Task 아래에 명령, 결과, 확인 내용을 한국어로 누적한다.
- 2026-06-27 구현: `오직 보이스온에서만!`, `새로 올라온 오디오`, `무료 오디오`, `포인트 오디오` chevron click listener를 `ensureMainV2NavigationAllowed`로 감싸고 `(activity as? MainV2Activity)?.openContentAllTab(...)` 경로에 연결했다.
- 2026-06-27 확인: routing destination은 각각 `ORIGINAL/LATEST`, `AUDIO/LATEST`, `FREE/POPULAR`, `POINT/POPULAR`로 지정했다. `New&Hot` 및 홈 `처음부터 함께 성장!` click listener는 Phase 4 범위에서 연결하지 않았다.
- 2026-06-27 실행: `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.content.ContentMainFragmentSourceTest"`
- 결과: PASS.
- [ ] **Task 4.2: 기존 전체 탭 이동 수동 검증**
- 확인:
@@ -293,6 +309,8 @@
- 콘텐츠 추천 탭 `New&Hot`과 홈 `처음부터 함께 성장!`은 chevron만 표시되고 신규 페이지 이동은 아직 연결되지 않음.
- 검증 기록:
- 구현 시 이 Task 아래에 테스트 기기/빌드 variant/API 응답 조건과 확인 결과를 한국어로 누적한다.
- 2026-06-27 상태: BLOCKED/미완료. 현재 작업 환경에서 Android 기기 또는 에뮬레이터를 통한 실제 화면 조작을 수행할 수 없어 수동 검증을 완료하지 못했다.
- 2026-06-27 대체 확인: source 테스트로 Phase 4 click listener 연결 대상과 미연결 대상(`New&Hot`)은 검증했으나, 실제 앱 화면에서 chevron 클릭 후 콘텐츠 `전체` 탭 UI/type/sort 표시까지는 확인하지 못했다.
---
@@ -526,3 +544,10 @@
## Verification Log
- 구현 완료 후 여러 Phase에 걸친 통합 검증, 회귀 검증, 최종 수동 확인 기록을 이 섹션에 누적한다.
- 2026-06-27 Phase 3~4 범위 실행: `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.content.ContentAllTabViewModelTest"` 결과 PASS.
- 2026-06-27 Phase 3~4 범위 실행: `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.content.ContentMainFragmentSourceTest"` 결과 PASS.
- 2026-06-27 Phase 3~4 범위 실행: `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.MainV2ActivitySourceTest"` 결과 PASS.
- 2026-06-27 Phase 3~4 범위 실행: `./gradlew :app:compileDebugKotlin` 결과 PASS.
- 2026-06-27 Phase 3~4 범위 실행: `./gradlew :app:ktlintCheck`는 신규 source 테스트의 긴 줄로 1회 실패 후 포맷 수정, 재실행 결과 PASS. 기존 `.editorconfig``disabled_rules` deprecation 경고는 출력되었으나 실패 원인은 아니었다.
- 2026-06-27 Phase 3~4 범위 실행: `git diff --check` 결과 PASS(출력 없음).
- 2026-06-27 수동 화면 검증: Android 기기/에뮬레이터를 사용할 수 없어 Phase 4 기존 전체 탭 이동 수동 클릭 검증은 완료하지 못했다. Task 4.2에 BLOCKED/미완료로 기록했다.