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

126 lines
3.2 KiB
Python

"""
网关管理路由
处理网关连接、断开、状态查询
"""
from fastapi import APIRouter, Depends, HTTPException, status
from typing import List
import logging
from ..models import GatewayConnectRequest, GatewayDisconnectRequest, GatewayStatus, ApiResponse
from ..deps import get_current_user, get_vn_service
logger = logging.getLogger(__name__)
router = APIRouter()
@router.get("/list", response_model=List[GatewayStatus])
async def list_gateways(
current_user: dict = Depends(get_current_user),
vn_service=Depends(get_vn_service)
):
"""
获取所有可用网关列表
返回系统支持的所有网关,包括已连接和未连接的网关
"""
gateways = await vn_service.get_available_gateways()
return [
GatewayStatus(
gateway_name=g["gateway_name"],
gateway_type=g.get("gateway_type", "unknown"),
status=g.get("status", "disconnected")
)
for g in gateways
]
@router.get("/{name}/setting")
async def get_gateway_setting(
name: str,
current_user: dict = Depends(get_current_user),
vn_service=Depends(get_vn_service)
):
"""
获取网关配置模板
返回指定网关的配置模板,用于前端生成配置表单
"""
setting = await vn_service.get_gateway_setting(name)
return {
"gateway_name": name,
"setting": setting
}
@router.get("/{name}/status")
async def get_gateway_status(
name: str,
current_user: dict = Depends(get_current_user),
vn_service=Depends(get_vn_service)
):
"""
获取网关连接状态
返回指定网关的连接状态
"""
status_info = await vn_service.get_gateway_status(name)
return status_info
@router.post("/{name}/connect")
async def connect_gateway(
name: str,
request: GatewayConnectRequest,
current_user: dict = Depends(get_current_user),
vn_service=Depends(get_vn_service)
):
"""
连接网关
- **gateway_name**: 网关名称
- **gateway_type**: 网关类型 (ctp, ib, okx, binance)
- **setting**: 网关配置参数
"""
success = await vn_service.connect_gateway(
gateway_name=request.gateway_name,
gateway_type=request.gateway_type.value,
setting=request.setting
)
if success:
return ApiResponse(
success=True,
message=f"Gateway {request.gateway_name} is connecting"
)
else:
raise HTTPException(
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
detail=f"Failed to connect gateway {request.gateway_name}"
)
@router.post("/{name}/disconnect")
async def disconnect_gateway(
name: str,
current_user: dict = Depends(get_current_user),
vn_service=Depends(get_vn_service)
):
"""
断开网关
- **name**: 网关名称
"""
success = await vn_service.disconnect_gateway(name)
if success:
return ApiResponse(
success=True,
message=f"Gateway {name} disconnected successfully"
)
else:
raise HTTPException(
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
detail=f"Failed to disconnect gateway {name}"
)