From 9de4493e8963cc9e1eee9eae0b2f318931ed9ab2 Mon Sep 17 00:00:00 2001 From: klaus Date: Fri, 5 Jun 2026 16:01:43 +0900 Subject: [PATCH] =?UTF-8?q?docs(home):=20=EC=B6=94=EC=B2=9C=20=EC=83=81?= =?UTF-8?q?=ED=83=9C=20=EC=97=B0=EA=B2=B0=20=EA=B2=80=EC=A6=9D=EC=9D=84=20?= =?UTF-8?q?=EA=B8=B0=EB=A1=9D=ED=95=9C=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 | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/docs/20260601_메인_홈_추천_UI와_API_연동/plan-task.md b/docs/20260601_메인_홈_추천_UI와_API_연동/plan-task.md index f824c763..d2063a5a 100644 --- a/docs/20260601_메인_홈_추천_UI와_API_연동/plan-task.md +++ b/docs/20260601_메인_홈_추천_UI와_API_연동/plan-task.md @@ -413,7 +413,7 @@ ### Phase 9: 라우팅, empty/error/loading 정책 연결 -- [ ] **Task 9.1: Fragment observe와 loading/toast 연결** +- [x] **Task 9.1: Fragment observe와 loading/toast 연결** - 수정: `app/src/main/java/kr/co/vividnext/sodalive/v2/main/HomeMainFragment.kt` - 구현 내용: - `HomeRecommendationViewModel` 주입 @@ -423,7 +423,7 @@ - `toastLiveData`는 `BaseFragment.showToast()` 사용 - 검증: API 실패 시 앱 크래시 없이 toast/error 처리. -- [ ] **Task 9.2: 클릭 라우팅 연결** +- [x] **Task 9.2: 클릭 라우팅 연결** - 수정: `app/src/main/java/kr/co/vividnext/sodalive/v2/main/HomeMainFragment.kt` - 확인: 기존 상세 화면 Activity/Fragment 라우팅 파일 - 구현 내용: @@ -542,3 +542,8 @@ - 2026-06-05: 사업자 정보 `더보기/접기`를 하단 별도 버튼에서 본문 inline action으로 변경했다. `tv_home_business_info_toggle` View를 제거하고 `HomeBusinessInfoBinder`에서 접힘 상태는 `… 더보기`, 펼침 상태는 본문 뒤 `접기`를 clickable span으로 붙이도록 구현했다. `HomeMainFragmentLayoutTest`에 별도 toggle View 제거, inline 더보기 suffix, clickable span 확장/접기, 3줄 이하 action 미노출 테스트를 추가했다. 검증으로 `./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-05: 사업자 정보 inline `더보기`가 말줄임표와 너무 붙어 보여 `… 더보기`에서 `… 더보기`로 간격을 한 칸 늘렸다. 관련 inline suffix 테스트 기대값도 함께 갱신한다. - 2026-06-05: 펼침 상태의 `접기` action도 본문에 붙어 보이지 않도록 action 앞에 공백 2칸을 추가했다. 접힘 상태의 `더보기` 간격과 동일한 시각적 여백을 유지하도록 테스트 기대값을 갱신했다. + +- 2026-06-05: Phase 9 RED 검증으로 `HomeMainFragmentLayoutTest`에 `home main fragment phase9 replaces sample content with viewmodel state binding`, `home main fragment phase9 connects loading toast and follow all callbacks` 소스 계약 테스트를 추가했다. 최초 실행은 테스트 source 경로 기준 문제로 `FileNotFoundException`이 발생해 경로를 보정했고, 이후 `phase6SampleContent`가 남아 있어 `AssertionError`로 RED 실패하는 것을 확인했다. +- 2026-06-05: Phase 9.1로 `HomeMainFragment`에서 임시 `phase6SampleContent()`와 sample helper를 제거하고 `HomeRecommendationViewModel`을 주입해 `recommendationStateLiveData`, `isLoading`, `toastLiveData` observe 및 `loadRecommendations()` 호출을 연결했다. `Content`는 섹션 bind, `Empty`/`Error`는 빈 content bind로 섹션을 숨기고, loading은 `LoadingDialog`, toast는 `BaseFragment.showToast()`로 처리한다. +- 2026-06-05: Phase 9.2로 live/banner/popular community callback을 Fragment에 연결하고, 기존 라우팅 extra가 확인된 creator/audio/AI/community만 최소 Intent 이동으로 연결했다. 목적지가 확정되지 않은 live/banner는 adapter callback을 Fragment로 위임하되 no-op으로 유지했다. `HomeRecentActivityCreatorAdapter`, `HomeRecentDebutCreatorAdapter`, `HomeFirstAudioAdapter`, `HomeAiCharacterAdapter`, `HomeGenreCreatorAdapter`, `HomeCheerCreatorAdapter`에는 기존 호출부 영향이 없도록 기본값 있는 click callback을 추가했다. +- 2026-06-05: Phase 9 GREEN/검증으로 `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.HomeMainFragmentLayoutTest.home main fragment phase9*"`, `./gradlew :app:compileDebugKotlin`, `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.HomeMainFragmentLayoutTest"`, `./gradlew :app:mergeDebugResources`, `./gradlew :app:ktlintCheck`, `./gradlew :app:testDebugUnitTest`를 실행했고 모두 BUILD SUCCESSFUL을 확인했다. 최초 병렬 `compileDebugKotlin`은 Kotlin output directory 경합으로 실패했으나 순차 재실행에서 성공해 캐시/경합 문제로 분리했다. `lsp_diagnostics`는 Kotlin/XML LSP 미구성으로 실행하지 못해 Gradle compile/test/ktlint로 보완했다.