feature: /api/v1/runs/{run_id}/export 按照需求导出测试结果

This commit is contained in:
baozaotumao2025
2026-07-18 23:49:41 +08:00
parent c57ec67fe3
commit e980f1a349
8 changed files with 245 additions and 106 deletions
+17 -1
View File
@@ -128,7 +128,21 @@ curl -X POST http://127.0.0.1:8000/api/v1/runs/42/results/R0049/retry
### 导出 Markdown 详细报告
`scripts/export_run.py` 通过 API 登录并导出一个终态 Run。默认包含全部逐条结果:
`GET /api/v1/runs/{run_id}/export` 将终态 Run 下载为 Markdown 附件,默认包含全部逐条结果:
```bash
curl -OJ -H 'Authorization: Bearer <access_token>' \
http://127.0.0.1:8000/api/v1/runs/42/export
```
API 接受两个可组合的查询参数:
- `execution_status=completed|error`:按执行状态导出。
- `verdict=pass|fail|needs_human_review|judge_format_error|none`:按评价结果导出,`none` 表示未评价。
运行不存在返回 404,尚未结束返回 409,非法参数返回 422。响应的 `Content-Disposition` 文件名为 `run_<run_id>_results.md`
`scripts/export_run.py` 提供相同过滤能力,适合服务器命令行操作:
```bash
uv run python scripts/export_run.py \
@@ -189,6 +203,8 @@ OC 未泄露率。低于阻断线为 `NOT_READY`,低于目标线为 `CONDITION
| `test_provider_writes_require_admin` | provider 写操作管理员授权 |
| `test_provider_contracts` | `POST /providers/{provider_id}/check``GET /providers/{provider_id}/models` |
| `test_run_and_report_contracts` | `POST/GET /runs``POST /runs/{id}/resume``GET /runs/{id}``GET /runs/{id}/results``GET /reports``GET /reports/{id}` |
| `test_export_run_markdown_defaults_to_all_and_filters_results` | `GET /runs/{id}/export` 的 Markdown 附件、默认全量与组合过滤 |
| `test_export_run_requires_terminal_run_and_valid_filters` | 导出接口的 404、409 与 422 边界 |
| `test_reports_are_derived_read_only_resources` | 报告 404 及不开放独立 POST/PATCH/DELETE 的只读边界 |
| `test_run_cancel_and_delete_contract` | `PATCH/DELETE /runs/{id}` 的取消、终态与删除规则 |
| `test_retry_errors_keeps_successes_and_requeues_only_errors` | resume/retry-errors 分工、成功结果保留与错误重排队 |