Normalize fullwidth punctuation to ASCII across codebase.

Add scripts/normalize_ambiguous_unicode.py; fix corrupted patch_instance_theme_templates.py. Preserves curly quotes in string literals; removes Git homoglyph warnings on .env.example.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-07-08 23:42:26 +08:00
parent aaa72c7961
commit b733e551a0
392 changed files with 71522 additions and 71369 deletions
+75 -75
View File
@@ -1,8 +1,8 @@
# env 配置页说明
本文档描述各交易实例 Web 端 **「env 配置」** 页展示项含义生效方式以及与系统设置中控密钥的分工
本文档描述各交易实例 Web 端 **「env 配置」** 页展示项,含义,生效方式,以及与系统设置,中控密钥的分工.
> **不在本页展示的配置**服务端口数据库路径关键位门控轮询间隔等仍保存在实例目录 `.env` 中需 SSH 编辑或部署脚本维护见文末「隐藏项」
> **不在本页展示的配置**(服务端口,数据库路径,关键位门控,轮询间隔等)仍保存在实例目录 `.env` 中,需 SSH 编辑或部署脚本维护,见文末「隐藏项」.
---
@@ -10,66 +10,66 @@
| 原则 | 说明 |
|------|------|
| **只展示运营相关项** | 不暴露全量 `.env`避免误改基础设施 |
| **前端仅中文** | 页面只显示中文标签与说明不显示 `APP_XXX` 等变量名 |
| **只展示运营相关项** | 不暴露全量 `.env`,避免误改基础设施 |
| **前端仅中文** | 页面只显示中文标签与说明,不显示 `APP_XXX` 等变量名 |
| **账户密码不进本页** | 登录用户名/密码在 **系统设置 → 账户密码修改** 中维护 |
| **密钥自动托管** | 中控通信密钥登录会话密钥由 **首次部署脚本自动生成并写入**一次生成不轮换),本页不提供编辑 |
| **AI 仅中控配置** | OpenAI / Ollama 等 AI 项已从中控 **系统设置 → AI 配置** 统一维护并同步三所本页不再展示 |
| **保存标注** | 每项标注「保存即生效」或「需重启」含需重启项时可用「保存并重启」 |
| **密钥自动托管** | 中控通信密钥,登录会话密钥由 **首次部署脚本自动生成并写入**(一次生成,不轮换),本页不提供编辑 |
| **AI 仅中控配置** | OpenAI / Ollama 等 AI 项已从中控 **系统设置 → AI 配置** 统一维护并同步三所,本页不再展示 |
| **保存标注** | 每项标注「保存即生效」或「需重启」;含需重启项时可用「保存并重启」 |
---
## 2. 密钥分工自动生成本页不可见
## 2. 密钥分工(自动生成,本页不可见)
部署时由脚本统一生成并写入对应 `.env`已有值则跳过避免覆盖生产环境)。
部署时由脚本统一生成并写入对应 `.env`(已有值则跳过,避免覆盖生产环境).
| 类型 | 环境变量 | 写入位置 | 用途 |
|------|----------|----------|------|
| **中控通信密钥** | `HUB_BRIDGE_TOKEN` | 中控 `manual_trading_hub/.env` + 三实例 `.env`**相同值** | 中控调用实例 API`X-Hub-Token`)、iframe SSO 签发与校验 |
| **登录会话密钥** | `FLASK_SECRET_KEY` | 三实例 `.env`**三所相同** | Flask Session 签名与网页登录态相关与中控密钥 **分离** |
| **中控通信密钥** | `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` | 中控网页登录**仅在中控系统设置改密** |
| **登录账号** | `APP_USERNAME` / `APP_PASSWORD` | 三实例 `.env`(建议三所统一) | 直链实例 `/login` 使用;**仅在系统设置中修改** |
| **中控登录** | `HUB_USERNAME` / `HUB_PASSWORD` | 中控 `.env` | 中控网页登录;**仅在中控系统设置改密** |
说明
说明:
- **长期密钥一次生成不轮换**`setup_env.sh` 末尾调用 `scripts/bootstrap_deploy_secrets.py`已有非占位值不会被覆盖
- **SSO 链接不变**仍为中控每次签发默认 2 小时有效单次使用`HUB_SSO_TTL_SEC`),与长期 `HUB_BRIDGE_TOKEN` 分离
- 经中控 iframe / SSO 打开实例时可免输实例密码直链 IP/域名仍走 `/login`
- 首次部署可生成随机强密码用户日后在 **系统设置** 改密不经过本页
- **长期密钥一次生成,不轮换**:`setup_env.sh` 末尾调用 `scripts/bootstrap_deploy_secrets.py`;已有非占位值不会被覆盖.
- **SSO 链接不变**:仍为中控每次签发,默认 2 小时有效,单次使用(`HUB_SSO_TTL_SEC`),与长期 `HUB_BRIDGE_TOKEN` 分离.
- 经中控 iframe / SSO 打开实例时,可免输实例密码;直链 IP/域名仍走 `/login`.
- 首次部署可生成随机强密码;用户日后在 **系统设置** 改密,不经过本页.
---
## 3. 页面布局三列卡片
## 3. 页面布局(三列卡片)
| 列 1 | 列 2 | 列 3 |
|------|------|------|
| 交易所与实盘 | 企业微信 | 交易执行 |
| 交易风控 | 账户冷静期 | 自动划转 |
| 当日资金 | 期权账户仅 OKX | |
| 当日资金 | 期权账户(仅 OKX) | |
> **AI 复盘**OpenAI / Ollama已移至中控 **系统设置 → AI 配置**保存后强制同步三所 `.env`详见 [中控AI与密钥配置.md](./中控AI与密钥配置.md)
> **AI 复盘**(OpenAI / Ollama)已移至中控 **系统设置 → AI 配置**,保存后强制同步三所 `.env`.详见 [中控AI与密钥配置.md](./中控AI与密钥配置.md).
Binance / Gate 无期权模块时第三列最后一格不显示或显示「本所无期权」
Binance / Gate 无期权模块时,第三列最后一格不显示或显示「本所无期权」.
---
## 4. 各卡片字段中文展示名
## 4. 各卡片字段(中文展示名)
### 4.1 交易所与实盘
| 中文名 | 说明 | 重启 |
|--------|------|------|
| 开启实盘下单 | 关闭时仅走本地流程不向交易所发单 | 需重启 |
| 开启实盘下单 | 关闭时仅走本地流程,不向交易所发单 | 需重启 |
| API Key | 永续子账户 API Key | 需重启 |
| API Secret | 永续子账户 Secret | 需重启 |
| API Passphrase | 仅 OKX 显示 | 需重启 |
| 保证金模式 | 全仓 / 逐仓 | 需重启 |
| 持仓模式 | 双向 / 单向净持仓等按所 | 需重启 |
| 仓位查询类型 | 仅 OKX如 SWAP | 需重启 |
| 持仓模式 | 双向 / 单向净持仓等(按所) | 需重启 |
| 仓位查询类型 | 仅 OKX:如 SWAP | 需重启 |
| 账户备注 | 企业微信推送中显示的交易所备注 | 保存即生效 |
**本卡片不包含**网页登录账号密码是否关闭登录校验中控通信密钥
**本卡片不包含**:网页登录账号密码,是否关闭登录校验,中控通信密钥.
---
@@ -77,16 +77,16 @@ Binance / Gate 无期权模块时,第三列最后一格不显示或显示「
| 中文名 | 说明 |
|--------|------|
| 机器人 Webhook | 行情风控提醒推送地址 |
| 推送超时(秒) | 可选默认 10 |
| 机器人 Webhook | 行情,风控,提醒推送地址 |
| 推送超时(秒) | 可选,默认 10 |
---
### 4.3 AI 复盘已移至中控
### 4.3 AI 复盘(已移至中控)
AI 相关环境变量`AI_PROVIDER``OPENAI_*``OLLAMA_*``AI_MODEL``AI_TIMEOUT_SECONDS`**不再在本页展示**
AI 相关环境变量(`AI_PROVIDER`,`OPENAI_*`,`OLLAMA_*`,`AI_MODEL`,`AI_TIMEOUT_SECONDS`)**不再在本页展示**.
请在中控 **系统设置 → AI 配置** 修改保存后写入中控 `.env`**强制同步** 至 OKX / Binance / Gate 三实例详见 [中控AI与密钥配置.md](./中控AI与密钥配置.md)
请在中控 **系统设置 → AI 配置** 修改;保存后写入中控 `.env`**强制同步** 至 OKX / Binance / Gate 三实例.详见 [中控AI与密钥配置.md](./中控AI与密钥配置.md).
---
@@ -103,23 +103,23 @@ AI 相关环境变量(`AI_PROVIDER`、`OPENAI_*`、`OLLAMA_*`、`AI_MODEL`、`
| 允许方向 | 多 / 空 / 双向 |
| 币种白名单开关 | |
| 白名单币种 | 逗号分隔 |
| 交易日切点北京时间 | 默认 8 点 |
| 交易日切点(北京时间) | 默认 8 点 |
| 切点前禁止新开仓 | |
| 最大同时持仓 | |
| 人工最低盈亏比 | |
| 强制清仓开关 | |
| 强制清仓整点北京 | |
| 强制清仓整点(北京) | |
---
### 4.5 交易风控日内开仓
### 4.5 交易风控(日内开仓)
| 中文名 | 说明 |
|--------|------|
| 单日开仓提醒阈值 | 达到次数后 AI 克制提醒不拦单 |
| 单日开仓硬上限 | 0 表示不启用达到后禁止新开仓 |
| 单日开仓提醒阈值 | 达到次数后 AI 克制提醒(不拦单) |
| 单日开仓硬上限 | 0 表示不启用;达到后禁止新开仓 |
详见 [daily-open-limit.md](./daily-open-limit.md)
详见 [daily-open-limit.md](./daily-open-limit.md).
---
@@ -128,12 +128,12 @@ AI 相关环境变量(`AI_PROVIDER`、`OPENAI_*`、`OLLAMA_*`、`AI_MODEL`、`
| 中文名 | 说明 |
|--------|------|
| 冷静期总开关 | |
| 手动平仓冷静小时 | |
| 复盘情绪冷静小时 | |
| 手动平仓冷静(小时) | |
| 复盘情绪冷静(小时) | |
| 日手动平仓次数上限 | |
| 情绪标签日冻结 | |
详见 [account-risk-cooldown.md](./account-risk-cooldown.md)
详见 [account-risk-cooldown.md](./account-risk-cooldown.md).
---
@@ -142,13 +142,13 @@ AI 相关环境变量(`AI_PROVIDER`、`OPENAI_*`、`OLLAMA_*`、`AI_MODEL`、`
| 中文名 | 说明 |
|--------|------|
| 启用自动划转 | |
| 目标余额U | 交易账户目标 USDT |
| 目标余额(U) | 交易账户目标 USDT |
| 划出账户 | funding / swap |
| 划入账户 | swap / funding |
| 执行整点北京时间 | |
| 执行整点(北京时间) | |
| 划转币种 | 默认 USDT |
详见 [auto-transfer-daily.md](./auto-transfer-daily.md)
详见 [auto-transfer-daily.md](./auto-transfer-daily.md).
---
@@ -156,53 +156,53 @@ AI 相关环境变量(`AI_PROVIDER`、`OPENAI_*`、`OLLAMA_*`、`AI_MODEL`、`
| 中文名 | 说明 |
|--------|------|
| 日起始基数U | |
| 回撤后基数U | |
| 盈利后基数U | |
| 日起始基数(U) | |
| 回撤后基数(U) | |
| 盈利后基数(U) | |
与自动划转目标余额相互独立若需一致请手动对齐
与自动划转目标余额相互独立;若需一致请手动对齐.
---
### 4.9 期权账户仅 OKX
### 4.9 期权账户(仅 OKX)
| 中文名 | 说明 |
|--------|------|
| 启用期权模块 | |
| 期权 API Key / Secret / Passphrase | 主账户与永续子账户分离 |
| 期权 API Key / Secret / Passphrase | 主账户,与永续子账户分离 |
| 期权账户备注 | |
| 单笔预算USDC | |
| 单笔预算(USDC) | |
| 预算缓冲比例 | |
| 默认标的 | 如 ETH |
| 最大到期天数 | 等常用策略参数 |
高级参数与完整说明见 [期权方案.md](./期权方案.md)[期权用法.md](./期权用法.md)
高级参数与完整说明见 [期权方案.md](./期权方案.md),[期权用法.md](./期权用法.md).
---
## 5. 操作说明
1. 修改后点 **保存**即时生效项立即应用需重启项写入 `.env` 但未重启进程
2. 含需重启项时点 **保存并重启**`.env` 后 PM2 重启当前实例
3. **重新加载**从磁盘重新读取 `.env` 刷新表单放弃未保存修改)。
4. 敏感项API密钥显示为掩码**留空提交表示不修改原值**
1. 修改后点 **保存**:即时生效项立即应用;需重启项写入 `.env` 但未重启进程.
2. 含需重启项时点 **保存并重启**:`.env` 后 PM2 重启当前实例.
3. **重新加载**:从磁盘重新读取 `.env` 刷新表单(放弃未保存修改).
4. 敏感项(API,密钥)显示为掩码;**留空提交表示不修改原值**.
---
## 6. 隐藏项本页不展示
## 6. 隐藏项(本页不展示)
以下仍存在于 `.env`仅供运维或 SSH 修改
以下仍存在于 `.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`
- 服务:`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`
后续若需要可增加「高级模式」折叠区默认关闭
后续若需要可增加「高级模式」折叠区,默认关闭.
---
@@ -211,19 +211,19 @@ AI 相关环境变量(`AI_PROVIDER`、`OPENAI_*`、`OLLAMA_*`、`AI_MODEL`、`
| 能力 | env 配置 | 系统设置 | 中控系统设置 |
|------|----------|----------|--------------|
| 登录用户名/密码 | ❌ | ✅ 账户密码修改 | ✅ 中控账户密码 |
| 交易所 API | ✅各所自配 | ❌ | ❌ |
| AI / OpenAI | ❌ | ❌ | ✅ AI 配置同步三所 |
| 交易所 API | ✅(各所自配) | ❌ | ❌ |
| AI / OpenAI | ❌ | ❌ | ✅ AI 配置(同步三所) |
| 导航/区块显示 | ❌ | ✅ 导航显示 | ✅ 显示与导航 |
| 手动资金划转 | ❌ | ✅ 永续资金划转 | ❌ |
| 数据导出 | ❌ | ✅ 数据导出 | ❌ |
| 期权兑换/划转 UI | ❌ | ✅OKX可开关 | ❌ |
| 期权兑换/划转 UI | ❌ | ✅(OKX,可开关) | ❌ |
系统设置说明见 [系统设置说明.md](./系统设置说明.md)中控 AI 与部署密钥见 [中控AI与密钥配置.md](./中控AI与密钥配置.md)
系统设置说明见 [系统设置说明.md](./系统设置说明.md);中控 AI 与部署密钥见 [中控AI与密钥配置.md](./中控AI与密钥配置.md).
---
## 8. 实现备注开发用
## 8. 实现备注(开发用)
- 白名单分组`lib/env/env_ui_manifest.py``exchange_key` 过滤
- 中文标签`ENV_UI_LABELS` 映射模板只渲染 `label` / `note`
- 全量校验仍基于 `.env.example`POST 仅接受 manifest 内 key
- 白名单分组:`lib/env/env_ui_manifest.py`(`exchange_key` 过滤)
- 中文标签:`ENV_UI_LABELS` 映射,模板只渲染 `label` / `note`
- 全量校验仍基于 `.env.example`;POST 仅接受 manifest 内 key