docs(home): On Air 라이브 아이템 작업을 기록한다

This commit is contained in:
2026-07-03 14:47:44 +09:00
parent f9030ffd13
commit b1f605fda4

View File

@@ -718,6 +718,30 @@
--- ---
### Phase 10: On Air 라이브 item Figma 재구현
- [x] **Task 10.1: Figma 기준 레이아웃 재구현**
- 수정:
- `app/src/main/res/layout/item_home_following_live.xml`
- 생성:
- `app/src/main/res/drawable/bg_home_following_live_capsule.xml`
- 작업:
- Figma `24:5696` 기준으로 `item_home_following_live.xml`을 썸네일 카드가 아닌 캡슐형 On Air item으로 재구현한다.
- 기존 `HomeFollowingLiveAdapter`가 사용하는 표시 id(`iv_home_following_live_creator_profile`, `tv_home_following_live_title`, `tv_home_following_live_creator_nickname`, `tv_home_following_live_started_at`)는 유지한다.
- 카드 배경은 `gray_900`, stroke는 `color_3bb9f1`, radius는 `90dp`, 전체 크기는 Figma의 `263dp x 100dp` 기준으로 맞춘다.
- LIVE badge, 시작 시간, 제목, 크리에이터명을 Figma 순서와 간격에 맞게 배치한다.
- 검증:
- Run: `./gradlew --no-daemon :app:mergeDebugResources`
- Expected: layout/drawable resource merge PASS.
- Run: `./gradlew --no-daemon :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.*Following*"`
- Expected: 기존 팔로잉 source/unit test PASS.
- 검증 기록:
- 2026-07-03 Figma `24:5696` 기준으로 `item_home_following_live.xml`을 기존 썸네일 카드에서 `263dp x 100dp` 캡슐형 On Air item으로 재구현했다. 기존 adapter id 계약은 유지했고, profile image는 기존 `loadHomeCreatorProfileImage()``CircleCropTransformation` 경로를 그대로 사용한다.
- 2026-07-03 검증: `./gradlew --no-daemon :app:mergeDebugResources`, `./gradlew --no-daemon :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.*Following*"`, `git diff --check` PASS. Gradle 실행 중 기존 deprecation warning만 출력됐다.
- 2026-07-03 후속 정리: Figma 캡슐형 item에 필요 없는 `iv_home_following_live_thumbnail` 숨김 View와 `HomeFollowingLiveAdapter`의 obsolete thumbnail binding을 제거했다.
---
## Verification Log ## Verification Log
- 2026-06-25 Phase 1-3 구현 검증: `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.*Following*"`, `./gradlew :app:mergeDebugResources`, `./gradlew :app:compileDebugKotlin`, `./gradlew :app:ktlintCheck`, `git diff --check` 모두 PASS. - 2026-06-25 Phase 1-3 구현 검증: `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.*Following*"`, `./gradlew :app:mergeDebugResources`, `./gradlew :app:compileDebugKotlin`, `./gradlew :app:ktlintCheck`, `git diff --check` 모두 PASS.
- 2026-06-25 Phase 1-3 코드 리뷰 및 재검증: blocking finding 없음. `./gradlew :app:mergeDebugResources`는 최초 sandbox lock 권한 오류 후 승인 실행으로 PASS했고, 나머지 검증 명령도 PASS. - 2026-06-25 Phase 1-3 코드 리뷰 및 재검증: blocking finding 없음. `./gradlew :app:mergeDebugResources`는 최초 sandbox lock 권한 오류 후 승인 실행으로 PASS했고, 나머지 검증 명령도 PASS.
@@ -734,3 +758,5 @@
- 2026-06-30 팔로잉 크리에이터 `전체` 버튼 높이 보정 후 재검증: `전체` item root는 `wrap_content` 높이로 두고 invisible nickname spacer로 creator item 전체 높이를 맞췄다. `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.HomeFollowingFragmentSourceTest"`, `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.*Following*"`, `./gradlew :app:mergeDebugResources`, `./gradlew :app:compileDebugKotlin`, `./gradlew :app:ktlintCheck`, `git diff --check` PASS. `mergeDebugResources`는 최초 sandbox lock 권한 오류 후 승인 실행으로 PASS했고, `ktlintCheck`에서는 기존 `.editorconfig disabled_rules` deprecation warning만 출력됐다. - 2026-06-30 팔로잉 크리에이터 `전체` 버튼 높이 보정 후 재검증: `전체` item root는 `wrap_content` 높이로 두고 invisible nickname spacer로 creator item 전체 높이를 맞췄다. `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.HomeFollowingFragmentSourceTest"`, `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.*Following*"`, `./gradlew :app:mergeDebugResources`, `./gradlew :app:compileDebugKotlin`, `./gradlew :app:ktlintCheck`, `git diff --check` PASS. `mergeDebugResources`는 최초 sandbox lock 권한 오류 후 승인 실행으로 PASS했고, `ktlintCheck`에서는 기존 `.editorconfig disabled_rules` deprecation warning만 출력됐다.
- 2026-06-30 Phase 9 최근 소식 Response nested payload 계약 반영 검증: `FollowingNewsResponse``newsId`, `type`, `visibleFromAtUtc`, type별 nested payload만 갖는 구조로 갱신하고 mapper/adapter를 matching payload 기준으로 변경했다. RED: 새 nested DTO/UI 필드 미구현으로 `compileDebugUnitTestKotlin` 실패. GREEN: focused test PASS. 통합 검증 `./gradlew --no-daemon :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.*Following*"`, `./gradlew --no-daemon :app:mergeDebugResources`, `./gradlew --no-daemon :app:compileDebugKotlin`, `./gradlew --no-daemon :app:ktlintCheck`, `git diff --check` 모두 PASS. `ktlintCheck`에서는 기존 `.editorconfig disabled_rules` deprecation warning만 출력됐다. - 2026-06-30 Phase 9 최근 소식 Response nested payload 계약 반영 검증: `FollowingNewsResponse``newsId`, `type`, `visibleFromAtUtc`, type별 nested payload만 갖는 구조로 갱신하고 mapper/adapter를 matching payload 기준으로 변경했다. RED: 새 nested DTO/UI 필드 미구현으로 `compileDebugUnitTestKotlin` 실패. GREEN: focused test PASS. 통합 검증 `./gradlew --no-daemon :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.*Following*"`, `./gradlew --no-daemon :app:mergeDebugResources`, `./gradlew --no-daemon :app:compileDebugKotlin`, `./gradlew --no-daemon :app:ktlintCheck`, `git diff --check` 모두 PASS. `ktlintCheck`에서는 기존 `.editorconfig disabled_rules` deprecation warning만 출력됐다.
- 2026-06-30 Phase 9 코드 리뷰 후 nullable 계약 보완 검증: PRD의 `contentImageUrl: String?` 계약과 구현의 non-null DTO/UI model 불일치를 수정했다. RED: null image fixture 추가 시 `compileDebugUnitTestKotlin` type mismatch 실패. GREEN: `contentImageUrl` nullable DTO/UI model과 adapter `.orEmpty()` fallback 적용 후 focused mapper test PASS. 통합 재검증 `./gradlew --no-daemon :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.*Following*"`, `./gradlew --no-daemon :app:mergeDebugResources`, `./gradlew --no-daemon :app:compileDebugKotlin`, `./gradlew --no-daemon :app:ktlintCheck`, `git diff --check` PASS. - 2026-06-30 Phase 9 코드 리뷰 후 nullable 계약 보완 검증: PRD의 `contentImageUrl: String?` 계약과 구현의 non-null DTO/UI model 불일치를 수정했다. RED: null image fixture 추가 시 `compileDebugUnitTestKotlin` type mismatch 실패. GREEN: `contentImageUrl` nullable DTO/UI model과 adapter `.orEmpty()` fallback 적용 후 focused mapper test PASS. 통합 재검증 `./gradlew --no-daemon :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.*Following*"`, `./gradlew --no-daemon :app:mergeDebugResources`, `./gradlew --no-daemon :app:compileDebugKotlin`, `./gradlew --no-daemon :app:ktlintCheck`, `git diff --check` PASS.
- 2026-07-03 Phase 10 On Air 라이브 item Figma 재구현 검증: Figma `24:5696` 기준으로 `item_home_following_live.xml`을 캡슐형 카드로 재구현하고 `bg_home_following_live_capsule.xml`을 추가했다. `./gradlew --no-daemon :app:mergeDebugResources`, `./gradlew --no-daemon :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.*Following*"`, `git diff --check` PASS. Gradle 실행 중 기존 deprecation warning만 출력됐다.
- 2026-07-03 Phase 10 후속 정리: `item_home_following_live.xml`에서 불필요한 `iv_home_following_live_thumbnail`을 제거하고, `HomeFollowingLiveAdapter`의 해당 id 조회와 `loadUrl` 호출을 삭제했다.