13 KiB
Phase 6 Figma 후속 수정 리뷰
1. 리뷰 정보
| 항목 | 내용 |
|---|---|
| 리뷰 대상 | Phase 6 / Task 6.1~6.8 |
| 기준 commit 또는 working tree | f600d10e8b63b6fdc812b18a874b077dfe072ca8 + 2026-07-31 working tree |
| 리뷰 일자 | 2026-07-31 |
| 리뷰어 | Codex |
| 기준 문서 | 대상 prd.md, plan-task.md |
| 리뷰 상태 | 수정 검증 완료 / 수동 검증 보류 |
2. 리뷰 목적과 범위
목적
- 크리에이터·최근 대화 UI 보정과 최근 소식 Feed 위젯 전환이 현재 코드에 유지되는지 확인한다.
- 전환 후 사용되지 않는 전용 resource가 남았는지 확인한다.
- 최근 대화 item의 XML 고정 폭이 adapter binding 이후에도 유지되는지 확인한다.
- creator·최근 대화 source test가 현행 UI 표현 속성 테스트 금지 규칙을 준수하는지 확인한다.
포함 범위
fragment_v2_main_home.xml, creator/chat/news adapter와 layout, Feed 위젯 참조, source test.
제외 범위
- Phase 7 이후 Feed 내부 spacing과 Phase 9 DTO 계약.
3. 판정 기준
- runtime 기능에는 영향이 없지만 잘못된 preview와 obsolete resource를 남긴 문제는 Low로 판정했다.
4. 검토한 근거
문서와 코드
HomeFollowingNewsAdapter.kt:32-55: Feed layout 3종 사용fragment_v2_main_home.xml:359-368: 과거 content layout preview 참조item_home_following_news_rank.xml,item_home_following_news_content.xmlHomeFollowingFragmentSourceTest.kt:185-218item_home_following_chat.xml:4: root width284dp- Task 6.7 수정 전
HomeFollowingChatAdapter와HomeRecyclerItemLayoutParams.kt:7-14: inflate된 width를WRAP_CONTENT로 교체 - 현재
HomeFollowingChatAdapter.kt:23-27: inflate된RecyclerView.LayoutParams의 width/height를 보존하고 end margin만 적용 HomeFollowingFragmentSourceTest.kt:292-360: creator/chat XML 크기·orientation·style·maxLines·ellipsize 문자열 assertiondocs/agent-guides/code-style.md: View 크기·margin·padding·constraint·visibility 등 UI 표현 속성 테스트 금지
실행한 검증
| 명령 | 결과 | 핵심 증거 |
|---|---|---|
| `rg -n "item_home_following_news_(rank | content)" ...` | 성공 |
./gradlew --no-daemon :app:testDebugUnitTest --tests "...HomeFollowingFragmentSourceTest" |
성공 | 16개 테스트 실패 0 |
| resource merge/compile/ktlint | 성공 | BUILD SUCCESSFUL |
| Task 6.7 수정 후 chat layout parameter 정적 대조 | 성공 | XML 284dp width를 보존하고 end margin만 추가 |
| 2026-07-31 Phase 1~13 통합 focused 회귀 | 성공 | 15개 suite, 113개 test, failures/errors 0 |
5. 발견 사항 요약
| ID | 심각도 | 상태 | 제목 | 소유 Task | 후속 goal |
|---|---|---|---|---|---|
REV-P6-001 |
Low | 수정 완료 | Feed 전환 전 최근 소식 layout 2개와 preview 참조가 남음 | Task 6.5 | P6-R1 완료 |
REV-P6-002 |
Low | 수정 완료 | 삭제된 최근 소식 layout이 상단 파일 구조에 생성 대상으로 남음 | Task 6.6 | P6-R2 완료 |
REV-P6-003 |
Medium | 수정 완료 | 최근 대화 item의 XML 284dp 폭이 런타임 WRAP_CONTENT로 덮임 |
Task 6.7 | P6-R3 완료 |
REV-P6-004 |
Low | 수정 완료 | creator·최근 대화 UI 표현 속성을 source 문자열로 검증함 | Task 6.8 | P6-R4 완료 |
6. 발견 사항 상세
REV-P6-001 — Feed 전환 전 최근 소식 layout이 남음
- 심각도: Low
- 상태: 수정 완료
- 관련 요구사항: Task 6.4 Feed 위젯 재사용
- 소유 Task: Task 6.5
관찰 내용
runtime adapter는 view_feed_rank/content/community만 inflate하지만 과거 전용 news layout 두 개가 유지되고, RecyclerView preview는 그중 하나를 계속 가리킨다.
근거
- 코드:
HomeFollowingNewsAdapter.kt:38-55 - resource:
fragment_v2_main_home.xml:368 - 검색:
item_home_following_news_rank는 runtime 참조 없음
영향
Layout Editor preview와 실제 UI가 다르고, 유지보수자가 사용 중인 resource로 오해할 수 있다.
권장 조치
preview를 view_feed_content로 바꾸고 obsolete layout 2개를 삭제한다.
판정 기록
- 2026-07-30 — 전체 resource 참조 검색으로 확정.
- 2026-07-30 — Task 6.5에서 preview 교체와 obsolete layout 삭제 후 resource/회귀 검증을 완료.
REV-P6-002 — 삭제된 최근 소식 layout이 파일 구조에 남음
- 심각도: Low
- 상태: 수정 완료
- 관련 요구사항: Task 6.5, 계획 문서 범위 변경 선반영 규칙
- 소유 Task: Task 6.6
관찰 내용
Task 6.5와 현재 resource는 item_home_following_news_rank.xml, item_home_following_news_content.xml을 삭제했지만, plan-task.md 상단 파일 구조는 두 파일을 여전히 Create 대상으로 설명한다.
근거
- 문서:
plan-task.md상단파일 구조와 Task 6.5 - 코드:
HomeFollowingNewsAdapter는view_feed_rank,view_feed_content,view_feed_community를 사용 - resource: 두 obsolete layout은 현재 working tree에서 삭제 상태
영향
후속 작업자가 삭제된 resource를 현재 필수 파일로 오인하거나 다시 생성할 수 있다.
권장 조치
상단 파일 구조를 현재 Feed 위젯 재사용 구조에 맞추되 Task 6.5의 삭제 이력은 유지한다.
판정 기록
- 2026-07-30 — 현재 파일 목록, adapter 참조, 계획 문서 상단 목록을 대조해 확정.
- 2026-07-30 — Task 6.6에서 상단 파일 구조를 Feed layout 재사용/obsolete layout 삭제 이력 기준으로 갱신하고 대체 검증을 완료.
REV-P6-003 — 최근 대화 고정 폭이 adapter에서 보존되지 않음
- 심각도: Medium
- 상태: 수정 완료
- 관련 요구사항: Task 6.2의 Figma
284dpbox card, Task 6.3의 폭 보정 기록 - 소유 Task: Task 6.7
관찰 내용
item_home_following_chat.xml root는 284dp지만 HomeFollowingChatAdapter.onCreateViewHolder()가 inflate 직후 recyclerItemLayoutParams(parent)로 전체 layout parameter를 교체한다. 해당 helper는 width와 height를 모두 WRAP_CONTENT로 새로 생성하므로 문서에 기록된 “XML 폭 유지”가 실제 코드에서는 성립하지 않는다.
근거
- layout:
item_home_following_chat.xml:4-5 - adapter:
HomeFollowingChatAdapter.kt:23-26 - helper:
HomeRecyclerItemLayoutParams.kt:7-14 - 문서: Task 6.3의 최근 대화 item 폭 보정 검증 기록
영향
가로 목록에서 카드 폭이 Figma 284dp가 아니라 자식 content의 wrap-content 측정값으로 결정되어 제목·메시지 영역과 item 간격이 설계와 다르게 보일 수 있다.
권장 조치
inflate된 root의 기존 width/height는 유지하고 end margin만 추가한다. 공통 helper 전체 리팩터링 없이 HomeFollowingChatAdapter 한 곳을 최소 수정하고, UI 크기 자동 테스트 대신 resource/compile/정적 대조와 Task 5.3 수동 확인을 사용한다.
판정 기록
- 2026-07-30 — XML root width, adapter 대입문, helper 반환값을 end-to-end로 대조해 확정.
- 2026-07-30 — 구현 전 Phase 6 Task 6.7 /
P6-R3로 전환. - 2026-07-30 — Task 6.7에서 inflate된
RecyclerView.LayoutParams의 width/height를 보존하고 end margin만 적용하도록 수정한 뒤 회귀 검증을 완료.
REV-P6-004 — creator·최근 대화 UI 표현 속성을 source test로 고정함
- 심각도: Low
- 상태: 수정 완료
- 관련 요구사항:
docs/agent-guides/code-style.md테스트 관례, Task 6.1~6.2 - 소유 Task: Task 6.8
관찰 내용
HomeFollowingFragmentSourceTest가 creator item의 75dp 폭/높이와 typography style, 최근 대화 section의 XML orientation, 284dp/62dp 폭/높이, maxLines/ellipsize를 파일 문자열로 검증한다. 이는 로직 테스트만 추가하고 UI 레이아웃/표현 속성 테스트를 작성하지 않는 현행 가이드와 맞지 않는다.
근거
- test:
HomeFollowingFragmentSourceTest.kt:292-302,331-361 - guide:
docs/agent-guides/code-style.md“신규 테스트는 로직에 대한 테스트 코드만 작성” 및 UI 표현 속성 검증 금지 - 비교: 동일 리뷰의 Task 7.7, 8.4, 10.3, 12.4는 같은 종류의 assertion을 이미 제거함
재현 또는 검증 절차
rg -n 'layout_(width|height)|orientation|maxLines|ellipsize|Typography' HomeFollowingFragmentSourceTest.kt를 실행한다.- Phase 6 creator/chat 테스트 범위에서 XML 표현 값 assertion을 확인한다.
- production 동작은 정상이지만 테스트 정책 위반은 재현된다.
영향
런타임 결함은 아니지만 디자인 값 조정이 로직 회귀 실패로 잘못 표시되고, 가이드에서 정한 수동/Figma 대조 경계를 흐린다.
권장 조치
XML 크기·방향·style·말줄임 문자열 assertion만 제거하고, creator header 제거 구조, Direct badge 결정, 상대 시간 formatter, 필수 field 바인딩은 유지한다. production UI 값은 변경하지 않는다.
판정 기록
- 2026-07-31 — test source 검색과 현행 가이드를 대조해 확정.
- 2026-07-31 — production/test는 수정하지 않고 Phase 6 Task 6.8 /
P6-R4로 전환. - 2026-07-31 — Task 6.8에서 금지된 UI 표현 속성 source assertion만 제거하고 구조·바인딩·클릭 계약 회귀 검증을 완료.
7. 확정 항목의 plan·goal 전환
- Phase 6에 Task 6.5 /
P6-R1을 추가해 완료했다. - 재점검에서 Task 6.6 /
P6-R2를 추가해 완료했다. - 추가 재점검에서 Task 6.7 /
P6-R3를 추가해 완료했다. - 2026-07-31 재점검에서 Task 6.8 /
P6-R4를 추가해 완료했다.
8. 리뷰 종료 판정
| 판정 항목 | 결과 | 근거 |
|---|---|---|
| 리뷰 범위 전체 확인 | 충족 | UI resource와 adapter 참조 검색 |
| 후보 항목 판정 완료 | 충족 | REV-P6-001~004 판정 완료 |
| 확정 항목 plan 반영 | 충족 | Task 6.5~6.8 |
| 검증 명령과 결과 기록 | 충족 | source test 및 build PASS |
최종 결론: 확정 발견 사항 모두 수정 완료 / 실기기 검증은 외부 조건 대기
남은 항목: Phase 5 Task 5.3 실기기 확인
9. 수정 후 검증 기록
- 2026-07-30: 최근 소식 preview
tools:listitem을 실제 runtime Feed layout인@layout/view_feed_content로 교체하고 obsoleteitem_home_following_news_rank.xml,item_home_following_news_content.xml을 삭제했다.rg기준 runtime 참조는 없고 문서/테스트 검증 참조만 남았다.:app:mergeDebugResources,HomeFollowingFragmentSourceTest, 팔로잉 전체 회귀,:app:compileDebugKotlin,:app:ktlintCheck,git diff --checkPASS. - 2026-07-30: Task 6.6으로
plan-task.md상단 파일 구조를 현재 resource 구성에 맞춰 갱신했다. obsolete layout 2개는 삭제 이력으로만 남기고, 최근 소식 runtime layout은view_feed_rank,view_feed_content,view_feed_community재사용으로 명시했다.rg대조와git diff --checkPASS. - 2026-07-30: Task 6.7로
HomeFollowingChatAdapter가 새WRAP_CONTENTlayout parameter를 만들지 않고 inflate된 root의284dpwidth와 height를 보존한 채spacing_12end margin만 적용하도록 수정했다. focused test, 팔로잉 전체 회귀, resource merge, Kotlin compile, ktlint PASS. 연결 기기가 없어 실기기 확인은 Task 5.3 보류 상태를 유지했다. - 2026-07-31 재점검: Phase 1~13 focused 회귀 15개 suite/113개 test, resource merge, Kotlin compile, ktlint는 PASS했다.
REV-P6-004는 가이드 대조로 확정했고, 이번 리뷰에서 production/test 코드는 수정하지 않았다. - 2026-07-31:
REV-P6-004보완으로 creator·최근 대화 source test에서 UI 표현 속성 문자열 assertion을 제거했다. creator header 제거, 필수 field id, Direct badge, 상대 시간 formatter, click listener 계약 검증은 유지했다.rg대체 검증,HomeFollowingFragmentSourceTest, 팔로잉 전체 회귀, resource merge, Kotlin compile, ktlint PASS. 연결 기기가 없어 실기기 표현 확인은 Task 5.3 보류 상태를 유지했다. - 2026-07-31 최종 검증: creator·최근 대화 회귀를 포함한 통합 20개 suite·306개 test와 resource merge, Kotlin compile, ktlint가 PASS했다. 추가 확정 수정 사항은 없고 실기기 확인은 Phase 5 Task 5.3에 유지한다.
- 2026-07-31 이번 리뷰 재검증: creator/chat 고정 폭 보존, Feed 위젯 재사용과 obsolete layout 제거 상태를 다시 대조했다. 통합 16개 suite·120개 test, resource merge, Kotlin compile, ktlint가 PASS해
REV-P6-001~004수정 완료 판정을 유지하고, 시각 대조는 Phase 5 Task 5.3에 유지한다.