diff --git a/migrations/142_ask_events_source_notnull.sql b/migrations/_deferred/142_ask_events_source_notnull.sql similarity index 100% rename from migrations/142_ask_events_source_notnull.sql rename to migrations/_deferred/142_ask_events_source_notnull.sql diff --git a/migrations/_deferred/README.md b/migrations/_deferred/README.md new file mode 100644 index 0000000..6ccea3f --- /dev/null +++ b/migrations/_deferred/README.md @@ -0,0 +1,18 @@ +# Deferred migrations + +이 디렉토리의 `*.sql` 파일은 `app/core/database.py:_parse_migration_files()` 의 +`migrations_dir.glob("*.sql")` (non-recursive) 에 잡히지 않으므로 자동 적용 안 됨. + +활성화 절차: `git mv migrations/_deferred/.sql migrations/.sql` 후 deploy. + +## 142_ask_events_source_notnull.sql + +`source` 컬럼에 NOT NULL 제약 추가. **1주 운영 관찰 후 적용 권장**: + +조건: +- 138~141 적용 후 7일 운영 +- `SELECT COUNT(*) FROM ask_events WHERE source IS NULL AND created_at > ;` + 결과 0 확인 — 즉, 새 코드가 모든 INSERT 에 source 를 항상 채우는지 empirical 검증 +- 위 0 이면 142 활성화 → docker compose restart fastapi (init_db 가 자동 적용) + +이유: NOT NULL 적용 후 NULL INSERT 시도 시 ask_events 기록 실패 (data loss).