from __future__ import annotations from typing import Annotated from fastapi import APIRouter, Depends, HTTPException from ..market import get_gateway from .auth import require_user router = APIRouter(prefix="/api/market", tags=["market"]) @router.get("/snapshot") async def market_snapshot(_user: Annotated[str, Depends(require_user)]) -> dict: gw = get_gateway() snap = gw.snapshot_dict() # 切换交易所后短时可能尚未对齐 ATM;仍返回结构便于前端展示交易所 return snap @router.post("/realign") async def market_realign(_user: Annotated[str, Depends(require_user)]) -> dict: """手动重对齐次日到期 ATM 合约(运维/调试用)。""" gw = get_gateway() try: pair = await gw.realign_async() except Exception as e: raise HTTPException(status_code=502, detail=str(e)) from e return {"ok": True, "pair": pair.to_dict() if pair else None, "snapshot": gw.snapshot_dict()}