"""评估路由。""" from __future__ import annotations import logging from fastapi import APIRouter, Depends, HTTPException from src.api.schemas import EvalSummaryOut, SettleRequest from src.db.base import AsyncSession, get_db, get_db_read from src.llm.eval import get_eval_summary, settle_prediction logger = logging.getLogger(__name__) router = APIRouter(prefix="/api/v1", tags=["eval"]) @router.post("/eval/settle") async def settle(req: SettleRequest, db: AsyncSession = Depends(get_db)): """回填实际结果。""" try: pred = await settle_prediction(req.prediction_id, req.home_goals, req.away_goals) return {"id": pred.id, "settled": pred.settled} except ValueError as e: logger.warning("settle failed: %s", e) raise HTTPException(404, "预测记录不存在") except Exception as e: logger.exception("settle error") raise HTTPException(500, "回填失败,请查看服务器日志") @router.get("/eval/summary", response_model=EvalSummaryOut) async def eval_summary(): """提供商/模型准确率对比。""" return await get_eval_summary()