Files
MoFin/docs/lifecycle-management.md
T
知微 eb8648839d feat: 全局系统审计 system_audit.py + 每日cron
system_audit.py 每日17:30自动运行,7个维度全覆盖:
1. 信号管道 — 产出vs处理量,防积压
2. 股票池 — 自选/关注/持仓的数量健康
3. 策略状态 — 过期/缺止损/偏离检测
4. 建议闭环 — pending待执行建议
5. 组合健康 — 仓位/现金水位
6. 数据管道 — 采集时效性
7. 系统服务 — Dashboard/XMPP在线

发现HIGH问题自动触发修复,问题写入report供复盘
2026-06-22 20:21:52 +08:00

315 lines
11 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 对象生命周期管理 — 完整规范
> 版本: v1.0 | 最后更新: 2026-06-22
> 核心理念:每个对象都有完整的生命周期,从生到死都有流程覆盖,不留孤儿。
---
## 一、总览:五大对象及其生命周期
```
┌──────────┐
│ 信号Signal │
└────┬─────┘
│ 评估分流
┌──────────┐ ┌──────────┐ ┌──────────┐
│ 候选股 │ → │ 自选股 │ → │ 持仓股 │
│ (watching)│ │ (watchlist)│ │ (holdings)│
└──────────┘ └────┬─────┘ └────┬─────┘
│ │
▼ ▼
┌──────────┐ ┌──────────┐
│ 策略 │ ← │ 建议 │
│ (strategy)│ │ (advice) │
└────┬─────┘ └────┬─────┘
│ │
▼ ▼
┌──────────┐ ┌──────────┐
│ 评估结果 │ │ 执行结果 │
│ (evaluation)│ │ (result) │
└──────────┘ └──────────┘
↘ ↙
┌──────────┐
│ 反馈修正 │
│ (feedback)│
└──────────┘
```
---
## 二、对象一:信号(Signal)
### 定义
xiaoguo_scanner 或 trend_detector 产出的原始信号,表示一只股票在某方面有异常。
### 状态流转
```
source写入(signal_news表)
┌──────┐
│ 未处理 │ ←─ source='xiaoguo' 或 'xiaoguo_risk' 或 'trend'
└──┬───┘
│ 知微(盯盘cron)读取并评估
├──────────────────────────────────────┐
▼ ▼
┌──────┐ ┌──────┐
│ 已采纳 │ │ 已忽略 │
│ → 入自选│ │ → 跳过 │
└──────┘ └──────┘
```
### 处理流程
1. **写入**xiaoguo_scanner(每5min) / trend_detector(每25min) → INSERT INTO signal_news
2. **读取**:盯盘cron(每15-25min) → SELECT FROM signal_news WHERE source LIKE 'xiaoguo%' ORDER BY id DESC
3. **评估**:五维全面分析(大盘→行业→个股,消息+基本面+技术面)
4. **分流**
- 采纳 → 加入自选(watchlist) + 生成策略(decisions.json)
- 关注 → 加入关注列表(watchlist status=watching)
- 忽略 → 不处理
### 当前缺口
- [x] signal_news 缺 processed 标记 → 已修复(6/22): 加processed列,cron处理完后UPDATE标记
- [x] xiaoguo_risk 信号已接入(cron prompt处理)
### 修复方案
为 signal_news 表新增 `processed` 字段(0=未处理, 1=已处理),cron处理完后 UPDATE 标记。
---
## 三、对象二:股票(Stock
### 定义
系统中出现的任何股票。按参与深度分四级。
### 状态流转
```
发现(信号来)
┌──────────┐
│ 关注中 │ status=watching | watchlist.json
│ (watching)│ 有价钱监控,无正式策略
└────┬─────┘
│ 条件触发:>3%波动 / 有新闻 / 价格入区
┌──────────┐
│ 正式自选 │ status=默认 | watchlist.json + decisions.json
│ (watchlist)│ 有完整策略(买入区/止损/止盈)
└────┬─────┘
│ 用户买入执行
┌──────────┐
│ 持仓 │ holdings表 + decisions.json(type=持仓策略)
│ (holdings)│ 有成本+仓位+策略,全过程监控
└────┬─────┘
│ 清仓/卖出
┌──────────┐
│ 已关闭 │ status=closed | decisions.json保留但隐藏
│ (closed) │ 历史记录不删除,前端不展示
└──────────┘
```
### 参与流程
- 关注中 → price_monitor覆盖(每2min刷新价钱)
- 正式自选 → price_monitor + multi_tf_cache(每天9:00) + stale_detector + 策略重评(9:00/12:00) + 盯盘cron
- 持仓 → 全部上述 + 止损/止盈监控 + 组合分析
---
## 四、对象三:策略(Strategy
### 定义
一个股票的操作规则,包含买入区/止损/止盈/仓位。
### 状态流转
```
创建评估
┌──────┐
│ 新建 │ 首次生成策略
└──┬───┘
│ 写入decisions.json生效
┌──────┐
│active│ 正常运行中
└──┬───┘
│ 超过14天未更新 / 价格偏离买入区>20%
┌──────┐
│stale │ 标记需要重评
└──┬───┘
│ stale_detector发现 + 触发重评
┌──────┐
│ 重评 │ regenerate_all() / per_stock_reassess()
└──┬───┘
├── 参数更新 → active(新版本)
└── 清仓 → closed(停止监控)
```
### 触发重评的条件(三线)
1. **价格偏离**:超买入区上沿>20%轻度 / >35%严重
2. **时间过期**>14天未更新
3. **事件触发**:财报/板块政策/大盘系统性风险
### 评估反馈
每次重评对比旧策略:
- 旧止损/止盈是否正确?
- 哪些判断对了?哪些错了?
- 记入 changelog 供下次参考
---
## 五、对象四:建议(Advice)
### 定义
知微给出的具体操作指令,"现价XX买入XX股"、"止损设XX"等。
### 状态流转
```
知微生成建议
┌──────┐
│pending│ /api/advice/record → decisions.json advice_timeline
└──┬───┘
├── 老爸执行操作 → executed(+结果) → 闭环完成
├── 老爸确认看到 → confirmed
└── 无效/过时 → ignored
```
### 闭环要求
- ✅ pending → 生成时记录
- ✅ executed → 支持标记(已修复 6/22)
- ✅ result字段 → 支持记录结果
- ❌ 自动化闭环缺失:没有机制在操作执行后自动关联到对应建议
### 评估反馈
- 建议执行后,对比执行结果与建议预期
- 准确率统计存 accuracy_stats 表
- 每周建议对账:advice_reconciliation.py
---
## 六、对象五:评估(Evaluation
### 定义
对策略执行情况的定期检查结论。这是"自我提升"的核心。
### 双维度评估框架
```
阶段一(理论维度):策略规划是否正确?
├─ 当初的买入区/止损/止盈设置是否合理?
├─ 基于当时的数据,判断逻辑是否有问题?
└─ 输出:策略本身的质量评分
阶段二(实际维度):执行结果如何?
├─ 策略执行后股价走势是否符合预期?
├─ 止损/止盈是否被触发?触发了结果如何?
└─ 输出:执行效果评分
```
### 评估频率
- 每日21:00 → 策略评估-每日 cron(六维评估)
- 每周21:00周六 → 策略评估-每周 cron(双维度全面评估)
- 每周20:00周六 → 建议对账-每周 cronadvice准确率)
### 反馈修正流
```
评估结果
发现策略偏差 → 记入 knowledge-log
修正策略参数 → 触发重评
新策略上线 → 加入监控
下一轮评估验证修正效果
```
---
## 七、核心:自我提升循环
### 循环结构
```
┌────────────┐
│ 产生信号/数据 │
└─────┬──────┘
┌────────────┐
│ 知微分析评估 │
└─────┬──────┘
┌─────┴──────┐
│ │
▼ ▼
┌────────┐ ┌────────┐
│ 执行操作 │ │ 记录结论 │
└────┬───┘ └────┬───┘
│ │
└─────┬──────┘
┌────────────┐
│ 对比预期结果 │ ← 实际走势 vs 当初判断
└─────┬──────┘
┌─────┴──────┐
│ │
▼ ▼
┌────────┐ ┌────────┐
│ 对了→固化 │ │ 错了→修正 │
│ 记入知识库 │ │ 调策略/规则 │
└────────┘ └────────┘
┌────────────┐
│ 下一轮验证 │ ← 回到顶部
└────────────┘
```
### 落地手段
| 环节 | 机制 | 频率 |
|------|------|------|
| 产生信号 | xiaoguo_scanner / trend_detector | 5-25min |
| 分析评估 | 盯盘cron / 策略评估cron | 15min-每日 |
| 执行操作 | 老爸手动 / advice_timeline记录 | 按需 |
| 对比结果 | advice_reconciliation / 策略评估 | 每周 |
| 知识萃取 | 知识萃取cron + knowledge-log | 每日16:30 |
| **全局审计** | **system_audit.py + 审计cron** | **每日17:30** |
| 修正迭代 | stale_detector + regenerate_all | 每日9:00/12:00 |
---
## 八、当前缺口与修复清单
### 信号层
- [ ] signal_news 缺 processed 标记 → 知微处理完的信号下次不重复读
- [ ] xiaoguo_risk 信号目前无人处理(盯盘cron只看持仓止损,不读xiaoguo_risk
### 股票层
- [ ] 关注→正式升级的触发机制不够自动化(依赖cron LLM判断,无硬性触发器)
- [ ] 已关闭股票不会主动从 watchlist 移除,只标记 status=closed
### 策略层
- [x] stale_detector 已实现(价格偏离+时间过期)
- [x] per_stock_reassess 已实现(盘中触发)
- [ ] 策略版本对比未自动记录到 changelog(手动的有,自动的无)
### 建议层
- [x] /api/advice/record 去重(6/22修复)
- [x] /api/advice/confirm 支持executed6/22修复)
- [ ] 建议执行后自动回写result(需对接用户交易数据)
### 反馈层
- [x] 知识萃取cron已运行(每日16:30)
- [ ] 知识萃取结果自动触发系统修改(目前只记录不改)
- [x] 建议对账每周跑(advice_reconciliation.py