From 5806fe2f536f6716f495d672665fd168d4c008e7 Mon Sep 17 00:00:00 2001 From: dekun Date: Thu, 1 Oct 2026 11:10:35 +0800 Subject: [PATCH] =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E8=AE=BE=E7=BD=AE=20env=20?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E5=A2=9E=E5=8A=A0=E4=B8=AD=E6=8E=A7=20Bridge?= =?UTF-8?q?=20Token=EF=BC=8C=E4=BE=BF=E4=BA=8E=E5=A4=8D=E5=88=B6=E5=88=B0?= =?UTF-8?q?=E4=B8=AD=E6=8E=A7=E7=99=BB=E8=AE=B0=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Token 改为明文可编辑并热更新,同步放开 HUB_EMBED_FRAME_ANCESTORS。 Co-authored-by: Cursor --- .env.example | 6 +++--- lib/env/env_schema.py | 3 ++- lib/env/env_ui_manifest.py | 15 +++++++++++++++ tests/test_remove_hedge_smoke.py | 2 ++ 4 files changed, 22 insertions(+), 4 deletions(-) diff --git a/.env.example b/.env.example index f1f220e..8434e33 100644 --- a/.env.example +++ b/.env.example @@ -276,10 +276,10 @@ APP_TIMEZONE=Asia/Shanghai # TRADING_DAY_RESET_HOUR 现在表示「北京时间」整点,默认 8 点起算新交易日;开仓整点限制见 TRADING_DAY_RESET_OPEN_GUARD_ENABLED # ============================================================================= -# 中控 Bridge(crypto_okx_hub 拉取持仓 / SSO 打开) +# 中控对接(crypto_okx_hub 拉取持仓 / SSO 打开;也可在「系统设置 → env 配置」改) # ============================================================================= # 与中控登记的 Token 一致;留空则 /api/hub/* 拒绝访问 -# HUB_BRIDGE_TOKEN= +HUB_BRIDGE_TOKEN= # 允许嵌入本站的中控 Origin(空格分隔);例: http://192.168.1.10:5100 https://hub.example.com # 设为 * 允许任意父页(仅内网调试) -# HUB_EMBED_FRAME_ANCESTORS= +HUB_EMBED_FRAME_ANCESTORS= diff --git a/lib/env/env_schema.py b/lib/env/env_schema.py index 52b666f..cbd3a88 100644 --- a/lib/env/env_schema.py +++ b/lib/env/env_schema.py @@ -89,6 +89,8 @@ HOT_RELOAD_EXACT = frozenset({ "APP_SESSION_DAYS", "WECHAT_WEBHOOK", "OKX_SHOW_PERP_FUNDS", + "HUB_BRIDGE_TOKEN", + "HUB_EMBED_FRAME_ANCESTORS", "OKX_OPTIONS_CHAIN_ASK_LIQ_FILTER_ENABLED", "OKX_OPTIONS_CHAIN_MAX_DTE_DAYS", "OKX_OPTIONS_MAX_DTE_DAYS", @@ -109,7 +111,6 @@ HOT_RELOAD_EXACT = frozenset({ SENSITIVE_EXACT = frozenset({ "APP_PASSWORD", "FLASK_SECRET_KEY", - "HUB_BRIDGE_TOKEN", "OPENAI_API_KEY", }) diff --git a/lib/env/env_ui_manifest.py b/lib/env/env_ui_manifest.py index e2c1b24..beceb3e 100644 --- a/lib/env/env_ui_manifest.py +++ b/lib/env/env_ui_manifest.py @@ -58,6 +58,21 @@ _SHARED_SECTIONS: list[dict[str, Any]] = [ ("WECHAT_TIMEOUT_SECONDS", "推送超时(秒)", "默认 10"), ], }, + { + "title": "中控对接", + "fields": [ + ( + "HUB_BRIDGE_TOKEN", + "中控 Bridge Token", + "与 crypto_okx_hub「添加实例」里的 Bridge Token 一致;可自拟长随机串,两边填相同值;留空则中控无法拉持仓", + ), + ( + "HUB_EMBED_FRAME_ANCESTORS", + "允许嵌入的中控 Origin", + "空格分隔,例: http://中控IP:5100 https://hub.example.com;调试可填 *", + ), + ], + }, ] _OPTIONS_SECTION: dict[str, Any] = { diff --git a/tests/test_remove_hedge_smoke.py b/tests/test_remove_hedge_smoke.py index 78edd42..a8a05f0 100644 --- a/tests/test_remove_hedge_smoke.py +++ b/tests/test_remove_hedge_smoke.py @@ -83,6 +83,8 @@ class RemoveHedgeSmokeTests(unittest.TestCase): self.assertNotIn("OKX_OPTIONS_COMPOUND_FULL_ENABLED", keys) self.assertNotIn("OKX_OPTIONS_CLOSE_RECYCLE_MULT", keys) self.assertIn("OKX_OPTIONS_COIN_COMPOUND", keys) + self.assertIn("HUB_BRIDGE_TOKEN", keys) + self.assertIn("中控对接", titles) mode_opts = [o["value"] for o in select_options_for("OKX_TRADE_MODE")] self.assertEqual(mode_opts, ["options"])