D2启动前最后确认
日期: 2026-09-14
状态: 等待用户最终确认
任务1:测试告警预知 ⚠️
ops_system_health测试预知
测试操作:
修改ops_system_health的last_run_at为3小时前
→ 模拟超时故障
→ alert_channel_health检测到
→ 发送TG告警
预期告警内容:
⚠️ [P1] ops_system_health
状态: 超时
详情: 超时10800s(阈值7200s)
触发条件:
- elapsed_s > timeout_threshold_s (7200s)
- consecutive_failures >= P1_ESCALATE_COUNT (2次)
⚠️ 注意: 需要连续2次超时才会触发TG告警
[TEST]前缀支持
当前状态: ❌ 不支持
- alert_channel_health.py 无test_mode参数
- send_tg() 无is_test参数
建议方案:
方案A: 手动添加[TEST]前缀到告警消息
方案B: 使用独立task_id(如test_ops_system_health)
方案C: 在alert_utils.py添加test_mode参数(需改代码)
预知信息
| 项目 | 值 |
|---|---|
| 测试任务 | ops_system_health (P1) |
| cron_id | 1f99cf7364a9 |
| 当前状态 | 无task_runs记录(安全) |
| 静默状态 | 无记录 |
| 告警阈值 | 连续2次超时 |
| TG推送 | 会发送真实告警 |
任务2:清理清单 ✅
恢复清单
□ 1. 恢复ops_system_health.last_run_at
操作: DELETE FROM task_runs WHERE task_id = 'ops_system_health' AND start_time LIKE 'test_%'
或: INSERT真实运行记录恢复
□ 2. 恢复临时禁用的cron
操作: hermes cron resume <任务id>
检查: hermes cron list | grep disabled
□ 3. 删除task_runs测试记录
操作: DELETE FROM task_runs WHERE task_id LIKE 'test_%' OR start_time LIKE 'test_%'
□ 4. 删除alerts测试记录
操作: DELETE FROM alerts WHERE task_id LIKE 'test_%'
□ 5. 记录已发出的TG告警
操作: 截图保存告警消息
位置: D:/Hermes/reports/D2_test_alert_screenshots/
任务3:08:30-09:30盘前任务确认 ⚠️
该时段运行任务
| 时间 | 任务 | 调度 | ID | 风险 |
|---|---|---|---|---|
| 09:00 | 📊 每日综合摘要 | 0 9 * * 1-5 | daily_summary_v1 | ⚠️ 需避开 |
冲突分析
✅ 08:30-08:59: 无任务运行,安全测试窗口
⚠️ 09:00: daily_summary_v1运行,可能占用资源
✅ 09:01-09:30: 无任务运行,安全测试窗口
建议:
- 测试时间限定在08:30-08:55
- 避免09:00整点运行
- 测试完成后立即清理
任务4:回滚方案 ✅
回滚命令
# 方案1: 删除影子cron
hermes cron remove <影子任务id>
# 方案2: 恢复jobs.json备份
cp C:/Users/Admin/AppData/Local/hermes/cron/jobs.json.bak_20260913 \
C:/Users/Admin/AppData/Local/hermes/cron/jobs.json
hermes gateway restart # 重新加载配置
# 方案3: DB清理
python -c "
import sqlite3
conn = sqlite3.connect('D:/Hermes/data/state/alert_state.db')
conn.execute(\"DELETE FROM task_runs WHERE task_id LIKE 'test_%'\")
conn.execute(\"DELETE FROM alerts WHERE task_id LIKE 'test_%'\")
conn.execute(\"DELETE FROM silence_state WHERE task_id LIKE 'test_%'\")
conn.commit()
conn.close()
print('DB清理完成')
"
备份位置
C:/Users/Admin/AppData/Local/hermes/cron/jobs.json.bak_20260913 ← 最新备份
C:/Users/Admin/AppData/Local/hermes/cron/jobs.json.bak_deliver_20260905_100318
C:/Users/Admin/AppData/Local/hermes/cron/jobs.json.bak_preopt
D2执行约束
铁律:
✓ 不改生产cron(只注册影子cron)
✓ 不执行交易(只测试监控告警)
✓ 测试后立即清理
✓ 保留回滚能力
测试窗口:
08:30-08:55: 受控测试(避开09:00 daily_summary)
15:30-16:30: run_with_alert集成
20:00-20:30: 回归验证
最终确认清单
□ D1总结已输出并确认
□ D2方案已输出并确认
□ 测试告警预知已记录
□ 清理清单已确认
□ 盘前任务冲突已分析
□ 回滚方案已准备
□ 备份文件已确认存在
等待用户指令: "进入D2"
请确认以上信息后,回复"进入D2"启动执行。