D2计划复习与优化融合预期成果报告
报告日期: 2026-09-14
执行日期: 2026-09-15(周二)17:25开始
状态: 等待用户确认
一、D1观察总结(前置条件)
1.1 观察数据
| 指标 |
数值 |
状态 |
| 总运行次数 |
90次 |
✅ 达标 |
| 成功率 |
100% |
✅ 优秀 |
| 平均间隔 |
15m05s |
✅ 正常(目标15m) |
| 夜间运行 |
34次 |
✅ 稳定 |
| 心跳记录 |
90条 |
✅ 全部ok |
| TG通知 |
0次 |
✅ 符合预期(无异常) |
| exit_code |
全部0 |
✅ 无异常退出 |
1.2 观察时间范围
起始: 2026-09-13T10:20:31
结束: 2026-09-14T08:15:55
总时长: 约22小时
1.3 结论
✅ D1观察通过,满足进入D2的前提条件。
二、D2测试计划
2.1 测试目标
| 测试项 |
目标 |
验证内容 |
| Dead-Man测试 |
验证看门狗机制 |
alert_channel_health心跳停止后,dead_mans_switch能否正确触发告警 |
| 受控测试-告警路径 |
验证任务失败检测 |
修改last_run_at→触发超时→alerts表写入→TG告警发送 |
| 受控测试-超时路径 |
验证超时检测逻辑 |
timeout_threshold_s配置生效,连续失败计数正确 |
| 受控测试-通道健康 |
验证心跳记录正常 |
channel_health表心跳更新正常 |
| B3影子集成 |
验证run_with_alert包装 |
包装后原脚本功能正常,task_runs/audit_log写入正确 |
| 回归验证 |
确认系统恢复正常 |
所有cron恢复,无残留测试数据 |
2.2 测试时间表
明天(2026-09-15 周二):
┌─────────────────────────────────────┐
│ 17:25-18:20 Phase 1: Dead-Man测试 │
│ 17:25 暂停 alert_channel_health │
│ (hermes cron pause 7e8ae2aeca81) │
│ 17:26-17:59 等待33分钟 │
│ 18:00 dead_mans_switch触发 │
│ 18:02 验证告警(本地文件+TG) │
│ 18:05 恢复 alert_channel_health │
│ (hermes cron resume 7e8ae2aeca81 --run-now) │
│ 18:15 验证心跳恢复 │
│ 18:20 清理测试数据 │
├─────────────────────────────────────┤
│ 22:00-23:00 Phase 2: 受控测试 │
│ 22:00-22:20 告警路径测试 │
│ 22:20-22:40 超时路径测试 │
│ 22:40-23:00 通道健康测试 │
│ 23:00 清理测试数据 │
├─────────────────────────────────────┤
│ 23:00-23:30 Phase 3: B3影子集成 │
│ 23:00 暂停因子IC衰减监控 │
│ (hermes cron pause a7e2b8dceefe) │
│ 23:05 注册影子cron+手动触发 │
│ 23:15 验证6项指标 │
│ 23:20 恢复原cron │
│ 23:25 删除影子cron │
│ 23:30 清理测试数据 │
├─────────────────────────────────────┤
│ 23:30-24:00 Phase 4: 回归验证 │
│ 恢复所有修改的last_run_at │
│ 恢复所有暂停的cron │
│ 删除测试记录 │
│ 确认系统恢复正常 │
└─────────────────────────────────────┘
2.3 关键配置
| 项目 |
值 |
说明 |
| alert_channel_health cron_id |
7e8ae2aeca81 |
被测试对象 |
| dead_mans_switch调度 |
0 * * * * |
整点运行 |
| 心跳超时阈值 |
30分钟 |
HEARTBEAT_TIMEOUT_S |
| 因子IC衰减监控 cron_id |
a7e2b8dceefe |
B3测试对象 |
| 测试时间戳 |
2026-09-15T17:00:00 |
用于区分测试告警 |
三、备份与回滚方案
3.1 双重备份
| 备份文件 |
路径 |
状态 |
| jobs.json备份 |
C:/Users/Admin/AppData/Local/hermes/cron/jobs.json.bak_20260913 |
✅ 已存在 |
| alert_state.db备份 |
D:/Hermes/data/state/alert_state.db.bak_D2_20260915 |
✅ 已创建 |
3.2 回滚方案
场景1: jobs.json需要回滚
命令: cp C:/Users/Admin/AppData/Local/hermes/cron/jobs.json.bak_20260913
C:/Users/Admin/AppData/Local/hermes/cron/jobs.json
然后: hermes cron reload(如果可用)或重启gateway
场景2: alert_state.db需要回滚
命令: cp D:/Hermes/data/state/alert_state.db.bak_D2_20260915
D:/Hermes/data/state/alert_state.db
场景3: cron需要恢复
命令: hermes cron resume <cron_id> --run-now
四、优化融合后的预期成果
4.1 功能层面
| 成果项 |
预期效果 |
验证方法 |
| Dead-Man机制 |
alert_channel_health心跳停止30分钟后,dead_mans_switch触发告警 |
检查dead_mans_switch_alert.txt + TG消息 |
| 告警路径 |
任务超时/失败时,alert_channel_health正确识别并发送TG告警 |
检查alerts表 + TG消息 |
| 超时检测 |
timeout_threshold_s配置生效,连续失败计数正确 |
检查alert逻辑 |
| 心跳记录 |
channel_health表持续更新,无断档 |
检查check_time字段 |
| run_with_alert包装 |
包装后原脚本功能不变,task_runs/audit_log正确写入 |
验证6项指标 |
4.2 系统层面
| 成果项 |
预期效果 |
| 监控闭环 |
alert_channel_health → dead_mans_switch 形成完整监控链 |
| 告警可达 |
TG告警通道正常,关键时刻能触达 |
| 数据完整 |
alerts表、audit_log表、channel_health表数据一致 |
| 可追溯 |
测试告警有明确时间戳标记,可与真实告警区分 |
4.3 运维层面
| 成果项 |
预期效果 |
| 故障预警 |
心跳停止30分钟内发现,缩短MTTR |
| 自动化运维 |
run_with_alert集成后,所有cron任务自动具备告警能力 |
| 可测试性 |
B3影子cron模式支持热替换测试,不影响生产 |
五、执行纪律
5.1 时间纪律
✓ 严格按时间表执行,不提前不延后
✓ 每个阶段完成后暂停,等待确认
✓ 异常时立即停止,不强行推进
5.2 数据纪律
✓ 测试告警记录时间戳:2026-09-15T17:00:00
✓ 测试后按时间清理:DELETE WHERE created_at > '2026-09-15T17:00:00'
✓ 确认生产数据无污染
5.3 验证纪律
✓ 每阶段输出:执行结果、验证结果、异常记录
✓ 清理确认后进入下一阶段
✓ 最终回归验证系统完全恢复
六、风险与应对
| 风险 |
可能性 |
应对措施 |
| dead_mans_switch未触发告警 |
低 |
检查脚本逻辑,确认channel_health表查询正确 |
| TG告警发送失败 |
中 |
检查代理配置、token有效性 |
| B3测试影响因子IC监控 |
低 |
暂停cron而非删除,测试后立即恢复 |
| 清理不彻底残留测试数据 |
中 |
按时间戳批量删除,最终核对表记录数 |
七、确认清单
□ D1观察已通过(90次运行,100%成功)
□ 双重备份已就绪
□ 测试时间戳已记录
□ 回滚方案已确认
□ 执行时间表已明确
□ 预期成果已理解
✅ 可以开始D2执行
报告路径: D:/Hermes/reports/D2计划复习与优化融合预期成果.md
下一步: 等待用户确认"开始D2执行"