fix(api): AI_FALLBACK_ORDER 無法正確解析 JSON 格式

根因: ConfigMap 用 JSON '["gemini","ollama","claude"]'
但 validator 用 split(",") 解析,導致無法匹配任何 provider
結果永遠用 default ["ollama","gemini","claude"]

影響: /api/v1/incidents 超時 (Ollama CPU 推理慢)

修復: 新增 JSON 格式支援,優先嘗試 json.loads()

這是根因修復,不是重啟!

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
OG T
2026-03-26 20:10:56 +08:00
parent 190cfda65c
commit 801b08a4b7

View File

@@ -214,7 +214,26 @@ class Settings(BaseSettings):
@field_validator("AI_FALLBACK_ORDER", mode="before")
@classmethod
def parse_ai_fallback(cls, v: str | list[str]) -> list[str]:
"""
解析 AI_FALLBACK_ORDER支援三種格式:
1. JSON: '["gemini","ollama","claude"]'
2. CSV: 'gemini,ollama,claude'
3. List: ["gemini", "ollama", "claude"]
2026-03-27 修復: ConfigMap 用 JSON 格式,原本只支援 CSV
"""
import json
if isinstance(v, str):
v = v.strip()
# 嘗試 JSON 解析 (ConfigMap 格式)
if v.startswith("["):
try:
parsed = json.loads(v)
return [p.strip().lower() for p in parsed]
except json.JSONDecodeError:
pass # 降級到 CSV 解析
# CSV 格式
return [provider.strip().lower() for provider in v.split(",")]
return [p.lower() for p in v]