fix: 管道审计改为动态读jobs.json,无需手动维护脚本列表

This commit is contained in:
知微
2026-06-27 02:16:46 +08:00
parent 44d0a435a0
commit 10caef1853
+21 -17
View File
@@ -619,26 +619,30 @@ def run_check(item):
if not p.get("verified"):
gaps.append(p["name"])
# 自动发现:对比cron脚本列表和注册表,漏登的报警
# 自动发现:cron jobs.json读所有脚本,交叉比对注册表
known_sources = set()
for p in reg.get("pipelines", []):
src = p.get("source", "")
for s in ["morning_health_check", "intraday_health_check", "strategy_review",
"xiaoguo_scanner", "xiaoguo_signal_consumer", "data_governance",
"price_monitor", "stale_push_wlin", "per_stock_reassess",
"macro_context_collector", "divergence_detector", "macro_signal_consumer",
"self_todo_executor", "strategy_evaluator", "hk_rate"]:
if s in src:
known_sources.add(s)
# 检查是否有重要脚本未出现在任何管道定义中
all_scripts = ["morning_health_check", "intraday_health_check", "strategy_review",
"xiaoguo_scanner", "xiaoguo_signal_consumer", "data_governance",
"price_monitor", "stale_push_wlin", "per_stock_reassess",
"macro_context_collector", "divergence_detector", "macro_signal_consumer",
"self_todo_executor", "strategy_evaluator"]
for s in all_scripts:
if s not in known_sources:
unregistered.append(s)
# 从source描述中提取脚本名
import re as rr
for m in rr.findall(r'[\w_-]+\.py', src):
known_sources.add(m.replace('.py', ''))
# 从jobs.json动态读取所有启用脚本
unregistered = []
try:
jobs_data = j2.loads(open(str(HERMES_CRON_DIR / "jobs.json")).read())
active_scripts = set()
for job in jobs_data.get("jobs", []):
script = job.get("script", "") or ""
if script and job.get("enabled", True):
name = script.replace('.py', '')
active_scripts.add(name)
for s in sorted(active_scripts):
if s not in known_sources:
unregistered.append(s)
except Exception:
pass
if unregistered:
ok = False