fix: DB路径大面积修复——mofin_db/server/technical_analysis/strategy_tree等脚本的Path(__file__).parent/data错误指向scripts/data而非data/ 导致读写分离
- 量价分析: full_analysis输出volume_deep+成交量存储在price_history.json - FK约束移除: holding_strategies外键->holdings阻止自选股写入 - #000850 重评已写入(止损3.74/止盈4.06/RR1.67)含量价信号
This commit is contained in:
@@ -1,21 +1,9 @@
|
||||
# analyst-knowledge-log.md
|
||||
|
||||
## 2026-07-06 DB锁+市值错误修复
|
||||
## [2026-07-08 10:40] 自愈执行器升级处理:KOSDAQ-4.1% HIGH信号
|
||||
|
||||
### 发现的问题
|
||||
1. **市值错误(586,191 vs 实际619,880+)** — `mo_data.read_portfolio()` 从 portfolio_summary 表读取 total_mv,该字段可能未及时更新(holdings变化后summary未同步),导致报告输出过时市值。
|
||||
|
||||
2. **DB并发锁** — mo_data.py 的 _get_db() 和多个脚本使用 bare sqlite3.connect(),无 timeout/WAL/busy_timeout。多个 cron 并发写入时触发 "database is locked" 错误。
|
||||
|
||||
### 修改内容
|
||||
|
||||
**mo_data.py:**
|
||||
- _get_db(): sqlite3.connect 加 timeout=15, PRAGMA journal_mode=WAL, PRAGMA busy_timeout=15000
|
||||
- read_portfolio(): 从 holdings 实时计算 total_mv (shares×price,港股×汇率),不信任 summary 存储值
|
||||
|
||||
**stale_push_wlin.py (2处), multi_timeframe.py (2处), strategy_lifecycle.py (3处), strategy_tree.py (1处):**
|
||||
- 替换 bare sqlite3.connect() 为 mofin_db.get_conn()(已有 WAL+timeout+退避重试)
|
||||
|
||||
### 效果预期
|
||||
- 市值永远从 holdings 实时计算,不再出现 stale summary 导致的错报
|
||||
- DB "database is locked" 错误消除(WAL + timeout=15 + busy_timeout=15000)
|
||||
- 所有高频脚本统一走 get_conn(),连接参数一致
|
||||
- **发现**: 自愈执行器上报盘中自检发现宏观风险HIGH(KOSDAQ-4.1% + 中信证券研报)
|
||||
- **判断**: 系统无故障,已知市场条件延续。KOSDAQ-4.1%是昨日KOSPI暴跌的延续,非新事件。中信证券研报是采集器误报(正常行业研报)。
|
||||
- **数据验证**: 中国各指数全面脱钩改善(上证-1.26%→+0.02%,恒生-0.51%→+1.69%,科创50+0.28%→+0.62%)。持仓止损距均>3%。
|
||||
- **操作**: 标记已知状态,无需新推送。08:30 LLM深度分析已覆盖并修正。
|
||||
- **涉及文件**: macro_risk_state.json(已由consumer更新为processed)
|
||||
|
||||
Reference in New Issue
Block a user