feat(HEL-566): 去掉主站行情管理入口并修好模型列表收起

主站行情管理并入数据中枢
- 数据中枢数据源配置页新增「主站行情任务」卡:交易时段后台刷新开关、
  手动后台刷新、历史区间回补(任务提交 + 轮询主站 job 记录亮灯),
  数据与调度仍归主站,控制台只经桥接代操作
- 新增桥接端点 /api/hub-admin/market/{refresh,backfill};回补改为
  market.backfill 后台任务(jobs.config.json 注册,锁独立,超时 30 分钟),
  桥接调用秒回,不再阻塞
- 主站桌面端删除顶栏「行情管理」按钮与整个行情管理对话框,清理随之
  失效的 CSS;移动端删除 system/admin 页与入口,管理员专区只留数据中枢
- Tushare Token / iFinD 凭证编辑沿用数据源页既有凭证区,无功能缺失

模型池收起修复
- 拉出模型清单后按钮切换为「收起列表」,收起只留一行摘要;再次点击
  重新拉取并展开;勾选添加完成后清单自动收起(原逻辑保留)
- 交互全部沿用 HEL-558 已确认样式的既有按钮与提示组件,未新增视觉

自测
- verify_baseline 通过;pytest 492 项通过;数据中枢 240 项通过
- verify_datahub_console 新增 [11b] 行情任务桥接端到端段;UI 自测新增
  行情任务卡开关往返、模型清单展开/收起/再展开/添加自动收起,日夜主题
  与 1030 窄屏复验通过
- Playwright e2e 102/103:唯一失败项在基线提交上同样失败(本机字体度量
  导致的头部溢出,与本卡无关)

Co-authored-by: multica-agent <github@multica.ai>
This commit is contained in:
总工
2026-09-16 17:24:05 +08:00
co-authored by multica-agent
parent 44d6de3e2b
commit fa82b8621e
28 changed files with 563 additions and 551 deletions
+34 -34
View File
@@ -479,8 +479,8 @@
},
{
"path": "frontend/index.html",
"bytes": 46900,
"lines": 638
"bytes": 44025,
"lines": 608
},
{
"path": "backend/data/providers/tushare_industries.py",
@@ -547,11 +547,6 @@
"bytes": 15743,
"lines": 401
},
{
"path": "frontend/shared/dashboard.js",
"bytes": 15063,
"lines": 321
},
{
"path": "frontend/pages/pools/page.html",
"bytes": 14942,
@@ -567,10 +562,15 @@
"bytes": 14467,
"lines": 356
},
{
"path": "frontend/shared/dashboard.js",
"bytes": 13708,
"lines": 304
},
{
"path": "frontend/shared/session.js",
"bytes": 13633,
"lines": 296
"bytes": 13567,
"lines": 295
},
{
"path": "backend/features/market/insights_auction_data.py",
@@ -642,16 +642,16 @@
"bytes": 6739,
"lines": 156
},
{
"path": "frontend/shared/context.js",
"bytes": 6547,
"lines": 220
},
{
"path": "backend/application.py",
"bytes": 6500,
"lines": 164
},
{
"path": "frontend/shared/context.js",
"bytes": 6492,
"lines": 219
},
{
"path": "frontend/pages/sentiment/page.html",
"bytes": 6488,
@@ -682,6 +682,11 @@
"bytes": 5592,
"lines": 123
},
{
"path": "backend/http/dispatch.py",
"bytes": 5401,
"lines": 141
},
{
"path": "frontend/pages.config.js",
"bytes": 5385,
@@ -697,11 +702,6 @@
"bytes": 5350,
"lines": 74
},
{
"path": "backend/http/dispatch.py",
"bytes": 5281,
"lines": 139
},
{
"path": "frontend/shared/feedback.js",
"bytes": 5157,
@@ -717,11 +717,6 @@
"bytes": 4712,
"lines": 106
},
{
"path": "frontend/shared/admin.js",
"bytes": 4500,
"lines": 109
},
{
"path": "backend/data/providers/tushare_helpers.py",
"bytes": 4406,
@@ -757,11 +752,6 @@
"bytes": 3369,
"lines": 81
},
{
"path": "frontend/app.js",
"bytes": 3337,
"lines": 95
},
{
"path": "frontend/pages/themes/page.html",
"bytes": 3316,
@@ -772,11 +762,21 @@
"bytes": 3299,
"lines": 57
},
{
"path": "backend/jobs/service.py",
"bytes": 3186,
"lines": 76
},
{
"path": "backend/features/market/insights_context.py",
"bytes": 3175,
"lines": 84
},
{
"path": "frontend/app.js",
"bytes": 3081,
"lines": 91
},
{
"path": "frontend/pages/market/bindings.js",
"bytes": 2663,
@@ -787,11 +787,6 @@
"bytes": 2597,
"lines": 69
},
{
"path": "backend/jobs/service.py",
"bytes": 2337,
"lines": 59
},
{
"path": "backend/features/mentor/routes.py",
"bytes": 2299,
@@ -887,6 +882,11 @@
"bytes": 817,
"lines": 23
},
{
"path": "frontend/shared/admin.js",
"bytes": 800,
"lines": 18
},
{
"path": "backend/features/sentiment/routes.py",
"bytes": 724,
+10
View File
@@ -21,6 +21,16 @@
"max_attempts": 1,
"output_version": "screener-library-v8"
},
{
"id": "market.backfill",
"schedule": "administrator request from the data hub console",
"input_date_policy": "requested start and end trade dates",
"dependencies": ["market provider", "trade calendar", "database"],
"lock_key": "market-backfill",
"timeout_seconds": 1800,
"max_attempts": 1,
"output_version": "snapshot-backfill-v1"
},
{
"id": "market.ifind-event-enrichment",
"schedule": "on demand after market close",