fix(ai): 修復 _call_openclaw_analyze datetime 序列化失敗 → fallback Gemini
signals dict 內含 datetime 物件,httpx json= 無法序列化 加入 _to_serializable 遞迴轉換,datetime → str Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -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",
|
||||
|
||||
Reference in New Issue
Block a user