Add curated env config UI with Chinese labels and deploy secret bootstrap

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-07-08 21:03:00 +08:00
parent 0b91d26f71
commit 0d2ce9c126
11 changed files with 767 additions and 23 deletions
+228
View File
@@ -0,0 +1,228 @@
# env 配置页说明
本文档描述各交易实例 Web 端 **「env 配置」** 页展示项、含义、生效方式,以及与系统设置、中控密钥的分工。
> **不在本页展示的配置**(服务端口、数据库路径、关键位门控、轮询间隔等)仍保存在实例目录 `.env` 中,需 SSH 编辑或部署脚本维护,见文末「隐藏项」。
---
## 1. 设计原则
| 原则 | 说明 |
|------|------|
| **只展示运营相关项** | 不暴露全量 `.env`,避免误改基础设施 |
| **前端仅中文** | 页面只显示中文标签与说明,不显示 `APP_XXX` 等变量名 |
| **账户密码不进本页** | 登录用户名/密码在 **系统设置 → 账户密码修改** 中维护 |
| **密钥自动托管** | 中控通信密钥、登录会话密钥由 **首次部署脚本自动生成并写入**,本页不提供编辑 |
| **保存标注** | 每项标注「保存即生效」或「需重启」;含需重启项时可用「保存并重启」 |
---
## 2. 密钥分工(自动生成,本页不可见)
部署时由脚本统一生成并写入对应 `.env`(已有值则跳过,避免覆盖生产环境)。
| 类型 | 环境变量 | 写入位置 | 用途 |
|------|----------|----------|------|
| **中控通信密钥** | `HUB_BRIDGE_TOKEN` | 中控 `manual_trading_hub/.env` + 三实例 `.env`(**相同值**) | 中控调用实例 API(`X-Hub-Token`)、iframe SSO 签发与校验 |
| **登录会话密钥** | `FLASK_SECRET_KEY` | 三实例 `.env`**三所相同** | Flask Session 签名;与网页登录态相关,与中控密钥 **分离** |
| **登录账号** | `APP_USERNAME` / `APP_PASSWORD` | 三实例 `.env`(建议三所统一) | 直链实例 `/login` 使用;**仅在系统设置中修改** |
说明:
- **中控密钥 ≠ 登录密钥**:前者给中控与实例之间通信用;后者给浏览器 Session 用。
- 经中控 iframe / SSO 打开实例时,可免输实例密码;直链 IP/域名仍走 `/login`
- 首次部署可生成随机强密码;用户日后在 **系统设置** 改密,不经过本页。
---
## 3. 页面布局(三列卡片)
| 列 1 | 列 2 | 列 3 |
|------|------|------|
| 交易所与实盘 | 企业微信 | AI 复盘 |
| 交易执行 | 交易风控 | 账户冷静期 |
| 自动划转 | 当日资金 | 期权账户(仅 OKX) |
Binance / Gate 无期权模块时,第三列最后一格不显示或显示「本所无期权」。
---
## 4. 各卡片字段(中文展示名)
### 4.1 交易所与实盘
| 中文名 | 说明 | 重启 |
|--------|------|------|
| 开启实盘下单 | 关闭时仅走本地流程,不向交易所发单 | 需重启 |
| API Key | 永续子账户 API Key | 需重启 |
| API Secret | 永续子账户 Secret | 需重启 |
| API Passphrase | 仅 OKX 显示 | 需重启 |
| 保证金模式 | 全仓 / 逐仓 | 需重启 |
| 持仓模式 | 双向 / 单向净持仓等(按所) | 需重启 |
| 仓位查询类型 | 仅 OKX:如 SWAP | 需重启 |
| 账户备注 | 企业微信推送中显示的交易所备注 | 保存即生效 |
**本卡片不包含**:网页登录账号密码、是否关闭登录校验、中控通信密钥。
---
### 4.2 企业微信
| 中文名 | 说明 |
|--------|------|
| 机器人 Webhook | 行情、风控、提醒推送地址 |
| 推送超时(秒) | 可选,默认 10 |
---
### 4.3 AI 复盘
| 中文名 | 说明 |
|--------|------|
| AI 提供方 | 云端 OpenAI 兼容 / 本地 Ollama |
| API 地址 | OpenAI 兼容 base URL |
| API 密钥 | 敏感,留空表示不修改 |
| 模型名称 | 如 gemma、deepseek 等 |
| Ollama 地址 | 本地服务 URL |
| Ollama 模型 | 本地模型名 |
| 请求超时(秒) | 默认 120 |
---
### 4.4 交易执行
| 中文名 | 说明 |
|--------|------|
| 计仓模式 | 以损定仓 / 全仓杠杆 |
| 以损定仓风险% | 单笔风险占资金比例 |
| 全仓资金缓冲比例 | 全仓模式下可用资金折扣 |
| BTC 默认杠杆 | |
| 山寨默认杠杆 | |
| 方向限制开关 | |
| 允许方向 | 多 / 空 / 双向 |
| 币种白名单开关 | |
| 白名单币种 | 逗号分隔 |
| 交易日切点(北京时间) | 默认 8 点 |
| 切点前禁止新开仓 | |
| 最大同时持仓 | |
| 人工最低盈亏比 | |
| 强制清仓开关 | |
| 强制清仓整点(北京) | |
---
### 4.5 交易风控(日内开仓)
| 中文名 | 说明 |
|--------|------|
| 单日开仓提醒阈值 | 达到次数后 AI 克制提醒(不拦单) |
| 单日开仓硬上限 | 0 表示不启用;达到后禁止新开仓 |
详见 [daily-open-limit.md](./daily-open-limit.md)。
---
### 4.6 账户冷静期
| 中文名 | 说明 |
|--------|------|
| 冷静期总开关 | |
| 手动平仓冷静(小时) | |
| 复盘情绪冷静(小时) | |
| 日手动平仓次数上限 | |
| 情绪标签日冻结 | |
详见 [account-risk-cooldown.md](./account-risk-cooldown.md)。
---
### 4.7 自动划转
| 中文名 | 说明 |
|--------|------|
| 启用自动划转 | |
| 目标余额(U) | 交易账户目标 USDT |
| 划出账户 | funding / swap |
| 划入账户 | swap / funding |
| 执行整点(北京时间) | |
| 划转币种 | 默认 USDT |
详见 [auto-transfer-daily.md](./auto-transfer-daily.md)。
---
### 4.8 当日资金
| 中文名 | 说明 |
|--------|------|
| 日起始基数(U | |
| 回撤后基数(U | |
| 盈利后基数(U | |
与自动划转目标余额相互独立;若需一致请手动对齐。
---
### 4.9 期权账户(仅 OKX
| 中文名 | 说明 |
|--------|------|
| 启用期权模块 | |
| 期权 API Key / Secret / Passphrase | 主账户,与永续子账户分离 |
| 期权账户备注 | |
| 单笔预算(USDC | |
| 预算缓冲比例 | |
| 默认标的 | 如 ETH |
| 最大到期天数 | 等常用策略参数 |
高级参数与完整说明见 [期权方案.md](./期权方案.md)、[期权用法.md](./期权用法.md)。
---
## 5. 操作说明
1. 修改后点 **保存**:即时生效项立即应用;需重启项写入 `.env` 但未重启进程。
2. 含需重启项时点 **保存并重启**:写 `.env` 后 PM2 重启当前实例。
3. **重新加载**:从磁盘重新读取 `.env` 刷新表单(放弃未保存修改)。
4. 敏感项(API、密钥)显示为掩码;**留空提交表示不修改原值**。
---
## 6. 隐藏项(本页不展示)
以下仍存在于 `.env`,仅供运维或 SSH 修改:
- 服务:`APP_HOST``APP_PORT``APP_DEBUG`
- 数据:`DB_PATH``UPLOAD_DIR`
- 关键位门控:全部 `KEY_*``KLINE_*`
- 轮询与同步:`BALANCE_REFRESH_SECONDS``PRICE_REFRESH_SECONDS``MONITOR_POLL_SECONDS``BREAKEVEN_*``RECONCILE_*`
- 代理:`OKX_SOCKS_PROXY``BINANCE_HTTP_PROXY`
- 备份:`BACKUP_*`
- 中控嵌入细节:`APP_ALLOW_HUB_EMBED``HUB_EMBED_*``APP_COOKIE_SECURE`
- 登录相关:`APP_AUTH_DISABLED``APP_USERNAME``APP_PASSWORD``FLASK_SECRET_KEY``HUB_BRIDGE_TOKEN`
后续若需要可增加「高级模式」折叠区,默认关闭。
---
## 7. 与系统设置的关系
| 能力 | env 配置 | 系统设置 |
|------|----------|----------|
| 登录用户名/密码 | ❌ | ✅ 账户密码修改 |
| 交易所 API | ✅ | ❌ |
| 导航/区块显示 | ❌ | ✅ 导航显示 |
| 手动资金划转 | ❌ | ✅ 永续资金划转 |
| 数据导出 | ❌ | ✅ 数据导出 |
| 期权兑换/划转 UI | ❌ | ✅(OKX,可开关) |
系统设置说明见 [系统设置说明.md](./系统设置说明.md)。
---
## 8. 实现备注(开发用)
- 白名单分组:`lib/env/env_ui_manifest.py`(按 `exchange_key` 过滤)
- 中文标签:`ENV_UI_LABELS` 映射,模板只渲染 `label` / `note`
- 全量校验仍基于 `.env.example`POST 仅接受 manifest 内 key
+166
View File
@@ -0,0 +1,166 @@
# 系统设置页说明
本文档描述各交易实例 Web 端 **「系统设置」** 页各区块功能、与 env 配置页的分工,以及导航显示开关规则。
---
## 1. 页面结构
系统设置为 **两列卡片** 布局,各区块可在「导航显示」中单独开关(见第 2 节)。
| 区块 | 默认显示 | 说明 |
|------|----------|------|
| 导航显示 | 固定 | 控制顶栏与其它设置区块是否出现 |
| 账户密码修改 | 可关 | 修改网页登录用户名/密码 |
| 永续资金划转 | 可关 | 手动在资金账户与交易账户间划转 USDT |
| 数据导出 | 可关 | 下载 CSV |
| 币种兑换 | 可关 | 仅 OKX 期权相关 |
| 期权资金划转 | 可关 | 仅 OKX |
| 期权设置面板 | OKX 有模块时 | 较大块,占整行 |
**固定不可隐藏**(顶栏):关键位监控、实盘下单、系统设置。
---
## 2. 导航显示
### 2.1 顶栏导航开关
| 开关 | 对应 Tab |
|------|----------|
| 策略交易 | 策略交易 |
| 策略交易记录 | 策略交易记录 |
| 交易记录与复盘 | 交易记录与复盘 |
| 统计分析 | 统计分析 |
| 风控说明 | 风控说明 |
| env 配置 | env 配置 |
| 期权 | 期权(仅 OKX 等有期权模块时有效) |
保存后 **立即生效**,无需重启。中控 iframe 内嵌导航同步生效。
### 2.2 系统设置内区块开关
| 开关 | 隐藏内容 |
|------|----------|
| 资金划转 | 永续资金划转卡片 |
| 数据导出 | 数据导出卡片 |
| 账户密码修改 | 改密卡片 |
| 期权币种兑换 | OKX 兑换卡片 |
| 期权资金划转 | OKX 期权划转卡片 |
---
## 3. 账户密码修改
### 用途
- 修改 **直链打开实例**`/login` 使用的用户名与密码。
- 写入本实例目录 `.env``APP_USERNAME``APP_PASSWORD`
- **三所建议使用相同账号**,便于记忆;本页仅改 **当前实例**`.env`,若需三所一致请分别保存或后续做批量同步。
### 与中控 / 密钥的关系
| 项目 | 是否在系统设置改 | 说明 |
|------|------------------|------|
| 网页登录密码 | ✅ | 本区块 |
| 中控通信密钥 `HUB_BRIDGE_TOKEN` | ❌ | 部署时自动生成,中控与实例一致 |
| 登录会话密钥 `FLASK_SECRET_KEY` | ❌ | 部署时自动生成,三所相同 |
| 交易所 API | ❌ | 在 **env 配置** 页 |
### 操作流程
1. 输入 **当前密码**(与 `.env``APP_PASSWORD` 一致)。
2. 可选填 **新用户名**;不填则保持原用户名。
3. 输入 **新密码****确认密码**(至少 6 位)。
4. 保存后 **自动重启当前实例**PM2),请用新密码登录。
经中控 SSO 打开实例时,通常无需输入实例密码;改密主要影响 **直链访问**
---
## 4. 永续资金划转
### 用途
**子账户永续** 场景下,于 **资金账户(funding****交易账户(swap** 之间手动划转 USDT。
### 与 env 配置的关系
| 能力 | 系统设置 | env 配置 |
|------|----------|----------|
| **手动**划转一笔 | ✅ 本区块 | ❌ |
| **自动**每日划转规则 | ❌ | ✅「自动划转」卡片 |
自动划转规则(开关、目标余额、整点等)在 env 配置中维护,见 [env配置说明.md](./env配置说明.md)。
---
## 5. 数据导出
提供 CSV 下载(版本号见页内标注):
| 链接 | 内容 |
|------|------|
| 交易记录 | 成交/订单相关导出 |
| 复盘记录 | 复盘日记 |
| 关键位(当前) | 当前关键位列表 |
| 关键位历史 | 历史关键位 |
导出为只读操作,不修改配置。
---
## 6. 期权相关(仅 OKX
当实例启用期权模块时,系统设置可能包含:
- **币种兑换**:期权账户内币种兑换操作
- **期权资金划转**:期权与永续/资金账户间划转
- **期权设置面板**:页内期权参数与状态(大块区域)
是否在顶栏显示「期权」Tab,由 **导航显示 → 期权** 控制;是否在设置页显示兑换/划转卡片,由对应子开关控制。
期权 env 参数(API、预算、策略默认值)在 **env 配置 → 期权账户** 维护,见 [期权用法.md](./期权用法.md)。
---
## 7. 顶栏与设置页差异
| 页面 | 顶栏资金信息 | 说明 |
|------|--------------|------|
| 关键位、实盘、策略等 | 显示 | 含资金、盈亏等 |
| 系统设置、风控说明、env 配置 | 隐藏资金条 | 与实盘顶栏共用组件,设置类页面简化展示 |
主题切换(明/暗)在系统设置页可用(若已接入主题切换 UI)。
---
## 8. 权限与安全
- 所有设置 API 需 **已登录**(或部署时 `APP_AUTH_DISABLED=true` 的联调环境)。
- 改密、env 保存、PM2 重启等写操作 **不接受** 仅带 `X-Hub-Token` 的中控请求修改(防止中控误改实例配置)。
- 生产环境建议 `APP_AUTH_DISABLED=false`,公网务必开启登录校验。
---
## 9. 首次部署时的账号与密钥(规划)
以下由 **部署脚本** 自动完成,**不在** 系统设置或 env 配置页手工填写:
1. **生成 `HUB_BRIDGE_TOKEN`** → 写入中控 + 三实例 `.env`(相同)。
2. **生成 `FLASK_SECRET_KEY`** → 写入三实例 `.env`(三所相同)。
3. **生成初始 `APP_USERNAME=admin`、`APP_PASSWORD=admin123`** → 写入三实例(仅当尚未配置时);用户日后在 **系统设置** 改密。
脚本应对 **已有非空值** 跳过写入,避免覆盖生产环境。
---
## 10. 相关文档
| 文档 | 内容 |
|------|------|
| [env配置说明.md](./env配置说明.md) | env 配置页字段与密钥分工 |
| [account-risk-cooldown.md](./account-risk-cooldown.md) | 账户冷静期规则 |
| [auto-transfer-daily.md](./auto-transfer-daily.md) | 自动划转 |
| [daily-open-limit.md](./daily-open-limit.md) | 单日开仓限制 |
| [manual_trading_hub/使用说明.md](../manual_trading_hub/使用说明.md) | 中控与 SSO |