Files
MoFin/scripts/test_raw_insert.py
T
hmo efdfaf956a 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
2026-07-20 17:46:57 +08:00

20 lines
670 B
Python

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()