docs(content): 전체 탭 Phase 1-3 검증을 기록한다
This commit is contained in:
@@ -107,7 +107,7 @@
|
||||
|
||||
### Phase 1: 기존 구조 확인과 작업 경계 고정
|
||||
|
||||
- [ ] **Task 1.1: 기존 콘텐츠 탭 구조와 전체 탭 삽입 지점 확인**
|
||||
- [x] **Task 1.1: 기존 콘텐츠 탭 구조와 전체 탭 삽입 지점 확인**
|
||||
- 확인:
|
||||
- `app/src/main/java/kr/co/vividnext/sodalive/v2/main/content/ContentMainFragment.kt`
|
||||
- `app/src/main/res/layout/fragment_v2_main_content.xml`
|
||||
@@ -120,8 +120,9 @@
|
||||
- 검증:
|
||||
- Run: `rg -n "CONTENT_TAB_ALL|hideContentSurfaces|showRecommendationContent|showRankingContent|textTabBarContent" app/src/main/java/kr/co/vividnext/sodalive/v2/main/content app/src/main/res/layout/fragment_v2_main_content.xml`
|
||||
- Expected: Text Tab 전환과 기존 surface visibility 지점이 확인된다.
|
||||
- 2026-06-25: PASS. `ContentMainFragment.kt`에서 `CONTENT_TAB_ALL` 분기와 `hideContentSurfaces()`, 추천/랭킹 surface visibility 제어 지점을 확인했다.
|
||||
|
||||
- [ ] **Task 1.2: 재사용 위젯과 신규 adapter 경계 확정**
|
||||
- [x] **Task 1.2: 재사용 위젯과 신규 adapter 경계 확정**
|
||||
- 확인:
|
||||
- `app/src/main/java/kr/co/vividnext/sodalive/v2/widget/AudioContentCardView.kt`
|
||||
- `app/src/main/java/kr/co/vividnext/sodalive/v2/widget/SeriesContentCardView.kt`
|
||||
@@ -135,8 +136,9 @@
|
||||
- 검증:
|
||||
- Run: `rg -n "class CapsuleTabBarView|class CreatorChannelSortPopup|fun ContentSort.toLabelResId|class AudioContentCardView|class SeriesContentCardView" app/src/main/java/kr/co/vividnext/sodalive/v2`
|
||||
- Expected: 재사용 후보 클래스와 함수가 확인된다.
|
||||
- 2026-06-25: PASS. `CapsuleTabBarView`, `CreatorChannelSortPopup`, `ContentSort.toLabelResId()`, `AudioContentCardView`, `SeriesContentCardView` 위치를 확인했다.
|
||||
|
||||
- [ ] **Task 1.3: 제외 범위 확인**
|
||||
- [x] **Task 1.3: 제외 범위 확인**
|
||||
- 확인:
|
||||
- `docs/20260625_메인_콘텐츠_탭_내부_전체_탭/prd.md`
|
||||
- 제외:
|
||||
@@ -148,12 +150,13 @@
|
||||
- 검증:
|
||||
- Run: `rg -n '전체|연재|Non-Goals|오리지널 오디오|레거시|Open Questions' docs/20260625_메인_콘텐츠_탭_내부_전체_탭/prd.md`
|
||||
- Expected: 제외 범위와 Open Questions 없음 상태가 확인된다.
|
||||
- 2026-06-25: PASS. PRD에서 레거시 직접 수정 제외, 오리지널 오디오 제외, Figma `전체`/`연재` 칩 제외, Open Questions 섹션을 확인했다.
|
||||
|
||||
---
|
||||
|
||||
### Phase 2: API, DTO, Repository, enum/요일 mapping 추가
|
||||
|
||||
- [ ] **Task 2.1: API/DTO/Repository 계약 추가**
|
||||
- [x] **Task 2.1: API/DTO/Repository 계약 추가**
|
||||
- 생성:
|
||||
- `app/src/main/java/kr/co/vividnext/sodalive/v2/main/content/data/MainContentAllTabApi.kt`
|
||||
- `app/src/main/java/kr/co/vividnext/sodalive/v2/main/content/data/MainContentAllTabModels.kt`
|
||||
@@ -171,8 +174,9 @@
|
||||
- 검증:
|
||||
- Run: `./gradlew :app:compileDebugKotlin`
|
||||
- Expected: 신규 data layer와 DI 등록이 컴파일된다.
|
||||
- 2026-06-25: PASS. `MainContentAllTabApi`, DTO, Repository, `AppDI.kt` API/Repository 등록 후 `./gradlew :app:compileDebugKotlin` 성공.
|
||||
|
||||
- [ ] **Task 2.2: 타입 라벨과 요일 라벨 리소스 추가**
|
||||
- [x] **Task 2.2: 타입 라벨과 요일 라벨 리소스 추가**
|
||||
- 수정:
|
||||
- `app/src/main/res/values/strings.xml`
|
||||
- `app/src/main/res/values-en/strings.xml`
|
||||
@@ -196,8 +200,9 @@
|
||||
- 검증:
|
||||
- Run: `./gradlew :app:mergeDebugResources`
|
||||
- Expected: 3개 locale string resource가 중복 없이 merge된다.
|
||||
- 2026-06-25: PASS. `values`, `values-en`, `values-ja`에 전체 탭 type/day/empty/pagination 문자열 추가 후 `./gradlew :app:mergeDebugResources` 성공.
|
||||
|
||||
- [ ] **Task 2.3: 요일 mapping 테스트 작성**
|
||||
- [x] **Task 2.3: 요일 mapping 테스트 작성**
|
||||
- 생성:
|
||||
- `app/src/test/java/kr/co/vividnext/sodalive/v2/main/content/MainContentAllDayOfWeekMapperTest.kt`
|
||||
- 테스트 케이스:
|
||||
@@ -212,8 +217,9 @@
|
||||
- 검증:
|
||||
- Run: `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.content.MainContentAllDayOfWeekMapperTest"`
|
||||
- Expected: mapper 구현 전 RED 실패.
|
||||
- 2026-06-25: RED 확인. mapper 구현 전 테스트를 먼저 추가하고 실행했다. 병렬 Gradle 실행 중 incremental resource merge cache 오류로 실패가 발생해 이후 검증은 순차 실행으로 전환했다.
|
||||
|
||||
- [ ] **Task 2.4: 요일 mapping 구현**
|
||||
- [x] **Task 2.4: 요일 mapping 구현**
|
||||
- 생성:
|
||||
- `app/src/main/java/kr/co/vividnext/sodalive/v2/main/content/model/MainContentAllDayOfWeekMapper.kt`
|
||||
- 작업:
|
||||
@@ -224,12 +230,13 @@
|
||||
- 검증:
|
||||
- Run: `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.content.MainContentAllDayOfWeekMapperTest"`
|
||||
- Expected: PASS.
|
||||
- 2026-06-25: PASS. `currentDeviceDayOfWeek()`, `toContentAllDayLabelResId()`, `contentAllDayOfWeekOptions` 구현 후 대상 테스트 성공.
|
||||
|
||||
---
|
||||
|
||||
### Phase 3: UI model, mapper, SeriesContentCardView 성인 배지
|
||||
|
||||
- [ ] **Task 3.1: 전체 탭 mapper RED 테스트 작성**
|
||||
- [x] **Task 3.1: 전체 탭 mapper RED 테스트 작성**
|
||||
- 생성:
|
||||
- `app/src/test/java/kr/co/vividnext/sodalive/v2/main/content/MainContentAllTabMapperTest.kt`
|
||||
- 테스트 케이스:
|
||||
@@ -245,8 +252,9 @@
|
||||
- 검증:
|
||||
- Run: `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.content.MainContentAllTabMapperTest"`
|
||||
- Expected: UI model/mapper 구현 전 RED 실패.
|
||||
- 2026-06-25: RED 확인. UI model/mapper 구현 전 테스트를 먼저 추가하고 실행했다. 병렬 Gradle 실행 중 일부 명령이 compile 단계에서 timeout/cache 오류로 실패해 이후 검증은 순차 실행으로 전환했다.
|
||||
|
||||
- [ ] **Task 3.2: 전체 탭 UI model과 mapper 구현**
|
||||
- [x] **Task 3.2: 전체 탭 UI model과 mapper 구현**
|
||||
- 생성:
|
||||
- `app/src/main/java/kr/co/vividnext/sodalive/v2/main/content/model/MainContentAllTabUiState.kt`
|
||||
- `app/src/main/java/kr/co/vividnext/sodalive/v2/main/content/model/MainContentAllTabUiModels.kt`
|
||||
@@ -260,8 +268,9 @@
|
||||
- 검증:
|
||||
- Run: `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.content.MainContentAllTabMapperTest"`
|
||||
- Expected: PASS.
|
||||
- 2026-06-25: PASS. 전체 탭 UI state/model/mapper 구현 후 타입별 audios/series 선택, tag/adult/original/paging metadata 대상 테스트 성공.
|
||||
|
||||
- [ ] **Task 3.3: SeriesContentCardView 성인 배지 테스트 작성**
|
||||
- [x] **Task 3.3: SeriesContentCardView 성인 배지 테스트 작성**
|
||||
- 생성:
|
||||
- `app/src/test/java/kr/co/vividnext/sodalive/v2/widget/SeriesContentCardViewTest.kt`
|
||||
- 테스트 케이스:
|
||||
@@ -274,8 +283,9 @@
|
||||
- 검증:
|
||||
- Run: `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.widget.SeriesContentCardViewTest"`
|
||||
- Expected: adult badge 미구현으로 RED 실패.
|
||||
- 2026-06-25: RED 확인. adult badge 구현 전 테스트를 먼저 추가하고 실행했다. 병렬 Gradle 실행 중 incremental resource merge cache 오류로 실패가 발생해 이후 검증은 순차 실행으로 전환했다.
|
||||
|
||||
- [ ] **Task 3.4: SeriesContentCardView 성인 배지 구현**
|
||||
- [x] **Task 3.4: SeriesContentCardView 성인 배지 구현**
|
||||
- 수정:
|
||||
- `app/src/main/res/layout/view_series_content_card.xml`
|
||||
- `app/src/main/java/kr/co/vividnext/sodalive/v2/widget/SeriesContentCardView.kt`
|
||||
@@ -291,6 +301,7 @@
|
||||
- 검증:
|
||||
- Run: `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.widget.SeriesContentCardViewTest"`
|
||||
- Expected: PASS.
|
||||
- 2026-06-25: PASS. `view_series_content_card.xml`에 adult badge 추가 및 `SeriesContentCardView.setAdultVisible()`/size별 icon-layout 갱신 구현 후 대상 테스트 성공.
|
||||
|
||||
---
|
||||
|
||||
@@ -454,3 +465,22 @@
|
||||
|
||||
## Verification Log
|
||||
- 문서 작성 시점에는 구현 전이므로 실행한 빌드/테스트가 없다.
|
||||
- 2026-06-25 Phase 1~3 구현 검증:
|
||||
- PASS: `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.content.MainContentAllDayOfWeekMapperTest"`
|
||||
- PASS: `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.content.MainContentAllTabMapperTest"`
|
||||
- PASS: `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.widget.SeriesContentCardViewTest"`
|
||||
- PASS: `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.content.*"`
|
||||
- PASS: `./gradlew :app:mergeDebugResources`
|
||||
- PASS: `./gradlew :app:compileDebugKotlin`
|
||||
- PASS: `./gradlew :app:ktlintCheck` (`disabled_rules` deprecation warning만 출력)
|
||||
- PASS: `git diff --check`
|
||||
- 참고: Kotlin LSP는 로컬에 `kotlin-lsp`가 설치되어 있지 않아 `lsp_diagnostics`를 사용할 수 없었고, `compileDebugKotlin`으로 대체 검증했다.
|
||||
- 2026-06-25 Phase 1~3 코드 리뷰 및 재검증:
|
||||
- PASS: Phase 1~3 변경 범위를 PRD와 계획/TASK 문서 기준으로 검토했고, 차단 이슈는 발견하지 않았다.
|
||||
- PASS: `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.content.*"`
|
||||
- PASS: `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.widget.SeriesContentCardViewTest"`
|
||||
- PASS: `./gradlew :app:mergeDebugResources`
|
||||
- PASS: `./gradlew :app:compileDebugKotlin`
|
||||
- PASS: `./gradlew :app:ktlintCheck`
|
||||
- PASS: `git diff --check`
|
||||
- 참고: `./gradlew :app:mergeDebugResources`는 최초 실행 시 Gradle wrapper lock 파일 접근이 샌드박스에서 차단되어 실패했고, 승인 실행으로 재검증해 성공했다.
|
||||
|
||||
Reference in New Issue
Block a user