Files
sodalive-android/docs/20260625_메인_홈_팔로잉_탭/reviews/phase7-ranking-content-feed-review.md

9.1 KiB

Phase 7 ranking 문장과 content feed 리뷰

1. 리뷰 정보

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

2. 리뷰 목적과 범위

목적

  • ranking message/highlight와 compact content Feed가 Figma·locale 요구를 충족하는지 확인한다.
  • 과거 Task 7.3 ktlint 실패가 현재도 남았는지 재검증한다.

포함 범위

  • HomeFollowingNewsAdapter.kt, view_feed_content.xml, FeedContentView.kt
  • 한국어/영어/일본어 string resource, FeedViewTest, following source test

제외 범위

  • Phase 9 nested payload와 Phase 13 routing.

3. 판정 기준

  • 특정 locale에서 잘못된 사용자 문자열이 노출되는 문제는 Medium으로 판정했다.

4. 검토한 근거

문서와 코드

  • HomeFollowingNewsAdapter.kt:74-108
  • values/strings.xml:318-319, values-en/strings.xml:319-320, values-ja/strings.xml:319-320
  • view_feed_content.xml, FeedContentView.kt:30-112

실행한 검증

명령 결과 핵심 증거
following source test + FeedViewTest 성공 기존 layout/highlight source 계약 PASS
resource/compile/ktlint 성공 현재 working tree에서 Task 7.3 명령 모두 PASS
locale message 수동 대입 문제 확인 영어·일본어 %2$s"7위"가 전달됨

5. 발견 사항 요약

ID 심각도 상태 제목 소유 Task 후속 goal
REV-P7-001 Medium 수정 완료 영어·일본어 ranking 문장에도 한국어 순위 단위 "위"가 노출됨 Task 7.5 P7-R1 완료
REV-P7-002 Low 수정 완료 신규 ranking 테스트명과 단일 실행 가이드가 저장소 규칙을 충족하지 않음 Task 7.6 P7-R2 완료
REV-P7-003 Low 수정 완료 가이드 제정 이후 content feed 크기·padding·margin source test를 추가함 Task 7.7 P7-R3 완료

6. 발견 사항 상세

REV-P7-001 — ranking 순위 단위가 한국어로 고정됨

  • 심각도: Medium
  • 상태: 수정 완료
  • 관련 요구사항: 3개 locale string resource, ranking 문장형 message
  • 소유 Task: Task 7.5

관찰 내용

adapter가 locale과 무관하게 val rankText = "${ranking.rank}위"를 만든다. 영어와 일본어 문장은 resource로 번역되지만 placeholder에는 한국어 가 그대로 들어간다.

근거

  • 코드: HomeFollowingNewsAdapter.kt:77-88
  • resource: 영어 %1$s reached %2$s..., 일본어 ランキング%2$s...
  • 테스트: source 문자열 존재만 검사하고 locale별 결과 문자열은 검증하지 않음

재현 또는 검증 절차

  1. locale을 English 또는 Japanese로 설정한다.
  2. rank 7 item의 message를 생성한다.
  3. 실제 결과 placeholder는 7위.
  4. 요구 결과는 locale별 영어 표기 또는 일본어 7位다.

영향

영어·일본어 사용자에게 혼합 언어 문장이 노출되고 highlight 대상도 잘못된 단위를 포함한다.

권장 조치

rank format을 locale string resource로 분리하고 완성된 rank 문자열의 유효 index/highlight 범위를 테스트한다.

판정 기록

  • 2026-07-30 — adapter와 세 locale resource를 대입해 확정.
  • 2026-07-30 — Task 7.5에서 locale rank format과 highlight 단위 테스트를 추가하고 회귀 검증을 완료.

REV-P7-002 — 신규 ranking 테스트와 실행 가이드 규칙 미준수

  • 심각도: Low
  • 상태: 수정 완료
  • 관련 요구사항: docs/agent-guides/code-style.md 테스트 관례, docs/agent-guides/build-test-style.md 단일 실행 예시 갱신 규칙
  • 소유 Task: Task 7.6

관찰 내용

새로 추가된 HomeFollowingNewsAdapterTest의 두 backtick 테스트명이 영문 문장이고, 새 테스트 클래스에 대응하는 단일 실행 예시가 build-test-style.md에 없다. Task 7.5 Files에는 가이드 수정이 명시되어 있지만 실제 변경에는 포함되지 않았다.

근거

  • 테스트: HomeFollowingNewsAdapterTest.kt:23, :30
  • 가이드: code-style.md의 신규 테스트명 한글 규칙과 테스트 추가 시 실행 예시 갱신 규칙
  • 문서: Task 7.5 Files의 docs/agent-guides/build-test-style.md

영향

기능 동작에는 영향이 없지만 완료 체크리스트와 실제 변경이 불일치하고 신규 테스트 작성 관례가 깨진다.

권장 조치

