Some checks failed
CI / test (push) Failing after 46s
.scratch/v0.6/spec.md:评估活动 v1(静态地基)规格——单对象、可配服务 周期窗口、耐久调度、双主轴周期报告、time_scale 时间倍速。5 张 tracer- bullet 票(持久化/API → 调度决策+派生 → 耐久回路+恢复 → 双轴报告 → 前端页),依赖边 ①→②→③、②→④、①③④→⑤。
1.5 KiB
1.5 KiB
02 — 调度决策纯函数 + 派生子 Run
What to build: 给定一个活动的静态计划和"当前活动时钟位置",一个纯函数能算出此刻应派生哪些子 Run(以及活动是否已到窗口终点)。据此实际派生普通 Run——每个子 Run 复用现有单次评测的执行路径、带上活动归属,跑完后其结果照常入库。这一票让"活动能真的按计划生出评测"成立,但不含自动循环(由测试或手动推进时钟驱动)。
Blocked by: 01(需要活动持久化与 campaign_id 归属字段)。
Status: ready-for-agent
- 纯函数:输入活动计划 + 活动时钟位置(由真实经过时间 × time_scale 映射到窗口偏移),输出"到点应派生的计划条目"与"是否已达窗口终点";不触碰任何判定/报告口径
- time_scale 只影响"何时到点",正式线 1.0=真实墙钟、开发线可压缩;判定与结果口径与倍速无关
- 据纯函数结果派生普通 Run:复用现有评测执行入口(existing_run 路径),子 Run 携带 campaign_id,triggered_by 体现活动来源
- 幂等:同一计划条目在同一到点不重复派生(推进进度可追踪)
- 纯函数单元测试(仿 test_orphan_runs 的纯 db_session 风格):注入不同时钟/倍速覆盖"未到点/到点/多条同时到点/已达终点"矩阵
- 集成测试:手动推进时钟驱动一个压缩倍速活动,断言派生出的子 Run 数量、归属、场景与计划一致;子 Run 跑完后结果与 summary 正常入库