From ecb49cbaca017a0fcbce8efa2d9dc3b03dce4664 Mon Sep 17 00:00:00 2001
From: shy3130 <415333856@qq.com>
Date: Tue, 13 Oct 2026 13:40:17 +0800
Subject: [PATCH] =?UTF-8?q?release:=20v0.3.6=20=E2=80=94=20=E6=A0=B8?=
=?UTF-8?q?=E5=BF=83+=E6=89=A9=E5=B1=95=E6=9E=B6=E6=9E=84=E5=AE=8C?=
=?UTF-8?q?=E5=96=84=E7=89=88?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
合并 0.3.6 分支全部内容 (36 提交, 详细历史见 0.3.6 分支):
■ 数据与插件
- TdxQuant 数据源: 通达信量化接入 (实时/五档/日K/复权/分钟), tdxaidata 收进默认依赖
- 扩展表两级拉取配方: 概念/行业出厂即带完整可拉配置, 可作自定义接入参考示例
- 能力门禁日志带生效源; 标的池解析只走 instruments 维表
■ 页面扩展化
- 11 个官方页面全量迁移为单文件扩展 (custom/*/extension.tsx), 删目录即卸载
- 运行时页面包系统: 打包产物上传即挂载, 免重建宿主
- 新装用户扩展页默认隐藏, 老用户升级菜单无感
■ AI
- Responses 协议接入; 会话历史与长任务跨设备同步 (服务端注册表)
- 助手头部快捷入口 + 悬浮球拖拽 zoom 坐标系修复 + 系统设置开关
■ 界面
- 设置「关于」子菜单: 版权/更新/打赏 + 开源许可弹窗与合规声明双保险
- 侧栏两态收起、数据/AI 助手快捷行 (同步呼吸光晕)、核心/扩展 ext 标记
- 界面缩放默认 90%; 菜单设置徽标 Swiss 化; 策略池「叠加」分组
- 情绪评分口径可配置; 财务画像 5 张子表手动拉取
■ 文档与其他
- README 重构「核心+扩展」主线 + 架构图重画; 开放端点数核实为 65
- 版本号 bump 0.3.6; tdx 物化库测试夹具补 macOS dylib
---
README.md | 210 +++--
VERSION | 2 +-
assets/support/wechat-appreciation.jpg | Bin 72651 -> 100506 bytes
backend/app/__init__.py | 2 +-
backend/app/api/ext_data.py | 35 +-
backend/app/api/ext_pages.py | 136 +++
backend/app/api/kline.py | 8 +-
backend/app/api/settings.py | 137 ++-
backend/app/api/task_registry.py | 63 ++
backend/app/config.py | 2 +
backend/app/custom/assistant/routes.py | 35 +
backend/app/custom/assistant/sessions.py | 104 +++
backend/app/custom/assistant/streaming.py | 19 +-
backend/app/data_providers/capabilities.py | 89 ++
backend/app/data_providers/custom/loader.py | 8 +
backend/app/jobs/daily_pipeline.py | 33 +-
backend/app/main.py | 17 +
backend/app/plugins/fuyao/plugin.yaml | 2 +-
backend/app/plugins/tdxquant/__init__.py | 1 +
backend/app/plugins/tdxquant/client.py | 260 ++++++
backend/app/plugins/tdxquant/plugin.yaml | 23 +
backend/app/plugins/tdxquant/probe.py | 162 ++++
backend/app/plugins/tdxquant/provider.py | 782 ++++++++++++++++++
backend/app/secrets_store.py | 10 +
backend/app/services/ai_provider.py | 119 ++-
backend/app/services/ai_responses.py | 516 ++++++++++++
backend/app/services/depth_service.py | 22 +-
backend/app/services/emotion_score.py | 243 ++++++
backend/app/services/ext_data.py | 5 +
backend/app/services/ext_fanout.py | 155 ++++
backend/app/services/ext_pages.py | 133 +++
backend/app/services/ext_presets.py | 336 ++++----
backend/app/services/ext_pull.py | 66 +-
backend/app/services/extend_history.py | 36 +-
backend/app/services/financial_sync.py | 13 +-
backend/app/services/index_sync.py | 2 +
backend/app/services/kline_sync.py | 16 +
.../app/services/market_overview_builder.py | 57 +-
backend/app/services/preferences.py | 32 +
backend/app/services/quote_service.py | 5 +-
backend/app/services/task_registry.py | 178 ++++
.../app/strategy/prompts/strategy-guide.md | 3 +-
backend/pyproject.toml | 4 +-
backend/tests/test_ai_probe.py | 161 ++++
backend/tests/test_ai_responses.py | 613 ++++++++++++++
.../tests/test_custom_assistant_sessions.py | 97 +++
backend/tests/test_emotion_score.py | 200 +++++
backend/tests/test_ext_fanout.py | 293 +++++++
backend/tests/test_ext_pages.py | 138 ++++
.../tests/test_ext_preset_dimension_values.py | 26 +-
backend/tests/test_ext_presets_startup.py | 126 ++-
backend/tests/test_packaging_spec.py | 8 +
backend/tests/test_resolve_universe_index.py | 52 +-
backend/tests/test_secrets_external_edit.py | 72 ++
backend/tests/test_sponsor_models.py | 134 +++
backend/tests/test_task_registry.py | 106 +++
backend/tests/test_tdxquant_provider.py | 625 ++++++++++++++
backend/uv.lock | 11 +
docs/configuration.md | 1 +
docs/factor-system-design.md | 2 +-
docs/features.md | 14 +-
docs/page-sdk.md | 72 ++
docs/plugin-development.md | 10 +
frontend/index.html | 12 +-
frontend/package.json | 2 +-
frontend/page-pack-template/README.md | 25 +
frontend/page-pack-template/package.json | 20 +
frontend/page-pack-template/src/extension.tsx | 86 ++
frontend/page-pack-template/src/tsp.ts | 18 +
frontend/page-pack-template/vite.config.ts | 26 +
frontend/public/donate-wechat.jpg | Bin 0 -> 100506 bytes
frontend/src/components/Layout.tsx | 166 ++--
frontend/src/components/OssLicenseDialog.tsx | 138 ++++
frontend/src/components/analysis-shared.tsx | 42 +-
.../dashboard/EmotionScoreConfigDialog.tsx | 266 ++++++
.../src/components/dashboard/registry.tsx | 34 +-
frontend/src/components/dashboard/shared.tsx | 26 +-
.../components/data/FinancialSyncPanel.tsx | 198 +++++
frontend/src/components/data/StatCard.tsx | 16 +-
.../components/ext-data/ExtDataPullPanel.tsx | 45 +-
.../screener/StrategyBuilderDialog.tsx | 10 +-
.../screener/StrategyPoolDialog.test.tsx | 28 +-
.../screener/StrategyPoolDialog.tsx | 14 +-
frontend/src/custom/README.md | 36 +-
.../abnormal/extension.tsx} | 16 +
.../custom/assistant/AssistantLauncher.tsx | 2 -
frontend/src/custom/assistant/extension.tsx | 14 +
.../custom/assistant/sessionsMerge.test.ts | 40 +
.../src/custom/assistant/sessionsMerge.ts | 36 +
frontend/src/custom/assistant/store.ts | 76 +-
.../src/custom/assistant/ui/AiConfigEntry.tsx | 124 ---
.../custom/assistant/ui/AssistantDrawer.tsx | 4 +-
.../assistant/ui/AssistantFloatingButton.tsx | 34 +-
.../assistant/ui/AssistantHeaderEntry.tsx | 36 +
.../assistant/ui/FabVisibilitySetting.tsx | 39 +
.../concept-analysis/extension.tsx} | 29 +-
.../financials/extension.tsx} | 16 +
.../industry-analysis/extension.tsx} | 29 +-
.../limit-ladder/extension.tsx} | 16 +
.../Lots.tsx => custom/lots/extension.tsx} | 16 +
.../monitor/extension.tsx} | 16 +
.../Paper.tsx => custom/paper/extension.tsx} | 16 +
.../review/extension.tsx} | 21 +-
.../signals/extension.tsx} | 16 +
.../stock-analysis/extension.tsx} | 16 +
frontend/src/data/ossLicenses.ts | 101 +++
frontend/src/extensions/runtime.test.ts | 106 +++
frontend/src/extensions/runtime.tsx | 187 +++++
frontend/src/extensions/types.ts | 10 +-
frontend/src/index.css | 36 +
frontend/src/lib/api.ts | 167 +++-
frontend/src/lib/backtestTask.ts | 41 +-
frontend/src/lib/miningTask.ts | 52 +-
frontend/src/lib/navOrder.test.ts | 68 ++
frontend/src/lib/navOrder.ts | 62 ++
frontend/src/lib/optimizerTask.ts | 46 +-
frontend/src/lib/pageZoom.ts | 10 +-
frontend/src/lib/queryKeys.ts | 1 +
frontend/src/lib/taskRegistry.ts | 80 ++
frontend/src/lib/walkforwardTask.ts | 46 +-
frontend/src/main.tsx | 9 +
frontend/src/pages/Data.tsx | 22 +-
frontend/src/pages/Onboarding.tsx | 367 ++++----
frontend/src/pages/Screener.tsx | 45 +-
frontend/src/pages/Settings.tsx | 6 +-
frontend/src/pages/settings/AI.tsx | 606 +++++++++-----
frontend/src/pages/settings/About.tsx | 254 ++++++
frontend/src/pages/settings/DataSources.tsx | 65 +-
frontend/src/pages/settings/MenuSettings.tsx | 101 +--
frontend/src/pages/settings/PagePacks.tsx | 191 +++++
frontend/src/pages/settings/System.tsx | 109 +--
frontend/src/router.tsx | 30 -
packaging/tsp.spec | 4 +
133 files changed, 10103 insertions(+), 1381 deletions(-)
create mode 100644 backend/app/api/ext_pages.py
create mode 100644 backend/app/api/task_registry.py
create mode 100644 backend/app/custom/assistant/sessions.py
create mode 100644 backend/app/plugins/tdxquant/__init__.py
create mode 100644 backend/app/plugins/tdxquant/client.py
create mode 100644 backend/app/plugins/tdxquant/plugin.yaml
create mode 100644 backend/app/plugins/tdxquant/probe.py
create mode 100644 backend/app/plugins/tdxquant/provider.py
create mode 100644 backend/app/services/ai_responses.py
create mode 100644 backend/app/services/emotion_score.py
create mode 100644 backend/app/services/ext_fanout.py
create mode 100644 backend/app/services/ext_pages.py
create mode 100644 backend/app/services/task_registry.py
create mode 100644 backend/tests/test_ai_probe.py
create mode 100644 backend/tests/test_ai_responses.py
create mode 100644 backend/tests/test_custom_assistant_sessions.py
create mode 100644 backend/tests/test_emotion_score.py
create mode 100644 backend/tests/test_ext_fanout.py
create mode 100644 backend/tests/test_ext_pages.py
create mode 100644 backend/tests/test_secrets_external_edit.py
create mode 100644 backend/tests/test_sponsor_models.py
create mode 100644 backend/tests/test_task_registry.py
create mode 100644 backend/tests/test_tdxquant_provider.py
create mode 100644 docs/page-sdk.md
create mode 100644 frontend/page-pack-template/README.md
create mode 100644 frontend/page-pack-template/package.json
create mode 100644 frontend/page-pack-template/src/extension.tsx
create mode 100644 frontend/page-pack-template/src/tsp.ts
create mode 100644 frontend/page-pack-template/vite.config.ts
create mode 100644 frontend/public/donate-wechat.jpg
create mode 100644 frontend/src/components/OssLicenseDialog.tsx
create mode 100644 frontend/src/components/dashboard/EmotionScoreConfigDialog.tsx
create mode 100644 frontend/src/components/data/FinancialSyncPanel.tsx
rename frontend/src/{pages/AbnormalMoves.tsx => custom/abnormal/extension.tsx} (99%)
create mode 100644 frontend/src/custom/assistant/sessionsMerge.test.ts
create mode 100644 frontend/src/custom/assistant/sessionsMerge.ts
delete mode 100644 frontend/src/custom/assistant/ui/AiConfigEntry.tsx
create mode 100644 frontend/src/custom/assistant/ui/AssistantHeaderEntry.tsx
create mode 100644 frontend/src/custom/assistant/ui/FabVisibilitySetting.tsx
rename frontend/src/{pages/ConceptAnalysis.tsx => custom/concept-analysis/extension.tsx} (96%)
rename frontend/src/{pages/Financials.tsx => custom/financials/extension.tsx} (96%)
rename frontend/src/{pages/IndustryAnalysis.tsx => custom/industry-analysis/extension.tsx} (96%)
rename frontend/src/{pages/LimitUpLadder.tsx => custom/limit-ladder/extension.tsx} (99%)
rename frontend/src/{pages/Lots.tsx => custom/lots/extension.tsx} (97%)
rename frontend/src/{pages/Monitor.tsx => custom/monitor/extension.tsx} (99%)
rename frontend/src/{pages/Paper.tsx => custom/paper/extension.tsx} (99%)
rename frontend/src/{pages/Review.tsx => custom/review/extension.tsx} (98%)
rename frontend/src/{pages/Signals.tsx => custom/signals/extension.tsx} (94%)
rename frontend/src/{pages/StockAnalysis.tsx => custom/stock-analysis/extension.tsx} (96%)
create mode 100644 frontend/src/data/ossLicenses.ts
create mode 100644 frontend/src/extensions/runtime.test.ts
create mode 100644 frontend/src/extensions/runtime.tsx
create mode 100644 frontend/src/lib/navOrder.test.ts
create mode 100644 frontend/src/lib/navOrder.ts
create mode 100644 frontend/src/lib/taskRegistry.ts
create mode 100644 frontend/src/pages/settings/About.tsx
create mode 100644 frontend/src/pages/settings/PagePacks.tsx
diff --git a/README.md b/README.md
index 8b081c04..12e070c0 100644
--- a/README.md
+++ b/README.md
@@ -7,7 +7,7 @@
[](https://github.com/shy3130/tick-stock-panel)
[](./LICENSE)
[](https://pola.rs/)
-[](./docs/open-platform-plan.md)
+[](./docs/open-platform-plan.md)
[](./mcp-server/README.md)
[](https://github.com/shy3130/tick-stock-panel/actions/workflows/docker.yml)
@@ -24,7 +24,7 @@
| 61 开放 API 端点 |
+||||
| 65 开放 API 端点 |
6 Token 权限档 |
12 MCP 工具 |
2400+ 测试全绿 · CI 守护 |
@@ -50,7 +50,7 @@
-**🧰 数据扩展** 插件化数据源, 扩展字段成页, 按日历史回补 +**🧰 数据扩展** 插件化数据源, 扩展字段成页, 两级拉取配方, 按日历史回补 |
|
-**🌐 开放接口** Token 六档权限, 61 端点契约化, 读+写闭环 +**🌐 开放接口** Token 六档权限, 65 端点契约化, 读+写闭环 |
@@ -160,61 +160,28 @@
**🧠 AI 对话助手** 一句话问全站数据, 工具足迹逐条可核对 + |
+|||
|
+
+**🧩 扩展页面** 11 个官方页面单文件化, 删目录即卸载、复制即导入 + + |
+
+
+**📦 页面包** 页面打包产物上传即挂载, 免重建宿主, 刷新生效 + + |
+
+
+**🎛️ 菜单设置** 显隐/排序 + 内置/自定义/扩展三类管理与架构徽标 + |
如果这个项目对你有帮助,欢迎请作者喝杯咖啡 ☕
-
++ +
作者精力有限,优先响应赞助回馈,希望理解 📈
-
-
-## 💬 交流群
-
-
+ |
+
欢迎加入交流群,一起讨论交流 · 个人维护了一些个性化接口统一公布在群公告
-
+- +
+
+ |
+
_~4O7mCH_99YywX!0{TXTmi0fw^FCKBT2-
zTvhl2?GP&S{rfDxi}_Y_!F|YMjq;Fk7rNT&$mzUZz6q7}ntLtm`zh37Js#R%K3h~T
zlxypo3HJVxZc+I=Mjs!SUcxCx%NTmO?g(8s`c-?`<=>#0sQm$8@N;v