refactor(subbanner): 언어 이관을 정적 SQL로 단순화한다

This commit is contained in:
2026-11-03 00:50:42 +09:00
parent 5666802f61
commit 8e1e22a7db
4 changed files with 40 additions and 47 deletions
+3 -2
View File
@@ -4,7 +4,7 @@
| 항목 | 내용 |
|---|---|
| 문서 상태 | Phase 7 언어 필터 후속 구현·전체 검증·독립 리뷰 완료, 미배포 |
| 문서 상태 | Phase 7 언어 기능·Phase 8 정적 이관 SQL 검증 및 리뷰 완료, 미배포 |
| 작성일 | 2026-10-29 |
| 최종 수정일 | 2026-11-03 |
| 대상 기능 | 가로형 서브 배너 백엔드 및 영속성 |
@@ -145,6 +145,7 @@
| 2026-10-29 | DEC-010 | 사용자 후속 확정·정정 | `is_active BOOLEAN NOT NULL DEFAULT TRUE`를 추가하고 DELETE는 false 갱신으로 변경한다. 삭제된 행은 모든 소비자 조회에서 제외하며 응답·권한·기간·S3 정책은 유지한다. 앞선 하드 삭제 완료 기록은 당시 이력으로 보존한다. | "is_active를 두고 소프트 삭제로 하자" |
| 2026-10-29 | DEC-011 | 사용자 후속 확정·정정 | 별도 앱 GET을 제거하고 두 추천 GET에 `data.subBanners`를 추가한다. 두 GET 모두 비로그인 접근을 유지하고 앱 프롬프트도 함께 변경한다. 관리자 CRUD·소프트 삭제·기간·응답 항목은 유지한다. | 두 추천 API 통합 및 앱 프롬프트 수정 요청 |
| 2026-11-02 | DEC-012 | 사용자 후속 확정 | 서브 배너에 기존 `Lang` enum 필드를 추가한다. 관리자 생성 누락은 KO, 수정 누락은 유지, 명시적 null·비문자열·invalid는 HTTP 400이며 upload/write 전 검증한다. 관리자 목록은 언어 전체 조회, 공개 두 추천은 회원 국가 기준 JP→JA/그 외→KO로 필터링한다. public DTO는 유지한다. | 승인된 최소 이벤트/서브 배너 언어 후속 수정 |
| 2026-11-03 | DEC-013 | 사용자 후속 변경 | 이관 파일을 SET/PREPARE/EXECUTE 없는 정적 ALTER TABLE 한 문장으로 변경한다. lang 컬럼이 없는 기존 테이블에 한 번만 적용하며 이미 존재하면 실행하지 않는다. 컬럼 정의와 KO 기본값은 유지한다. | 프로시저 없이 순수 SQL로 변경 요청 |
## 후속 사용자 요구사항: 관리자 노출 기간
@@ -161,6 +162,6 @@
- 관리자 create에서 `lang`을 생략하면 KO로 저장한다. update에서 생략하면 기존 언어를 보존한다. 명시적 null, JSON 비문자열 또는 유효하지 않은 코드는 HTTP 400으로 거부하고 S3 upload와 DB write 이전에 검증한다.
- 관리자 목록은 기존 placement 조건 외 언어 필터를 추가하지 않으며 응답마다 `lang`을 반환한다. public `SubBannerResponse`에는 `lang`을 노출하지 않는다.
- 공개 조회 service는 member를 받아 기존 `MemberContentPreferenceService.resolveCountryCode(member)`로 JP→JA, 그 외→KO를 선택하고 이를 필수 Lang으로 repository에 전달한다. 두 추천 facade는 기존 member를 service에 전달한다.
- 기존 테이블 CREATE SQL에는 `lang VARCHAR(10) NOT NULL DEFAULT 'KO'`를 포함한다. 별도 신규 migration SQL은 기존 테이블에 언어 컬럼을 안전하게 추가하고 null 값을 KO로 backfill한 뒤 NOT NULL DEFAULT KO를 적용한다.
- 기존 테이블 CREATE SQL에는 `lang VARCHAR(10) NOT NULL DEFAULT 'KO'`를 포함한다. 별도 migration은 DEC-013에 따라 lang 컬럼이 없는 기존 테이블에 같은 정의를 단일 정적 ALTER TABLE로 추가한다. 기존 행은 KO 기본값을 가지며 자동 존재 검사·재실행 건너뛰기는 제공하지 않는다. 이미 lang이 있으면 실행하지 않는다.
- KO backfill은 기존 행의 언어를 자동 추론하지 않는다. 운영 적용 전에 배너 소재를 검토해 JA 배너와 연결 이벤트의 언어를 운영 담당자가 수동 분류·정합성 확인해야 한다. 운영 DB에 DDL을 실행하지 않는다.
- 제외: 앱/관리자 UI, event link parsing, event detail/adult 정책 변경, 새 dependency, public DTO 변경, 운영 DB·DDL 실행.