refactor: remove duplicate scripts + JSON constants + update docs
This commit is contained in:
+108
-92
@@ -1,92 +1,108 @@
|
||||
# MoFin 架构改革 — 变更日志
|
||||
|
||||
> 日期:2026-06-29 ~ 2026-07-03
|
||||
> 执行:Sisyphus (小小莫) + Zhiwei (知微)
|
||||
|
||||
---
|
||||
|
||||
## 2026-07-03 — JSON 彻底移除 + 币种架构修正
|
||||
|
||||
### JSON→DB 全面迁移 (32+ 文件)
|
||||
|
||||
**数据层**
|
||||
- `mo_data.py`:删除所有 JSON fallback,纯 SQLite 读取
|
||||
- `mofin_db.py`:
|
||||
- `write_holding_strategy` 改为 DELETE+INSERT(旧 ON CONFLICT 静默失败)
|
||||
- `holding_strategies` 新增 10 列:avg_price, decision_timestamp, note, quality_check, quality_checked_at, quality_issues_json, position_advice, signal_factors_json, time_horizon, decision_type
|
||||
- 新增 `live_prices` / `mtf_cache` / `capital_flow_cache` 三张表 + 读写函数
|
||||
- 已有 `market_snapshots` 表接替 market.json
|
||||
|
||||
**server.py**
|
||||
- 新增 `_save_portfolio` / `_save_decision` / `_save_watchlist` 写函数
|
||||
- 所有 13 个 API 写端点切到 DB,读端点删除 JSON fallback
|
||||
|
||||
**脚本层**
|
||||
- 15 个文件 `json.load → mo_data.read_*()`
|
||||
- 12 个文件 `json.dump → mofin_db.write_*()` 或直接删除
|
||||
- strategy_lifecycle JSON 冷备行全部删除
|
||||
- branch_scanner / prune_branches 切到 DB
|
||||
- system_audit / stale_push_wlin / refresh_mtf_cache JSON→DB
|
||||
|
||||
**LLM Prompt**
|
||||
- evaluation-daily v2:`evaluation.json` → DB 表
|
||||
- knowledge-extraction v1:`decisions.json` → DB 表
|
||||
- analytics.py:删除 JSON 路径常量
|
||||
|
||||
**已移除的 JSON 文件**(不再被任何代码读写)
|
||||
- portfolio.json / decisions.json / watchlist.json
|
||||
- live_prices.json / multi_tf_cache.json / market.json / capital_flow_cache.json
|
||||
|
||||
### 币种架构
|
||||
|
||||
**港股** — 个股 price/cost/stop_loss 存 **HKD**,`currency='HKD'`
|
||||
**A股** — 个股 price/cost/stop_loss 存 **CNY**,`currency='CNY'`
|
||||
**总资产** — `calc_total_assets()` 汇总时港股 HKD×汇率→CNY
|
||||
|
||||
| 场景 | 港股 | A股 |
|
||||
|------|------|-----|
|
||||
| 个股显示(股软对照) | HKD | CNY |
|
||||
| 技术位(止损/止盈/买入区) | HKD | CNY |
|
||||
| 总资产 / 总市值 / P&L | CNY(汇总时转换) | CNY |
|
||||
|
||||
### 关键修复
|
||||
|
||||
- 根 `price_monitor.py` 与 `scripts/price_monitor.py` 不一致(前者存 HKD,后者转 CNY)→ 统一:存 HKD,不转换
|
||||
- `s.get('price', 0)` 在 price 为 None 时返回 None 导致 TypeError → 改为 `s.get('price') or 0`
|
||||
- 东财 API 限流(之前 0.1s 间隔疯狂刷被封)→ 第一只失败立刻切腾讯兜底
|
||||
|
||||
### 验证
|
||||
|
||||
```
|
||||
holdings: 19 (8 HKD + 11 CNY)
|
||||
decisions: 19 (8 HKD + 11 CNY)
|
||||
total_assets: stored = calculated ✅
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 2026-07-01 — 统一读取层 + 现金日志
|
||||
|
||||
### 新增
|
||||
- `mo_data.py` — `read_portfolio()` / `read_decisions()` / `read_watchlist()`
|
||||
- `mofin_db.py` — `cash_log` 表 + `write_cash_log` / `query_cash_log`
|
||||
|
||||
### 修改
|
||||
- 16 个文件 `json.load → mo_data.read_*()`
|
||||
- HK 股成本 HKD→CNY 修复(import_holding_xls 导入时转换)
|
||||
|
||||
---
|
||||
|
||||
## 2026-06-30 — 初始架构重构
|
||||
|
||||
### 新增
|
||||
- `mo_models.py` — `calc_total_assets()`, `is_hk_stock()`, `get_hk_rate()`, `to_cny()`, `validate_portfolio()`
|
||||
- `mo_config.py` — 配置单例
|
||||
- `mo_bridge.py` — DSA 集成桥
|
||||
- `mo_provider.py` — DSA 数据源适配器
|
||||
- `scripts/data_validate.py`, `holdings_reconciliation.py`, `process_trade.py`(知微)
|
||||
- DSA Web UI: `http://192.168.1.246:8001`
|
||||
|
||||
### 修改
|
||||
- `price_monitor.py`:港股腾讯→东方财富 + 统一 total_assets
|
||||
- 8 个文件散落 `is_hk_stock` / `total_assets` 统一到 mo_models
|
||||
# MoFin 架构改革 — 变更日志
|
||||
|
||||
> 日期:2026-06-29 ~ 2026-07-03
|
||||
> 执行:Sisyphus (小小莫) + Zhiwei (知微)
|
||||
|
||||
---
|
||||
|
||||
## 2026-07-03 — 代码重构
|
||||
|
||||
### 删除重复文件
|
||||
- `scripts/strategy_lifecycle.py` — 旧版本,缺少 quality gate,root 版本是规范
|
||||
- `scripts/price_monitor.py` — 旧版本,root 版本是规范
|
||||
|
||||
### 清理 JSON 路径常量
|
||||
- 移除 scripts/ 中 12 个文件的 DECISIONS_PATH / PORTFOLIO_PATH / WATCHLIST_PATH 声明
|
||||
- 移除 root level 中无用的 JSON 路径常量
|
||||
|
||||
### 文档更新
|
||||
- `docs/SYSTEM_ARCHITECTURE.md` — 完整重写(v5.0)
|
||||
- `CHANGELOG.md` — 补充重构记录
|
||||
|
||||
---
|
||||
|
||||
## 2026-07-03 — JSON 彻底移除 + 币种架构修正
|
||||
|
||||
### JSON→DB 全面迁移 (32+ 文件)
|
||||
|
||||
**数据层**
|
||||
- `mo_data.py`:删除所有 JSON fallback,纯 SQLite 读取
|
||||
- `mofin_db.py`:
|
||||
- `write_holding_strategy` 改为 DELETE+INSERT(旧 ON CONFLICT 静默失败)
|
||||
- `holding_strategies` 新增 10 列:avg_price, decision_timestamp, note, quality_check, quality_checked_at, quality_issues_json, position_advice, signal_factors_json, time_horizon, decision_type
|
||||
- 新增 `live_prices` / `mtf_cache` / `capital_flow_cache` 三张表 + 读写函数
|
||||
- 已有 `market_snapshots` 表接替 market.json
|
||||
|
||||
**server.py**
|
||||
- 新增 `_save_portfolio` / `_save_decision` / `_save_watchlist` 写函数
|
||||
- 所有 13 个 API 写端点切到 DB,读端点删除 JSON fallback
|
||||
|
||||
**脚本层**
|
||||
- 15 个文件 `json.load → mo_data.read_*()`
|
||||
- 12 个文件 `json.dump → mofin_db.write_*()` 或直接删除
|
||||
- strategy_lifecycle JSON 冷备行全部删除
|
||||
- branch_scanner / prune_branches 切到 DB
|
||||
- system_audit / stale_push_wlin / refresh_mtf_cache JSON→DB
|
||||
|
||||
**LLM Prompt**
|
||||
- evaluation-daily v2:`evaluation.json` → DB 表
|
||||
- knowledge-extraction v1:`decisions.json` → DB 表
|
||||
- analytics.py:删除 JSON 路径常量
|
||||
|
||||
**已移除的 JSON 文件**(不再被任何代码读写)
|
||||
- portfolio.json / decisions.json / watchlist.json
|
||||
- live_prices.json / multi_tf_cache.json / market.json / capital_flow_cache.json
|
||||
|
||||
### 币种架构
|
||||
|
||||
**港股** — 个股 price/cost/stop_loss 存 **HKD**,`currency='HKD'`
|
||||
**A股** — 个股 price/cost/stop_loss 存 **CNY**,`currency='CNY'`
|
||||
**总资产** — `calc_total_assets()` 汇总时港股 HKD×汇率→CNY
|
||||
|
||||
| 场景 | 港股 | A股 |
|
||||
|------|------|-----|
|
||||
| 个股显示(股软对照) | HKD | CNY |
|
||||
| 技术位(止损/止盈/买入区) | HKD | CNY |
|
||||
| 总资产 / 总市值 / P&L | CNY(汇总时转换) | CNY |
|
||||
|
||||
### 关键修复
|
||||
|
||||
- 根 `price_monitor.py` 与 `scripts/price_monitor.py` 不一致(前者存 HKD,后者转 CNY)→ 统一:存 HKD,不转换
|
||||
- `s.get('price', 0)` 在 price 为 None 时返回 None 导致 TypeError → 改为 `s.get('price') or 0`
|
||||
- 东财 API 限流(之前 0.1s 间隔疯狂刷被封)→ 第一只失败立刻切腾讯兜底
|
||||
|
||||
### 验证
|
||||
|
||||
```
|
||||
holdings: 19 (8 HKD + 11 CNY)
|
||||
decisions: 19 (8 HKD + 11 CNY)
|
||||
total_assets: stored = calculated ✅
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 2026-07-01 — 统一读取层 + 现金日志
|
||||
|
||||
### 新增
|
||||
- `mo_data.py` — `read_portfolio()` / `read_decisions()` / `read_watchlist()`
|
||||
- `mofin_db.py` — `cash_log` 表 + `write_cash_log` / `query_cash_log`
|
||||
|
||||
### 修改
|
||||
- 16 个文件 `json.load → mo_data.read_*()`
|
||||
- HK 股成本 HKD→CNY 修复(import_holding_xls 导入时转换)
|
||||
|
||||
---
|
||||
|
||||
## 2026-06-30 — 初始架构重构
|
||||
|
||||
### 新增
|
||||
- `mo_models.py` — `calc_total_assets()`, `is_hk_stock()`, `get_hk_rate()`, `to_cny()`, `validate_portfolio()`
|
||||
- `mo_config.py` — 配置单例
|
||||
- `mo_bridge.py` — DSA 集成桥
|
||||
- `mo_provider.py` — DSA 数据源适配器
|
||||
- `scripts/data_validate.py`, `holdings_reconciliation.py`, `process_trade.py`(知微)
|
||||
- DSA Web UI: `http://192.168.1.246:8001`
|
||||
|
||||
### 修改
|
||||
- `price_monitor.py`:港股腾讯→东方财富 + 统一 total_assets
|
||||
- 8 个文件散落 `is_hk_stock` / `total_assets` 统一到 mo_models
|
||||
|
||||
Reference in New Issue
Block a user