Files
sodalive-backend-spring-boot/docs/20261014_크리에이터이름언어별관리/reviews/cor015-legacy-trim-review.md
T

4.8 KiB

COR015 레거시 이름 정리 정적 리뷰

리뷰 정보

  • 날짜: 2026-10-15
  • 대상: 기존 미커밋 COR012~014 변경 위의 COR015 선택적 롤백·테스트 정리. 전체 HEAD diff를 이번 변경으로 간주하지 않는다.
  • 기준: 같은 디렉터리 상위 prd.md COR015, plan-task.md LEGACY-TRIM-T1의 S1~S3.
  • 독립 검토 세션: ses_ec179d026ffeTbyj1KNLcvwUpg.
  • 판정: APPROVE(static). 확정 발견 사항 없음. 실행 검증 승인이나 테스트 통과 판정은 아니다.

확인 결과

기준 정적 확인
S1 제외 영역 원본 표시 7개 콘텐츠 탭의 중첩 목록·랭킹·추천·태그·큐레이션, 레거시 커뮤니티 목록/상세/첫 댓글/댓글/답글/구매 및 팬톡 목록/작성/수정에서 원본을 사용한다. 기존 삭제 회원 접두사 처리를 보존한다.
S2 유지 대상 보존 nullable 이름 언어는 공유 조회의 원본 모드만 제어하며 제목 번역 언어는 유지한다. Home 등 유지 호출자는 요청 Lang을 전달한다. v2 커뮤니티·팬톡 JOIN, 관리자 회원 목록의 localizedNames와 PUT을 보존한다.
S3 의존성·테스트 정리 삭제 래퍼/helper/필드의 src 참조가 없다. 테스트 생성자·조회 인자는 production과 일치하며 실제 core 빈이 필요한 4개 테스트에 설정을 유지한다. 래퍼의 SQL 수·역할·빈 입력·현재 원본 fallback 단언은 core 서비스 테스트에 통합했다.

검토한 주요 테스트는 AudioContentRepositoryLocalizedNameTest, ExplorerLocalizedNameEndToEndTest, LegacyCurrentNameReadIntegrationTest, ExplorerServiceTest, LegacyFanTalkReplyCharacterizationTest, CreatorLocalizedNameServiceTest다. 삭제 테스트는 제거된 래퍼 전용이며 기존 업무·번역·권한 및 v2 회귀는 유지한다. 새 raw/shared fixture와 단언에서 정적으로 확정 가능한 실패는 발견하지 못했다.

검증과 한계

  • 부모와 검토자의 GIT_MASTER=1 git diff --check: 오류 없음.
  • 부모의 rg 잔여 참조/공유 caller 대조 및 미추적 변경 테스트 4개 git diff --no-index --check: 지적 없음.
  • 사용자 제한으로 Gradle·빌드·컴파일·테스트·lint·앱·HTTP·DB 실행은 하지 않았다. LSP 도구도 제공되지 않는다.
  • 실제 SQL 실행, Spring 컨텍스트 기동, HTTP 회귀는 미검증이다. COR013의 과거 통과 기록으로 대체하지 않는다.
  • 검증용 프로세스·포트·DB 연결을 생성하지 않았다. 운영 적용·배포·커밋·푸시도 하지 않았다.
  • 확정 회귀 수정 Task 전환 항목 없음. 실행 허용 후 COR014/COR015의 focused·영향 회귀 검증이 필요하다.

COR016 실행 결과에 따른 후속 판정

  • 사용자 전체 실행에서 2271건 중 2건 실패가 확인됐다. 앞선 정적 리뷰는 H2 번역 JSON fixture 차이를 놓쳤으며 실행 통과 증거로 사용하지 않는다.
  • 확정 항목 REV-COR016-001: AudioContentRepositoryLocalizedNameTest의 두 새 번역 fixture가 JSON 객체 대신 JSON 문자열로 저장된다. 랭킹은 converter 역직렬화 예외, 시리즈는 빈 번역 제목의 원문 fallback으로 실패한다. 요구사항·기대값은 유효하고 두 테스트 모두 유지 대상이다.
  • 소유 Goal: JSON-FIXTURE-T1. 수정은 두 fixture에 기존 H2 FORMAT JSON 적재 패턴을 추가하는 것으로 제한했다. 운영 코드와 단언은 그대로다.
  • focused 검증: ./gradlew test --tests 'kr.co.vividnext.sodalive.content.AudioContentRepositoryLocalizedNameTest' --offline --console=plain exit 0, 6건 모두 통과, 22초. 실제 H2/JPA 조회에서 닉네임 raw/KO/JA와 번역 제목 단언을 확인했다.
  • 전체 회귀·ktlint 및 수정분 독립 리뷰: 진행 중. 그 결과 확인 전 전체 완료로 간주하지 않는다.

COR016 최종 결과

  • 독립 좁은 리뷰 ses_ec1576ac3ffesO9K10ayy0JKzr: APPROVE. H2-only scoped update와 flush/clear 순서, 단언 보존을 확인했다.
  • 전체 테스트: 323 suites/2271 tests/실패0/오류0/skip0. 첫 복합 명령은 test lint 줄바꿈 오류로 종료 코드 1이므로 전체 명령 성공으로 기록하지 않는다.
  • 후속 형식 보정: 테스트의 인자 줄바꿈과 이전 HomeService 래퍼 전환 호출의 줄바꿈 1곳을 정리했다. 운영 의미와 기대값 변화는 없다.
  • 최종 focused+전체 ktlint 명령: 종료 코드 0, 40초, 대상 클래스6건+HomeService1건 모두 통과하고 ktlintCheck도 통과했다. 전체 회귀 재실행은 형식 변경뿐이므로 생략했다.
  • REV-COR016-001 수정·검증 완료. 부모가 전체/후속 XML 집계와 테스트 프로세스 잔존 없음, HomeService 공백 제거 내용 동일을 확인했다. 상세 명령·로그는 plan-task.md의 COR016 기록을 따른다.