Files
MoFin/SYSTEM_ARCHITECTURE.md
T

110 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# MoFin 系统架构
> 最后更新:2026-07-03
> 维护人:Sisyphus (小小莫) + Zhiwei (知微)
---
## 一、数据层
### 数据库
所有数据存储在 SQLite`/home/hmo/web-dashboard/data/mofin.db`
| 表 | 用途 | 写入方 |
|----|------|--------|
| `holdings` | 持仓列表 | price_monitor, import_holding_xls |
| `portfolio_summary` | 总资产/市值/仓位 | price_monitor, regenerate_all |
| `holding_strategies` | 策略/决策 | regenerate_all, server.py API |
| `watchlist_stocks` | 自选股 | price_monitor, regenerate_all |
| `cash_log` | 现金变更审计 | write_cash_log |
| `market_snapshots` | 大盘数据 | market_watch |
| `sector_snapshots` | 板块数据 | market_watch |
| `live_prices` | 实时价格快照 | price_monitor |
| `mtf_cache` | 多周期K线缓存 | multi_timeframe |
| `capital_flow_cache` | 资金流缓存 | capital_flow_collector |
| `price_events` | 价格触发事件 | price_monitor |
### 数据访问
- **读取**`mo_data.py``read_portfolio()` / `read_decisions()` / `read_watchlist()`
- **写入**`mofin_db.py``write_holdings_batch()` / `write_holding_strategy()` / `write_portfolio_summary()`
JSON 文件已全部移除(portfolio.json, decisions.json, watchlist.json 等)。
### 币种
| 品种 | 个股存储 | 汇总 |
|------|---------|------|
| 港股 | HKD (currency='HKD') | CNY (×汇率) |
| A股 | CNY (currency='CNY') | CNY |
`calc_total_assets()` 汇总时自动将港股 HKD 转 CNY。汇率由 `hk_rate.py` 实时获取。
---
## 二、核心模块
```
MoFin/
├── mo_models.py # 统一数据模型:calc_total_assets, is_hk_stock, to_cny
├── mo_data.py # 统一读取层:read_portfolio, read_decisions, read_watchlist
├── mofin_db.py # DB 层:建表 + 写函数 + 查询函数
├── mo_config.py # 配置单例
├── price_monitor.py # 价格更新(cron: */2 9-16 1-5
├── strategy_lifecycle.py # 策略生命周期(regenerate_all + quality gates
├── server.py # Flask Web API(端口 8899
├── market_watch.py # 大盘采集(cron: */30 9-15
├── market_screener.py # 全市场筛选(cron: */30 9-15
├── strategy_tree.py # 策略树/分支管理
├── strategy_evaluator.py # 策略评估
├── hk_rate.py # 港币汇率(API + 缓存)
├── multi_timeframe.py # 多周期K线分析
├── stock_profile.py # 个股画像
├── data_freshness.py # 数据新鲜度校验
├── system_audit.py # 系统审计
├── system_health_check.py# 系统健康检查
├── prompt_manager/ # LLM Prompt 管理
├── scripts/ # 工具/一次性脚本
└── docs/ # 文档
```
---
## 三、数据流
```
开盘 (9:00-16:00)
├── price_monitor (每2分钟)
│ ├── 东财/腾讯 API → 拉价格
│ ├── write_holdings_batch → holdings 表
│ └── write_portfolio_summary → portfolio_summary 表
├── market_watch (每30分钟)
│ └── write_market_snapshot → market_snapshots + sector_snapshots
├── market_screener (每30分钟)
│ └── 读 market_snapshots → 小果 LLM 筛选 → candidate_pool
└── stale_push_wlin (每30分钟)
└── 读持仓+决策 → 区间检测 → XMPP 推送
盘后
├── system_audit (17:30) → 全局审计报告
├── strategy_review (20:00) → 策略复盘
└── regenerate_all (手动/定时) → 全量策略重评
```
---
## 四、版本
| 版本 | 日期 | 关键变更 |
|------|------|---------|
| 5.0 | 2026-07-03 | JSON 彻底移除,纯 DB。币种修正(港股 HKD,汇总 CNY)。消除重复文件。 |
| 4.0 | 2026-07-01 | mo_data 统一读取层,cash_log 表 |
| 3.0 | 2026-06-30 | mo_models 统一数据模型,DSA 集成 |
| 2.0 | 2026-06-29 | 初始架构重构 |