docs(home): 팔로잉 empty 문구 계획을 기록한다

This commit is contained in:
2026-07-13 16:17:01 +09:00
parent 17a9a2f601
commit 47b9c3dec2
2 changed files with 63 additions and 0 deletions

View File

@@ -780,7 +780,59 @@
---
### Phase 12: 전체 empty 문구 중앙 표시
- [x] **Task 12.1: 문서와 source test로 empty 문구 계약 고정**
- 수정:
- `docs/20260625_메인_홈_팔로잉_탭/prd.md`
- `docs/20260625_메인_홈_팔로잉_탭/plan-task.md`
- `app/src/test/java/kr/co/vividnext/sodalive/v2/main/home/HomeFollowingFragmentSourceTest.kt`
- 작업:
- 기존 `screen_home_following_empty` string resource를 재사용한다는 계약을 문서화한다.
- `fragment_v2_main_home.xml``tv_home_following_empty`가 있고 `@string/screen_home_following_empty`를 사용하는지 source test로 고정한다.
- empty `TextView`가 팔로잉 탭 전체 영역에서 가운데 배치되고 텍스트도 가운데 정렬되는지 source test로 고정한다.
- `HomeFollowingUiState.Empty`는 empty 문구를 표시하고, `Content`, `LoginRequired`, `Error`는 숨김 경로를 갖는지 source test로 고정한다.
- 검증:
- Run: `./gradlew --no-daemon :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.HomeFollowingFragmentSourceTest"`
- Expected RED: 구현 전 `tv_home_following_empty`와 empty visibility 분기 부재로 실패한다.
- 검증 기록:
- 2026-07-13: 기존 `screen_home_following_empty` string resource를 재사용해 전체 empty 문구를 표시하는 요구사항을 PRD와 계획 문서에 추가했다. `HomeFollowingFragmentSourceTest``tv_home_following_empty` id, string 재사용, 중앙 정렬 속성, `HomeFollowingUiState.Empty` 전용 표시 분기를 고정하는 source test를 추가했다.
- [x] **Task 12.2: 다국어 string과 empty UI 구현**
- 수정:
- `app/src/main/res/values/strings.xml`
- `app/src/main/res/values-en/strings.xml`
- `app/src/main/res/values-ja/strings.xml`
- `app/src/main/res/layout/fragment_v2_main_home.xml`
- `app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/HomeMainFragment.kt`
- 작업:
- 기존 `screen_home_following_empty` 값을 한국어/영어/일본어 문구로 갱신한다.
- 팔로잉 탭 content 영역에 `tv_home_following_empty`를 추가하고 중앙 배치/중앙 정렬한다.
- `HomeFollowingUiState.Empty`에서 empty 문구를 표시하고 섹션 adapter는 비운다.
- `HomeFollowingUiState.Content`, `LoginRequired`, `Error`에서는 empty 문구를 숨긴다.
- 검증:
- Run: `./gradlew --no-daemon :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.HomeFollowingFragmentSourceTest"`
- Expected GREEN: source test PASS.
- 검증 기록:
- 2026-07-13: `values`, `values-en`, `values-ja`의 기존 `screen_home_following_empty` 값을 한국어/영어/일본어 2줄 문구로 갱신했다. `fragment_v2_main_home.xml``tv_home_following_empty`를 추가하고 `@string/screen_home_following_empty`, `match_parent`, `gravity=center`, `textAlignment=center`, 기본 `gone`을 적용했다. `HomeMainFragment`에서는 `HomeFollowingUiState.Empty`만 empty 문구를 표시하고, `Content`, `LoginRequired`, `Error`는 숨기도록 분기했다.
- [x] **Task 12.3: empty 문구 회귀 검증 기록**
- 검증:
- Run: `./gradlew --no-daemon :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.*Following*"`
- Expected: 팔로잉 관련 local unit/source test PASS.
- Run: `./gradlew --no-daemon :app:mergeDebugResources`
- Expected: string/layout resource merge PASS.
- Run: `./gradlew --no-daemon :app:compileDebugKotlin`
- Expected: Kotlin compile PASS.
- Run: `git diff --check`
- Expected: whitespace error 없음.
- 검증 기록:
- 2026-07-13: `./gradlew --no-daemon :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.*Following*"`, `./gradlew --no-daemon :app:mergeDebugResources`, `./gradlew --no-daemon :app:compileDebugKotlin`, `git diff --check` 모두 PASS. Gradle 실행 중 기존 deprecation warning만 출력됐다.
---
## Verification Log
- 2026-07-13 Phase 12 전체 empty 문구 중앙 표시 검증: 팔로잉 탭 전체 empty 상태에서 기존 `screen_home_following_empty` 리소스를 재사용해 `아직 팔로잉 소식이 없어요.\n관심 있는 크리에이터를 팔로우해 보세요.` 문구를 중앙 표시하도록 구현했다. 영어는 `No following updates yet.\nFollow creators you are interested in.`, 일본어는 `フォロー中のお知らせはまだありません。\n気になるクリエイターをフォローしてみましょう。`로 갱신했다. `HomeFollowingUiState.Empty`에서만 empty 문구가 보이고 `Content`, `LoginRequired`, `Error`에서는 숨김 처리된다. 검증으로 `./gradlew --no-daemon :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.*Following*"`, `./gradlew --no-daemon :app:mergeDebugResources`, `./gradlew --no-daemon :app:compileDebugKotlin`, `git diff --check` 모두 PASS. Gradle 실행 중 기존 deprecation warning만 출력됐다.
- 2026-07-12 Phase 11 검증: 최근 소식 `COMMUNITY_POST` 상세 이동 계약을 source test로 추가하고 `HomeMainFragment.onFollowingNewsClick()`에서 `HomeFollowingNewsUiItem.Community``CreatorChannelCommunityDetailActivity.newIntent(requireContext(), postId)`로 이동하도록 구현했다. RED 시도: 구현 전 targeted test `./gradlew --no-daemon :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.HomeMainFragmentLoginGuardSourceTest"`는 120초/300초 timeout으로 assertion 결과까지 도달하지 못했지만, 당시 production은 no-op 상태였고 새 source test는 `ensureMainV2NavigationAllowed`와 상세 이동 호출 문자열을 요구하도록 추가되어 실패 조건을 고정했다. GREEN: 동일 targeted test PASS. 회귀 검증 `./gradlew --no-daemon :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.*Following*"`, `./gradlew --no-daemon :app:compileDebugKotlin`, `git diff --check` PASS. `./gradlew --no-daemon :app:ktlintCheck`는 이번 변경과 무관한 기존 legacy/source 위반(`explorer/profile/creator_community` package underscore, `LiveRoomActivity.kt` formatting, `NicknameUpdateViewModel.kt` indentation 등)으로 FAIL. 실기기 수동 QA는 `adb devices` 결과 연결된 device가 없어 blocked.
- 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.