Improve desktop settings and trades list UX.
Fold backup/WeCom help into rules; backup list one-per-line (5 visible); trades table with 10/page; hide funds bar on mobile. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -51,6 +51,7 @@ export default function SettingsPage() {
|
||||
const [stratSub, setStratSub] = useState<StratSub>("position");
|
||||
const [stratRulesOpen, setStratRulesOpen] = useState(false);
|
||||
const [runtimeRulesOpen, setRuntimeRulesOpen] = useState(false);
|
||||
const [backupRulesOpen, setBackupRulesOpen] = useState(false);
|
||||
|
||||
const [newUsername, setNewUsername] = useState(getUsername() || "admin");
|
||||
const [currentPassword, setCurrentPassword] = useState("");
|
||||
@@ -1000,18 +1001,6 @@ export default function SettingsPage() {
|
||||
|
||||
<section className="settings-section">
|
||||
<h3>企业微信通知</h3>
|
||||
<p style={{ color: "var(--muted)", marginTop: 0 }}>
|
||||
群机器人 Webhook。推送 Markdown,带标识(OPEN/CLOSE/START/PAUSE/FAULT)。
|
||||
当前标签:
|
||||
<span className="mono">
|
||||
{" "}
|
||||
{wecomMeta?.venue_label ||
|
||||
(runtime?.mode === "LIVE"
|
||||
? `实盘·${(runtime.exchange || "okx").toUpperCase()}`
|
||||
: "模拟盘")}
|
||||
</span>
|
||||
。开仓/平仓/启动/暂停/故障均推送;模拟盘标题为「模拟盘」,实盘为「实盘·交易所」。
|
||||
</p>
|
||||
<div className="settings-fields">
|
||||
<div className="field">
|
||||
<label htmlFor="wecomEn">启用通知</label>
|
||||
@@ -1082,6 +1071,17 @@ export default function SettingsPage() {
|
||||
密钥留空保存 = 不覆盖已有配置。交易所选币安且 LIVE
|
||||
时用币安密钥真下单(无 Passphrase)。
|
||||
</li>
|
||||
<li>
|
||||
企业微信:群机器人 Webhook,推送 Markdown,带标识(OPEN/CLOSE/START/PAUSE/FAULT)。
|
||||
当前标签:
|
||||
<span className="mono">
|
||||
{wecomMeta?.venue_label ||
|
||||
(runtime?.mode === "LIVE"
|
||||
? `实盘·${(runtime.exchange || "okx").toUpperCase()}`
|
||||
: "模拟盘")}
|
||||
</span>
|
||||
。开仓/平仓/启动/暂停/故障均推送;模拟盘标题为「模拟盘」,实盘为「实盘·交易所」。
|
||||
</li>
|
||||
<li>
|
||||
企业微信:在群里添加「自定义机器人」复制 Webhook。留空保存不覆盖已有
|
||||
URL。故障同类消息 5 分钟内去重。
|
||||
@@ -1336,14 +1336,6 @@ export default function SettingsPage() {
|
||||
<form onSubmit={onSaveBackupSettings}>
|
||||
<section className="settings-section">
|
||||
<h3>自动备份</h3>
|
||||
<p style={{ color: "var(--muted)", marginTop: 0 }}>
|
||||
备份内容:SQLite 数据库 +{" "}
|
||||
<span className="mono">.env</span>(含登录与交易所密钥)。服务器目录:
|
||||
<span className="mono">
|
||||
{" "}
|
||||
{backup?.backup_dir || "/root/eth_hedge_backups"}
|
||||
</span>
|
||||
</p>
|
||||
<div className="settings-fields">
|
||||
<div className="field">
|
||||
<label htmlFor="bakAuto">自动备份</label>
|
||||
@@ -1401,21 +1393,12 @@ export default function SettingsPage() {
|
||||
<section className="settings-section">
|
||||
<h3>服务器备份列表</h3>
|
||||
{backup?.items && backup.items.length > 0 ? (
|
||||
<div className="settings-fields">
|
||||
<div className="backup-list" role="list">
|
||||
{backup.items.map((it) => (
|
||||
<div
|
||||
key={it.name}
|
||||
className="field"
|
||||
style={{
|
||||
display: "flex",
|
||||
flexWrap: "wrap",
|
||||
gap: 8,
|
||||
alignItems: "center",
|
||||
}}
|
||||
>
|
||||
<span className="mono" style={{ flex: "1 1 220px" }}>
|
||||
<div key={it.name} className="backup-list-row" role="listitem">
|
||||
<span className="mono backup-list-name">
|
||||
{it.name}
|
||||
<span style={{ color: "var(--muted)" }}>
|
||||
<span className="backup-list-meta">
|
||||
{" "}
|
||||
· {(it.size_bytes / 1024).toFixed(1)} KB ·{" "}
|
||||
{new Date(it.mtime_ms).toLocaleString()}
|
||||
@@ -1439,13 +1422,6 @@ export default function SettingsPage() {
|
||||
|
||||
<section className="settings-section">
|
||||
<h3>上传恢复(新服务器迁移)</h3>
|
||||
<p style={{ color: "var(--muted)", marginTop: 0 }}>
|
||||
在新机器部署后,上传旧机下载的 zip,将覆盖数据库与{" "}
|
||||
<span className="mono">.env</span>
|
||||
。须无持仓;确认串填写{" "}
|
||||
<span className="mono">RESTORE</span>
|
||||
。恢复后服务自动重启。
|
||||
</p>
|
||||
<div className="settings-fields">
|
||||
<div className="field">
|
||||
<label htmlFor="bakFile">备份 zip</label>
|
||||
@@ -1480,6 +1456,30 @@ export default function SettingsPage() {
|
||||
</button>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<RulesFold
|
||||
open={backupRulesOpen}
|
||||
onToggle={() => setBackupRulesOpen((v) => !v)}
|
||||
>
|
||||
<ul className="settings-rules-list">
|
||||
<li>
|
||||
备份内容:SQLite 数据库 +{" "}
|
||||
<span className="mono">.env</span>
|
||||
(含登录与交易所密钥)。服务器目录:
|
||||
<span className="mono">
|
||||
{backup?.backup_dir || "/root/eth_hedge_backups"}
|
||||
</span>
|
||||
。
|
||||
</li>
|
||||
<li>
|
||||
上传恢复:在新机器部署后,上传旧机下载的 zip,将覆盖数据库与{" "}
|
||||
<span className="mono">.env</span>
|
||||
。须无持仓;确认串填写{" "}
|
||||
<span className="mono">RESTORE</span>
|
||||
。恢复后服务自动重启。
|
||||
</li>
|
||||
</ul>
|
||||
</RulesFold>
|
||||
</div>
|
||||
) : null}
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user