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
+2 -109
View File
@@ -121,23 +121,6 @@
line-height: 1.5;
}
.admin-dialog {
width: min(1060px, -24px + 100vw);
}
.admin-panel[hidden] {
display: none;
}
.admin-inline-actions {
display: flex;
justify-content: space-between;
gap: 10px;
}
.admin-dialog > form,
.settings-section > form {
padding: 0px;
}
@@ -160,22 +143,6 @@
font-size: 12px;
}
.switch-control {
display: flex;
align-items: center;
gap: 9px;
margin-top: 13px;
color: var(--text-secondary);
font-size: 13px;
font-weight: 650;
}
.connection-status {
margin: 18px 18px 0px;
@@ -200,8 +167,7 @@
padding: 18px;
}
.settings-dialog .settings-section > form,
.settings-dialog.admin-dialog > form {
.settings-dialog .settings-section > form {
padding: 0px;
}
@@ -245,22 +211,6 @@
grid-column: 1 / -1;
}
.backfill-controls {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 10px;
}
@media (max-width: 600px) {
.admin-inline-actions {
align-items: stretch;
flex-direction: column;
}
}
.form-hint {
margin: 10px 0px 0px;
@@ -271,32 +221,6 @@
line-height: 1.6;
}
.admin-refresh-status {
display: flex;
align-items: flex-start;
gap: 8px;
margin-top: 12px;
padding: 10px 12px;
border: 1px solid var(--line);
border-radius: 10px;
background: var(--surface-muted);
color: var(--text-muted);
font-size: 12px;
line-height: 1.55;
}
.admin-refresh-status svg {
flex: 0 0 auto;
width: 15px;
height: 15px;
margin-top: 2px;
}
.admin-refresh-status[data-tone="running"] { color: var(--primary); }
.admin-refresh-status[data-tone="success"] { color: var(--down); }
.admin-refresh-status[data-tone="warning"] { color: var(--warning); }
.admin-refresh-status[data-tone="failure"] { color: var(--up); }
.account-button > span {
flex: 0 0 auto;
@@ -359,8 +283,7 @@
padding-left: 12px;
}
.settings-dialog .settings-section > form,
.settings-dialog.admin-dialog > form {
.settings-dialog .settings-section > form {
padding: 0px;
}
@@ -368,10 +291,6 @@
.settings-dialog .form-hint {
overflow-wrap: anywhere;
}
.backfill-controls {
grid-template-columns: 1fr;
}
}
.account-menu-chevron {
@@ -1297,32 +1216,6 @@ button.account-role-badge:focus-visible {
max-width: 460px;
}
.settings-dialog.admin-dialog {
width: min(900px, -28px + 100vw);
}
.admin-dialog .connection-status {
margin: 12px 20px 0px;
padding: 8px 10px;
border-radius: 7px;
color: var(--text-secondary);
font-size: 11px;
}
.admin-dialog .admin-panel {
max-width: 860px;
margin-inline: auto;
}
.admin-dialog .settings-section + .settings-section {
border-top: 1px solid var(--dialog-line);
}
@media (max-width: 760px) {
.account-settings-dialog .membership-status-grid {
grid-template-columns: repeat(2, minmax(0px, 1fr));