918bbed0fc
- 修复 deps.py 中 get_vn_service 的引用错误 (vn_service.vn_service -> vn_service) - 移除登录页面上的明文密码提示 - 改进前端错误处理,避免数据加载失败导致登录显示错误
84 lines
2.1 KiB
Python
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)
|
|
}
|