diff --git a/backend/src/main/resources/db/105_ai_provider_claude.sql b/backend/src/main/resources/db/105_ai_provider_claude.sql new file mode 100644 index 0000000..2095692 --- /dev/null +++ b/backend/src/main/resources/db/105_ai_provider_claude.sql @@ -0,0 +1,27 @@ +-- ===================================================================== +-- GUARDiA FA — 105. AI provider 전환: ollama → claude (멱등 UPSERT) +-- 대상 DB : fa_db (테이블 fa_setting, PK=setting_key, 값컬럼=setting_value) +-- 적용 : FA 는 spring.sql.init 미사용(schema.sql 은 setup/psql 수동 적용) → +-- 운영 psql 로 실행하거나 setup_fa_service.sh 에 등재(schema.sql·104 다음). +-- 재실행 안전(멱등). +-- 설명 : 기본 provider(ollama)를 Claude(Anthropic)로 flip 한다. 이것이 코드 전환 +-- (AiTextRouter → AiConfigService.isClaudeActive)을 런타임에 실제 활성화하는 스위치. +-- 104(시드)는 ON CONFLICT DO NOTHING 이라 기존 'ollama' 행을 덮지 못하므로, +-- 본 파일에서 명시적 UPSERT(DO UPDATE)로 provider='claude' 를 강제한다. +-- 런타임 provider 는 fa_setting.'ai.provider' 단일 출처(AiConfigService.provider()). +-- AiConfigService.isClaudeActive() = provider=claude · ANTHROPIC_API_KEY 설정됨 · ai.enabled. +-- 무회귀 : provider=claude 라도 키 미설정/Claude 실패 시 AiTextRouter 가 Ollama 자동 폴백(무중단). +-- 재기동 불필요 — 다음 AI 호출부터 반영(AiConfigService 가 DB 를 매 호출 조회). +-- 보안 : Claude API 키는 DB 에 저장/기재하지 않는다 — 서버 env ANTHROPIC_API_KEY 로만 주입. +-- 본 파일에 키/시크릿/IP/비밀번호 일절 미포함. +-- 롤백 : UPDATE fa_setting SET setting_value='ollama' WHERE setting_key='ai.provider'; (Ollama 재가동 시) +-- ===================================================================== + +SET client_encoding = 'UTF8'; + +INSERT INTO fa_setting (setting_key, setting_value, updated_at) +VALUES ('ai.provider', 'claude', NOW()) +ON CONFLICT (setting_key) +DO UPDATE SET setting_value = 'claude', updated_at = NOW(); + +-- end 105_ai_provider_claude.sql diff --git a/setup_fa_service.sh b/setup_fa_service.sh index 1ec192f..2532808 100644 --- a/setup_fa_service.sh +++ b/setup_fa_service.sh @@ -18,6 +18,9 @@ echo "PostgreSQL DB 생성 중..." sudo -u postgres psql -c "CREATE USER ${DB_USER} WITH PASSWORD '${DB_PASS}';" 2>/dev/null || true sudo -u postgres psql -c "CREATE DATABASE ${DB_NAME} OWNER ${DB_USER};" 2>/dev/null || true sudo -u postgres psql -d "${DB_NAME}" -f /opt/guardia-fa/schema.sql 2>/dev/null || true +# AI 플랫폼 설정 시드(104) + Claude provider flip(105) — 멱등, 재실행 안전 +sudo -u postgres psql -d "${DB_NAME}" -f /opt/guardia-fa/104_seed_ai_config.sql 2>/dev/null || true +sudo -u postgres psql -d "${DB_NAME}" -f /opt/guardia-fa/105_ai_provider_claude.sql 2>/dev/null || true # Create app directory mkdir -p ${APP_DIR}