From 7c0af85aaa03624de9ede04591a87ffa79ed1047 Mon Sep 17 00:00:00 2001 From: klaus Date: Fri, 5 Jun 2026 14:30:55 +0900 Subject: [PATCH] =?UTF-8?q?docs(home):=20=EC=82=AC=EC=97=85=EC=9E=90=20?= =?UTF-8?q?=EC=A0=95=EB=B3=B4=20=EA=B2=80=EC=A6=9D=EC=9D=84=20=EA=B8=B0?= =?UTF-8?q?=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, 8 insertions(+), 1 deletion(-) diff --git a/docs/20260601_메인_홈_추천_UI와_API_연동/plan-task.md b/docs/20260601_메인_홈_추천_UI와_API_연동/plan-task.md index a175b598..f824c763 100644 --- a/docs/20260601_메인_홈_추천_UI와_API_연동/plan-task.md +++ b/docs/20260601_메인_홈_추천_UI와_API_연동/plan-task.md @@ -399,7 +399,7 @@ ### Phase 8: 사업자 정보 접기/더보기 구현 -- [ ] **Task 8.1: 사업자 정보 UI 구현** +- [x] **Task 8.1: 사업자 정보 UI 구현** - 수정: `app/src/main/res/layout/fragment_v2_main_home.xml` - 수정: `app/src/main/java/kr/co/vividnext/sodalive/v2/main/HomeMainFragment.kt` - 구현 내용: @@ -535,3 +535,10 @@ - 2026-06-05: 보안 재리뷰에서 유료 미구매 item으로 재바인딩할 때 기존 Coil 비동기 요청이 늦게 완료될 가능성이 차단 이슈로 지적됐다. `HomePopularCommunityAdapter.bindImage()`의 null/blank 경로에서 `imageView.dispose()`로 기존 Coil 요청을 취소한 뒤 drawable을 비우도록 보완했다. 이후 `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.HomeMainFragmentLayoutTest"`, `./gradlew :app:compileDebugKotlin`, `./gradlew :app:ktlintCheck`, `./gradlew :app:testDebugUnitTest`를 실행했고 모두 BUILD SUCCESSFUL을 확인했다. - 2026-06-05: Phase 7 인기 커뮤니티 UI를 실제 기기에서 확인할 수 있도록 `HomeMainFragment.phase6SampleContent()`의 `popularCommunityPosts`에 무료/유료 미구매/구매 완료 샘플 3건을 임시 주입했다. 샘플은 추천용 계약에 맞춰 keyword를 숨기고, 유료 미구매 샘플은 lock overlay와 가격 capsule을 확인할 수 있게 구성했다. `./gradlew :app:compileDebugKotlin`, `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.HomeMainFragmentLayoutTest"`, `./gradlew :app:ktlintCheck`, `./gradlew :app:mergeDebugResources`는 모두 BUILD SUCCESSFUL을 확인했다. `./gradlew :app:installDebug`는 연결 기기가 없어 `No connected devices!`로 실패해 실기기 설치/육안 확인은 수행하지 못했다. - 2026-06-05: 사용자 확인 중 커뮤니티 게시물 이미지가 잘리는 문제가 있어 `view_feed_community.xml`의 root `374dp`, 이미지 container `346dp x 236dp` 고정 크기를 제거했다. root와 이미지 container는 `match_parent`로 두고, `FeedCommunityView.onMeasure()`에서 실제 card content width 기준 Figma `346:236` 비율로 이미지 높이를 계산하도록 변경했다. Kotlin `clipToOutline`/`ViewOutlineProvider.setRoundRect(...)` 계약은 유지했다. `FeedViewTest`에 동적 이미지 폭/높이 회귀 테스트를 추가했으며, 최초 테스트는 이미지 URL 미바인딩으로 container가 `GONE`이라 실패했고 테스트 조건을 실제 표시 상태로 수정한 뒤 성공했다. 이후 `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.widget.feed.FeedViewTest"`, `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.HomeMainFragmentLayoutTest"`, `./gradlew :app:compileDebugKotlin`, `./gradlew :app:mergeDebugResources`, `./gradlew :app:ktlintCheck`가 모두 BUILD SUCCESSFUL임을 확인했다. +- 2026-06-05: Phase 8 사업자 정보 UI 구현으로 `fragment_v2_main_home.xml`에 기본 `maxLines=3`/`ellipsize=end`와 `tv_home_business_info_toggle`을 추가하고, `HomeBusinessInfoBinder` 및 `HomeMainFragment.setUpBusinessInfo()`에서 더보기/접기 토글과 `TextView.post { lineCount }` 기반 3줄 이하 toggle 숨김 처리를 연결했다. RED 검증으로 `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.HomeMainFragmentLayoutTest"`를 먼저 실행해 `HomeBusinessInfoBinder`, `tv_home_business_info_toggle` 미존재 컴파일 실패를 확인했고, 구현 후 동일 targeted test와 `./gradlew :app:mergeDebugResources`가 BUILD SUCCESSFUL임을 확인했다. +- 2026-06-05: 사용자 확인에 따라 `home_recommendation_business_info`와 기존 `company_info` 중복을 제거했다. `fragment_v2_main_home.xml`은 공용 `@string/company_info`를 참조하도록 변경하고, 한국어/영어/일본어 `home_recommendation_business_info` 리소스는 삭제했다. 리뷰 게이트에서 지적된 접힘 상태 lineCount 측정 문제는 전체 줄 수 측정 시 일시적으로 `maxLines=Int.MAX_VALUE`/`ellipsize=null`로 측정한 뒤 다시 접힘 상태로 되돌리도록 보완했고, 4줄 이상일 때 toggle이 노출되는 회귀 테스트를 추가했다. +- 2026-06-05: `HomeBusinessInfoBinder`의 const naming warning을 해결하기 위해 `CollapsedMaxLines`를 `COLLAPSED_MAX_LINES`로 변경했다. 또한 긴 텍스트 줄 수 측정은 접힘 상태의 기존 layout을 읽지 않도록 `HomeMainFragment`에서 전체 줄 표시 상태를 적용한 뒤 다음 `post`에서 `lineCount`를 읽고 다시 접힘 상태로 되돌리도록 보완했다. +- 2026-06-05: 사용자 추가 요청에 따라 사업자 정보 `더보기/접기`를 별도 하단 버튼이 아니라 본문 말줄임표 우측에 붙는 inline text action으로 변경하는 후속 작업을 진행한다. +- 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칸을 추가했다. 접힘 상태의 `더보기` 간격과 동일한 시각적 여백을 유지하도록 테스트 기대값을 갱신했다.