# 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周六 → 建议对账-每周 cron（advice准确率）

### 反馈修正流
```
评估结果
    ↓
发现策略偏差 → 记入 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 支持executed（6/22修复）
- [ ] 建议执行后自动回写result（需对接用户交易数据）

### 反馈层
- [x] 知识萃取cron已运行（每日16:30）
- [ ] 知识萃取结果自动触发系统修改（目前只记录不改）
- [x] 建议对账每周跑（advice_reconciliation.py）
