步骤4阶段1 D2最后确认 修正版

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

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_%'

□ 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盘前任务确认 ⚠️⚠️⚠️

该时段运行任务(17个!)

时间 任务 调度 ID 风险
08:00 宏观速览_盘前 0 8 * * 1-5 17c03029 ⚠️
08:00 周度宏观战略观测 0 8 * * 1 ab7f346a ⚠️
08:00 智囊团每日市场观点速报 0 8 * * 1-5 f104d2fb ⚠️
08:20 ☀️ 盘前推送v2 20 8 * * 1-5 9eade1a7 ⚠️
08:40 A股风险情绪雷达日报 40 8 * * 1-5 b7707502 ⚠️
08:45 📊 研报深度分析推送 45 8 * * 1-5 c85842c9 ⚠️
08:45 风险雷达数据采集 45 8 * * 1-5 194040f5 ⚠️
08:45 通达信标签同步 45 8 * * 1-5 0522358a ⚠️
08:50 980080/980081指数监控 50 8 * * * 58d47277 ⚠️
08:50 月线主进盘前交叉 50 8 * * 1-5 30b6a9c8 ⚠️
09:00 📊 每日综合摘要 0 9 * * 1-5 daily_su ⚠️ 高负载
09:00 心跳自愈系统 0 9 * * * self_hea ⚠️
09:05 盘前操作单 5 9 * * 1-5 404fae2d ⚠️
09:15 Top10模拟持仓日评 15 9 * * 1-5 dd9ddddf ⚠️
10:00 盘中大盘状态监控 0 10 * * 1-5 cd0d4601 ⚠️
10:30 中国资本动向看门狗 30 10 * * 1-5 29145a4d ⚠️

冲突分析

⚠️⚠️⚠️ 08:30-09:30是高峰时段!
  - 17个任务在此时段运行
  - 08:40-09:00是最高峰(8个任务)
  - 资源竞争严重(tushare限流、CPU、IO)

❌ 原方案不可行:
  - 08:30-09:30不适合做受控测试
  - 会与17个盘前任务竞争资源
  - 可能触发限流或超时

✅ 建议调整:
  方案A: 推迟到盘后15:30-17:00测试
  方案B: 提前到07:30-08:00测试(盘前早鸟窗口)
  方案C: 拆分测试,部分盘前+部分盘后

任务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  ← 最新备份(今天08:31)
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执行方案调整建议 ⚠️

原方案问题

原方案: 08:30-09:30受控测试
问题: 与17个盘前任务冲突,资源竞争激烈

建议调整方案

时段 原计划 调整后 理由
08:30-09:30 受控测试 跳过 高峰时段,资源竞争
15:30-16:30 run_with_alert集成 15:30-16:30受控测试 盘后空闲,适合测试
20:00-20:30 回归验证 20:00-20:30集成测试 晚间稳定期

调整后的D2时间表

明天(9月15日):

15:30-16:30  受控测试(4项)
  - 告警路径测试
  - 超时路径测试
  - Dead-Man测试
  - 通道健康测试

20:00-20:30  run_with_alert影子cron集成
  - 注册影子cron
  - 比对输出
  - 验证告警功能

21:00-21:30  回归验证
  - 确认原cron正常
  - 清理测试数据
  - 生成报告

最终确认清单

□ D1总结已输出并确认
□ D2方案已输出并确认
□ 测试告警预知已记录
□ 清理清单已确认
□ 盘前任务冲突已分析(17个任务!)
□ 回滚方案已准备
□ 备份文件已确认存在
□ D2时间表已调整(避开盘前高峰)

⚠️ 关键发现: 08:30-09:30有17个任务运行,不适合测试
⏳ 等待用户确认调整后的D2时间表

请确认调整后方案,回复"进入D2"启动执行。