- 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)
48 lines
1.9 KiB
Python
48 lines
1.9 KiB
Python
"""Fix: unify todos table schema across project and real DB"""
|
|
import sqlite3
|
|
|
|
project_db = '/home/hmo/projects/MoFin/data/mofin.db'
|
|
real_db = '/home/hmo/web-dashboard/data/mofin.db'
|
|
|
|
# Zhiwei's canonical schema (from project db)
|
|
target_schema = """
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
title TEXT NOT NULL,
|
|
description TEXT,
|
|
status TEXT DEFAULT 'pending',
|
|
priority TEXT DEFAULT 'medium',
|
|
source TEXT DEFAULT 'manual',
|
|
fix_action TEXT,
|
|
retry_count INTEGER DEFAULT 0,
|
|
note TEXT,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
"""
|
|
|
|
def ensure_todos(db_path, label):
|
|
db = sqlite3.connect(db_path)
|
|
existing = db.execute("SELECT name FROM sqlite_master WHERE name='todos'").fetchone()
|
|
if not existing:
|
|
db.execute(f"CREATE TABLE todos ({target_schema})")
|
|
print(f"{label}: created todos table")
|
|
else:
|
|
# Ensure all columns exist
|
|
existing_cols = {r[1] for r in db.execute("PRAGMA table_info(todos)")}
|
|
needed = {'title', 'description', 'status', 'priority', 'source', 'fix_action',
|
|
'retry_count', 'note', 'created_at', 'updated_at'}
|
|
missing = needed - existing_cols
|
|
for col in missing:
|
|
if col in ('retry_count',):
|
|
db.execute(f"ALTER TABLE todos ADD COLUMN {col} INTEGER DEFAULT 0")
|
|
elif col in ('created_at', 'updated_at'):
|
|
db.execute(f"ALTER TABLE todos ADD COLUMN {col} TIMESTAMP DEFAULT CURRENT_TIMESTAMP")
|
|
else:
|
|
db.execute(f"ALTER TABLE todos ADD COLUMN {col} TEXT")
|
|
print(f"{label}: checked, {len(missing)} missing columns added" if missing else f"{label}: schema OK")
|
|
db.commit()
|
|
db.close()
|
|
|
|
ensure_todos(project_db, "project db")
|
|
ensure_todos(real_db, "real db")
|
|
print("\nDone. Both DBs now have matching todos schema.")
|