Files

47 lines
2.4 KiB
Python

import subprocess, os, re
from datetime import datetime
DIVERGED = """advice_reconciliation.py branch_scanner.py bulk_strategy_regenerate.py
collect_evaluation_data.py cron_to_xmpp.py market_insight.py market_screener.py market_watch.py
memory_guardian.py mo_provider.py mofin_collect.py mofin_health.py mofin_news.py multi_timeframe.py
premarket_full_review.py promote_candidates.py prune_branches.py server.py stock_profile.py
stock_sector_enrich.py strategy_evaluator.py strategy_feedback.py strategy_lifecycle.py strategy_tree.py
system_audit.py system_health_check.py technical_analysis.py trend_detector.py
xiaoguo_news_processor.py xiaoguo_scanner.py xmpp_agent_core.py""".split()
SEARCH_DIRS = ['/home/hmo/MoFin/deploy/profile-scripts', '/home/hmo/.hermes/profiles/position-analyst/scripts', '/home/hmo/.hermes/scripts']
now = datetime.now()
print(f"{'file':35s} {'imported_by':40s} {'cron?':5s} {'root_mtime':12s} {'deploy_mtime':12s} verdict")
print('-' * 130)
for f in DIVERGED:
stem = f[:-3]
# 谁 import 它
r = subprocess.run(
f"grep -rln -E '(^|\\s)(from|import)\\s+{stem}(\\s|$|\\.)' /home/hmo/MoFin/deploy/profile-scripts /home/hmo/.hermes/profiles/position-analyst/scripts /home/hmo/MoFin --include='*.py' 2>/dev/null | grep -v venv | grep -v '{f}' | head -3",
shell=True, capture_output=True, text=True, timeout=15)
importers = [os.path.basename(x) for x in r.stdout.splitlines() if x.strip() and f not in x]
imported = ','.join(importers[:3]) if importers else '-'
# 是否在 cron 里被直接执行
in_cron = subprocess.run(
f"grep -l '\"script\": \"{f}\"' /home/hmo/.hermes/profiles/position-analyst/cron/jobs.json /home/hmo/.hermes/cron/jobs.json 2>/dev/null",
shell=True, capture_output=True, text=True, timeout=5)
is_cron = 'Y' if in_cron.stdout.strip() else '-'
# mtimes
root_p = f'/home/hmo/MoFin/{f}'
deploy_p = f'/home/hmo/MoFin/deploy/profile-scripts/{f}'
rm = datetime.fromtimestamp(os.path.getmtime(root_p)).strftime('%m-%d') if os.path.exists(root_p) else '-'
dm = datetime.fromtimestamp(os.path.getmtime(deploy_p)).strftime('%m-%d') if os.path.exists(deploy_p) else '-'
# verdict
if importers:
verdict = 'LIBRARY->root为准'
elif is_cron == 'Y':
verdict = 'CRON->deploy为准'
else:
verdict = '待查'
print(f"{f:35s} {imported:40s} {is_cron:5s} {rm:12s} {dm:12s} {verdict}")