This commit is contained in:
aaron 2026-04-22 12:51:09 +08:00
parent bbe27d8d1f
commit f303e19a46

View File

@ -4,6 +4,7 @@
from datetime import datetime, timedelta
from fastapi import APIRouter, HTTPException
from typing import Dict, Any
import numpy as np
from app.utils.logger import logger
from app.utils.system_status import get_system_monitor
from app.crypto_agent.crypto_agent import get_crypto_agent
@ -15,6 +16,28 @@ from app.services.hyperliquid_trading_service import get_hyperliquid_service
router = APIRouter()
def _sanitize_for_response(value: Any) -> Any:
if isinstance(value, dict):
return {str(key): _sanitize_for_response(item) for key, item in value.items()}
if isinstance(value, list):
return [_sanitize_for_response(item) for item in value]
if isinstance(value, tuple):
return [_sanitize_for_response(item) for item in value]
if isinstance(value, set):
return [_sanitize_for_response(item) for item in value]
if isinstance(value, np.bool_):
return bool(value)
if isinstance(value, np.integer):
return int(value)
if isinstance(value, np.floating):
return float(value)
if isinstance(value, np.ndarray):
return [_sanitize_for_response(item) for item in value.tolist()]
if isinstance(value, np.generic):
return value.item()
return value
def _parse_signal_timestamp(value: Any) -> datetime | None:
if value is None:
return None
@ -455,7 +478,7 @@ async def get_console_snapshot():
execution_events,
)
return {
payload = {
"status": "success",
"data": {
"generated_at": now.isoformat(),
@ -475,6 +498,7 @@ async def get_console_snapshot():
},
}
}
return _sanitize_for_response(payload)
except Exception as e:
logger.error(f"获取总控台快照失败: {e}")
raise HTTPException(status_code=500, detail=f"获取总控台快照失败: {str(e)}")