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"])