diff --git a/DEVLOG.md b/DEVLOG.md index 268d9ef..d43b14f 100644 --- a/DEVLOG.md +++ b/DEVLOG.md @@ -74,6 +74,10 @@ 3. 月度复盘:数据多一段就重跑标定脚本,校准阈值与 S0/k。 4. check_db 表清单缺 pms_strategy 与 pms_op_log 的既有欠账,单独提。 +**同日修订(2026-08-19,桥机判收后两条)** +一,判收补记。桥机 make test 与建表全部通过。dry_run 试算返回 +14.7197、区域中性,与标定报告同日值一致,方案第六节的前四步完成。宿主机的 python3 版本旧,不认 json.tool 的 --no-ensure-ascii 参数,去掉该参数即可,不是系统问题。 +二,前端改版(用户要求:不占大块,放页面第一行)。撤掉「宏观择时」大面板,改为首行一枚紧凑徽标,与市场、买入、执行、自主、计划等徽标并排。常态显示指数值与区域;有建议、闸生效或数据不可用时转警示色;有建议时徽标显示"有建议",点击即走采纳确认。全部详情移进鼠标悬浮提示:近二十日迷你走势、阈值与档位、闸状态、建议卡带采纳按钮、最近宏观命令;运维模式下悬浮里另有试算与立即扫描两个按钮。偏热闸与数据不可用两条横幅保留。无头渲染判收九项全过、零页面错误(徽标带值、有建议标记、大面板已删、悬浮里建议卡/采纳按钮/二十根迷你条/最近命令/闸说明、横幅仍在)。改动只有 index.html 一个文件,回滚还原它即可;改的是前端资源,生效仍需 make deploy 重建镜像。 + --- ## 2026-08-18 · 决策系统卖出采纳复核:降门槛+全留痕 / 确认即加速 / 清仓完成清场 diff --git a/app/web/static/index.html b/app/web/static/index.html index 99b40ee..19d3b20 100644 --- a/app/web/static/index.html +++ b/app/web/static/index.html @@ -186,7 +186,6 @@ pre.json{background:var(--surface-2);border:1px solid var(--hair);border-radius: .mz-bars{display:flex;align-items:flex-end;gap:2px;height:34px;margin:7px 0 3px;} .mz-bar{width:9px;border-radius:2px;min-height:3px;opacity:.9;} .mz-zone{padding:1px 9px;border-radius:9px;font-size:12px;font-weight:600;color:#fff;} -.mz-advice{margin:7px 0;padding:8px 11px;border:1px solid var(--warn);border-radius:9px;display:flex;gap:10px;align-items:center;flex-wrap:wrap;} @@ -199,6 +198,40 @@ pre.json{background:var(--surface-2);border:1px solid var(--hair);border-radius: 执行 {{ ov.exec_halt ? '已暂停':'正常' }} 自主 {{ tx('autonomy', ov.autonomy) }}? 计划 {{ planStatus.ok===false ? '不可用' : (planStatus.date || '-') }} + + + 宏观 {{ mzChipText }} + 下发 {{ dm.mode || '-' }}?
@@ -262,44 +295,6 @@ pre.json{background:var(--surface-2);border:1px solid var(--hair);border-radius: 下方查看全部 ▾
- -
-

宏观择时 · 股汇对冲指数 → 整体仓位 - (总开关关闭, 只展示不动作) - (档位 {{ macro.autonomy==='full' ? '全自动' : (macro.autonomy==='propose_only' ? '只出建议' : '只算不动') }}) -

-
-
- {{ s.label }} - {{ s.value==null ? '—' : (s.value>0?'+':'') + Number(s.value).toFixed(1) }} - {{ mzLabel(s.zone) }} - 超额深度 {{ s.e_now }} - 区内第 {{ s.streak }} 天 - 宏观命令在途 - {{ s.ymd }} -
- - -
-
- -
-
近 {{ s.history.length }} 个交易日 · 热区阈值 +{{ (macro.params||{}).hot_th }} / 冷区 {{ (macro.params||{}).cold_th }} / 退出带 ±{{ (macro.params||{}).exit_band }}
-
- 今日建议:{{ s.advice.direction==='REDUCE' ? '降仓' : '升仓' }} {{ (s.advice.pct*100).toFixed(1) }}% - {{ s.advice.why }} - - 当日有效, 隔日自动作废 -
-
{{ s.note }}
-
最近宏观命令 {{ s.last_command.command_id }} · {{ s.last_command.cmd_type==='REDUCE_EXPOSURE' ? '降仓' : '升仓' }} · {{ s.last_command.status }}
-
读取失败: {{ s.error }}
-
-
暂无信号数据(还没扫描过, 或宏观层未启用)
-
-

上游信号 · 只读参考,不进下单逻辑 {{ showUpstream?'▲ 收起':'▼ 展开' }}

@@ -2154,6 +2149,29 @@ createApp({ ElementPlus.ElMessage[(d && d.ok) ? 'success' : 'error']((d && d.ok) ? ('已下达 ' + (d.command_id || '')) : ((d && d.error) || '采纳失败')); await Promise.all([loadMacro(), loadCommands()]); } + // 首行徽标 (2026-08-19 用户要求由大面板改为首行紧凑显示, 详情进悬浮提示) + const mzSig = computed(() => (((macro.value || {}).signals) || [])[0] || null); + const mzAdvicePending = computed(() => { const s = mzSig.value; return !!(s && s.advice && !s.advice.adopted); }); + const mzChipCls = computed(() => { + const m = macro.value || {}; + if (m.enabled === false) return 'idle'; + const s = mzSig.value; + if (!s) return 'idle'; + if (mzAdvicePending.value || macroGateOn.value || s.zone === 'UNAVAILABLE') return 'warn'; + return 'ok'; + }); + const mzChipText = computed(() => { + const m = macro.value || {}; + if (m.enabled === false) return '未启用'; + const s = mzSig.value; + if (!s) return '—'; + if (s.zone === 'UNAVAILABLE') return '数据不可用'; + const v = s.value == null ? '—' : ((s.value > 0 ? '+' : '') + Number(s.value).toFixed(1)); + let t = v + ' ' + mzLabel(s.zone); + if (mzAdvicePending.value) t += ' · 有建议'; + return t; + }); + function macroChipClick() { if (mzAdvicePending.value && mzSig.value) macroAdopt(mzSig.value.key); } async function loadUpstream() { const d = await call('get', '/api/upstream-signals'); @@ -2433,6 +2451,7 @@ createApp({ upstream, showUpstream, usrc, loadUpstream, macro, macroGateOn, macroUnavailable, mzLabel, mzColor, mzBarStyle, loadMacro, macroScan, macroAdopt, + mzSig, mzAdvicePending, mzChipCls, mzChipText, macroChipClick, showAlerts, alertItems, alertLatest, alertLevelClass, alertGroups, alertStripItems, alertStripCount, alertTotalCount, catShown, toggleCat, ageText, alertRowClass, alertItemsF, levelShown, toggleLevel, levelCount, ALERT_LEVELS, lvLabel, lvClass, alertGridFixed, passLevel, flowText, flowClass,