Files
sanguo_vnpy_v2/sanguo_web/api/routes/strategy.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

146 lines
3.7 KiB
Python

"""
策略管理路由
处理策略的创建、初始化、启动、停止
"""
from fastapi import APIRouter, Depends, HTTPException, status
from typing import List
import logging
from ..models import (
StrategyInfo, StrategyCreateRequest, StrategyInitRequest,
StrategyStartRequest, StrategyStopRequest, StrategyEditRequest
)
from ..deps import get_current_user, get_vn_service
logger = logging.getLogger(__name__)
router = APIRouter()
@router.get("/list", response_model=List[StrategyInfo])
async def list_strategies(
current_user: dict = Depends(get_current_user),
vn_service=Depends(get_vn_service)
):
"""
获取所有策略信息
"""
strategies = await vn_service.get_strategies()
return [
StrategyInfo(
strategy_name=s["strategy_name"],
class_name=s["class_name"],
status=s["status"],
created_at=s["created_at"],
variables=s.get("variables")
)
for s in strategies
]
@router.post("/create")
async def create_strategy(
request: StrategyCreateRequest,
current_user: dict = Depends(get_current_user),
vn_service=Depends(get_vn_service)
):
"""
创建策略
- **strategy_name**: 策略名称
- **class_name**: 策略类名
- **setting**: 策略参数
"""
# 占位实现
logger.info(f"Creating strategy: {request.strategy_name}")
return {
"success": True,
"message": f"Strategy {request.strategy_name} created successfully"
}
@router.post("/init")
async def init_strategy(
request: StrategyInitRequest,
current_user: dict = Depends(get_current_user),
vn_service=Depends(get_vn_service)
):
"""
初始化策略
- **strategy_name**: 策略名称
"""
success = await vn_service.init_strategy(request.strategy_name)
if success:
return {"success": True, "message": "Strategy initialized successfully"}
else:
raise HTTPException(
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
detail=f"Failed to initialize strategy {request.strategy_name}"
)
@router.post("/start")
async def start_strategy(
request: StrategyStartRequest,
current_user: dict = Depends(get_current_user),
vn_service=Depends(get_vn_service)
):
"""
启动策略
- **strategy_name**: 策略名称
"""
success = await vn_service.start_strategy(request.strategy_name)
if success:
return {"success": True, "message": "Strategy started successfully"}
else:
raise HTTPException(
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
detail=f"Failed to start strategy {request.strategy_name}"
)
@router.post("/stop")
async def stop_strategy(
request: StrategyStopRequest,
current_user: dict = Depends(get_current_user),
vn_service=Depends(get_vn_service)
):
"""
停止策略
- **strategy_name**: 策略名称
"""
success = await vn_service.stop_strategy(request.strategy_name)
if success:
return {"success": True, "message": "Strategy stopped successfully"}
else:
raise HTTPException(
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
detail=f"Failed to stop strategy {request.strategy_name}"
)
@router.post("/edit")
async def edit_strategy(
request: StrategyEditRequest,
current_user: dict = Depends(get_current_user),
vn_service=Depends(get_vn_service)
):
"""
编辑策略参数
- **strategy_name**: 策略名称
- **setting**: 新的参数
"""
logger.info(f"Editing strategy: {request.strategy_name}")
return {
"success": True,
"message": "Strategy parameters updated successfully"
}