73 lines
2.2 KiB
Python
73 lines
2.2 KiB
Python
from fastapi import APIRouter, HTTPException, Query, Request
|
|
from fastapi.responses import JSONResponse
|
|
from app.models import StrategyStartRequest
|
|
from app.services.strategy_service import (
|
|
start_strategy,
|
|
resume_strategy,
|
|
stop_strategy,
|
|
get_strategy_status,
|
|
get_strategy_summary,
|
|
get_engine_status,
|
|
get_market_status,
|
|
get_strategy_logs as fetch_strategy_logs,
|
|
)
|
|
from app.services.tenant import get_request_user_id
|
|
|
|
router = APIRouter(prefix="/api")
|
|
|
|
@router.post("/strategy/start")
|
|
def start(req: StrategyStartRequest, request: Request):
|
|
user_id = get_request_user_id(request)
|
|
return start_strategy(req, user_id)
|
|
|
|
@router.post("/strategy/stop")
|
|
def stop(request: Request):
|
|
user_id = get_request_user_id(request)
|
|
return stop_strategy(user_id)
|
|
|
|
@router.post("/strategy/resume")
|
|
def resume(request: Request):
|
|
try:
|
|
user_id = get_request_user_id(request)
|
|
return resume_strategy(user_id)
|
|
except HTTPException:
|
|
raise
|
|
except Exception as exc:
|
|
print(f"[STRATEGY] unhandled resume route failure: {exc}", flush=True)
|
|
return JSONResponse(
|
|
status_code=200,
|
|
content={
|
|
"status": "resume_failed",
|
|
"message": f"Unable to resume strategy: {exc}",
|
|
},
|
|
)
|
|
|
|
@router.get("/strategy/status")
|
|
def status(request: Request):
|
|
user_id = get_request_user_id(request)
|
|
return get_strategy_status(user_id)
|
|
|
|
@router.get("/strategy/summary")
|
|
def summary(request: Request):
|
|
user_id = get_request_user_id(request)
|
|
return get_strategy_summary(user_id)
|
|
|
|
@router.get("/engine/status")
|
|
def engine_status(request: Request):
|
|
user_id = get_request_user_id(request)
|
|
return get_engine_status(user_id)
|
|
|
|
@router.get("/market/status")
|
|
def market_status():
|
|
return get_market_status()
|
|
|
|
@router.get("/logs")
|
|
def get_logs(request: Request, since_seq: int = Query(0)):
|
|
user_id = get_request_user_id(request)
|
|
return fetch_strategy_logs(user_id, since_seq)
|
|
|
|
@router.get("/strategy/logs")
|
|
def get_strategy_logs_endpoint(request: Request, since_seq: int = Query(0)):
|
|
user_id = get_request_user_id(request)
|
|
return fetch_strategy_logs(user_id, since_seq)
|