AgentEvalTool/.scratch/v0.6/issues/03-durable-scheduler-loop-and-recovery.md
sinohqb af7e7bf110
Some checks failed
CI / test (push) Failing after 46s
docs(v0.6): add Campaign spec and 5 tracer-bullet tickets
.scratch/v0.6/spec.md:评估活动 v1(静态地基)规格——单对象、可配服务
周期窗口、耐久调度、双主轴周期报告、time_scale 时间倍速。5 张 tracer-
bullet 票(持久化/API → 调度决策+派生 → 耐久回路+恢复 → 双轴报告 →
前端页),依赖边 ①→②→③、②→④、①③④→⑤。
2026-07-30 11:45:13 +08:00

1.6 KiB
Raw Blame History

03 — 耐久调度回路 + 重启恢复 + 取消

What to build: 平台自带一个耐久调度循环,无需外部驱动即可让一个"进行中"的活动按其(可压缩的)窗口自动推进到终点:到点派生子 Run、窗口走完把活动置为"已完成"。服务重启后,调度从数据库恢复所有未完成活动、继续推进且不重复派生。用户可中途取消进行中的活动,已完成的子 Run 结果保留。

Blocked by: 02需要调度决策纯函数与派生能力

Status: ready-for-agent

  • 调度循环挂在 Web 应用 lifespan启动时加载所有"进行中"活动并推进,关闭时优雅停止;循环是薄壳,决策仍走 02 的纯函数
  • 活动进度(窗口起止、已派生/已完成到哪)为库中权威状态,进程内不持有权威态
  • 重启恢复:进程重启后据库续跑未完成活动,不重复派生已到点条目;沿用 mark_orphans_failed 思路处理重启时正在跑的子 Run
  • 窗口走完活动状态转"已完成";派生/执行异常不拖垮整个活动(单条失败可跳过并记录)
  • 取消:POST /api/campaigns/{id}/cancel 将进行中活动置"已取消"、停止后续派生,已完成子 Run 保留
  • GET /api/campaigns/{id} 详情反映实时进度(当前窗口位置、已派生/已完成子 Run 数、状态)
  • 集成测试:压缩倍速活动端到端自动跑完并置"已完成";模拟重启(进行中活动 + 部分子 Run后恢复续跑断言不重复派生、不丢进度取消后不再派生