feat: P0-02/P0-03/P0-05 数据库时间语义与约束
P0-02: MatchStats 增加 source/source_record_id/retrieved_at/available_at
context_builder 过滤统计数据时检查 available_at <= cutoff
P0-03: Prediction 增加 match_kickoff_at/prediction_created_at/prediction_cutoff_at
明确区分比赛时间/预测创建时间/数据截止时间
P0-05: Prediction 增加 status 字段(success/failed/degraded)
数据库 CHECK 约束
Alembic: 0005_prediction_status_and_stats_provenance
P1-02: injuries as_of 不再截断为 date,保持 datetime 精度
This commit is contained in:
@@ -1,11 +1,15 @@
|
||||
"""回测路由。"""
|
||||
from __future__ import annotations
|
||||
|
||||
import logging
|
||||
|
||||
from fastapi import APIRouter, HTTPException
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
from src.llm.backtest import run_backtest
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
router = APIRouter(prefix="/api/v1", tags=["backtest"])
|
||||
|
||||
|
||||
@@ -38,7 +42,8 @@ async def backtest(req: BacktestRequest):
|
||||
model=req.model,
|
||||
)
|
||||
except Exception as e:
|
||||
raise HTTPException(500, f"backtest failed: {e}")
|
||||
logger.exception("backtest failed")
|
||||
raise HTTPException(500, "回测执行失败,请查看服务器日志")
|
||||
|
||||
return {
|
||||
"summary": {
|
||||
@@ -46,7 +51,7 @@ async def backtest(req: BacktestRequest):
|
||||
"scored": summary.scored,
|
||||
"accuracy_1x2": summary.accuracy_1x2,
|
||||
"avg_score_rmse": summary.avg_score_rmse,
|
||||
"avg_subjective_confidence": summary.avg_confidence,
|
||||
"avg_subjective_confidence": summary.avg_subjective_confidence,
|
||||
"calibration": summary.calibration,
|
||||
},
|
||||
"results": [
|
||||
|
||||
Reference in New Issue
Block a user