From e0e64090cde19708cc16021c87130e6a33ce42be Mon Sep 17 00:00:00 2001 From: klaus Date: Tue, 2 Jun 2026 14:51:28 +0900 Subject: [PATCH] =?UTF-8?q?docs(home):=20Phase=205=20=EA=B2=80=EC=A6=9D=20?= =?UTF-8?q?=EA=B8=B0=EB=A1=9D=EC=9D=84=20=EC=B6=94=EA=B0=80=ED=95=9C?= =?UTF-8?q?=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/20260601_메인_홈_추천_UI와_API_연동/plan-task.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/docs/20260601_메인_홈_추천_UI와_API_연동/plan-task.md b/docs/20260601_메인_홈_추천_UI와_API_연동/plan-task.md index fac16e18..fd2d49a7 100644 --- a/docs/20260601_메인_홈_추천_UI와_API_연동/plan-task.md +++ b/docs/20260601_메인_홈_추천_UI와_API_연동/plan-task.md @@ -148,7 +148,7 @@ ### Phase 5: HomeMainFragment 레이아웃과 상단 UI 구현 -- [ ] **Task 5.1: 홈 추천 화면 레이아웃 작성** +- [x] **Task 5.1: 홈 추천 화면 레이아웃 작성** - 수정: `app/src/main/res/layout/fragment_v2_main_home.xml` - 포함: - `include` 또는 직접 배치로 `view_title_bar_home` @@ -163,7 +163,7 @@ - `랭킹`, `팔로잉`용 숨김 View를 미리 배치하는 `VISIBLE`/`GONE` 구조 - 검증: root background는 기존처럼 `@color/black` 유지하고, 세로 스크롤 시 title-bar와 `TextTabBarView`는 화면에 남으며 그 아래 추천 content만 스크롤된다. -- [ ] **Task 5.2: title bar와 tab bar 바인딩** +- [x] **Task 5.2: title bar와 tab bar 바인딩** - 수정: `app/src/main/java/kr/co/vividnext/sodalive/v2/main/HomeMainFragment.kt` - 확인: `app/src/main/res/layout/view_title_bar_home.xml` - 확인: `app/src/main/java/kr/co/vividnext/sodalive/v2/widget/TextTabBarView.kt` @@ -357,3 +357,9 @@ - 2026-06-02: Phase 4.2로 `HomeRecommendationViewModel`을 추가해 `recommendationStateLiveData`, `toastLiveData`, `isLoading`, `loadRecommendations()`, `followCreators(sectionKey, creatorIds)`를 구현했다. 추천 API 성공 시 Content/Empty 상태로 분기하고, 실패/data null/Throwable은 Error 상태와 unknown error toast를 노출하도록 했다. 빈 creatorIds에서는 모두 팔로우 API를 호출하지 않는다. - 2026-06-02: Phase 4.3으로 `AppDI.kt`에 `HomeRecommendationViewModel` import와 `viewModel { HomeRecommendationViewModel(get()) }` 등록을 추가했다. `lsp_diagnostics`는 `kotlin-lsp` 미설치로 실행되지 않아 Gradle 검증으로 보완할 예정이다. - 2026-06-02: Phase 4 검증으로 `./gradlew :app:compileDebugKotlin --rerun-tasks`, `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.*"`, `./gradlew :app:testDebugUnitTest`, `./gradlew :app:ktlintCheck`, `./gradlew :app:compileDebugKotlin`을 실행했고 모두 BUILD SUCCESSFUL을 확인했다. 최초 증분 컴파일에서 `recentContentModule`, `chatTalkRoomModule` unresolved가 발생했으나 해당 파일이 존재하고 tracked 상태임을 확인했으며, `--rerun-tasks` 재실행 후 성공해 증분 캐시 문제로 분리했다. ktlint 최초 실행에서는 `HomeRecommendationMappers.kt`의 긴 줄 2건이 실패해 줄바꿈 수정 후 재실행으로 성공했다. +- 2026-06-02: Phase 5 RED 검증으로 `HomeMainFragmentLayoutTest`를 추가하고 `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.HomeMainFragmentLayoutTest"`를 실행했다. 구현 전 `view_home_title_bar`, `text_tab_bar_home`, `nsv_home_recommendation_content`, 섹션/RecyclerView/title icon ID가 없어 컴파일 실패하는 RED 상태를 확인했다. +- 2026-06-02: Phase 5.1로 `fragment_v2_main_home.xml`을 `ConstraintLayout` 기반으로 구성해 `view_title_bar_home`, `view_text_tab_bar`, `NestedScrollView` 추천 content shell을 배치했다. title bar와 tab bar는 scroll container 밖에 두고, 추천 content 내부에 섹션별 container와 가로 `RecyclerView`, 사업자 정보 영역만 추가했다. `ViewPager2`, `FragmentStateAdapter`, 랭킹/팔로잉 전용 content는 추가하지 않았다. +- 2026-06-02: Phase 5.2로 `view_title_bar_home.xml`의 right icon을 `ic_bar_cash`, `ic_bar_search`, `ic_bar_bell` 순서로 확장하고, `HomeMainFragment`에서 `TextTabBarView` 메뉴를 추천/랭킹/팔로잉 순서와 selected index 0으로 바인딩했다. 좌우 swipe 전환은 추가하지 않았다. +- 2026-06-02: Phase 5 GREEN/검증으로 `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.HomeMainFragmentLayoutTest"`, `./gradlew :app:mergeDebugResources`, `./gradlew :app:compileDebugKotlin`, `./gradlew :app:ktlintCheck`를 실행했고 모두 BUILD SUCCESSFUL을 확인했다. `lsp_diagnostics`는 `kotlin-lsp` 미설치로 실행되지 않아 Gradle compile/test/ktlint 결과로 보완했다. +- 2026-06-02: 홈 상단 `TextTabBarView`가 추천 화면 전용이 아니라 홈 탭 공용 탭(추천/랭킹/팔로잉)임을 반영해 string resource 이름을 `home_recommendation_tab_*`에서 `screen_home_tab_*`으로 변경했다. 구현 전 `HomeMainFragment` 참조만 먼저 바꾼 `./gradlew :app:compileDebugKotlin`에서 새 string ID 미정의로 RED 실패를 확인했다. +- 2026-06-02: 배너 아래 섹션 제목 요구사항을 반영해 `최근 데뷔한 크리에이터`, `처음부터 함께 성장!`, `크리에이터와 이야기를 나눠요!`에는 `view_section_title`의 더보기 chevron을 표시하고, `방금 활동한 크리에이터`, `최근 응원이 많은 크리에이터`, `인기 커뮤니티`에는 chevron을 숨기도록 `HomeMainFragment`에서 초기화했다. 장르 섹션은 백엔드 장르명 바인딩을 위해 `view_section_title`을 쓰지 않고 별도 title row로 분리했으며 장르명 색상은 `@color/color_3bb9f1`로 지정했다. 구현 전 `HomeMainFragmentLayoutTest`에서 새 section title ID 미정의로 RED 실패를 확인했고, 이후 `./gradlew :app:compileDebugKotlin --rerun-tasks`, `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.HomeMainFragmentLayoutTest" --rerun-tasks`, `./gradlew :app:mergeDebugResources`가 BUILD SUCCESSFUL임을 확인했다. 최초 병렬 Gradle 실행 중 KSP incremental cache 오류가 있었으나 순차 재실행으로 성공해 캐시 경합 문제로 분리했다.