docs(home): 최근 데뷔 요구사항을 기록한다
This commit is contained in:
@@ -275,6 +275,19 @@
|
|||||||
- `rv_home_recent_debut_creators` 시작 padding `14dp`, item gap `4dp` 적용
|
- `rv_home_recent_debut_creators` 시작 padding `14dp`, item gap `4dp` 적용
|
||||||
- 검증: `HomeMainFragmentLayoutTest`에 recent debut 카드 치수와 목록 간격 회귀 테스트를 추가한다.
|
- 검증: `HomeMainFragmentLayoutTest`에 recent debut 카드 치수와 목록 간격 회귀 테스트를 추가한다.
|
||||||
|
|
||||||
|
- [x] **Task 6.8.1: 최근 데뷔한 크리에이터 item 축소 및 root clipping 보완**
|
||||||
|
- 기준: Figma `24:5534`, item `24:5537`
|
||||||
|
- 수정: `docs/20260601_메인_홈_추천_UI와_API_연동/prd.md`
|
||||||
|
- 수정: `docs/20260601_메인_홈_추천_UI와_API_연동/plan-task.md`
|
||||||
|
- 수정: `app/src/main/res/layout/item_home_recent_debut_creator.xml`
|
||||||
|
- 수정: `app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/ui/HomeRecentDebutCreatorAdapter.kt`
|
||||||
|
- 수정: `app/src/test/java/kr/co/vividnext/sodalive/v2/main/home/HomeMainFragmentLayoutTest.kt`
|
||||||
|
- 구현 내용:
|
||||||
|
- item root를 기존 `205dp x 259dp` 비율 기준 `185dp x 234dp`로 축소한다.
|
||||||
|
- `ImageView`는 root 전체를 채우도록 `match_parent`로 맞춘다.
|
||||||
|
- adapter ViewHolder에서 item root에 `clipToOutline=true`와 `ViewOutlineProvider.setRoundRect(..., radius_14)`를 적용해 이미지, dim gradient, 닉네임 전체가 `14dp` radius 안에서 잘리게 한다.
|
||||||
|
- 검증: `HomeMainFragmentLayoutTest`의 recent debut 카드 테스트를 먼저 `185dp x 234dp`, adapter root clipping 기대값으로 바꿔 RED를 확인한 뒤 동일 테스트를 GREEN으로 전환한다.
|
||||||
|
|
||||||
- [x] **Task 6.9: 처음부터 함께 성장! Figma 정합 수정**
|
- [x] **Task 6.9: 처음부터 함께 성장! Figma 정합 수정**
|
||||||
- 기준: Figma `24:5539`
|
- 기준: Figma `24:5539`
|
||||||
- 생성: `app/src/main/res/layout/item_home_first_audio_content.xml`
|
- 생성: `app/src/main/res/layout/item_home_first_audio_content.xml`
|
||||||
@@ -651,6 +664,9 @@
|
|||||||
- 2026-06-02: Figma `24:5534` 기준 `최근 데뷔한 크리에이터` 섹션을 확인해 기존 `112dp` 세로 원형 profile item이 디자인과 다름을 확인했다. `HomeMainFragmentLayoutTest`에 recent debut 카드 치수와 목록 간격 테스트를 먼저 추가했고, 기존 구현에서 `recent debut creator item matches figma card dimensions`, `home recent debut section matches figma list spacing` 두 테스트가 실패하는 RED 상태를 확인했다.
|
- 2026-06-02: Figma `24:5534` 기준 `최근 데뷔한 크리에이터` 섹션을 확인해 기존 `112dp` 세로 원형 profile item이 디자인과 다름을 확인했다. `HomeMainFragmentLayoutTest`에 recent debut 카드 치수와 목록 간격 테스트를 먼저 추가했고, 기존 구현에서 `recent debut creator item matches figma card dimensions`, `home recent debut section matches figma list spacing` 두 테스트가 실패하는 RED 상태를 확인했다.
|
||||||
- 2026-06-02: `item_home_recent_debut_creator.xml`을 `205dp x 259dp` 이미지 카드 구조로 변경하고, radius `14dp` 배경/하단 dim gradient/`24sp` bold 중앙 닉네임을 적용했다. `HomeRecentDebutCreatorAdapter`에는 최근 데뷔 전용 `4dp` item gap을 적용했고, `rv_home_recent_debut_creators` 시작 padding을 Figma 기준 `14dp`로 맞췄다. 동일 targeted 테스트 재실행 결과 BUILD SUCCESSFUL을 확인했다.
|
- 2026-06-02: `item_home_recent_debut_creator.xml`을 `205dp x 259dp` 이미지 카드 구조로 변경하고, radius `14dp` 배경/하단 dim gradient/`24sp` bold 중앙 닉네임을 적용했다. `HomeRecentDebutCreatorAdapter`에는 최근 데뷔 전용 `4dp` item gap을 적용했고, `rv_home_recent_debut_creators` 시작 padding을 Figma 기준 `14dp`로 맞췄다. 동일 targeted 테스트 재실행 결과 BUILD SUCCESSFUL을 확인했다.
|
||||||
- 2026-06-02: 최근 데뷔 수정 후 `./gradlew :app:mergeDebugResources`, `./gradlew :app:compileDebugKotlin`, `./gradlew :app:ktlintCheck`는 BUILD SUCCESSFUL을 확인했다. `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.HomeMainFragmentLayoutTest"`는 이번 최근 데뷔 테스트는 통과했지만 기존 `home live section matches figma row dimensions`가 `rv_home_lives` 높이 기대값(`102dp`)과 현재 XML `wrap_content`가 맞지 않아 실패했다. 이후 사용자 확인에 따라 `rv_home_lives` 높이는 아이템 높이를 따라가야 하므로 `wrap_content`가 올바른 계약으로 정정했다.
|
- 2026-06-02: 최근 데뷔 수정 후 `./gradlew :app:mergeDebugResources`, `./gradlew :app:compileDebugKotlin`, `./gradlew :app:ktlintCheck`는 BUILD SUCCESSFUL을 확인했다. `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.HomeMainFragmentLayoutTest"`는 이번 최근 데뷔 테스트는 통과했지만 기존 `home live section matches figma row dimensions`가 `rv_home_lives` 높이 기대값(`102dp`)과 현재 XML `wrap_content`가 맞지 않아 실패했다. 이후 사용자 확인에 따라 `rv_home_lives` 높이는 아이템 높이를 따라가야 하므로 `wrap_content`가 올바른 계약으로 정정했다.
|
||||||
|
- 2026-06-29: 사용자 추가 요청에 따라 Figma `24:5534`, `24:5537` 기준 최근 데뷔 item의 전체 rounded clipping과 축소 치수를 보완했다. `HomeMainFragmentLayoutTest`의 recent debut 테스트를 `185dp x 234dp`, root `clipToOutline`, image `match_parent` 기대값으로 먼저 변경했고, 기존 `205dp x 259dp` 구현에서 `HomeMainFragmentLayoutTest.kt:232` assertion 실패로 RED를 확인했다.
|
||||||
|
- 2026-06-29: GREEN 구현으로 `item_home_recent_debut_creator.xml` root를 `185dp x 234dp`로 축소하고 image를 `match_parent`로 변경했다. 저장소 clipping 패턴에 맞춰 `HomeRecentDebutCreatorAdapter` ViewHolder에서 item root에 `clipToOutline=true`와 `ViewOutlineProvider.setRoundRect(..., radius_14)`를 적용해 image, dim gradient, nickname 전체가 같은 radius로 잘리게 했다. 검증으로 `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.HomeMainFragmentLayoutTest.recent debut creator item matches figma card dimensions" --tests "kr.co.vividnext.sodalive.v2.main.home.HomeMainFragmentLayoutTest.home recent debut section matches figma list spacing"`, `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.HomeMainFragmentLayoutTest"`, `./gradlew :app:mergeDebugResources :app:compileDebugKotlin :app:ktlintCheck`가 모두 BUILD SUCCESSFUL임을 확인했다. `lsp_diagnostics`는 Kotlin/XML LSP 도구가 이 환경에 제공되지 않아 Gradle compile/test/ktlint로 보완했다.
|
||||||
|
- 2026-06-29: 리뷰에서 adapter가 새 `RecyclerView.LayoutParams(WRAP_CONTENT, WRAP_CONTENT)`를 만들어 XML root의 `185dp x 234dp` 치수 계약을 실제 RecyclerView 경로에서 약화할 수 있다는 차단 이슈를 확인했다. `HomeRecentDebutCreatorAdapter`가 inflate된 root layout params를 `RecyclerView.LayoutParams(existing)`로 보존하고 `marginEnd`만 추가하도록 수정했으며, `HomeMainFragmentLayoutTest`의 adapter 경로 검증에 `185dp x 234dp` assertion을 추가했다. 재검증으로 targeted recent debut tests, 전체 `HomeMainFragmentLayoutTest`, `./gradlew :app:mergeDebugResources :app:compileDebugKotlin :app:ktlintCheck`가 모두 BUILD SUCCESSFUL임을 확인했다. 보안 리뷰가 지적한 `app/build.gradle release debuggable true`는 현재 워크트리에 존재하는 이번 작업 범위 밖 변경으로, 사용자 승인 없이 수정하지 않았다.
|
||||||
- 2026-06-02: Figma `24:5539` 기준 `처음부터 함께 성장!` 섹션을 확인해 기존 `AudioContentCardView` 기반 item이 전용 profile row 구조와 item gap을 재현하기 어렵다는 점을 확인했다. `HomeMainFragmentLayoutTest`에 first audio 전용 item 치수, 목록 간격, tag visibility 테스트를 먼저 추가했고, 구현 전 `item_home_first_audio_content`와 관련 view ID 미존재로 RED 컴파일 실패를 확인했다.
|
- 2026-06-02: Figma `24:5539` 기준 `처음부터 함께 성장!` 섹션을 확인해 기존 `AudioContentCardView` 기반 item이 전용 profile row 구조와 item gap을 재현하기 어렵다는 점을 확인했다. `HomeMainFragmentLayoutTest`에 first audio 전용 item 치수, 목록 간격, tag visibility 테스트를 먼저 추가했고, 구현 전 `item_home_first_audio_content`와 관련 view ID 미존재로 RED 컴파일 실패를 확인했다.
|
||||||
- 2026-06-02: `item_home_first_audio_content.xml`을 추가하고 `HomeFirstAudioAdapter`가 `AudioContentCardView` 대신 전용 item을 inflate하도록 변경했다. 썸네일은 `185dp x 185dp`, creator profile은 `42dp x 42dp`, item gap은 `4dp`로 맞췄고, `First`/`Point`/`Free` tag visibility는 기존 `tags` 모델로 바인딩했다. `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.HomeMainFragmentLayoutTest"` 재실행 결과 BUILD SUCCESSFUL을 확인했다.
|
- 2026-06-02: `item_home_first_audio_content.xml`을 추가하고 `HomeFirstAudioAdapter`가 `AudioContentCardView` 대신 전용 item을 inflate하도록 변경했다. 썸네일은 `185dp x 185dp`, creator profile은 `42dp x 42dp`, item gap은 `4dp`로 맞췄고, `First`/`Point`/`Free` tag visibility는 기존 `tags` 모델로 바인딩했다. `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.HomeMainFragmentLayoutTest"` 재실행 결과 BUILD SUCCESSFUL을 확인했다.
|
||||||
- 2026-06-02: 리뷰에서 first audio 썸네일 이미지 clipping과 `Free` tag visibility 테스트 누락이 차단 이슈로 지적되어 `item_home_first_audio_content.xml`에 `clipToOutline="true"`를 추가하고 `HomeMainFragmentLayoutTest`에서 `First`/`Point`/`Free` 개별 tag visibility를 모두 검증하도록 보강했다. 이후 `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.HomeMainFragmentLayoutTest"`, `./gradlew :app:mergeDebugResources`, `./gradlew :app:compileDebugKotlin`, `./gradlew :app:ktlintCheck`, `./gradlew :app:testDebugUnitTest`를 실행했고 모두 BUILD SUCCESSFUL을 확인했다.
|
- 2026-06-02: 리뷰에서 first audio 썸네일 이미지 clipping과 `Free` tag visibility 테스트 누락이 차단 이슈로 지적되어 `item_home_first_audio_content.xml`에 `clipToOutline="true"`를 추가하고 `HomeMainFragmentLayoutTest`에서 `First`/`Point`/`Free` 개별 tag visibility를 모두 검증하도록 보강했다. 이후 `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.HomeMainFragmentLayoutTest"`, `./gradlew :app:mergeDebugResources`, `./gradlew :app:compileDebugKotlin`, `./gradlew :app:ktlintCheck`, `./gradlew :app:testDebugUnitTest`를 실행했고 모두 BUILD SUCCESSFUL을 확인했다.
|
||||||
|
|||||||
@@ -277,7 +277,7 @@ HomeRecommendation 화면
|
|||||||
├─ 최근 데뷔한 크리에이터: recentDebutCreators
|
├─ 최근 데뷔한 크리에이터: recentDebutCreators
|
||||||
│ ├─ Figma instance: section-title, creater
|
│ ├─ Figma instance: section-title, creater
|
||||||
│ ├─ 재사용: view_section_title
|
│ ├─ 재사용: view_section_title
|
||||||
│ └─ 신규: 최근 데뷔 크리에이터 카드 UI
|
│ └─ 신규: 최근 데뷔 크리에이터 카드 UI, item root `185dp x 234dp`, radius `14dp` 전체 clip
|
||||||
├─ 첫 오디오 콘텐츠: firstAudioContents
|
├─ 첫 오디오 콘텐츠: firstAudioContents
|
||||||
│ ├─ Figma instance: contents, profile
|
│ ├─ Figma instance: contents, profile
|
||||||
│ ├─ 재사용: v2.widget.AudioContentCardView
|
│ ├─ 재사용: v2.widget.AudioContentCardView
|
||||||
@@ -348,6 +348,7 @@ HomeRecommendation 화면
|
|||||||
- 세로 스크롤 중에도 `TextTabBarView`가 화면에 남아 있어야 하므로, 스크롤 컨테이너는 `TextTabBarView` 아래 content 영역에만 적용한다.
|
- 세로 스크롤 중에도 `TextTabBarView`가 화면에 남아 있어야 하므로, 스크롤 컨테이너는 `TextTabBarView` 아래 content 영역에만 적용한다.
|
||||||
- 상단 라이브 목록, 배너, 추천 카드들은 어두운 홈 배경 위에서 기존 v2 widget 색상/typography/radius를 유지한다.
|
- 상단 라이브 목록, 배너, 추천 카드들은 어두운 홈 배경 위에서 기존 v2 widget 색상/typography/radius를 유지한다.
|
||||||
- 각 섹션 제목은 기존 `view_section_title`을 사용한다.
|
- 각 섹션 제목은 기존 `view_section_title`을 사용한다.
|
||||||
|
- `최근 데뷔한 크리에이터` item은 기존 `205dp x 259dp` 비율을 유지해 `185dp x 234dp`로 축소하고, 이미지뿐 아니라 dim gradient와 닉네임을 포함한 item root 전체가 `14dp` rounded corner로 잘려야 한다.
|
||||||
- `최근 응원이 많은 크리에이터`, `장르별 크리에이터`의 모두 팔로우 버튼은 success 전/후 상태가 명확히 구분되어야 한다.
|
- `최근 응원이 많은 크리에이터`, `장르별 크리에이터`의 모두 팔로우 버튼은 success 전/후 상태가 명확히 구분되어야 한다.
|
||||||
- 인기 커뮤니티는 keyword 없이 본문, 선택적 이미지, 유료 잠금 상태, reaction row를 보여야 한다.
|
- 인기 커뮤니티는 keyword 없이 본문, 선택적 이미지, 유료 잠금 상태, reaction row를 보여야 한다.
|
||||||
- 유료 미구매 커뮤니티 이미지는 내용을 바로 읽을 수 없도록 blur/lock overlay가 적용되어야 한다.
|
- 유료 미구매 커뮤니티 이미지는 내용을 바로 읽을 수 없도록 blur/lock overlay가 적용되어야 한다.
|
||||||
@@ -404,6 +405,7 @@ HomeRecommendation 화면
|
|||||||
---
|
---
|
||||||
|
|
||||||
## 12. 검증 기록
|
## 12. 검증 기록
|
||||||
|
- 2026-06-29: 사용자 추가 요청에 따라 `최근 데뷔한 크리에이터` item을 기존 `205dp x 259dp` 비율로 축소한 `185dp x 234dp`로 표시하고, 이미지 단독이 아니라 item root 전체에 `14dp` rounded clipping을 적용해야 한다는 요구사항을 PRD에 반영했다. Figma `24:5534`, `24:5537` design context와 screenshot을 확인했다.
|
||||||
- 2026-06-23: 기존 `CreatorChannelFanTalkFragmentLayoutTest.kt:78` ktlint 줄바꿈 위반을 동작 변경 없이 수정한 뒤 `./gradlew :app:testDebugUnitTest`, `./gradlew :app:compileDebugKotlin`, `./gradlew :app:mergeDebugResources`, `./gradlew :app:ktlintCheck`가 모두 BUILD SUCCESSFUL임을 재확인했다. `adb devices` 결과 연결된 Android 기기가 없어 실제 기기 수동 확인은 수행하지 못했고, 해당 수동 확인은 환경 차단으로 계획 문서에 남겼다.
|
- 2026-06-23: 기존 `CreatorChannelFanTalkFragmentLayoutTest.kt:78` ktlint 줄바꿈 위반을 동작 변경 없이 수정한 뒤 `./gradlew :app:testDebugUnitTest`, `./gradlew :app:compileDebugKotlin`, `./gradlew :app:mergeDebugResources`, `./gradlew :app:ktlintCheck`가 모두 BUILD SUCCESSFUL임을 재확인했다. `adb devices` 결과 연결된 Android 기기가 없어 실제 기기 수동 확인은 수행하지 못했고, 해당 수동 확인은 환경 차단으로 계획 문서에 남겼다.
|
||||||
- 2026-06-23: Phase 12 검증으로 `./gradlew :app:testDebugUnitTest`, `./gradlew :app:compileDebugKotlin`, `./gradlew :app:mergeDebugResources`는 BUILD SUCCESSFUL을 확인했다. `./gradlew :app:ktlintCheck`는 이번 변경 범위 밖의 `CreatorChannelFanTalkFragmentLayoutTest.kt:78` 기존 줄 길이/인자 줄바꿈 위반으로 실패했으며, 해당 파일은 이번 diff에 포함되지 않음을 확인했다.
|
- 2026-06-23: Phase 12 검증으로 `./gradlew :app:testDebugUnitTest`, `./gradlew :app:compileDebugKotlin`, `./gradlew :app:mergeDebugResources`는 BUILD SUCCESSFUL을 확인했다. `./gradlew :app:ktlintCheck`는 이번 변경 범위 밖의 `CreatorChannelFanTalkFragmentLayoutTest.kt:78` 기존 줄 길이/인자 줄바꿈 위반으로 실패했으며, 해당 파일은 이번 diff에 포함되지 않음을 확인했다.
|
||||||
- 2026-06-23: `HomeAiCharacterItem.creatorId` 응답 계약을 실제 DTO/UI model/mapper에 반영하고, `크리에이터와 이야기를 나눠요!` item 터치 시 `CharacterDetailActivity` 대신 `CreatorChannelActivity`로 이동하도록 구현했다. `creatorId <= 0L`은 route를 만들지 않아 이동하지 않고, `characterId`는 `CharacterChatThumbnailItem.characterId` 표시 계약에 유지한다. 관련 RED/GREEN targeted test와 `HomeMainFragmentLayoutTest` 전체 회귀 테스트가 BUILD SUCCESSFUL임을 확인했다.
|
- 2026-06-23: `HomeAiCharacterItem.creatorId` 응답 계약을 실제 DTO/UI model/mapper에 반영하고, `크리에이터와 이야기를 나눠요!` item 터치 시 `CharacterDetailActivity` 대신 `CreatorChannelActivity`로 이동하도록 구현했다. `creatorId <= 0L`은 route를 만들지 않아 이동하지 않고, `characterId`는 `CharacterChatThumbnailItem.characterId` 표시 계약에 유지한다. 관련 RED/GREEN targeted test와 `HomeMainFragmentLayoutTest` 전체 회귀 테스트가 BUILD SUCCESSFUL임을 확인했다.
|
||||||
|
|||||||
Reference in New Issue
Block a user