"""产品路由:列表 + 历史业绩(匿名可访问,业务在 service/product.py)。""" from datetime import date from fastapi import APIRouter, Depends, Query from sqlalchemy.ext.asyncio import AsyncSession from config.deps import get_db from service.product import get_history, list_products from utils.response import success router = APIRouter() @router.get("/products") async def products( page: int = Query(1, ge=1), page_size: int = Query(10, ge=1, le=100), keyword: str | None = Query(None, max_length=64), product_type: str | None = Query(None, max_length=32), risk_level: str | None = Query(None, max_length=8), status: str = Query("在售", max_length=16), sort_by: str = Query("create_time", max_length=32), sort_order: str = Query("desc", max_length=4), db: AsyncSession = Depends(get_db), ): data = await list_products( db, page=page, page_size=page_size, keyword=keyword, product_type=product_type, risk_level=risk_level, status=status, sort_by=sort_by, sort_order=sort_order, ) return success(data) @router.get("/products/{product_code}/history") async def history( product_code: str, start_date: date | None = Query(None), end_date: date | None = Query(None), series: str = Query("nav", max_length=16), db: AsyncSession = Depends(get_db), ): data = await get_history(db, product_code, start_date, end_date, series) return success(data)