Files
sanguo_vnpy_v2/_retired/sanguo_web/api/routes/system.py
T
claude_dev bf57aed17a retire(web): sanguo_web legacy 平行后端归档——用户拍板「代码保留归档,服务删」 [nas]
- git mv sanguo_web → _retired/sanguo_web/(git 历史保全+墓碑 README:
  归档原因/拍板记录/现役=sanguo_api)
- 退出启动面三处: promote.sh ALL_MODS 白名单(15→14 模块)+docker/Dockerfile:63
  COPY+docker/Dockerfile.nas:16 COPY——不可再被部署或启动为服务
- 背景(架构审计 P0-3): 硬编码 SECRET_KEY/admin123 默认口令/CORS 全开/可下
  真实订单/零测试/与 sanguo_api 路由冲突; 生产从未部署为服务, 纯误启动风险
  (README 旧「生产模式 uvicorn sanguo_web」指引已于 f6ca85e 勘误)
- three-env §3.1 模块清单+§12 矩阵行同步; session-guide §5 角色表前端行
  勘误(旧表把 sanguo_web 当前端模块推——实为 legacy 后端, 前端=frontend/)
- 零外部 import(runuweb/tests/packages 全 grep 实证), pytest testpaths=tests
  不受影响

Co-Authored-By: Claude Code <notify@anthropic.com>
2026-10-01 09:46:21 +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)
}