diff --git a/backend/src/main/resources/application.yml b/backend/src/main/resources/application.yml index 5fd2143..599ab66 100644 --- a/backend/src/main/resources/application.yml +++ b/backend/src/main/resources/application.yml @@ -17,7 +17,7 @@ spring: init: # 멱등 스키마·시드(전부 IF NOT EXISTS + ON CONFLICT DO NOTHING). 재실행 안전. mode: ${SQL_INIT_MODE:always} - schema-locations: classpath:db/schema.sql,classpath:db/104_seed_ai_config.sql + schema-locations: classpath:db/schema.sql,classpath:db/104_seed_ai_config.sql,classpath:db/105_flip_ai_provider_claude.sql continue-on-error: true servlet: multipart: diff --git a/backend/src/main/resources/db/105_flip_ai_provider_claude.sql b/backend/src/main/resources/db/105_flip_ai_provider_claude.sql new file mode 100644 index 0000000..5b2f83f --- /dev/null +++ b/backend/src/main/resources/db/105_flip_ai_provider_claude.sql @@ -0,0 +1,20 @@ +-- ===================================================================== +-- GUARDiA MRO — 105. AI provider 전환: ollama → claude (멱등 UPSERT) +-- 대상 DB : mro_db (테이블 mro_setting, PK=key, 값컬럼=value) +-- 적용 : application.yml spring.sql.init.schema-locations 에 104(시드) 다음으로 등재. +-- mode:always + continue-on-error 재실행 안전. +-- 설명 : 기본 provider(ollama)를 Claude(Anthropic)로 flip 한다. +-- 104(시드)는 ON CONFLICT DO NOTHING 이라 기존 행을 덮지 못하므로, +-- 본 파일에서 명시적 UPSERT(DO UPDATE)로 provider=claude 를 강제한다. +-- 런타임 provider 는 mro_setting.'ai.provider' 단일 출처(AiConfigService). +-- 보안 : Claude API 키는 DB 미저장 — 서버 환경변수 ANTHROPIC_API_KEY 로만 주입. +-- 키/시크릿/IP/비밀번호 일절 미포함. 키 미설정 시 Ollama 자동 폴백(AiTextRouter). +-- 멱등 : 재적용해도 항상 value='claude' 수렴. updated_at 갱신. +-- ===================================================================== + +SET client_encoding = 'UTF8'; + +INSERT INTO mro_setting (key, value) VALUES ('ai.provider', 'claude') +ON CONFLICT (key) DO UPDATE SET value = 'claude', updated_at = NOW(); + +-- end 105_flip_ai_provider_claude.sql