# 04 — 活动周期报告（双主轴）

**What to build:** 一个活动能产出周期评估报告，主轴一是**时间趋势**（通过率/可用性/时延随时段桶的曲线），主轴二是**能力汇总**（按场景/能力维度聚合的整窗表现）。报告消费该活动全部子 Run 的 summary，通过率口径与单 Run 一致（用例级、含执行失败），并可复用现有导出能力。

**Blocked by:** 02（需要活动已能派生出子 Run 以供聚合；可对进行中的活动做部分聚合）。

**Status:** ready-for-agent

- [ ] 活动报告聚合纯函数：输入活动 + 其全部子 Run，输出双主轴结构
  - [ ] 时间趋势轴：按时段桶聚合通过率/可用性/时延（仿 stats.py trend 的分桶取均值）
  - [ ] 能力汇总轴：按场景/能力维度聚合整窗表现（仿 stats.py dashboard 的分组取均值）
- [ ] 通过率沿用单 Run 的用例级、含执行失败口径（ADR-0002），保证跨层可比；故障子 Run 照常计入
- [ ] `GET /api/campaigns/{id}/report` 返回结构化报告；复用现有报告导出路径
- [ ] 单元测试（仿 test_report 的 _seed_run×N）：构造跨多时段、多场景、含失败的子 Run，断言两轴数值正确；空/仅部分完成活动的边界（无除零、部分聚合合理）
- [ ] API 测试：对已有子 Run 的活动取报告，结构与数值符合预期
