diff --git a/backend/src/main/resources/application.yml b/backend/src/main/resources/application.yml index 0ab6d42..27b0c2b 100644 --- a/backend/src/main/resources/application.yml +++ b/backend/src/main/resources/application.yml @@ -32,6 +32,8 @@ spring: - classpath:db/94_seed_ai_config.sql # TOTP(OTP 2차 인증) — esn_user otp_enabled ALTER (멱등, otp_secret 은 91 에서 이미 추가) - classpath:db/95_auth_otp.sql + # AI provider 를 Claude 로 flip(멱등 UPSERT) — 94 시드(ollama) 이후 활성화 스위치 + - classpath:db/96_ai_provider_claude.sql web: resources: static-locations: classpath:/static/ diff --git a/backend/src/main/resources/db/96_ai_provider_claude.sql b/backend/src/main/resources/db/96_ai_provider_claude.sql new file mode 100644 index 0000000..43b5cb8 --- /dev/null +++ b/backend/src/main/resources/db/96_ai_provider_claude.sql @@ -0,0 +1,22 @@ +-- ===================================================================== +-- GUARDiA ESN — 96. AI provider 를 Claude 로 전환(flip) — 멱등 UPSERT +-- 대상 DB : guardia_esn_db (테이블 esn_setting, PK=setting_key) +-- 적용 : application.yml spring.sql.init.schema-locations 에 본 파일을 94(시드) 이후 등재. +-- mode:always 재실행 안전(ON CONFLICT DO UPDATE — 항상 claude 로 수렴). +-- 설명 : db/94 시드는 ai.provider 기본값을 ollama 로 넣는다(ON CONFLICT DO NOTHING). +-- 본 파일은 그 위에서 provider 를 claude 로 flip 한다 — 코드 전환의 실제 활성화 스위치. +-- 행이 없으면 INSERT, 있으면 claude 로 UPDATE(=UPSERT). claude.model 은 미변경(기본 sonnet-4-6 유지). +-- 폴백 : provider=claude 라도 ANTHROPIC_API_KEY 미설정/호출 실패 시 AiTextRouter 가 +-- Ollama(온프레미스)로 자동 폴백 → 서비스 무중단·무회귀. flip 은 활성화일 뿐 강제 아님. +-- 보안 : 키/시크릿/IP/비밀번호 일절 미포함(키는 서버 env ANTHROPIC_API_KEY 로만 주입). +-- ===================================================================== + +SET client_encoding = 'UTF8'; + +INSERT INTO esn_setting (setting_key, setting_value, category, description) VALUES + ('ai.provider', 'claude', 'AI', 'LLM provider(ollama/claude/qwen3/deepseek/glm)') +ON CONFLICT (setting_key) DO UPDATE + SET setting_value = 'claude', + updated_at = NOW(); + +-- end 96_ai_provider_claude.sql