5.5 KiB
5.5 KiB
메인 탭·서브 배너 언어 후속 리뷰
리뷰 정보
- 일자: 2026-11-02
- 대상: 이벤트 언어
P3-T1/P3-GATE, 서브 배너P7-T1/P7-GATE. - 기준:
7fce26ad이후 현재test브랜치 변경. 별도 worktree 없음. - 독립 리뷰어: Oracle (
ses_e634d4707ffe00405lhcwZXMXM). 기록 담당: Sisyphus. - 요구사항: 이벤트 PRD
EVENT-LANG-010, 서브 배너 PRDSB-013/DEC-012, 기존 API 계약.
판정
명세 준수 APPROVE, 코드 품질·시나리오 커버리지 APPROVE. 확정 발견 사항 없음. 초기 리뷰 시 전체 검증은 진행 중이므로 전체 Gate 완료 판정은 보류했다. 후속 실행 결과는 아래에 누적한다.
| 시나리오 | 확인한 근거 |
|---|---|
| S1 메인 탭 | 여섯 호출부가 기존 isAdult를 보존하고 resolveCountryCode(member)로 JP→JA/그 외→KO를 전달한다. EventBannerLanguageIntegrationTest가 실제 HTTP에서 정확한 ID·순서·5필드, 일반/강제 국가와 익명 홈을 검증한다. |
| S2 공개 서브 배너 | 두 facade가 member를 전달하고 repository가 언어 equality를 기존 활성·기간 조건과 결합한다. RecommendationSubBannerIntegrationTest가 JP/KR/US/누락/강제 국가, 빈 결과, EN 제외, 6필드 및 원문 링크를 확인한다. |
| S3 관리자 | 생성 언어 생략 KO, 수정 생략 보존, explicit null/non-text/blank/unknown의 업로드·쓰기 전 400을 검증한다. 실제 DB 불변, S3 상호작용 0, 실제 repository spy save 0을 함께 확인한다. 관리자 조회는 모든 언어·9필드다. |
| S4 인접 회귀 | focused 11개 클래스 145 tests, failures/errors/skipped 0. 기존 기간·초 정밀도·소프트 삭제·정렬·무절단 테스트 보존. 전체 suite/lint/build는 초기 리뷰 시 진행 중이었다. |
검토한 증거
- 신규 실제 HTTP 테스트와 기존 서브 배너 domain/persistence/admin/recommendation 및 facade 테스트의 assertion을 직접 검토했다.
final-focused.log의BUILD SUCCESSFUL in 8m 8s, 11개 XML의 145 tests 및 실제 HTTP 185건/DB 증거를 대조했다. 해당 임시 원본은 작업 종료 시 정리하며 핵심 결과를 이 문서와 두 계획에 보존한다.- 신규 CREATE와 기존 테이블 migration의 guarded 컬럼 추가 → NULL만 KO backfill → NOT NULL/default 흐름을 검토했다. H2 CREATE 검증과 native MySQL 실행을 구분한다.
- LSP 도구가 없어
lsp_diagnostics는 미실행이며 Gradle 컴파일·lint를 대체 근거로 사용한다. LSP 통과로 표현하지 않는다.
운영 한계
운영 DB·native MySQL·실제 AWS·앱/관리자 UI·배포는 검증 범위 밖이다. 서버 배포 전에 스키마를 준비해야 한다. 임의 링크에 이벤트 관계나 자동 언어 검증을 추가하지 않았으므로 JA 소재 및 연결 이벤트 언어의 수동 정합성 확인이 필요하다. 이벤트 상세·성인 정책은 변경하지 않는다.
후속 검증
전체 검증 결과와 소유 자원 정리 증거는 실행 종료 후 누적한다. 확정 결함이 없어 회귀 수정 Goal 전환 항목은 없다.
2026-11-03 부모 재검증
./gradlew test ktlintCheck bootJar --continue --console=plain --no-daemon -Pkotlin.compiler.execution.strategy=in-process: 전체 336 suites / 2,928 tests / failures=0 / errors=0 / skipped=0, bootJar 성공. 테스트 인자 줄바꿈 한 곳만 lint 실패해 최초 명령 exit 1 (15m 50s).- 제품 코드 변경 없이 테스트 인자 배치만 수정한 뒤 해당
RecommendationSubBannerIntegrationTest와ktlintCheck bootJar재실행: exit 0, 26 tests / 실패·오류·무시 0,BUILD SUCCESSFUL in 4m 32s. - 전체 XML은 재실행 전에 부모가 집계했다. 현재 보고서는 26개 재실행 결과로 갱신되어 있으며 전체 성공 기록과 구분한다. 공백 변경만 있어 전체 재실행 대신 영향받은 실제 HTTP suite를 다시 구동했다.
- 기존 Oracle 세션의 continuation 도구가
Task not found를 반환해 새 Oracle 세션에 공백 delta와 최종 실행 증거만 재판정하도록 전달했다. 전면 리뷰를 중복 수행하지 않는다. - 후속 Oracle (
ses_e6323aa1afferoJ13TsZawApwR) 판정: APPROVE. 동작 변경 없음, 영향 HTTP 26개 및 lint/build Gate 승인, 추가 발견 사항 없음. 전체 2,928개 집계는 XML 갱신 전 부모 기록에 의존함을 명시했다. 부모는 최종 bash 실행의 정상 반환과BUILD SUCCESSFUL을 직접 확인했다. - 최종 결론: 승인된 backend 범위의
P3-GATE/P7-GATE완료. 운영 배포 성공이나 LSP 실행을 주장하지 않는다.
종료 증거
- 제품 커밋:
255da2b6(메인 탭 필터·HTTP 회귀),c4c61e36(서브 배너 언어·SQL·테스트). 두 커밋의 ktlint hook 및 커밋 메시지 검증 통과.git diff --exit-code -- src정상으로 hook 후 추가 소스 변경 없음. - 전체 검증 runner PID
49134종료,pgrep -fl 'GradleDaemon|GradleWorkerMain|redis-server'결과 없음. 랜덤 포트 테스트 서버는 테스트 컨텍스트 종료로 정리됐다. - 소유 임시 경로
/tmp/soda-banner-ulw.HDkpg4,/tmp/soda-banner-worker.AMcPYe,/tmp/soda-banner-impl.CfAkhD,/tmp/soda-banner-review.tIFyeb는 소유·실경로 확인 후 삭제하고 네 경로 모두 부재를 확인했다. 임시 notepad도 삭제했다. 공유 Gradle 캐시와 저장소 build reports/JAR는 보존했다. - worktree 생성·운영 DDL·배포·push 없음. 현재
test브랜치에서 완료했다.