fix(hub): two-column trend plan card; docs for records and hub layout

Left column shows plan metrics, right column DCA table, footer for breakeven and snapshot info; update strategy and exchange usage docs.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-06-04 10:59:47 +08:00
parent f1e95afb89
commit 546bc7bcf1
8 changed files with 143 additions and 44 deletions
+63 -5
View File
@@ -1375,11 +1375,28 @@ body.market-chart-fs-open {
color: var(--accent);
}
.hub-trend-plan-body-cols {
display: grid;
grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
gap: 14px 18px;
align-items: start;
margin-bottom: 10px;
padding-bottom: 10px;
border-bottom: 1px dashed #2a3558;
}
.hub-trend-plan-col-left .plan-card-meta {
margin-bottom: 10px;
}
.hub-trend-plan-col-left .plan-card-grid {
margin-bottom: 0;
}
.hub-trend-plan-card .plan-card-grid {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 10px 14px;
margin-bottom: 10px;
}
.hub-trend-plan-card .plan-cell {
@@ -1429,10 +1446,38 @@ body.market-chart-fs-open {
filter: brightness(1.08);
}
.hub-trend-plan-card .plan-dca-block {
margin-top: 12px;
padding-top: 10px;
border-top: 1px dashed #2a3558;
.hub-trend-plan-card .plan-dca-block--side {
margin-top: 0;
padding-top: 0;
border-top: none;
height: 100%;
}
.hub-trend-plan-col-right {
min-width: 0;
border-left: 1px solid #243050;
padding-left: 14px;
}
.hub-dca-empty {
font-size: 0.76rem;
color: #8892b0;
padding: 8px 0;
}
.hub-trend-plan-foot {
display: flex;
flex-direction: column;
gap: 8px;
margin-top: 4px;
}
.hub-trend-plan-foot .hub-plan-breakeven-row {
margin-top: 0;
}
.hub-trend-plan-foot .hub-plan-account-foot {
margin-bottom: 0;
}
.hub-trend-plan-card .plan-dca-title {
@@ -1532,6 +1577,19 @@ body.market-chart-fs-open {
max-width: 100%;
}
@media (max-width: 900px) {
.hub-trend-plan-body-cols {
grid-template-columns: 1fr;
}
.hub-trend-plan-col-right {
border-left: none;
padding-left: 0;
padding-top: 10px;
border-top: 1px dashed #2a3558;
}
}
@media (max-width: 720px) {
.hub-trend-plan-card .plan-card-grid {
grid-template-columns: 1fr;
+33 -24
View File
@@ -1607,7 +1607,7 @@
</tr>`;
})
.join("");
return `<div class="plan-dca-block">
return `<div class="plan-dca-block plan-dca-block--side">
<div class="plan-dca-title">补仓计划明细</div>
<table class="plan-dca-table">
<tr><th>档位</th><th>触发价</th><th>张数</th><th>状态</th></tr>
@@ -1669,6 +1669,9 @@
? `<span class="hub-plan-be-done">已保本 ${esc(String(t.breakeven_applied_at || "").slice(0, 16))}</span>`
: "";
const dcaHtml = renderTrendDcaTable(t, tickMap);
const dcaCol = dcaHtml
? `<div class="hub-trend-plan-col hub-trend-plan-col-right">${dcaHtml}</div>`
: `<div class="hub-trend-plan-col hub-trend-plan-col-right"><div class="plan-dca-block plan-dca-block--side plan-dca-block--empty"><div class="plan-dca-title">补仓计划明细</div><div class="hub-dca-empty">暂无补仓档位</div></div></div>`;
return `<div class="plan-position-card hub-trend-plan-card">
<div class="plan-card-head">
<div class="plan-card-title">
@@ -1677,30 +1680,36 @@
</div>
${endBtn}
</div>
<div class="plan-card-meta">
来源: 趋势回调计划 | 风险: ${riskTxt}
<span class="accent">${esc(trendAddZoneLabel(t.direction))} ${esc(addZone)}</span>
已补仓 <strong>${legsTxt}</strong>
<div class="hub-trend-plan-body-cols">
<div class="hub-trend-plan-col hub-trend-plan-col-left">
<div class="plan-card-meta">
来源: 趋势回调计划 | 风险: ${riskTxt}
<span class="accent">${esc(trendAddZoneLabel(t.direction))} ${esc(addZone)}</span>
已补仓 <strong>${legsTxt}</strong>
</div>
<div class="plan-card-grid">
<div class="plan-cell"><span class="lbl">均价</span><span class="val">${esc(avg)}</span></div>
<div class="plan-cell"><span class="lbl">止损</span><span class="val">${esc(sl)}</span></div>
<div class="plan-cell"><span class="lbl">止盈</span><span class="val">${esc(tp)}</span></div>
<div class="plan-cell"><span class="lbl">盈亏比</span><span class="val">${esc(rrTxt)}</span></div>
<div class="plan-cell"><span class="lbl">标记价</span><span class="val">${esc(mark)}</span></div>
<div class="plan-cell"><span class="lbl">浮盈亏</span>${pnlVal}</div>
</div>
</div>
${dcaCol}
</div>
<div class="plan-card-grid">
<div class="plan-cell"><span class="lbl">均价</span><span class="val">${esc(avg)}</span></div>
<div class="plan-cell"><span class="lbl">止损</span><span class="val">${esc(sl)}</span></div>
<div class="plan-cell"><span class="lbl">止盈</span><span class="val">${esc(tp)}</span></div>
<div class="plan-cell"><span class="lbl">盈亏比</span><span class="val">${esc(rrTxt)}</span></div>
<div class="plan-cell"><span class="lbl">标记价</span><span class="val">${esc(mark)}</span></div>
<div class="plan-cell"><span class="lbl">浮盈亏</span>${pnlVal}</div>
</div>
${dcaHtml}
<div class="plan-card-meta hub-plan-breakeven-row">
<label class="hub-plan-be-label">
保本移交 偏移%
<input type="number" disabled value="${bePct}" class="hub-plan-be-input" />
</label>
${beBtn}
${beApplied}
</div>
<div class="plan-card-meta hub-plan-account-foot">
快照可用: ${esc(snapTxt)} 计划保证金${esc(marginTxt)} 杠杆: ${levTxt}
<div class="hub-trend-plan-foot">
<div class="plan-card-meta hub-plan-breakeven-row">
<label class="hub-plan-be-label">
保本移交 偏移%
<input type="number" disabled value="${bePct}" class="hub-plan-be-input" />
</label>
${beBtn}
${beApplied}
</div>
<div class="plan-card-meta hub-plan-account-foot">
快照可用: ${esc(snapTxt)} 计划保证金${esc(marginTxt)} 杠杆: ${levTxt}
</div>
</div>
</div>`;
}
+2 -2
View File
@@ -14,7 +14,7 @@
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600&family=Orbitron:wght@500;600;700&display=swap" rel="stylesheet" media="print" onload="this.media='all'" />
<noscript><link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600&family=Orbitron:wght@500;600;700&display=swap" rel="stylesheet" /></noscript>
<link rel="stylesheet" href="/assets/app.css?v=20260604-hub-trend-instance" />
<link rel="stylesheet" href="/assets/app.css?v=20260604-hub-trend-2col" />
</head>
<body>
<div class="app-bg" aria-hidden="true"></div>
@@ -235,6 +235,6 @@
<div id="toast"></div>
<script src="https://unpkg.com/lightweight-charts@4.2.0/dist/lightweight-charts.standalone.production.js"></script>
<script src="/assets/chart.js?v=20260604-hub-trend-plan"></script>
<script src="/assets/app.js?v=20260604-hub-trend-instance"></script>
<script src="/assets/app.js?v=20260604-hub-trend-2col"></script>
</body>
</html>
+2 -2
View File
@@ -181,7 +181,7 @@ Chrome **桌面快捷方式**图标来自站点 `favicon` / `manifest`(已配
| 功能 | 说明 |
|------|------|
| **2×2 主界面** | 四所信息**完整展示**:余额、持仓表、委托/平仓、折叠委托单、下单监控、关键位、趋势/加仓摘要 |
| **全屏放大** | **点击卡片标题栏**(非按钮区)→ 该所**全屏**:每币种一张实盘风格持仓卡(趋势持仓显示**来源: 趋势回调计划**、**风险%**、**程序监控·止盈价**、**盈亏比**,与实例策略页一致);独立卡片:**关键位**、**下单监控**、**趋势回调**(计划卡含均价/止损/止盈/盈亏比/标记价/浮盈亏)、**顺势加仓** |
| **全屏放大** | **点击卡片标题栏**(非按钮区)→ 该所**全屏**:每币种一张实盘风格持仓卡(趋势持仓显示**来源: 趋势回调计划**、**风险%**、**程序监控·止盈价**、**盈亏比**,与实例策略页一致);独立卡片:**关键位**、**下单监控**、**趋势回调**(计划 **两列**:左=币种基本信息与 3×2 指标,右=**补仓计划明细**,底=保本移交 + 快照可用/计划保证金/杠杆;字段与实例 `/strategy` 一致,结束/保本在实例操作)、**顺势加仓** |
| **委托单折叠** | 仅「委托单」区块默认折叠;展开状态存浏览器本地,**5 秒刷新不重置** |
| **条件单 / 委托** | 每个持仓下方展示交易所 **条件单**(默认折叠)与 **普通委托**;数据来自子代理实时拉取(币安含 Algo 通道) |
| **撤单** | 条件单区内单笔「撤单」或「撤销全部」;经中控 `POST /api/orders/{id}/cancel``cancel-symbol` |
@@ -216,7 +216,7 @@ Chrome **桌面快捷方式**图标来自站点 `favicon` / `manifest`(已配
**可用**:打开 http://127.0.0.1:5100/settings ,修改表格后点 **保存设置** 即写入 `hub_settings.json`;**重新加载** 从磁盘/默认再读(会重新套用 `HUB_DISABLED_IDS`)。保存后监控区立即使用新 URL/启用状态,**无需重启 hub**。
**下单、关键位、策略交易**:请在监控卡片点击 **「实例」**,进入各 `crypto_monitor_*` 网页(`/trade``/key_monitor``/strategy` 等)。中控 **不** 提供下单区
**下单、关键位、策略交易**:请在监控卡片点击 **「实例」****「策略交易」**SSO,进入各 `crypto_monitor_*` 网页(`/trade``/key_monitor``/strategy``/strategy/records` 等)。中控 **不** 提供下单区;**策略交易记录** 仅在实例顶栏查看(见 [策略交易说明.md](../策略交易说明.md) §五)
| 列 | 含义 |
|----|------|