chore(deploy): FA 클린 재동기화 + Claude provider 전환

- db/105_ai_provider_claude.sql: fa_setting ai.provider ollama->claude 멱등 UPSERT
- setup_fa_service.sh: 104 시드 + 105 flip psql 등재(멱등)
- provider 결정 경로: AiTextRouter -> AiConfigService.isClaudeActive -> fa_setting.ai.provider
- 무회귀: 키 미설정/실패 시 AiTextRouter Ollama 자동 폴백
This commit is contained in:
ython 2026-07-11 10:57:46 +09:00
parent 8515e59088
commit 16ad654cbe
2 changed files with 30 additions and 0 deletions

View File

@ -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

View File

@ -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}