""" 系统路由 提供健康检查、系统信息等接口 """ from fastapi import APIRouter, Depends from datetime import datetime import sys import time import logging from ..models import HealthResponse, SystemInfo from ..deps import get_vn_service logger = logging.getLogger(__name__) router = APIRouter() @router.get("/health", response_model=HealthResponse) async def health_check(): """ 健康检查端点 返回 API 服务状态 """ return HealthResponse( status="healthy", service="Sanguo VeighNa Web API", version="1.0.0", timestamp=datetime.utcnow() ) @router.get("/info", response_model=SystemInfo) async def get_system_info(vn_service=Depends(get_vn_service)): """ 获取系统信息 包括版本、运行时间、连接状态等 """ # 获取连接的网关数量 gateways = await vn_service.get_connected_gateways() connected_count = sum(1 for g in gateways if g["status"] == "connected") # 获取策略数量(占位) strategy_count = 0 return SystemInfo( version="1.0.0", vnpy_version="4.4.0", python_version=f"{sys.version_info.major}.{sys.version_info.minor}.{sys.version_info.micro}", uptime=time.time(), # 实际应该记录启动时间 connected_gateways=connected_count, active_strategies=strategy_count ) @router.get("/status") async def get_system_status(vn_service=Depends(get_vn_service)): """ 获取详细系统状态 包括网关、账户、持仓、订单等 """ try: accounts = await vn_service.get_accounts() positions = await vn_service.get_positions() orders = await vn_service.get_orders() gateways = await vn_service.get_connected_gateways() return { "status": "running", "accounts_count": len(accounts), "positions_count": len(positions), "orders_count": len(orders), "gateways": gateways } except Exception as e: logger.error(f"Error getting system status: {e}") return { "status": "error", "error": str(e) }