Files
sodalive-android/docs/20260625_메인_홈_팔로잉_탭/reviews/phase10-on-air-live-item-review.md

8.8 KiB
Raw Blame History

Phase 10 On Air 라이브 item 리뷰

1. 리뷰 정보

항목 내용
리뷰 대상 Phase 10 / Task 10.1~10.4
기준 commit 또는 working tree f600d10e8b63b6fdc812b18a874b077dfe072ca8 + 2026-07-31 working tree
리뷰 일자 2026-07-31
리뷰어 Codex
기준 문서 대상 prd.md, plan-task.md
리뷰 상태 수정 검증 완료

2. 리뷰 목적과 범위

목적

  • 263dp × 100dp 캡슐 item의 필드·배경·profile binding과 가로 목록 배치를 확인한다.

포함 범위

  • item_home_following_live.xml, bg_home_following_live_capsule.xml
  • HomeFollowingLiveAdapter.kt, following RecyclerView와 source test

제외 범위

  • item 터치 이동은 Phase 4 REV-P4-001에서 별도 판정.

3. 판정 기준

  • 캡슐 내부 표현은 Task 10.1, 가로 item 간격은 PRD UX의 item spacing과 기존 홈 helper 관례로 판정했다.

4. 검토한 근거

  • item_home_following_live.xml:2-99
  • bg_home_following_live_capsule.xml:2-8
  • HomeFollowingLiveAdapter.kt:23-31
  • HomeRecyclerItemLayoutParams.kt:7-14
  • creator/chat adapter의 동일 horizontal item layout parameter 사용
  • item_home_following_live.xml:5-6: root 263dp x 100dp

실행한 검증

명령 결과 핵심 증거
팔로잉 전체 회귀 성공 39개 테스트 실패 0
resource merge/compile/ktlint 성공 모두 PASS
adapter layout parameter 수동 대조 문제 확인 live adapter만 end margin helper 미사용

5. 발견 사항 요약

ID 심각도 상태 제목 소유 Task 후속 goal
REV-P10-001 Low 수정 완료 연속된 On Air 캡슐 item 사이 간격이 없음 Task 10.2 P10-R1 완료
REV-P10-002 Low 수정 완료 On Air margin을 source 문자열 테스트로 고정해 UI 표현 속성 테스트 금지 규칙을 위반함 Task 10.3 P10-R2 완료
REV-P10-003 Medium 수정 완료 간격 helper가 On Air root의 263dp 폭을 WRAP_CONTENT로 덮음 Task 10.4 P10-R3 완료

6. 발견 사항 상세

REV-P10-001 — On Air 가로 item end margin 누락

  • 심각도: Low
  • 상태: 수정 완료
  • 관련 요구사항: PRD 가로 리스트 item 간격, Task 10.1 Figma 간격
  • 소유 Task: Task 10.2

관찰 내용

live adapter는 XML을 inflate한 뒤 layout parameter를 그대로 반환한다. RecyclerView에는 ItemDecoration이 없어 두 번째 item부터 캡슐이 바로 붙는다. creator/chat adapter는 공통 helper로 spacing_12 end margin을 적용한다.

근거

  • 코드: HomeFollowingLiveAdapter.kt:23-31
  • 비교: HomeFollowingCreatorAdapter.kt:28-30, HomeFollowingChatAdapter.kt:23-26
  • helper: HomeRecyclerItemLayoutParams.kt:7-14

영향

On Air item이 2개 이상일 때 Figma/기존 홈 가로 리스트와 다른 비핵심 UI가 노출된다.

권장 조치

신규 decoration 없이 기존 recyclerItemLayoutParams(parent)를 재사용한다.

판정 기록

  • 2026-07-30 — RecyclerView/adapter/helper 경로 대조로 확정.
  • 2026-07-30 — Task 10.2에서 기존 helper를 적용하고 resource/compile/회귀 검증을 완료.

REV-P10-002 — On Air 간격 source test가 테스트 정책을 위반함

  • 심각도: Low
  • 상태: 수정 완료
  • 관련 요구사항: docs/agent-guides/code-style.md 테스트 관례
  • 소유 Task: Task 10.3

관찰 내용

Task 10.2에서 추가한 following live adapter keeps horizontal item spacingrecyclerItemLayoutParams(parent) 문자열을 검사해 item margin이라는 UI 표현 속성을 고정한다. 현재 가이드는 View 크기·margin·padding 같은 UI 표현 속성 테스트를 새로 작성하지 않도록 규정한다.

근거

  • 테스트: HomeFollowingFragmentSourceTest.kt:355-363
  • 가이드: docs/agent-guides/code-style.md의 “신규 테스트는 로직에 대한 테스트 코드만 작성” 및 UI margin 테스트 금지 규칙
  • production: HomeFollowingLiveAdapter.kt:23-30의 helper 적용은 현재 유지되어야 함

영향

기능에는 영향이 없지만 금지된 테스트 유형이 회귀 Gate에 추가되고, 내부 구현 문자열 변경만으로 불필요한 실패가 발생한다.

권장 조치

