# 中控数据看板说明

入口：**`/dashboard`**（顶栏「数据看板」）。

## 能力

| 区块 | 说明 |
|------|------|
| **总览 KPI** | 交易日、平仓盈亏、笔数、浮盈亏、资金合计、实盘持仓 |
| **分户明细** | 三户资金/交易账户、今日盈亏、浮盈亏、备注；未启用显示「未监控」 |
| **平仓明细** | 当日平仓流水（合约、方向、结果、盈亏、时间） |
| **风险预警** | 单户单日平仓亏损 ≥ 资金合计 **5%** 时横幅 + 卡片高亮 |

纯数据聚合，**不调用 AI**。交易日口径与实例一致（`TRADING_DAY_RESET_HOUR`，默认 8 点）。

## 刷新机制（SSE）

与监控区 board 类似，采用 **后台聚合 + SSE 推送版本号**：

1. `hub.py` 启动后 `dashboard_store` 每 **60s**（`DASHBOARD_POLL_INTERVAL_SEC`）聚合三户数据到内存快照。
2. 浏览器打开看板页后连接 `GET /api/dashboard/stream`（`event: dashboard`）。
3. 收到新版本号后拉取 `GET /api/dashboard/daily` 快照并局部渲染，**无整页轮询闪烁**。
4. 监控区触发 board 刷新（全平、撤单等）时，会一并 `request_refresh` 看板，尽量与实盘同步。
5. 「立即刷新」→ `POST /api/dashboard/refresh` 触发下一轮聚合。

可选环境变量：`HUB_DASHBOARD_SSE_HEARTBEAT_SEC`（默认 25，SSE 心跳间隔）。

## 主题与样式

- 跟随中控顶栏 **亮/暗主题**（`theme.js`），使用 `--panel` / `--border` / `--accent` 等变量。
- 卡片采用 **柔光阴影**（非霓虹渐变背景）；亮色主题下为浅灰投影，暗色主题为轻微内高光。
- 盈亏仍用绿/红语义色，与全局一致。

## API

| 方法 | 路径 | 说明 |
|------|------|------|
| GET | `/api/dashboard/daily` | 当前交易日快照（含 `dashboard_version`） |
| GET | `/api/dashboard/stream` | SSE 版本推送 |
| POST | `/api/dashboard/refresh` | 请求立即重聚合 |

`GET /api/ping` 含 `dashboard_version`、`dashboard_poll_interval_sec` 等字段。

## 相关文件

- `hub_dashboard.py` — 聚合逻辑
- `hub_dashboard_cache.py` — 后台轮询 + SSE
- `static/dashboard.js` / `dashboard.css` — 前端

部署后 `git pull` 并 `pm2 restart manual-trading-hub`。
