Files
sodalive-backend-spring-boot/docs/20260612_크리에이터_채널_홈_API/reviews/phase-5-review.md

4.6 KiB

Phase 5 코드 리뷰 보고서

1. 리뷰 정보

항목 내용
리뷰 대상 Phase 5 / Task 5.1~5.2
기준 commit 또는 working tree f1c2e6c5 + 2026-07-30 working tree
리뷰 일자 2026-07-30
리뷰어 Codex
기준 문서 prd.md, plan-task.md, 홈 API 구조 정렬 후속 문서, docs/agent-guides/*.md
리뷰 상태 판정 완료

2. 목적과 범위

  • endpoint·인증·ApiResponse·DTO mapping·JSON 필드 계약을 controller/DTO 테스트와 정적 대조했다.
  • 사용자 지시에 따라 컴파일·테스트는 실행하지 않았다.

3. 검토 근거

  • CreatorChannelHomeControllerTest.kt:90-148은 facade가 반환한 모든 섹션이 채워진 응답의 최상위·boolean·비노출 필드를 검증한다.
  • plan-task.md Task 5.2 REFACTOR와 주의사항은 단건이 없으면 null, 목록이 없으면 빈 배열을 내려주도록 명시한다.
  • 현재 controller 테스트에는 모든 nullable/목록 섹션이 빈 fixture의 JSON 직렬화 assertion이 없다.

4. 발견 사항

ID 심각도 상태 제목 소유 Task 후속 goal
REV-P5-001 Low 완료 빈 홈 응답의 null/빈 배열 계약이 테스트로 고정되지 않았다 Task 5.3 P5-R1

REV-P5-001 — 빈 홈 응답의 null/빈 배열 계약이 테스트로 고정되지 않았다

  • 심각도: Low
  • 상태: 확정
  • 관련 요구사항: Task 5.2 REFACTOR, 구현 중 주의사항의 빈 섹션 계약
  • 소유 Task: Task 5.3 / P5-R1

관찰 내용

DTO 타입은 nullability와 List 구조를 갖추고 있지만, 실제 Jackson 응답에서 null 필드가 존재하고 목록이 []로 나가는지 검증하는 빈 응답 시나리오가 없다.

영향

현재 실행 결함을 확인한 것은 아니지만, Jackson 설정·DTO annotation·mapping 변경 시 클라이언트의 빈 화면 계약이 회귀해도 감지하지 못한다.

권장 조치

MockMvc에 최소 빈 fixture 한 개를 추가해 currentLive, latestAudioContent, fanTalk.latestFanTalk과 목록 6개의 JSON 값을 명시적으로 고정한다.

판정 기록

  • 2026-07-30 — 계획의 명시적 계약과 현재 controller 테스트 범위를 대조해 확정.
  • 2026-07-30 — CreatorChannelHomeControllerTest에 빈 홈 응답 null/빈 배열 JSON 계약 테스트를 추가하고 focused test 통과로 완료.

5. plan·goal 전환

  • plan-task.md Phase 5에 Task 5.3 / P5-R1을 추가했다.
  • RED가 바로 통과하면 생산 DTO는 변경하지 않고 회귀 테스트만 남기도록 범위를 제한했다.

6. 리뷰 종료 판정

판정 항목 결과 근거
리뷰 범위 전체 확인 충족 controller·DTO·테스트 정적 대조
후보 항목 판정 완료 충족 REV-P5-001 확정
확정 항목 plan 반영 충족 Task 5.3 / P5-R1
검증 명령과 결과 기록 충족 정적 검토만 실행, 테스트 미실행 사유 기록

최종 결론: 수정 goal 완료.

남은 항목: 없음.

7. 2차 리뷰 — 2026-07-30

  • 대상: 빈 홈 응답 보강 이후 controller 인증·endpoint·JSON 표면 계약.
  • 방법: controller, response factory, 채워진/빈 응답 MockMvc assertion을 정적 대조했다. 사용자 지시에 따라 테스트·컴파일·ktlint은 실행하지 않았다.
  • 결과: 신규 확정 발견 사항 없음. Phase 5 후속 Task를 추가하지 않는다.
  • 남은 항목: 없음.

8. 3차 리뷰 — 2026-07-31

  • 대상: 인증 controller, facade 응답 변환, Boolean 필드명, 내부 필드 비노출과 null/빈 배열 JSON 계약.
  • 방법: controller/response DTO와 채워진·빈 응답 MockMvc assertion을 Task 5.1~5.3과 정적 대조했다. 사용자 지시에 따라 테스트·컴파일·ktlint은 실행하지 않았다.
  • 결과: 신규 확정 발견 사항 없음. Phase 5 후속 Task를 추가하지 않는다.
  • 남은 항목: 없음.

9. 4차 리뷰 — 2026-07-31

  • 대상: 인증 endpoint, ApiResponse.ok(...), facade 응답 변환, Boolean 이름과 null/빈 배열 JSON 계약.
  • 방법: controller/response DTO, 채워진·빈 응답 MockMvc assertion과 구조 정렬 후 공용 오디오 응답 필드를 Task 5.1~5.3과 정적 대조했다. 사용자 지시에 따라 테스트·컴파일·ktlint은 실행하지 않았다.
  • 결과: 기존 REV-P5-001 보정이 유지되며 신규 확정 발견 사항 없음. Phase 5 후속 Task를 추가하지 않는다.
  • 남은 항목: 없음.