D2执行前最后修正(最终确认版 v5)
日期: 2026-09-14
状态: 等待用户最终确认
关键发现:Dead-Man测试机制完整确认 ✅
dead_mans_switch.py的行为
# 从代码分析(227行):
# 1. 检查channel_health表的最新心跳记录
# 2. 如果last_check_time超过30分钟 → 触发告警
# 3. 告警方式:TG + 邮件 + 本地文件(dead_mans_switch_alert.txt)
# 4. 独立运行,不依赖alert_channel_health.py
关键逻辑:
- check_heartbeat() 查询channel_health表
- 计算elapsed_s = (now - last_check_time).total_seconds()
- 如果elapsed_s > 1800(30分钟)→ timeout
- 触发告警
Dead-Man测试正确流程
1. 暂停alert_channel_health的cron(7e8ae2aeca81)
→ channel_health表停止更新
2. 等待30分钟以上
→ last_check_time超过30分钟
3. dead_mans_switch运行(整点调度)
→ 检测到心跳超时
→ 触发告警(TG + 邮件 + 本地文件)
4. 验证告警
→ 检查alerts表
→ 检查dead_mans_switch_alert.txt
→ 检查TG消息
5. 恢复alert_channel_health的cron
→ channel_health表恢复更新
→ dead_mans_switch不再告警
任务1:修正Dead-Man测试步骤 ✅
修正后的步骤
| 时间 | 步骤 | 操作 |
|---|---|---|
| 17:25 | 准备 | 打印时间戳 [TEST] Dead-Man测试开始 |
| 17:26 | 备份 | 备份当前channel_health状态 |
| 17:27 | 暂停alert_channel_health | hermes cron pause 7e8ae2aeca81 |
| 17:28 | 验证暂停 | hermes cron list | grep 7e8ae2aeca81 → paused |
| 17:29-17:59 | 等待30分钟 | - |
| 18:00 | dead_mans_switch触发 | 整点运行,检测心跳超时 |
| 18:02 | 验证告警 | 检查alerts表 + dead_mans_switch_alert.txt |
| 18:05 | 恢复cron | hermes cron resume 7e8ae2aeca81 --run-now |
| 18:10 | 验证恢复 | channel_health表恢复更新 |
| 18:15 | 清理 | 清理测试数据 |
| 18:20 | 完成 | 打印总结 |
任务2:修正触发时间 ✅
时间线
17:27 暂停alert_channel_health cron
17:27-18:00 等待33分钟(心跳超时阈值30分钟)
18:00 dead_mans_switch触发(整点调度)
18:02 验证告警已写入
18:05 恢复alert_channel_health cron
关键: dead_mans_switch是整点运行(0 * * * *),所以18:00触发。
任务3:21:00任务冲突确认 ✅
21:00运行的任务
| 任务 | cron_id | 脚本 | 冲突风险 |
|---|---|---|---|
| 共振桥接器每日流水线 | 725902f0 | resonance_pipeline.py | ⚠️ 需确认 |
| 选股台账静默检查 | 6b235078 | hb_alpha_ledger_watch.py | ⚠️ 需确认 |
| 📊 每周周报 | weekly_s | hb_weekly_summary.py | ✅ 无冲突 |
| 月线主进月度回测 | 9dce3919 | monthly_mainin_backtest.py | ✅ 无冲突 |
建议
推迟受控测试到21:45后,避开21:00任务
任务4:D2最终时间表 ✅
| 时段 | 任务 | 内容 |
|---|---|---|
| 17:25-18:20 | Dead-Man测试 | 暂停→等待→验证→恢复 |
| 21:45-22:30 | 受控测试前3项 | 告警路径、超时路径、通道健康 |
| 22:30-23:00 | 影子cron集成 | B3临时替换 |
| 23:00-23:30 | 回归验证 | 清理+确认 |
最终确认清单
□ D1总结已确认(90次运行,100%成功)
□ Dead-Man测试步骤已确认(暂停alert_channel_health cron)
□ Dead-Man触发时间已确认(18:00整点)
□ 21:00任务冲突已分析(建议推迟到21:45后)
□ 备份文件已确认(jobs.json.bak_20260913)
⏳ 等待用户确认"进入D2"...
请确认以上方案,回复"进入D2"启动明天执行。