refactor: 消费者切 SQLite 优先读取

切换策略: SQLite 优先 → 失败回退 JSON

price_events (100%覆盖):
- strategy_feedback.py: run() 优先 query_price_events()
- system_health_check.py: 优先 query_price_events() + query_price_events_by_date()

stock_sector_map (100%覆盖):
- strategy_lifecycle.py: load_stock_sector_map() 优先 stock_sectors 表

market.json (85%覆盖):
- strategy_lifecycle.py: load_market_context() 优先 query_latest_market()
- market_insight.py: generate() 优先 query_latest_market()

portfolio.json + watchlist.json (70%覆盖):
- strategy_lifecycle.py: regenerate_all() 优先 query_holdings() + query_watchlist()
- server.py: /api/portfolio, /api/watchlist, /api/overview, /api/market 优先 SQLite

所有改动保留 JSON 回退路径,SQLite 不可用时自动降级
This commit is contained in:
hmo
2026-06-20 17:50:15 +08:00
parent 1610f184a0
commit 25f8c6ec67
5 changed files with 186 additions and 49 deletions
+9 -1
View File
@@ -175,7 +175,15 @@ def generate_adjustment(decision, phase_check, accuracy_trend):
def run():
decisions = load_json(DECISIONS_PATH, {"decisions": []})
events = load_json(EVENTS_PATH, {"events": []})
# 优先从 SQLite 读取价格事件
try:
from mofin_db import get_conn, query_price_events
conn = get_conn()
pe_rows = query_price_events(conn, limit=50000)
conn.close()
events = {"events": pe_rows}
except Exception:
events = load_json(EVENTS_PATH, {"events": []})
accuracy_stats = load_json(ACCURACY_PATH, {})
accuracy_trend = compute_accuracy_trend(accuracy_stats)