신규 테스트명 2개만 한글화하고 HomeFollowingNewsAdapterTest 클래스 단위 실행 예시를 빌드 가이드에 추가한다. 기존 영어 테스트명 일괄 변경은 범위 밖으로 둔다.

판정 기록

  • 2026-07-30 — 신규 테스트 diff와 현재 가이드 및 Task 7.5 Files를 대조해 확정.
  • 2026-07-30 — Task 7.6에서 신규 테스트명 2개를 한글화하고 HomeFollowingNewsAdapterTest 실행 예시를 추가했다.

REV-P7-003 — content feed UI 표현 속성을 source test로 고정함

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

관찰 내용

FeedViewTest.content layout matches figma compact upload notice dimensionsview_feed_content.xmlpadding, 88dp width/height, 두 margin 문자열을 직접 assertion한다. 이 테스트는 UI 크기·margin·padding 테스트 금지 규칙이 추가된 뒤 생성되었다.

근거

  • 테스트: FeedViewTest.kt:45-64
  • 가이드: docs/agent-guides/code-style.md:42-43
  • 이력: 가이드 규칙 566f76df 이후 테스트 61fe8a9f 추가

영향

기능 로직이 아닌 Figma 표현값과 XML 구현 문자열이 회귀 Gate에 고정되어, 합법적인 UI 조정이나 구현 방식 변경만으로 테스트가 실패하고 현재 저장소 테스트 정책과 불일치한다.

권장 조치

해당 테스트만 제거하고 production layout/View는 유지한다. Figma 크기·간격은 정적 대조, resource merge, compile, Task 5.3 수동 화면 확인으로 검증한다.

판정 기록

  • 2026-07-30 — test 추가 시점, assertion 내용, 현행 가이드를 대조해 확정.
  • 2026-07-30 — 구현 전 Phase 7 Task 7.7 / P7-R3로 전환.

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

  • Phase 7에 Task 7.5 / P7-R1을 추가해 완료했다.
  • 재점검에서 Task 7.6 / P7-R2를 추가해 완료했다.
  • 추가 재점검에서 Task 7.7 / P7-R3를 추가해 완료했다.
  • Task 7.3의 과거 ktlint 실패는 현재 재실행에서 PASS했으나 기존 기록과 체크박스는 유지했다.

8. 리뷰 종료 판정

판정 항목 결과 근거
리뷰 범위 전체 확인 충족 adapter, shared Feed, locale resource 확인
후보 항목 판정 완료 충족 REV-P7-001~003 판정 완료
확정 항목 plan 반영 충족 Task 7.5, Task 7.6, Task 7.7
검증 명령과 결과 기록 충족 focused/통합 Gate PASS

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

남은 항목: 없음

9. 수정 후 검증 기록

  • 2026-07-30: ranking 순위 단위를 screen_home_following_ranking_rank_format locale resource로 분리했다. 한국어는 7위, 영어는 No. 7, 일본어는 7位로 생성하며, 완성 문장에서 같은 문자열 범위를 FeedRankHighlight로 전달하도록 HomeFollowingNewsAdapterTest로 검증했다. focused test, Feed view test, 팔로잉 전체 회귀, resource merge, Kotlin compile, ktlint, git diff --check PASS.
  • 2026-07-30 리뷰 게이트 후 보완: subject에 rank 문자열이 먼저 포함되는 경우를 추가 테스트로 고정하고, highlight 시작점을 lastIndexOf(rankText)로 변경해 실제 삽입 rank 문자열을 강조하도록 보완했다. RED/GREEN focused test와 최종 회귀 검증 PASS.
  • 2026-07-30: Task 7.6으로 HomeFollowingNewsAdapterTest의 신규 ranking 테스트명 2개를 한글화하고 docs/agent-guides/build-test-style.md에 클래스 단위 실행 예시를 추가했다. focused test, ktlint, git diff --check PASS.
  • 2026-07-30: Task 7.7로 FeedViewTest의 content feed 크기·padding·margin source test만 제거하고 production layout/View 코드는 유지했다. Feed focused test, 팔로잉 전체 회귀, resource merge, Kotlin compile, ktlint PASS.
  • 2026-07-31 재점검: ranking locale/highlight와 Feed 회귀를 포함한 Phase 1~13 focused 113개 test, resource merge, Kotlin compile, ktlint PASS. 추가 확정 발견 사항 없음.
  • 2026-07-31 최종 검증: ranking·공용 Feed 회귀를 포함한 통합 20개 suite·306개 test와 resource merge, Kotlin compile, ktlint가 PASS했다. 추가 확정 발견 사항 없음.
  • 2026-07-31 이번 리뷰 재검증: 세 locale ranking 문장·highlight와 공용 Feed 표시 경로를 다시 대조했다. 통합 16개 suite·120개 test, resource merge, Kotlin compile, ktlint가 PASS해 추가 확정 발견 사항이 없다.