步骤4阶段1 D2最后确认

源文件:D:\Hermes\reports\步骤4阶段1_D2最后确认.md · 日期 2026-09-14 · 4KB

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"启动执行。