# 交易监管（AI 教练）

中控 **交易监管** 用于防止过度交易与频繁手动操作：在 **手动/中控开平仓** 与 **新开仓** 时自动推送至 **今日监管长会话**，并可选 **企业微信** 提醒；程序止盈/止损按「正常执行」鼓励，不计入频繁交易统计。

入口：**AI 教练**（`/ai`）→ Tab **交易监管**，或微信链接（在系统设置中配置）。

## 监管范围

| 类型 | 识别 | 页内推送 | 微信（P0） | 频率统计 |
|------|------|----------|------------|----------|
| 实例手动平仓 | `result = 手动平仓` | ✓ | ✓ | ✓ |
| 中控平仓 | `result = 强制清仓` 等 | ✓ | ✓ | ✓ |
| 新开仓 | 监控板持仓 diff（0→有仓 / 新合约） | ✓ | ✓ | ✓ |
| 程序止盈 | 止盈 / 保本止盈 / 移动止盈 | ✓ | 可选 | ✗ |
| 程序止损 | 止损 | ✓ | 可选 | ✗ |
| 外部平仓 | 外部平仓、时间平仓 | ✗ | ✗ | ✗ |

频率规则（间隔过短、30 分钟笔数、日笔数、连亏、平后快开）**只对手动/中控开平** 叠加 `[监管·频率]` 警告。

## 会话

- 每个交易日 **一条长会话**（`bot_mode: supervisor`，标题 `今日监管 YYYY-MM-DD`）。
- 系统消息（`role: system`）+ AI 短评（`assistant`）+ 用户回复（`user`）同线程。
- 与 **交易教练 / 普通聊天** 分离；监管会话不支持「新开对话」。

## 系统设置

路径：**系统设置** → **交易监管 · 企业微信**（写入 `hub_settings.json` → `supervisor`）。

| 字段 | 说明 |
|------|------|
| `enabled` | 总开关 |
| `wechat_webhook` | **监管专用** 企业微信机器人（与三所实例 `.env` 的 `WECHAT_WEBHOOK` 独立） |
| `wechat_link_base` | 微信消息末尾跳转链接（**可单独修改**，如 `https://域名/ai?mode=supervisor`） |
| `wechat_prefix` | 消息前缀，默认 `【交易监管】` |
| `wechat_on_program_tp_sl` | 程序止盈/止损是否也发微信 |
| `manual_close_daily_warn` | 日手动平警告阈值（默认 2） |
| `interval_warn_minutes` | 两笔手动/中控平最短间隔（默认 15 分钟） |
| `freq_30m_count` | 30 分钟内笔数阈值（默认 2） |
| `reopen_after_close_minutes` | 手动平后再开仓警告间隔（默认 30 分钟） |

`.env` 兜底（设置页保存优先）：

```env
SUPERVISOR_WECHAT_WEBHOOK=https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=...
SUPERVISOR_WECHAT_LINK=https://你的域名/ai?mode=supervisor
SUPERVISOR_POLL_INTERVAL_SEC=30
```

## API

| 方法 | 路径 | 说明 |
|------|------|------|
| GET | `/api/ai/supervisor/session` | 今日监管会话 |
| GET | `/api/ai/supervisor/stream` | SSE 版本推送 |
| POST | `/api/ai/supervisor/chat/send` | 用户回聊（JSON `{ "message": "..." }`） |
| GET | `/api/ai/supervisor/rules` | 当前阈值 |
| POST | `/api/ai/supervisor/refresh` | 立即扫描 |

## 存储

| 文件 | 内容 |
|------|------|
| `hub_supervisor_state.json` | 已处理事件、持仓快照、频率统计 |
| `hub_ai_chat.json` | 监管会话（`bot_mode: supervisor`） |
| `hub_settings.json` | `supervisor` 配置节 |

**首次启用** 会对当前交易日已有平仓做 **种子同步**（不补发历史推送），避免部署瞬间刷屏。

## 与实例风控

实例 `account_risk_lib`（冷静期 / 日冻结）为 **硬拦截**；监管为 **软提醒 + 陪聊**，不绕过实例开仓限制。

## 代码位置

| 模块 | 路径 |
|------|------|
| 规则与推送 | `hub_supervisor_lib.py` |
| 后台扫描 | `hub_supervisor_cache.py` |
| 会话 | `hub_ai/supervisor_store.py` |
| AI 评语/回聊 | `hub_ai/supervisor.py` |
| 提示词 | `hub_ai/prompts.py` → `SUPERVISOR_SYSTEM` |

部署后重启中控：`pm2 restart manual-trading-hub`（或你的 hub 进程名）。
