fix(home): 라이브 전체 버튼을 오른쪽에 고정한다

This commit is contained in:
2026-08-04 11:45:29 +09:00
parent d20d6aa971
commit 3c21a764ae
8 changed files with 236 additions and 98 deletions

View File

@@ -0,0 +1,60 @@
# Phase 19 현재 라이브 전체 고정 리뷰
## 1. 리뷰 정보
| 항목 | 내용 |
|---|---|
| 리뷰 대상 | Phase 19 / `P19-T1`, `P19-R1`, `P19-GATE` |
| 기준 | 현재 working tree |
| 리뷰 일자 | 2026-08-04 |
| 기준 문서 | `prd.md`, `plan-task.md` |
| 리뷰 상태 | 수정 검증 완료 |
## 2. 목적과 범위
- `HomeLiveAdapter`가 라이브 item만 최대 20개 제공하는지 확인한다.
- 고정 `전체` 클릭이 기존 로그인 가드 경로를 유지하는지 확인한다.
- 초기 데이터 바인딩 전 고정 `전체`가 단독 노출되지 않는지 코드 흐름을 확인한다.
- 테스트 범위는 `app/src/test`의 로직/local unit test로 제한한다.
- UI/계측 테스트, 레이아웃 속성 테스트, 기기·에뮬레이터 조작, 스크린샷·시각 QA는 제외한다.
## 3. 검토 근거
- 코드: `HomeMainFragment.kt`, `HomeLiveAdapter.kt`, `fragment_v2_main_home.xml`
- 테스트: `HomeMainFragmentLayoutTest.kt`, `HomeMainFragmentLoginGuardSourceTest.kt`
- 문서: Phase 19 요구사항·Task·Gate와 테스트 가이드
## 4. 발견 사항
### REV-P19-001 — 초기 로딩 중 고정 전체 단독 노출 가능성
- **심각도:** High
- **상태:** 수정 완료
- **소유 Task:** `P19-R1`
`HomeRecommendationUiState.Loading`은 content를 bind하지 않으므로 `ll_home_live_section`의 XML 기본값이 `VISIBLE`이면 첫 데이터 바인딩 전 고정 `전체`만 노출될 수 있었다. 부모 섹션 기본값을 `GONE`으로 변경하고 기존 `bindLiveSection()`의 빈 목록 숨김·비어 있지 않은 목록 표시 로직은 유지했다.
저장소 정책상 XML visibility를 직접 assertion하는 레이아웃 테스트는 남기지 않았다. resource merge·Kotlin compile과 기존 로직 회귀로 검증했다.
## 5. 실행한 검증
| 명령 | 결과 |
|---|---|
| focused `HomeMainFragmentLayoutTest`, `HomeMainFragmentLoginGuardSourceTest` | 성공 |
| `:app:mergeDebugResources :app:compileDebugKotlin` | 성공 |
| `:app:testDebugUnitTest` | 첫 실행 기존 비결정적 1건 실패, 관련 클래스 격리 및 전체 재실행 성공 |
| `:app:ktlintCheck` | 이번 diff 밖 기존 package underscore 등으로 실패; 변경 파일 신규 오류 없음 |
| UI/계측 테스트 | 정책에 따라 작성·실행하지 않음 |
독립 최종 리뷰에서 adapter item-count 테스트에 남은 미사용 UI setup 3줄이 발견되어 제거했다. focused 로직 테스트와 `git diff --check` 재실행 후 재리뷰가 `APPROVE`로 종료됐다.
## 6. 종료 판정
| 판정 항목 | 결과 |
|---|---|
| adapter 경계와 라우팅 로직 | 충족 |
| 초기 로딩 노출 회귀 수정 | 충족 |
| UI 테스트 제거 | 충족 |
| 테스트 가이드 명확화 | 충족 |
**최종 결론:** `REV-P19-001` 수정 검증 완료 및 독립 재리뷰 승인. 전역 ktlint의 기존 실패는 Phase 19 범위 밖으로 분리한다.