| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- from fastapi import APIRouter, Query
- from app.core.config import settings
- from app.scheduler.manager import scheduler
- from app.services.demand_pool_service import (
- query_demand_pool_records,
- query_strategy_options,
- )
- router = APIRouter()
- @router.get("/health")
- async def health_check() -> dict[str, str]:
- return {"status": "ok", "service": settings.app_name, "env": settings.app_env}
- @router.get("/scheduler/status")
- async def scheduler_status() -> dict[str, object]:
- jobs = scheduler.get_jobs()
- return {
- "running": scheduler.running,
- "job_count": len(jobs),
- "jobs": [job.id for job in jobs],
- }
- @router.get("/demand-pool")
- async def query_demand_pool(
- strategy: list[str] | None = Query(default=None, description="策略,支持多选"),
- start_dt: str | None = Query(default=None, description="开始日期: yyyymmdd 或 yyyy-mm-dd"),
- end_dt: str | None = Query(default=None, description="结束日期: yyyymmdd 或 yyyy-mm-dd"),
- min_weight: float | None = Query(default=None, description="最小权重"),
- max_weight: float | None = Query(default=None, description="最大权重"),
- sort_by: str | None = Query(default="weight", description="排序字段"),
- sort_order: str | None = Query(default="desc", description="排序方向: asc 或 desc"),
- page: int = Query(default=1, ge=1, description="页码,从 1 开始"),
- page_size: int = Query(default=20, ge=1, le=200, description="每页条数"),
- ) -> dict[str, object]:
- return query_demand_pool_records(
- strategies=strategy,
- start_dt=start_dt,
- end_dt=end_dt,
- min_weight=min_weight,
- max_weight=max_weight,
- sort_by=sort_by,
- sort_order=sort_order,
- page=page,
- page_size=page_size,
- )
- @router.get("/demand-pool/strategies")
- async def get_demand_pool_strategies(
- start_dt: str | None = Query(default=None, description="开始日期: yyyymmdd 或 yyyy-mm-dd"),
- end_dt: str | None = Query(default=None, description="结束日期: yyyymmdd 或 yyyy-mm-dd"),
- min_weight: float | None = Query(default=None, description="最小权重"),
- max_weight: float | None = Query(default=None, description="最大权重"),
- ) -> dict[str, object]:
- return query_strategy_options(
- start_dt=start_dt,
- end_dt=end_dt,
- min_weight=min_weight,
- max_weight=max_weight,
- )
|