해당 신규 source test만 제거하고 adapter의 helper 적용은 유지한다. 이 UI 간격은 rg 정적 대조, resource merge, compile, 수동 화면 확인으로 검증한다.

판정 기록

  • 2026-07-30 — 신규 테스트 diff와 현재 코드 스타일 가이드를 대조해 확정.
  • 2026-07-30 — Task 10.3에서 금지된 UI margin source test만 제거하고 helper 재사용 대체 검증을 완료.

REV-P10-003 — 간격 보완이 On Air 고정 폭을 보존하지 않음

  • 심각도: Medium
  • 상태: 수정 완료
  • 관련 요구사항: Task 10.1 263dp x 100dp, Task 10.2 “기존 XML 크기 유지”
  • 소유 Task: Task 10.4

관찰 내용

Task 10.2는 recyclerItemLayoutParams(parent)를 적용해 XML 크기를 유지했다고 기록했지만, helper는 새 RecyclerView.LayoutParams(WRAP_CONTENT, WRAP_CONTENT)를 반환한다. 따라서 inflate된 root의 263dp x 100dp 중 width 계약이 런타임에 WRAP_CONTENT로 교체된다.

근거

  • layout: item_home_following_live.xml:5-6
  • adapter: HomeFollowingLiveAdapter.kt:23-30
  • helper: HomeRecyclerItemLayoutParams.kt:7-14
  • 문서: Task 10.2 완료 증거와 검증 기록

영향

On Air 캡슐의 폭이 자식 content 측정값에 따라 축소되거나 달라져 제목/상태 영역과 연속 item 배치가 Figma와 불일치할 수 있다.

권장 조치

inflate된 기존 layout parameter의 width/height는 보존하고 spacing_12 end margin만 추가한다. UI width/margin 자동 테스트는 다시 추가하지 않고 정적 대조·resource merge·compile·Task 5.3 수동 확인으로 검증한다.

판정 기록

  • 2026-07-30 — XML root 크기와 adapter/helper의 최종 layout parameter를 대조해 확정.
  • 2026-07-30 — 구현 전 Phase 10 Task 10.4 / P10-R3로 전환.
  • 2026-07-30 — Task 10.4에서 inflate된 root의 기존 layout parameter를 보존하고 end margin만 적용하도록 수정했다.

7. 확정 항목의 plan·goal 전환

  • Phase 10에 Task 10.2 / P10-R1을 추가해 완료했다.
  • 재점검에서 Task 10.3 / P10-R2를 추가해 완료했다.
  • 추가 재점검에서 Task 10.4 / P10-R3를 추가해 완료했다.

8. 리뷰 종료 판정

판정 항목 결과 근거
리뷰 범위 전체 확인 충족 layout/drawable/adapter 대조
후보 항목 판정 완료 충족 REV-P10-001~003 판정 완료
확정 항목 plan 반영 충족 Task 10.2, Task 10.3, Task 10.4
검증 명령과 결과 기록 충족 빌드 Gate PASS

최종 결론: 확정 발견 사항 모두 수정 완료

남은 항목: 없음

9. 수정 후 검증 기록

  • 2026-07-30: HomeFollowingLiveAdapter.onCreateViewHolder()에서 기존 horizontal list helper recyclerItemLayoutParams(parent)를 재사용해 XML 크기는 유지하고 spacing_12 end margin을 적용했다. HomeFollowingFragmentSourceTest, 팔로잉 전체 회귀, resource merge, Kotlin compile, ktlint, git diff --check PASS.
  • 2026-07-30: Task 10.3으로 following live adapter keeps horizontal item spacing source test만 제거하고 production helper 적용은 유지했다. rgHomeFollowingLiveAdapterrecyclerItemLayoutParams(parent) 재사용을 대조했고 팔로잉 전체 회귀, resource merge, Kotlin compile, ktlint, git diff --check PASS.
  • 2026-07-30: Task 10.4로 HomeFollowingLiveAdapterrecyclerItemLayoutParams(parent) 대신 inflate된 RecyclerView.LayoutParams를 보존하고 spacing_12 end margin만 적용하도록 수정했다. focused test, 팔로잉 전체 회귀, resource merge, Kotlin compile, ktlint PASS. 연결 기기가 없어 실기기 확인은 Task 5.3 보류 상태를 유지했다.
  • 2026-07-31 재점검: On Air binding/action을 포함한 Phase 1~13 focused 113개 test, resource merge, Kotlin compile, ktlint PASS. 연결 기기가 없어 실기기 폭/간격 확인은 Task 5.3에 유지했다.
  • 2026-07-31 최종 검증: On Air binding/action 회귀를 포함한 통합 20개 suite·306개 test와 resource merge, Kotlin compile, ktlint가 PASS했다. 추가 확정 수정 사항은 없고 실기기 확인은 Phase 5 Task 5.3에 유지한다.
  • 2026-07-31 이번 리뷰 재검증: On Air 캡슐의 XML 고정 크기 보존, end margin과 live action 경로를 다시 추적했다. 통합 16개 suite·120개 test, resource merge, Kotlin compile, ktlint가 PASS해 REV-P10-001~003 수정 완료 판정을 유지하고 시각 대조는 Phase 5 Task 5.3에 유지한다.