步骤4阶段1 D2执行方案 最终确认版 v8

源文件:D:\Hermes\reports\步骤4阶段1_D2执行方案_最终确认版_v8.md · 日期 2026-09-14 · 4KB

D2执行前最后修正(最终确认版 v8)

日期: 2026-09-14
状态: 等待用户最终确认


任务1:B3 测试任务细节 ✅

hb_capital_watchdog.py 实际路径

完整路径: C:\Users\Admin\AppData\Local\hermes\scripts\hb_capital_watchdog.py
文件大小: 530 字符(12行)
内容: 包装脚本,调用实际的 capital_watchdog.py

关键发现

# hb_capital_watchdog.py 内容
import subprocess, sys, os
sys.path.insert(0, r"C:/Users/Admin/AppData/Local/hermes/scripts")
os.chdir(r"C:/Users/Admin/AppData/Local/hermes/scripts")
r = subprocess.run(
    [sys.executable, r"C:/Users/Admin/AppData/Local/hermes/scripts/heartbeat_run.py", 
     "capital_watchdog", r"C:/Users/Admin/AppData/Local/hermes/scripts/capital_watchdog.py"],
    cwd=r"C:/Users/Admin/AppData/Local/hermes/scripts",
)
sys.exit(r.returncode)

明天10:30运行确认

cron_id: 29145a4dd49f
调度: 30 10 * * 1-5(工作日10:30)
明天是周一(工作日)
启用状态: True
结论: ✅ 明天10:30会运行

B3测试方案调整

原方案: 临时修改command字段包装run_with_alert.py
问题:   需要暂停cron,影响明天10:30运行

修正方案: 使用另一个script-mode任务
推荐: 因子IC衰减监控(a7e2b8dc,20:00运行)
  - 明天20:00运行,测试在22:45后,无冲突
  - script-mode,安全可控
  - 不读写alert_state.db

任务2:扩展受控测试窗口 ✅

时间 测试项 内容 预期结果
22:00-22:15 告警路径测试 修改last_run_at为3小时前,触发alert_channel_health alerts表写入记录,TG告警发送
22:15-22:30 超时路径测试 验证超时检测逻辑(timeout_threshold_s) 正确识别超时任务
22:30-22:45 通道健康测试 检查channel_health表+心跳记录 心跳记录正常,无异常

任务3:B3 验证指标 ✅

序号 验证项 检查方法 预期结果
1 run_with_alert.py 成功调用原脚本 检查日志输出 "run_with_alert wrapper called"
2 task_runs 表写入新记录 SQL查询 新记录写入,task_id正确
3 audit_log 表写入记录 SQL查询 审计日志写入
4 原脚本输出正常 检查stdout/stderr 与原脚本运行一致
5 exit_code 与原脚本一致 比较exit code 一致
6 无异常报错 检查stderr 无Traceback

任务4:dead_mans_switch 告警路径 ✅

实际告警路径(从代码分析)

# dead_mans_switch.py 第180-210行
if result["status"] == "timeout":
    # 1. TG告警
    tg_ok, tg_err = send_tg(f"🔴 [看门狗] {result['message']}", "P0")

    # 2. 邮件告警
    email_ok = send_email_alert(subject, body)

    # 3. 本地文件告警
    send_local_alert(f"心跳超时: {result['message']}")
    # 写入: D:/Hermes/data/state/dead_mans_switch_alert.txt

告警路径总结

路径 写表/文件 条件
TG告警 send_tg() 心跳超时30分钟
邮件告警 smtplib SMTP配置存在
本地文件 dead_mans_switch_alert.txt 心跳超时30分钟
alerts表 ❌ 不写入 dead_mans_switch不写alerts表
audit_log表 ❌ 不写入 dead_mans_switch不写audit_log

重要发现

❌ dead_mans_switch 不写 alerts 表
❌ dead_mans_switch 不写 audit_log 表
✅ dead_mans_switch 写本地文件 dead_mans_switch_alert.txt
✅ dead_mans_switch 发送 TG 告警
✅ dead_mans_switch 发送邮件告警(如果配置)

任务5:D2 最终时间表 ✅

时段 任务 内容 状态
17:25-18:20 Dead-Man测试 暂停alert_channel_health→等待→验证→恢复 ✅ 确认
22:00-22:45 受控测试前3项 告警路径、超时路径、通道健康 ✅ 确认
22:45-23:15 影子cron集成(B3) 用因子IC衰减监控测试 ✅ 确认
23:15-23:45 回归验证 清理+确认 ✅ 确认

B3测试任务确认

推荐任务: 因子IC衰减监控 (a7e2b8dc)
调度: 0 20 * * 1-5(工作日20:00)
明天20:00运行,测试在22:45后,无冲突
脚本: hb_ic_monitor.py
模式: script-mode

最终确认清单

□ D1总结已确认(90次运行,100%成功)
□ Dead-Man测试步骤已确认
□ B3测试任务已确认(因子IC衰减监控 a7e2b8dc)
□ dead_mans_switch告警路径已确认(本地文件+TG+邮件,不写alerts表)
□ 时段冲突已分析并规避
□ 备份文件已确认(jobs.json.bak_20260913)

✅ 所有条件满足,可以进入D2执行

请确认以上方案,回复"进入D2"启动明天执行。