- archive/hermes-dead-tools-20260820/: hermes独有不在cron不被import的111个一次性排查/测试工具 - archive/hermes-dead-tools-20260820/: 4个废弃scanner(btd1_v3/market_scanner/market_thermometer已废弃/s2v2) - archive/legacy-cleanup-20260820/: MoFin根2旧版(mo_models/technical_analysis)+/home/hmo/scripts无引用旧项目+MoFin/scripts重复prepare_report_data - 删除MoFin根mo_models.py(根旧版,deploy/profile-scripts权威保留) - 保留: mofin_db.py/mo_data.py硬链接(server.py多层sys.path需各目录访问同一inode,非冗余) - fix_gateway.py保留(Gateway看门狗fix_gateway_port.py的活跃依赖,勿误删) - 验证: cron所有脚本引用无缺失, key模块import正常 - hermes独有从116收敛到5核心(alert_logger/market_screener/prepare_report_data/self_todo_executor_v2/xmpp_zhiwei_bot)
33 lines
1.0 KiB
Python
33 lines
1.0 KiB
Python
import os, sys
|
|
|
|
scripts_dir = '/home/hmo/.hermes/profiles/position-analyst/scripts'
|
|
fixed, skipped, errors = 0, 0, []
|
|
for name in os.listdir(scripts_dir):
|
|
p = os.path.join(scripts_dir, name)
|
|
if not os.path.islink(p):
|
|
skipped += 1
|
|
continue
|
|
target = os.path.realpath(p)
|
|
if not os.path.exists(target):
|
|
errors.append(f"{name}: broken symlink -> {target}")
|
|
continue
|
|
try:
|
|
os.unlink(p)
|
|
os.link(target, p) # hardlink: same inode, .resolve() stays in scripts_dir
|
|
fixed += 1
|
|
except Exception as e:
|
|
errors.append(f"{name}: {e}")
|
|
|
|
print(f"fixed: {fixed}, skipped (non-symlink): {skipped}, errors: {len(errors)}")
|
|
for e in errors:
|
|
print(' ', e)
|
|
|
|
# verify with the scheduler's own check
|
|
from pathlib import Path
|
|
scripts_resolved = Path(scripts_dir).resolve()
|
|
test = (Path(scripts_dir) / 'meta_growth.py').resolve()
|
|
try:
|
|
test.relative_to(scripts_resolved)
|
|
print('VERIFY OK: meta_growth.py now passes relative_to check')
|
|
except ValueError:
|
|
print('VERIFY FAIL: still resolves outside') |