fix(price_events): unify event storage to DB (dual-write + backfill)
User caught the inconsistency: system claims DB-first but price events only went to price_events.json, leaving DB table stale since Jul 6. Root cause chain found: - record_event() only wrote JSON, never called mofin_db.write_price_event - price_events.code has FK -> stocks(code); events for unregistered stocks (new candidates, HK) silently failed INSERT and were lost to DB - mofin_db.write_price_event swallows errors (returns False silently) Fixes: - record_event now dual-writes: DB (authoritative) + JSON (compat for legacy readers mo_config/strategy_feedback/system_health_check) - auto-registers unknown codes into stocks table before event insert - one-time backfill: 4064 JSON events -> DB (total 6353 rows, last=today) - verified: record_event TEST99 lands in both DB and JSON
This commit is contained in:
@@ -0,0 +1,20 @@
|
||||
import sys, sqlite3, traceback
|
||||
sys.path.insert(0, '/home/hmo/MoFin')
|
||||
from mofin_db import get_conn, DB_PATH
|
||||
print('DB_PATH:', DB_PATH)
|
||||
|
||||
c = get_conn()
|
||||
try:
|
||||
c.execute(
|
||||
"INSERT INTO price_events (code, name, event_type, price, trigger_value, event_label, date) "
|
||||
"VALUES (?, ?, ?, ?, ?, ?, ?)",
|
||||
('TEST99', '测试股', 'entry_zone', 12.34, '12.0~12.5', '加仓区间', '2026-07-20'))
|
||||
c.commit()
|
||||
print('INSERT OK')
|
||||
except Exception as e:
|
||||
traceback.print_exc()
|
||||
r = c.execute("SELECT code FROM price_events WHERE code='TEST99'").fetchone()
|
||||
print('row:', r)
|
||||
c.execute("DELETE FROM price_events WHERE code='TEST99'")
|
||||
c.commit()
|
||||
c.close()
|
||||
Reference in New Issue
Block a user