From 77db6b830fcf036933acc56d75c528273283b98b Mon Sep 17 00:00:00 2001 From: zlt Date: Mon, 14 Sep 2026 15:58:34 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E4=B8=93=E4=B8=9A=E5=8C=96?= =?UTF-8?q?=E5=8C=85=C2=B7=E6=8A=BD=E5=B1=89=E9=87=8D=E6=9E=84=E4=B8=8E?= =?UTF-8?q?=E8=A3=81=E5=86=B3=E5=BC=B9=E7=AA=97=E3=80=81=E5=80=99=E9=80=89?= =?UTF-8?q?=E5=8F=AF=E7=82=B9=E5=87=BB=E3=80=81=E6=9D=A5=E6=BA=90=E8=8A=AF?= =?UTF-8?q?=E7=89=87=EF=BC=88=E5=8F=B0=E8=B4=A6=20015=20/=20=C2=A74=20?= =?UTF-8?q?=C2=A75.3=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 单票抽屉重构成三段固定结构加顶部吸顶锚点条(研究面·三源合议 / 今日信号 / 系统动作), 三条黄色警告条移到今日信号段标题下,新增计算属性 csSnapMetrics/csSnapMr/csSignalCount/csDisp。 裁决改成 el-dialog 选预设理由码(取不到用内置副本),选其他补充必填,submitDecide 校验提交。 建仓候选/提议卡/未建仓表票名可点开个股详情。顶栏芯片显示计划来源与赛道闸状态(plan_feed 收三字段)。 浏览器冒烟:全页挂载不白屏、抽屉三段与锚点、裁决弹窗七个预设理由均正常。全量 897 例 ALL SUITES PASS。 Co-Authored-By: Claude Opus 4.8 --- app/services/plan_feed.py | 4 + app/web/static/index.html | 188 +++++++++++++++++++++------------- scripts/test_batch20_units.py | 10 +- 3 files changed, 128 insertions(+), 74 deletions(-) diff --git a/app/services/plan_feed.py b/app/services/plan_feed.py index 40a99c8..d4aa486 100644 --- a/app/services/plan_feed.py +++ b/app/services/plan_feed.py @@ -1131,5 +1131,9 @@ def status() -> dict: "theme_cap": plan.get("theme_cap"), "encoding": plan.get("encoding"), "theme_sync": plan.get("theme_sync"), "snapshot": plan.get("snapshot"), "fetched_at": plan.get("fetched_at"), "url": plan.get("url"), + # 来源与赛道闸 (2026-09-14 §5.3): 页面顶栏芯片显示; 现算 (live) 盘中给一条提示。 + "plan_source": plan.get("plan_source"), + "snapshot_generated_at": plan.get("snapshot_generated_at"), + "gate_on": plan.get("gate_on"), "hint": f"计划 {plan['date']} 已就绪 (日龄 {plan.get('age_tdays')} 交易日)"}) return st diff --git a/app/web/static/index.html b/app/web/static/index.html index 2c92823..8cab49e 100644 --- a/app/web/static/index.html +++ b/app/web/static/index.html @@ -348,6 +348,10 @@ body.dock-r:not(.r-fold) .side-r .strip{display:none;} .sigrow2 .cat{color:var(--muted);font-size:11.5px;white-space:nowrap;} .sigrow2 .sp{flex:1;} .sigrow2.old{opacity:.5;} +.sigrow2.clk{cursor:pointer;border-radius:4px;} +.sigrow2.clk:hover{background:rgba(64,120,220,.08);} +.lk{cursor:pointer;text-decoration:underline dotted;} +.lk:hover{color:var(--accent,#3a6ea5);} .pin{font-size:10px;font-weight:700;color:var(--stop);background:var(--stop-weak);border-radius:4px;padding:0 4px;flex:none;} .pin.plan{color:var(--accent);background:var(--accent-weak);} .srcgroup{border:1px solid var(--hair);border-radius:10px;margin-bottom:7px;overflow:hidden;background:var(--surface-2);} @@ -384,6 +388,13 @@ body.dock-r:not(.r-fold) .side-r .strip{display:none;} .cs-sect{margin:0 0 12px;} .cs-sect>.h{font-size:12px;font-weight:660;color:var(--muted);margin:0 0 5px; border-bottom:1px dashed var(--hair);padding-bottom:4px;} +/* 抽屉三段重构 (2026-09-14 §4.4): 顶部吸顶锚点条 + 三个固定段。 */ +.cs-anchors{position:sticky;top:0;z-index:2;display:flex;gap:6px;padding:6px 0;margin:-2px 0 8px; + background:var(--panel,#fff);border-bottom:1px solid var(--hair);} +.cs-anchors a{font-size:12px;color:var(--muted);text-decoration:none;padding:2px 8px;border-radius:12px;cursor:pointer;} +.cs-anchors a:hover{background:rgba(64,120,220,.10);color:var(--fg,#222);} +.cs-part{margin:0 0 16px;scroll-margin-top:44px;} +.cs-part>.h{font-size:13px;font-weight:700;margin:0 0 8px;padding-bottom:5px;border-bottom:1px solid var(--hair);} .cs-row{display:flex;align-items:baseline;gap:7px;padding:4px 0;font-size:12.5px; border-bottom:1px solid rgba(0,0,0,.04);flex-wrap:wrap;} .cs-row .t{font-size:11.5px;color:var(--muted);width:40px;flex:none;} @@ -451,7 +462,7 @@ body.dock-r:not(.r-fold) .side-r .strip{display:none;} 买入 {{ ov.buy_halt ? '已暂停':'正常' }} 执行 {{ ov.exec_halt ? '已暂停':'正常' }} 自主 {{ tx('autonomy', ov.autonomy) }}? - 选股计划 {{ planStatus.ok===false ? '读不到' : (planStatus.date || '-') }} + 选股计划 {{ planStatus.ok===false ? '读不到' : (planStatus.date || '-') }} · {{ planStatus.plan_source==='snapshot'?'快照':(planStatus.plan_source==='live'?'现算':planStatus.plan_source) }} · 赛道闸开 · 赛道闸关? 技术面 {{ techChipText }}?