Files
ai-safety-platform/app/api/v1/endpoints/reports.py
T
baozaotumao2025 14722be770 first commit
2026-07-18 21:00:26 +08:00

45 lines
1.4 KiB
Python

from fastapi import APIRouter, Depends, Path, Query
from sqlalchemy.orm import Session
from app.api.deps import get_database
from app.db.repositories.repositories import TestRunRepository
from app.schemas.api import ErrorResponse, ReportResponse
from app.services.report_service import ReportService
router = APIRouter()
@router.get(
"/reports",
response_model=list[ReportResponse],
summary="列出测试汇总报告",
description="按运行创建时间倒序返回实时计算的报告;`limit` 默认 50,最大 200。",
)
def list_reports(
limit: int = Query(default=50, ge=1, le=200),
db: Session = Depends(get_database),
):
service = ReportService(db)
return [
ReportResponse(run_id=run.id, summary=service.build_summary(run.id))
for run in TestRunRepository(db).list(limit)
]
@router.get(
"/reports/{run_id}",
response_model=ReportResponse,
summary="查询测试汇总报告",
description="实时计算并返回某次测试运行的结构化汇总;运行不存在时返回 404。",
responses={404: {"model": ErrorResponse, "description": "指定的测试运行不存在。"}},
)
def get_report(
run_id: int = Path(description="要生成报告的测试运行 ID,必须为正整数。", gt=0),
db: Session = Depends(get_database),
):
return ReportResponse(
run_id=run_id,
summary=ReportService(db).build_summary(run_id),
)