From f303e19a469722c5c8c35d3d211cabf7918ad5e4 Mon Sep 17 00:00:00 2001 From: aaron <> Date: Wed, 22 Apr 2026 12:51:09 +0800 Subject: [PATCH] 1 --- backend/app/api/system.py | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/backend/app/api/system.py b/backend/app/api/system.py index cde9433..376e08a 100644 --- a/backend/app/api/system.py +++ b/backend/app/api/system.py @@ -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)}")