docs(content): FIRST 오디오 전체보기 제거를 기록한다
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
|
||||
> **For agentic workers:** REQUIRED SUB-SKILL: 구현 시 `superpowers:subagent-driven-development` 또는 `superpowers:executing-plans`를 사용해 task 단위로 진행한다. 각 단계는 체크박스(`- [ ]`)로 추적하고, 완료 즉시 `- [x]`로 갱신한다. 구현 범위 변경이 생기면 이 문서를 먼저 수정한 뒤 코드에 반영한다.
|
||||
|
||||
**Goal:** 홈/콘텐츠 추천 섹션의 전체보기 chevron을 연결하고, 기존 콘텐츠 `전체` 탭 이동을 먼저 적용한 뒤 `New&Hot` 및 `처음부터 함께 성장!` 전용 신규 전체보기 화면을 제공한다.
|
||||
**Goal:** 콘텐츠 추천 섹션의 전체보기 chevron을 연결하고, 기존 콘텐츠 `전체` 탭 이동을 먼저 적용한 뒤 `New&Hot` 전용 신규 전체보기 화면을 제공한다.
|
||||
|
||||
**Architecture:** 구현 순서는 `chevron 표시 -> 기존 콘텐츠 전체 탭 이동 -> 신규 전체보기 페이지/API`로 고정한다. 기존 화면 이동은 `MainV2Activity`, `ContentMainFragment`, `ContentAllTabViewModel`에 작은 public navigation contract를 추가해 처리한다. 신규 전체보기 화면은 마지막 단계에서 `kr.co.vividnext.sodalive.v2.main.content.overview` 하위 Activity/ViewModel/API/Repository/DTO/UI model/adapter로 격리한다.
|
||||
|
||||
@@ -13,11 +13,10 @@
|
||||
## 전제와 성공 기준
|
||||
- PRD: `docs/20260627_콘텐츠_전체보기/prd.md`
|
||||
- 구현 순서:
|
||||
- 1순위: 홈/콘텐츠 추천 섹션 chevron 표시.
|
||||
- 1순위: 콘텐츠 추천 섹션 chevron 표시.
|
||||
- 2순위: 신규 페이지가 필요 없는 섹션을 기존 콘텐츠 `전체` 탭으로 이동.
|
||||
- 3순위: 신규 콘텐츠 전체보기 페이지/API 생성 및 신규 페이지 대상 섹션 이동.
|
||||
- 전체보기 chevron 표시 섹션:
|
||||
- 홈 추천 탭: `처음부터 함께 성장!`
|
||||
- 콘텐츠 추천 탭: `오직 보이스온에서만!`, `새로 올라온 오디오`, `New&Hot`, `무료 오디오`, `포인트 오디오`
|
||||
- 기존 콘텐츠 `전체` 탭 이동 섹션:
|
||||
- `오직 보이스온에서만!` -> 콘텐츠 탭 `전체` -> `오리지널` 카테고리
|
||||
@@ -25,14 +24,13 @@
|
||||
- `무료 오디오` -> 콘텐츠 탭 `전체` -> `무료` 카테고리 -> `인기순`
|
||||
- `포인트 오디오` -> 콘텐츠 탭 `전체` -> `포인트` 카테고리 -> `인기순`
|
||||
- 신규 전체보기 페이지 이동 섹션:
|
||||
- 홈 추천 탭 `처음부터 함께 성장!` -> 신규 콘텐츠 전체보기 -> `FIRST_AUDIO_CONTENT`
|
||||
- 콘텐츠 추천 탭 `New&Hot` -> 신규 콘텐츠 전체보기 -> `NEW_AND_HOT_AUDIO`
|
||||
- `댓글 많은 오디오`, `추천 오디오`에는 chevron을 표시하지 않는다.
|
||||
- 신규 API endpoint는 `GET /api/v2/contents`이다.
|
||||
- 신규 API query parameter key는 소문자 `page`, `size`, `type`만 사용한다.
|
||||
- 신규 API 기본값은 `page=0`, `size=20`, `type=NEW_AND_HOT_AUDIO`다.
|
||||
- 앱 구현 DTO annotation은 Gson `@SerializedName`을 사용한다.
|
||||
- 신규 전체보기 화면 title은 `NEW_AND_HOT_AUDIO`일 때 `New&Hot`, `FIRST_AUDIO_CONTENT`일 때 `처음부터 함께 성장!`이다.
|
||||
- 신규 전체보기 화면 title은 `NEW_AND_HOT_AUDIO`일 때 `New&Hot`이다.
|
||||
- 신규 전체보기 화면은 Figma node `482:15105` 기준 2열 오디오 카드 grid를 사용한다.
|
||||
- 구현 완료 후 최소 다음 명령을 실행한다.
|
||||
- `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.content.*"`
|
||||
@@ -76,8 +74,6 @@
|
||||
## 파일 구조
|
||||
|
||||
### 기존 화면 이동 선행 범위
|
||||
- Modify: `app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/HomeMainFragment.kt`
|
||||
- `처음부터 함께 성장!` title chevron을 먼저 표시한다. 신규 페이지 이동은 Phase 7에서 연결한다.
|
||||
- Modify: `app/src/main/java/kr/co/vividnext/sodalive/v2/main/content/ContentMainFragment.kt`
|
||||
- 콘텐츠 추천 섹션 chevron 표시, 기존 콘텐츠 `전체` 탭 이동, 신규 페이지 이동을 단계별로 추가한다.
|
||||
- Modify: `app/src/main/java/kr/co/vividnext/sodalive/v2/main/content/ContentAllTabViewModel.kt`
|
||||
@@ -88,8 +84,6 @@
|
||||
- 콘텐츠 추천 섹션 chevron/routing/source를 검증한다.
|
||||
- Modify: `app/src/test/java/kr/co/vividnext/sodalive/v2/main/content/ContentAllTabViewModelTest.kt`
|
||||
- 외부 type/sort 선택 API를 검증한다.
|
||||
- Create: `app/src/test/java/kr/co/vividnext/sodalive/v2/main/home/HomeMainFragmentSourceTest.kt`
|
||||
- 홈 `처음부터 함께 성장!` chevron/source를 검증한다.
|
||||
- Modify: `app/src/test/java/kr/co/vividnext/sodalive/v2/main/MainV2ActivitySourceTest.kt`
|
||||
- 콘텐츠 탭 내부 `전체` type/sort routing contract를 검증한다.
|
||||
|
||||
@@ -710,3 +704,9 @@
|
||||
- 2026-06-27 Phase 8 통합 검증 실행: `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.content.overview.*"` 결과 PASS.
|
||||
- 2026-06-27 Phase 8 빌드/리소스/린트 검증 실행: `./gradlew :app:mergeDebugResources`, `./gradlew :app:compileDebugKotlin`, `./gradlew :app:ktlintCheck`, `git diff --check` 결과 모두 PASS.
|
||||
- 2026-06-27 Phase 8 수동 화면 검증: Android 기기/에뮬레이터를 사용할 수 없어 실제 화면 조작 검증은 BLOCKED로 남겼다. 자동 테스트와 빌드 검증은 모두 통과했다.
|
||||
- 2026-06-29: 홈 추천 탭 `처음부터 함께 성장!` 섹션 제거에 따라 `FIRST_AUDIO_CONTENT` 신규 전체보기 진입을 제거했다. 회귀 검증으로 `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.*" --tests "kr.co.vividnext.sodalive.v2.main.content.overview.*" :app:mergeDebugResources :app:compileDebugKotlin :app:ktlintCheck`가 BUILD SUCCESSFUL임을 확인했고, `git diff --check` 출력 없음과 `app/src/main` production 참조 제거를 확인했다. Android 기기/에뮬레이터 접근이 없어 실제 화면 조작은 수행하지 못했다.
|
||||
|
||||
## 2026-06-29 변경: 홈 `처음부터 함께 성장!` 제거 반영
|
||||
- 홈 추천 탭 `처음부터 함께 성장!` 섹션 제거에 따라 `FIRST_AUDIO_CONTENT` 신규 전체보기 진입도 제거한다.
|
||||
- 현재 신규 전체보기 유지 대상은 콘텐츠 추천 탭 `New&Hot` -> `NEW_AND_HOT_AUDIO`뿐이다.
|
||||
- 기존 Phase별 완료 로그는 당시 검증 이력으로 유지하며, 후속 구현은 이 변경 항목을 현재 계약으로 우선한다.
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# PRD: 콘텐츠 전체보기
|
||||
|
||||
## 1. Overview
|
||||
홈 추천 탭과 콘텐츠 추천 탭의 일부 섹션에서 `전체보기` 진입을 제공하고, `New&Hot` 및 `처음부터 함께 성장!`은 신규 콘텐츠 전체보기 화면에서 `GET /api/v2/contents` API로 페이징 목록을 표시한다.
|
||||
콘텐츠 추천 탭의 일부 섹션에서 `전체보기` 진입을 제공하고, `New&Hot`은 신규 콘텐츠 전체보기 화면에서 `GET /api/v2/contents` API로 페이징 목록을 표시한다.
|
||||
|
||||
작성일: 2026-06-27
|
||||
|
||||
@@ -9,18 +9,17 @@
|
||||
|
||||
## 2. Problem
|
||||
- 콘텐츠 추천 탭의 섹션 타이틀 우측 chevron이 현재 전체보기 이동 정책과 연결되어 있지 않다.
|
||||
- `New&Hot`과 `처음부터 함께 성장!`은 기존 콘텐츠 탭 내부 `전체` 탭의 카테고리/정렬 조합으로 표현하지 않고, 별도 API 기반 전체보기 화면이 필요하다.
|
||||
- `New&Hot`은 기존 콘텐츠 탭 내부 `전체` 탭의 카테고리/정렬 조합으로 표현하지 않고, 별도 API 기반 전체보기 화면이 필요하다.
|
||||
- 그 외 콘텐츠 추천 섹션은 신규 화면을 만들지 않고 기존 `콘텐츠 탭 - 전체`의 특정 카테고리/정렬 상태로 이동해야 한다.
|
||||
- 동일한 오디오 카드, 태그, 페이징 목록 UI가 이미 V2 패키지 하위에 있으므로 신규 UI를 중복 작성하지 않도록 재사용 후보를 먼저 정리해야 한다.
|
||||
|
||||
---
|
||||
|
||||
## 3. Goals
|
||||
- 홈 추천 탭의 `처음부터 함께 성장!` 섹션 우측에 chevron을 표시하고 신규 콘텐츠 전체보기 화면으로 이동한다.
|
||||
- 콘텐츠 추천 탭에서 전체보기가 필요한 섹션 제목 우측에 chevron을 표시한다.
|
||||
- 콘텐츠 추천 탭의 `New&Hot` 섹션은 신규 콘텐츠 전체보기 화면으로 이동한다.
|
||||
- 콘텐츠 추천 탭의 `오직 보이스온에서만!`, `새로 올라온 오디오`, `무료 오디오`, `포인트 오디오`는 기존 `콘텐츠 탭 - 전체`의 지정 상태로 이동한다.
|
||||
- 신규 콘텐츠 전체보기 화면은 `type = NEW_AND_HOT_AUDIO` 또는 `type = FIRST_AUDIO_CONTENT`로 `GET /api/v2/contents`를 호출한다.
|
||||
- 신규 콘텐츠 전체보기 화면은 `type = NEW_AND_HOT_AUDIO`로 `GET /api/v2/contents`를 호출한다.
|
||||
- 신규 콘텐츠 전체보기 화면은 Figma node `482:15105`의 `detail_ado_001` 구조를 기준으로 검은 배경, title bar, 2열 오디오 카드 그리드, 스크롤 페이징을 제공한다.
|
||||
- V2 패키지 하위 기존 위젯 중 재사용 가능한 후보를 문서에 기록한다.
|
||||
|
||||
@@ -32,20 +31,18 @@
|
||||
- 레거시 화면 또는 레거시 API 파일을 직접 수정하지 않는다.
|
||||
- `GET /api/v2/audio/contents` API 계약은 변경하지 않는다.
|
||||
- 신규 콘텐츠 전체보기 화면에 별도 정렬, 필터, 검색, pull-to-refresh, skeleton loading을 추가하지 않는다.
|
||||
- `New&Hot`과 `처음부터 함께 성장!` 외 섹션을 신규 전체보기 API로 조회하지 않는다.
|
||||
- `New&Hot` 외 섹션을 신규 전체보기 API로 조회하지 않는다.
|
||||
- Figma localhost asset URL을 앱 코드에 직접 의존하지 않는다.
|
||||
|
||||
---
|
||||
|
||||
## 5. Target Users
|
||||
- 홈 추천 탭에서 `처음부터 함께 성장!` 콘텐츠를 더 많이 탐색하려는 사용자.
|
||||
- 콘텐츠 추천 탭에서 `New&Hot`, 최신 오디오, 무료/포인트 오디오, 오리지널 콘텐츠를 섹션별로 더 보고 싶은 사용자.
|
||||
- V2 메인 홈/콘텐츠 화면과 신규 전체보기 화면을 구현/유지보수하는 Android 개발자.
|
||||
|
||||
---
|
||||
|
||||
## 6. User Stories
|
||||
- 사용자는 홈 추천 탭의 `처음부터 함께 성장!` 섹션 제목 우측 chevron을 눌러 같은 성격의 콘텐츠 전체 목록을 보고 싶다.
|
||||
- 사용자는 콘텐츠 추천 탭의 `New&Hot` 섹션 제목 우측 chevron을 눌러 `New&Hot` 전체 목록을 보고 싶다.
|
||||
- 사용자는 콘텐츠 추천 탭의 `오직 보이스온에서만!`을 누르면 콘텐츠 탭의 `전체` 내부에서 오리지널 카테고리가 선택된 화면으로 이동하길 기대한다.
|
||||
- 사용자는 콘텐츠 추천 탭의 `새로 올라온 오디오`를 누르면 콘텐츠 탭의 `전체` 내부에서 오디오 카테고리가 선택된 화면으로 이동하길 기대한다.
|
||||
@@ -59,7 +56,6 @@
|
||||
### Feature A. 전체보기 섹션 chevron 표시
|
||||
#### Requirements
|
||||
- 전체보기 진입이 필요한 섹션 제목 우측에는 `view_section_title.xml`의 `iv_section_title_chevron`을 표시한다.
|
||||
- 홈 추천 탭에서는 `처음부터 함께 성장!` 섹션에 chevron을 표시하고, 클릭 시 신규 콘텐츠 전체보기 화면에 `type = FIRST_AUDIO_CONTENT`로 진입한다.
|
||||
- 콘텐츠 추천 탭에서는 아래 섹션에 chevron을 표시한다.
|
||||
- `오직 보이스온에서만!`
|
||||
- `새로 올라온 오디오`
|
||||
@@ -98,7 +94,6 @@
|
||||
- 신규 화면은 기존 로직 수정이 아닌 신규 `Activity`, `ViewModel`, API, Repository, DTO, adapter/helper로 구현한다면 `kr.co.vividnext.sodalive.v2` 패키지 하위에 작성한다.
|
||||
- 화면 title bar 제목은 진입 type에 따라 아래처럼 표시한다.
|
||||
- `NEW_AND_HOT_AUDIO`: `New&Hot`
|
||||
- `FIRST_AUDIO_CONTENT`: `처음부터 함께 성장!`
|
||||
- title bar는 검은 배경, 좌측 back chevron, 22sp bold 제목 구조를 따른다.
|
||||
- 콘텐츠 목록은 Figma node `482:15105` 기준으로 2열 오디오 카드 그리드로 표시한다.
|
||||
- 카드에는 썸네일, 제목, 크리에이터 닉네임, 무료/포인트/FIRST/오리지널/성인 태그를 응답 값에 따라 표시한다.
|
||||
@@ -152,8 +147,7 @@ data class ContentOverviewPageResponse(
|
||||
)
|
||||
|
||||
enum class ContentOverviewType {
|
||||
NEW_AND_HOT_AUDIO,
|
||||
FIRST_AUDIO_CONTENT
|
||||
NEW_AND_HOT_AUDIO
|
||||
}
|
||||
|
||||
data class ContentOverviewItemResponse(
|
||||
@@ -213,8 +207,6 @@ data class ContentOverviewItemResponse(
|
||||
- 추천 탭의 가로 오디오 카드 바인딩 패턴을 참고할 수 있다.
|
||||
- `kr.co.vividnext.sodalive.v2.main.content.ui.ContentNewAndHotAdapter`
|
||||
- `New&Hot` 섹션의 리스트형 표현에는 이미 사용 중이지만, 신규 전체보기 2열 grid에는 직접 재사용보다 item mapping/tag binding 참고 후보이다.
|
||||
- `kr.co.vividnext.sodalive.v2.main.home.ui.HomeFirstAudioAdapter`
|
||||
- 홈 `처음부터 함께 성장!` 섹션의 FIRST/point/free 태그 바인딩 패턴 참고 후보이다.
|
||||
- `kr.co.vividnext.sodalive.v2.main.content.ContentAllTabViewModel`
|
||||
- page/size/hasNext 기반 페이징 상태 관리 패턴 참고 후보이다.
|
||||
- `kr.co.vividnext.sodalive.v2.main.content.data.MainContentAllTabApi`
|
||||
@@ -236,7 +228,6 @@ data class ContentOverviewItemResponse(
|
||||
---
|
||||
|
||||
## 10. Metrics
|
||||
- 홈 추천 탭 `처음부터 함께 성장!` chevron 클릭 수.
|
||||
- 콘텐츠 추천 탭 섹션별 chevron 클릭 수.
|
||||
- 신규 콘텐츠 전체보기 화면 진입 수.
|
||||
- 신규 콘텐츠 전체보기 화면의 다음 페이지 로드 성공/실패 수.
|
||||
@@ -246,3 +237,7 @@ data class ContentOverviewItemResponse(
|
||||
|
||||
## 11. Open Questions
|
||||
- 기존 `ContentMainFragment` 상태를 외부에서 특정 내부 탭/카테고리/정렬로 열기 위한 public navigation contract가 충분한지 구현 계획에서 확인해야 한다.
|
||||
|
||||
### 2026-06-29 변경: 홈 `처음부터 함께 성장!` 전체보기 제거
|
||||
- 홈 추천 탭의 `처음부터 함께 성장!` 섹션 제거에 따라 홈에서 `ContentOverviewType.FIRST_AUDIO_CONTENT`로 진입하는 경로를 제거한다.
|
||||
- 신규 콘텐츠 전체보기 화면의 현재 진입 type은 콘텐츠 추천 탭 `New&Hot`의 `NEW_AND_HOT_AUDIO`만 유지한다.
|
||||
|
||||
Reference in New Issue
Block a user