fix(ai): 修復 _call_openclaw_analyze datetime 序列化失敗 → fallback Gemini
Some checks failed
CD Pipeline / build-and-deploy (push) Has been cancelled
E2E Health Check / e2e-health (push) Has been cancelled

signals dict 內含 datetime 物件,httpx json= 無法序列化
加入 _to_serializable 遞迴轉換,datetime → str

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
OG T
2026-04-01 22:37:04 +08:00
parent ff85b0581a
commit 88051388d4

View File

@@ -276,12 +276,24 @@ class OpenClawService:
"""
try:
client = await self._get_client()
import json as _json
def _to_serializable(obj):
if isinstance(obj, dict):
return {k: _to_serializable(v) for k, v in obj.items()}
if isinstance(obj, list):
return [_to_serializable(i) for i in obj]
try:
_json.dumps(obj)
return obj
except (TypeError, ValueError):
return str(obj)
payload = {
"incident_id": incident_id,
"severity": severity,
"signals": signals[:5],
"signals": _to_serializable(signals[:5]),
"affected_services": affected_services,
"expert_context": expert_context,
"expert_context": _to_serializable(expert_context) if expert_context else None,
}
resp = await client.post(
f"{settings.OPENCLAW_URL}/api/v1/analyze/incident",