Add hub AI config tab with sync to instances and deploy secret bootstrap.
Wire bootstrap_deploy_secrets into setup_env.sh (one-time HUB_BRIDGE_TOKEN, FLASK_SECRET_KEY, HUB_SESSION_SECRET). Remove AI section from instance env UI; hub saves OPENAI settings to all four .env files. SSO unchanged. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+25
-24
@@ -13,7 +13,8 @@
|
||||
| **只展示运营相关项** | 不暴露全量 `.env`,避免误改基础设施 |
|
||||
| **前端仅中文** | 页面只显示中文标签与说明,不显示 `APP_XXX` 等变量名 |
|
||||
| **账户密码不进本页** | 登录用户名/密码在 **系统设置 → 账户密码修改** 中维护 |
|
||||
| **密钥自动托管** | 中控通信密钥、登录会话密钥由 **首次部署脚本自动生成并写入**,本页不提供编辑 |
|
||||
| **密钥自动托管** | 中控通信密钥、登录会话密钥由 **首次部署脚本自动生成并写入**(一次生成、不轮换),本页不提供编辑 |
|
||||
| **AI 仅中控配置** | OpenAI / Ollama 等 AI 项已从中控 **系统设置 → AI 配置** 统一维护并同步三所,本页不再展示 |
|
||||
| **保存标注** | 每项标注「保存即生效」或「需重启」;含需重启项时可用「保存并重启」 |
|
||||
|
||||
---
|
||||
@@ -26,11 +27,14 @@
|
||||
|------|----------|----------|------|
|
||||
| **中控通信密钥** | `HUB_BRIDGE_TOKEN` | 中控 `manual_trading_hub/.env` + 三实例 `.env`(**相同值**) | 中控调用实例 API(`X-Hub-Token`)、iframe SSO 签发与校验 |
|
||||
| **登录会话密钥** | `FLASK_SECRET_KEY` | 三实例 `.env`(**三所相同**) | Flask Session 签名;与网页登录态相关,与中控密钥 **分离** |
|
||||
| **中控会话密钥** | `HUB_SESSION_SECRET` | 中控 `.env` | 中控登录 Cookie 签名 |
|
||||
| **登录账号** | `APP_USERNAME` / `APP_PASSWORD` | 三实例 `.env`(建议三所统一) | 直链实例 `/login` 使用;**仅在系统设置中修改** |
|
||||
| **中控登录** | `HUB_USERNAME` / `HUB_PASSWORD` | 中控 `.env` | 中控网页登录;**仅在中控系统设置改密** |
|
||||
|
||||
说明:
|
||||
|
||||
- **中控密钥 ≠ 登录密钥**:前者给中控与实例之间通信用;后者给浏览器 Session 用。
|
||||
- **长期密钥一次生成、不轮换**:`setup_env.sh` 末尾调用 `scripts/bootstrap_deploy_secrets.py`;已有非占位值不会被覆盖。
|
||||
- **SSO 链接不变**:仍为中控每次签发、默认 2 小时有效、单次使用(`HUB_SSO_TTL_SEC`),与长期 `HUB_BRIDGE_TOKEN` 分离。
|
||||
- 经中控 iframe / SSO 打开实例时,可免输实例密码;直链 IP/域名仍走 `/login`。
|
||||
- 首次部署可生成随机强密码;用户日后在 **系统设置** 改密,不经过本页。
|
||||
|
||||
@@ -40,9 +44,11 @@
|
||||
|
||||
| 列 1 | 列 2 | 列 3 |
|
||||
|------|------|------|
|
||||
| 交易所与实盘 | 企业微信 | AI 复盘 |
|
||||
| 交易执行 | 交易风控 | 账户冷静期 |
|
||||
| 自动划转 | 当日资金 | 期权账户(仅 OKX) |
|
||||
| 交易所与实盘 | 企业微信 | 交易执行 |
|
||||
| 交易风控 | 账户冷静期 | 自动划转 |
|
||||
| 当日资金 | 期权账户(仅 OKX) | |
|
||||
|
||||
> **AI 复盘**(OpenAI / Ollama)已移至中控 **系统设置 → AI 配置**,保存后强制同步三所 `.env`。详见 [中控AI与密钥配置.md](./中控AI与密钥配置.md)。
|
||||
|
||||
Binance / Gate 无期权模块时,第三列最后一格不显示或显示「本所无期权」。
|
||||
|
||||
@@ -76,17 +82,11 @@ Binance / Gate 无期权模块时,第三列最后一格不显示或显示「
|
||||
|
||||
---
|
||||
|
||||
### 4.3 AI 复盘
|
||||
### 4.3 AI 复盘(已移至中控)
|
||||
|
||||
| 中文名 | 说明 |
|
||||
|--------|------|
|
||||
| AI 提供方 | 云端 OpenAI 兼容 / 本地 Ollama |
|
||||
| API 地址 | OpenAI 兼容 base URL |
|
||||
| API 密钥 | 敏感,留空表示不修改 |
|
||||
| 模型名称 | 如 gemma、deepseek 等 |
|
||||
| Ollama 地址 | 本地服务 URL |
|
||||
| Ollama 模型 | 本地模型名 |
|
||||
| 请求超时(秒) | 默认 120 |
|
||||
AI 相关环境变量(`AI_PROVIDER`、`OPENAI_*`、`OLLAMA_*`、`AI_MODEL`、`AI_TIMEOUT_SECONDS`)**不再在本页展示**。
|
||||
|
||||
请在中控 **系统设置 → AI 配置** 修改;保存后写入中控 `.env` 并 **强制同步** 至 OKX / Binance / Gate 三实例。详见 [中控AI与密钥配置.md](./中控AI与密钥配置.md)。
|
||||
|
||||
---
|
||||
|
||||
@@ -208,16 +208,17 @@ Binance / Gate 无期权模块时,第三列最后一格不显示或显示「
|
||||
|
||||
## 7. 与系统设置的关系
|
||||
|
||||
| 能力 | env 配置 | 系统设置 |
|
||||
|------|----------|----------|
|
||||
| 登录用户名/密码 | ❌ | ✅ 账户密码修改 |
|
||||
| 交易所 API | ✅ | ❌ |
|
||||
| 导航/区块显示 | ❌ | ✅ 导航显示 |
|
||||
| 手动资金划转 | ❌ | ✅ 永续资金划转 |
|
||||
| 数据导出 | ❌ | ✅ 数据导出 |
|
||||
| 期权兑换/划转 UI | ❌ | ✅(OKX,可开关) |
|
||||
| 能力 | env 配置 | 系统设置 | 中控系统设置 |
|
||||
|------|----------|----------|--------------|
|
||||
| 登录用户名/密码 | ❌ | ✅ 账户密码修改 | ✅ 中控账户密码 |
|
||||
| 交易所 API | ✅(各所自配) | ❌ | ❌ |
|
||||
| AI / OpenAI | ❌ | ❌ | ✅ AI 配置(同步三所) |
|
||||
| 导航/区块显示 | ❌ | ✅ 导航显示 | ✅ 显示与导航 |
|
||||
| 手动资金划转 | ❌ | ✅ 永续资金划转 | ❌ |
|
||||
| 数据导出 | ❌ | ✅ 数据导出 | ❌ |
|
||||
| 期权兑换/划转 UI | ❌ | ✅(OKX,可开关) | ❌ |
|
||||
|
||||
系统设置说明见 [系统设置说明.md](./系统设置说明.md)。
|
||||
系统设置说明见 [系统设置说明.md](./系统设置说明.md);中控 AI 与部署密钥见 [中控AI与密钥配置.md](./中控AI与密钥配置.md)。
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -0,0 +1,103 @@
|
||||
# 中控 AI 与部署密钥配置
|
||||
|
||||
本文档说明:**长期部署密钥**(一次生成、不轮换)、**SSO 临时链接**(保持不动)、以及 **AI 配置**(中控统一维护并同步三所)。
|
||||
|
||||
---
|
||||
|
||||
## 1. 三类「密钥」分工
|
||||
|
||||
| 类型 | 变量 / 机制 | 谁维护 | 是否自动过期 |
|
||||
|------|-------------|--------|--------------|
|
||||
| **长期通信密钥** | `HUB_BRIDGE_TOKEN` | 部署脚本首次写入四份 `.env` | 否,不轮换 |
|
||||
| **实例 Session 签名** | `FLASK_SECRET_KEY` | 部署脚本首次写入三实例 | 否 |
|
||||
| **中控 Session 签名** | `HUB_SESSION_SECRET` | 部署脚本首次写入中控 | 否 |
|
||||
| **SSO 开门链接** | `/hub-sso?token=...` | 中控每次点「打开实例」签发 | 默认 2h + 单次 |
|
||||
| **AI 配置** | `OPENAI_*`、`AI_*` 等 | 中控系统设置 → AI 配置 | 否 |
|
||||
|
||||
**SSO 保持不动**:仍为随机 nonce、默认 `HUB_SSO_TTL_SEC=7200`、成功登录一次后链接作废。长期 `HUB_BRIDGE_TOKEN` 只用于签名,不会每 2 小时变化。
|
||||
|
||||
---
|
||||
|
||||
## 2. 首次部署自动生成
|
||||
|
||||
`bash deploy/setup_env.sh` 在复制 `.env.example` 后自动执行:
|
||||
|
||||
```bash
|
||||
python3 scripts/bootstrap_deploy_secrets.py
|
||||
```
|
||||
|
||||
| 写入项 | 位置 | 规则 |
|
||||
|--------|------|------|
|
||||
| `HUB_BRIDGE_TOKEN` | 中控 + 三实例(同值) | 仅空或占位符时写入 |
|
||||
| `FLASK_SECRET_KEY` | 三实例(同值) | 仅空或占位符时写入 |
|
||||
| `HUB_SESSION_SECRET` | 中控 | 仅空时写入 |
|
||||
| `HUB_USERNAME` / `HUB_PASSWORD` | 中控 | 默认 admin / admin123(仅空时) |
|
||||
| `APP_USERNAME` / `APP_PASSWORD` | 三实例 | 默认 admin / admin123(仅空时) |
|
||||
|
||||
**已有非空生产值不会被覆盖**(一次生成、不轮换)。
|
||||
|
||||
子代理 `agent.py` 优先读取 `HUB_BRIDGE_TOKEN` 作为 `X-Control-Token` 校验;独立配置 `CONTROL_TOKEN` 已废弃。
|
||||
|
||||
---
|
||||
|
||||
## 3. 中控系统设置 → AI 配置
|
||||
|
||||
路径:**中控 Web → 系统设置 → AI 配置** Tab。
|
||||
|
||||
### 3.1 可配置项
|
||||
|
||||
| 中文名 | 环境变量 |
|
||||
|--------|----------|
|
||||
| AI 提供方 | `AI_PROVIDER` |
|
||||
| API 地址 | `OPENAI_API_BASE` |
|
||||
| API 密钥 | `OPENAI_API_KEY`(掩码,留空不修改) |
|
||||
| 云端模型 | `OPENAI_MODEL` |
|
||||
| Ollama 地址 | `OLLAMA_API` |
|
||||
| Ollama 模型 | `AI_MODEL` |
|
||||
| 请求超时(秒) | `AI_TIMEOUT_SECONDS` |
|
||||
|
||||
### 3.2 保存行为
|
||||
|
||||
1. 写入 `manual_trading_hub/.env`
|
||||
2. **强制同步** 至 `crypto_monitor_okx/binance/gate/.env` 相同键
|
||||
3. 自动 `pm2 restart` 中控 + 三实例(`--update-env`)
|
||||
|
||||
### 3.3 API(需已登录中控)
|
||||
|
||||
| 方法 | 路径 | 说明 |
|
||||
|------|------|------|
|
||||
| GET | `/api/settings/ai-env` | 读取字段与三所同步状态 |
|
||||
| POST | `/api/settings/ai-env` | body: `{ "values": {...}, "restart": true }` |
|
||||
|
||||
实现:`lib/env/shared_env_lib.py`、`manual_trading_hub/hub_env_lib.py`。
|
||||
|
||||
---
|
||||
|
||||
## 4. 实例 env 配置页变更
|
||||
|
||||
三所 **env 配置** 页已 **移除「AI 复盘」卡片**。交易所 API、企业微信、交易执行等仍各所自配。
|
||||
|
||||
实例侧若通过 API 提交已移除的 AI 键,会被白名单过滤,不会写入。
|
||||
|
||||
---
|
||||
|
||||
## 5. 与系统设置 / env 页对照
|
||||
|
||||
| 能力 | 实例 env | 实例系统设置 | 中控系统设置 |
|
||||
|------|----------|--------------|--------------|
|
||||
| 交易所 API | ✅ | ❌ | ❌ |
|
||||
| OpenAI / AI | ❌ | ❌ | ✅(同步三所) |
|
||||
| 实例登录密码 | ❌ | ✅ | ❌ |
|
||||
| 中控登录密码 | ❌ | ❌ | ✅ |
|
||||
| Bridge / Flask 长期密钥 | ❌(自动) | ❌ | ❌(自动) |
|
||||
| SSO 链接 | — | — | 每次打开实例自动签发 |
|
||||
|
||||
---
|
||||
|
||||
## 6. 运维提示
|
||||
|
||||
- 修改 AI 后若未自动重启成功,手动:`pm2 restart manual-trading-hub crypto_okx crypto_binance crypto_gate --update-env`
|
||||
- 三所 AI 不一致时,中控 AI 配置页会提示「未完全同步」;点 **保存并同步** 即可对齐
|
||||
- 备份包可选包含各 `.env`(中控设置 → 备份恢复)
|
||||
|
||||
相关文档:[env配置说明.md](./env配置说明.md)、[系统设置说明.md](./系统设置说明.md)、[manual_trading_hub/局域网与反代部署说明.md](../manual_trading_hub/局域网与反代部署说明.md)(SSO 2h 说明)
|
||||
+2
-1
@@ -65,7 +65,8 @@
|
||||
| 网页登录密码 | ✅ | 本区块 |
|
||||
| 中控通信密钥 `HUB_BRIDGE_TOKEN` | ❌ | 部署时自动生成,中控与实例一致 |
|
||||
| 登录会话密钥 `FLASK_SECRET_KEY` | ❌ | 部署时自动生成,三所相同 |
|
||||
| 交易所 API | ❌ | 在 **env 配置** 页 |
|
||||
| 交易所 API | ❌ | 在 **env 配置** 页(各所自配) |
|
||||
| AI 复盘 / OpenAI | ❌ | 在中控 **系统设置 → AI 配置**(同步三所) |
|
||||
|
||||
### 操作流程
|
||||
|
||||
|
||||
Reference in New Issue
Block a user