- 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)
24 lines
1.1 KiB
Python
24 lines
1.1 KiB
Python
import sqlite3
|
|
|
|
for label, path in [('canonical', '/home/hmo/MoFin/data/mofin.db'),
|
|
('profile-local', '/home/hmo/.hermes/profiles/position-analyst/scripts/data/mofin.db'),
|
|
('web-dashboard', '/home/hmo/web-dashboard/data/mofin.db')]:
|
|
try:
|
|
c = sqlite3.connect(path, timeout=5)
|
|
tables = [r[0] for r in c.execute("SELECT name FROM sqlite_master WHERE type='table'")]
|
|
print(f'=== {label}: {path}')
|
|
for t in ['price_events', 'holdings', 'live_prices', 'holding_strategies', 'market_snapshots']:
|
|
if t in tables:
|
|
cnt = c.execute(f"SELECT COUNT(*) FROM {t}").fetchone()[0]
|
|
try:
|
|
col = 'created_at' if t in ('price_events', 'market_snapshots') else 'updated_at'
|
|
last = c.execute(f"SELECT MAX({col}) FROM {t}").fetchone()[0]
|
|
except Exception:
|
|
last = '?'
|
|
print(f' {t}: {cnt} rows, last={last}')
|
|
else:
|
|
print(f' {t}: MISSING')
|
|
c.close()
|
|
except Exception as e:
|
|
print(f'{label}: ERROR {e}')
|
|
print() |