Files
sanguo_vnpy_v2/sanguo_web/api/routes/system.py
T
claude_dev 918bbed0fc fix: 修复登录500错误和移除明文密码提示
- 修复 deps.py 中 get_vn_service 的引用错误 (vn_service.vn_service -> vn_service)
- 移除登录页面上的明文密码提示
- 改进前端错误处理,避免数据加载失败导致登录显示错误
2026-07-02 12:23:55 +08:00

84 lines
2.1 KiB
Python

"""
系统路由
提供健康检查、系统信息等接口
"""
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)
}