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:
@@ -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]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user