docs(aicharacter): 크리에이터 연결 DDL을 보강한다

This commit is contained in:
2026-06-12 13:57:52 +09:00
parent a0f0d82b63
commit 082d8457eb
2 changed files with 144 additions and 103 deletions

View File

@@ -74,8 +74,9 @@
- 기존 모든 `chat_character`별 AI 캐릭터용 Member 생성
- 생성된 Member를 `chat_character.creator_member_id`에 연결
- 검증 후 `chat_character.creator_member_id not null` 전환
- SQL backfill은 `email = null`, `password = ''`, `role = 'CREATOR'`, `member_kind = 'AI_CHARACTER'` 생성한다.
- MySQL에서 insert된 Member ID를 안전하게 매핑하기 위해 저장 프로시저 또는 임시 매핑 테이블을 사용한다. `email`을 임시 식별자로 사용하지 않는다.
- SQL backfill은 최종적으로 `email = null`, `password = ''`, `role = 'CREATOR'`, `member_kind = 'AI_CHARACTER'` 상태가 되도록 생성한다.
- `member.email`은 nullable이므로 저장 프로시저 대신 backfill 중 임시 식별자로 사용할 수 있다. 단, `chat_character.creator_member_id` 매핑 후 임시 email 값은 반드시 `NULL`로 되돌린다.
- 운영 반영 후 문제에 대비해 FK/index/연결 데이터/컬럼 제거 순서의 롤백 방법을 SQL 문서에 함께 기록한다.
- Verify:
- SQL 내 검증 쿼리 포함:
```sql
@@ -308,3 +309,9 @@
- `./gradlew test`
- 목적: 리뷰 보완 후 전체 회귀 테스트 확인.
- 결과: `BUILD SUCCESSFUL in 1m 15s`.
- `rg -n "CREATE PROCEDURE|CURSOR|CALL backfill_chat_character_creator_member|LAST_INSERT_ID|Rollback|임시 식별자" docs/20260611_AI캐릭터_크리에이터기능_최소연결`
- 목적: 운영 DB 반영 SQL을 저장 프로시저 없는 단순 SQL로 변경했고, 임시 email 식별자 기준과 롤백 절차가 문서에 남았는지 확인.
- 결과: 저장 프로시저/커서/CALL/LAST_INSERT_ID 패턴은 미검출. `alter-existing-tables.sql`에 임시 식별자 정리와 Rollback 절차가 존재함을 확인.
- `./gradlew tasks --all`
- 목적: 문서 변경 후 Gradle 명령 유효성 확인.
- 결과: `BUILD SUCCESSFUL in 942ms`.