# 中控（Fleet Control）使用说明

中控与策略机在**同一仓库**，独立进程部署。中控跑在本地服务器，**不访问交易所**；只通过专用 API Token 读状态、启停、远程更新与免密登录策略机。

建议策略机与中控使用**同一 git 版本**（同 `main` / 同 tag），避免 `/api/fleet/*` 接口漂移。

## 架构一览

| 组件 | 端口 | PM2 名 | 目录 |
|------|------|--------|------|
| 策略机 | 5155 | `eth-hedge-api` | `backend/` + `frontend/` |
| 中控 | 5160 | `eth-hedge-control` | `control/backend` + `control/frontend` |

## 策略机：启用中控 Token

1. 部署含本功能的策略机代码（`deploy_remote.py` / 现有一键更新）。
2. 登录策略机 → **系统设置 → 登录账户 → 中控 API Token**。
3. 粘贴中控生成的 Token 并保存（存哈希，不可回看明文）。

策略机 Fleet 接口（请求头 `X-Fleet-Token`）：

- `GET /api/fleet/status`
- `POST /api/fleet/start` / `pause`
- `POST /api/fleet/update`（本机跑 `deploy/lib/update.sh`）
- `POST /api/fleet/issue-login`（签发一次性免密登录票）

免密登录兑换：`POST /api/auth/fleet-exchange` `{ "ticket": "..." }`，或打开 `/fleet-login?ticket=...`。

## 中控：本地安装与一键部署

在目标机执行（与策略机同一安装命令入口）：

```bash
curl -fsSL https://git.bz121.com/dekun/eth_hedge_sim/raw/branch/main/deploy/manage.sh | bash
```

交互菜单：

1. **一键部署策略机** — 端口 5155 / `eth-hedge-api`
2. **一键部署中控机** — 端口 5160 / `eth-hedge-control`（自动补全 `.env.control`，已有值不覆盖）
3. 一键卸载
4. 更新策略机
5. 更新中控机

中控默认账号：`admin` / `admin123`；在中控 **系统设置** 可改用户名密码。

## 配对步骤

1. 中控 **系统设置** → 添加策略机（名称 + 公网 Base URL，如 `https://dc.hyf2.cc`）。
2. 点 **生成 Token** → 复制明文（只显示一次）。
3. 登录该策略机 → 保存同一 Token。
4. 回到中控 **监控区**：应显示在线与 Token 已配对。

## 监控区操作

- **启动 / 停止**：经 Token 调策略机 `/api/fleet/start|pause`（LIVE 门禁仍在策略机侧）。
- **登录策略机**：中控代签一次性 ticket，新标签打开策略机并免密进入 `/plan`。
- **更新代码 / 勾选更新**：中控调 `/api/fleet/update`，策略机本机 git pull + 构建 + reload；**不会**自动 start 策略。

## 安全注意

- Fleet Token 可启停、更新、签发登录票，泄露后立即在两边轮换（中控重新生成 + 策略机覆盖保存）。
- 登录票约 60 秒、一次性；长期 Token 不会出现在浏览器地址栏。
- 中控建议仅内网访问；勿把 `.env.control` 与 Token 明文提交到 git。
