fix(main): 현재 라이브 전체 버튼을 고정한다
This commit is contained in:
116
docs/20260602_메인_홈_추천_UI_API_연동/reviews/phase8-live-all-fixed.md
Normal file
116
docs/20260602_메인_홈_추천_UI_API_연동/reviews/phase8-live-all-fixed.md
Normal file
@@ -0,0 +1,116 @@
|
||||
# Phase 8 현재 라이브 `전체` 우측 고정 리뷰
|
||||
|
||||
## 1. 리뷰 정보
|
||||
|
||||
| 항목 | 내용 |
|
||||
|---|---|
|
||||
| 리뷰 대상 | Phase 8.3 / `P8-T3` |
|
||||
| 기준 commit 또는 working tree | working tree |
|
||||
| 리뷰 일자 | 2026-08-03 |
|
||||
| 리뷰어 | Sisyphus, 독립 Oracle 2건 |
|
||||
| 기준 문서 | `../prd.md`, `../plan-task.md` |
|
||||
| 리뷰 상태 | 판정 완료 |
|
||||
|
||||
## 2. 리뷰 목적과 범위
|
||||
|
||||
### 목적
|
||||
|
||||
- 현재 라이브 아이템만 가로로 스크롤하고 `전체` 버튼이 오른쪽 끝에 고정되는지 검토한다.
|
||||
- 빈 상태, 탭 callback, 기존 스타일과 여백에 회귀가 없는지 검토한다.
|
||||
|
||||
### 포함 범위
|
||||
|
||||
- 코드: `SodaLive/Sources/V2/Main/Home/Recommendation/Components/MainHomeLiveSection.swift`
|
||||
- 문서: PRD 8.5, Success Criteria, Verification Plan, `P8-T3`
|
||||
- 검증: 정적 RED/GREEN, device/simulator 빌드, simulator 실행, 독립 시각 QA
|
||||
|
||||
### 제외 범위
|
||||
|
||||
- API, 모델, ViewModel, 라우팅, `전체` 버튼 스타일 변경
|
||||
|
||||
## 3. 판정 기준
|
||||
|
||||
- `MainHomeLiveAllItemView`가 수평 `ScrollView` 밖에 있어야 한다.
|
||||
- 스크롤 영역과 고정 버튼이 겹치지 않고 기존 `SodaSpacing` 토큰을 유지해야 한다.
|
||||
- 빈 배열 guard와 `onTapLive`, `onTapAll` 경로가 유지되어야 한다.
|
||||
- 컴파일과 앱 실행이 성공해야 한다.
|
||||
|
||||
## 4. 검토한 근거
|
||||
|
||||
| 명령 또는 수동 검증 | 결과 | 핵심 증거 |
|
||||
|---|---|---|
|
||||
| RED 정적 검증 | 의도한 실패 | 기존 16행의 `전체`가 `LazyHStack` 내부에 있음 |
|
||||
| GREEN 정적 검증 | 성공 | `전체`가 `ScrollView` 밖 형제 뷰로 이동 |
|
||||
| `git diff --check` | 성공 | 출력 없음 |
|
||||
| `SodaLive-dev` Debug device build | 성공 | `BUILD SUCCEEDED` |
|
||||
| iPhone 16 Pro simulator build | 성공 | 증분 재실행 `BUILD SUCCEEDED` |
|
||||
| simulator 설치·실행·캡처 | 제한적 성공 | 앱 정상 실행, 캡처 정상; `lives`가 비어 대상 섹션 미표시 |
|
||||
| 독립 기능 무결성 리뷰 | REVISE | 제품 blocker 없음, non-empty 캡처만 evidence blocker |
|
||||
| 독립 시각/CJK 리뷰 | REVISE | 제품 결함 없음, 노출된 한글 clipping 없음, 대상 상태 증거 부족 |
|
||||
|
||||
## 5. 발견 사항 요약
|
||||
|
||||
확정 제품 발견 사항 없음.
|
||||
|
||||
| ID | 심각도 | 상태 | 제목 | 소유 Task | 후속 goal |
|
||||
|---|---|---|---|---|---|
|
||||
| REV-P8-001 | Low | 보류 | non-empty 라이브 상태의 스크롤 전후 캡처 부재 | `P8-T3` | 사용자 증거 제한 수용으로 종료 |
|
||||
| REV-P8-002 | Medium | 수정 완료 | `전체` 버튼 외부 trailing 여백 중복 | `P8-R1` | Phase 8.4에서 수정 및 빌드 검증 완료 |
|
||||
|
||||
## 6. 발견 사항 상세
|
||||
|
||||
### REV-P8-001 — non-empty 라이브 상태 시각 증거 부재
|
||||
|
||||
- **심각도:** Low
|
||||
- **상태:** 보류
|
||||
- **관련 요구사항:** PRD 8.5
|
||||
- **소유 Task:** `P8-T3`
|
||||
|
||||
**관찰 내용**
|
||||
|
||||
dev 서버의 추천 응답에서 `lives`가 비어 있어 빈 상태는 확인했지만 `전체` 버튼이 표시되는 상태는 캡처하지 못했다. GUI 자동화 권한이 없고 별도 touch driver도 설치되어 있지 않았다.
|
||||
|
||||
**근거**
|
||||
|
||||
- 코드는 `전체` 버튼을 `ScrollView` 밖 형제 뷰로 배치한다.
|
||||
- 두 독립 리뷰 모두 제품 결함 없이 실제 non-empty 캡처 부재만 evidence blocker로 판정했다.
|
||||
- 사용자가 2026-08-03 해당 증거 제한을 명시적으로 수용했다.
|
||||
|
||||
**영향**
|
||||
|
||||
구현과 빌드의 완료 판정에는 영향이 없지만, non-empty 상태의 자동 시각 회귀 증거는 남지 않는다.
|
||||
|
||||
**권장 조치**
|
||||
|
||||
향후 테스트 타깃 또는 deterministic fixture가 도입되면 overflow 라이브 아이템의 스크롤 전후 캡처를 추가한다.
|
||||
|
||||
## 7. 확정 항목의 plan·goal 전환
|
||||
|
||||
`REV-P8-002`를 `plan-task.md`의 Phase 8.4 `P8-R1`으로 전환했다.
|
||||
|
||||
## 8. 리뷰 종료 판정
|
||||
|
||||
| 판정 항목 | 결과 | 근거 |
|
||||
|---|---|---|
|
||||
| 리뷰 범위 전체 확인 | 충족 | 코드, 문서, build, simulator 실행 검토 |
|
||||
| 후보 항목 판정 완료 | 충족 | 제품 결함 없음, evidence 제한만 분리 |
|
||||
| 확정 항목 plan 반영 | 충족 | Phase 8.4 `P8-R1` |
|
||||
| 보류 항목의 담당·재개 조건 기록 | 충족 | 테스트 타깃 또는 fixture 도입 시 재개 |
|
||||
| 검증 명령과 결과 기록 | 충족 | `P8-T3` Progress와 본 문서에 기록 |
|
||||
|
||||
**최종 결론:** 수정 검증 완료
|
||||
|
||||
**남은 항목:** 없음. non-empty 시각 증거 제한은 기존 사용자 수용을 유지한다.
|
||||
|
||||
## 9. 수정 후 검증 기록
|
||||
|
||||
### 1차 수정 검증 — 2026-08-04
|
||||
|
||||
- 무엇을: `REV-P8-002`의 `MainHomeLiveAllItemView` 외부 trailing `s20`을 제거했다.
|
||||
- 왜: 버튼 자체 70pt 프레임과 외부 padding이 우측 간격을 중복시켰다.
|
||||
- 어떻게:
|
||||
- RED focused `rg` — 기존 trailing padding과 실패 메시지 확인.
|
||||
- GREEN focused `rg` — trailing padding 없음, leading `s20`과 `HStack` `s12` 유지 확인.
|
||||
- `git diff --check` — 출력 없이 성공.
|
||||
- `SodaLive-dev` Debug build — `BUILD SUCCEEDED`.
|
||||
- 남은 항목: 없음.
|
||||
Reference in New Issue
Block a user