feat(hub): redesign archive as inner-light-mind journal

Rename archive to 内照明心 with daily trade records by default, review quotes sidebar, on-demand chart, sick-row highlighting, and new daily-trades/quotes APIs.
This commit is contained in:
dekun
2026-06-11 17:43:45 +08:00
parent 65d2bc5e00
commit bb800b876b
5 changed files with 926 additions and 325 deletions
+71 -51
View File
@@ -15,7 +15,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=20260612-hub-ai-pwa-nav" />
<link rel="stylesheet" href="/assets/app.css?v=20260612-inner-light-mind" />
<link rel="stylesheet" href="/assets/dashboard.css?v=20260612-dash-monitor-count" />
</head>
<body>
@@ -48,7 +48,7 @@
<a href="/funds" id="nav-funds">资金概况</a>
<a href="/monitor" id="nav-monitor">监控区</a>
<a href="/market" id="nav-market">行情区</a>
<a href="/archive" id="nav-archive">币种档案</a>
<a href="/archive" id="nav-archive">内照明心</a>
<a href="/dashboard" id="nav-dashboard">数据看板</a>
<a href="/ai" id="nav-ai">AI 教练</a>
<a href="/settings" id="nav-settings">系统设置</a>
@@ -259,58 +259,78 @@
<div id="page-archive" class="page hidden">
<div class="page-head">
<h1><span class="head-tag">ARC</span> 币种档案</h1>
<p class="page-desc">一所一币一行 · 交易时间线 · 建档 30 天 K 线可拖动缩放(默认聚焦持仓段,不含拉到「现在」)</p>
</div>
<div class="archive-toolbar toolbar">
<label class="archive-field">
<span>交易所</span>
<select id="archive-exchange"><option value="">全部</option></select>
</label>
<label class="chk-label"><input type="checkbox" id="archive-filter-profit" /> 有盈利单</label>
<label class="chk-label"><input type="checkbox" id="archive-filter-loss" /> 有亏损单</label>
<label class="chk-label"><input type="checkbox" id="archive-filter-sick" /> 犯病</label>
<label class="chk-label"><input type="checkbox" id="archive-filter-emotion" /> 情绪</label>
<button type="button" id="archive-btn-refresh" class="primary">刷新列表</button>
<button type="button" id="archive-btn-sync" class="ghost">同步交易与 K 线</button>
<span id="archive-status" class="toolbar-meta"></span>
<h1><span class="head-tag">IN</span> 内照明心</h1>
<p class="page-desc">复盘语录 · 当日交易记录 · 按需查看 K 线</p>
</div>
<div class="archive-layout">
<section class="archive-list-panel">
<div id="archive-list" class="archive-list" role="list"></div>
</section>
<section class="archive-detail-panel hidden" id="archive-detail-panel">
<div class="archive-detail-head">
<h2 id="archive-detail-title"></h2>
<span id="archive-detail-stats" class="archive-detail-stats"></span>
<aside class="archive-quotes-panel">
<div class="archive-panel-head">
<h2>复盘语录</h2>
<span id="archive-quotes-count" class="archive-panel-meta"></span>
</div>
<div class="archive-chart-toolbar toolbar">
<div class="archive-tf-tabs" id="archive-tf-tabs" role="tablist">
<button type="button" class="archive-tf-btn" data-tf="5m">5m</button>
<button type="button" class="archive-tf-btn is-active" data-tf="15m">15m</button>
<button type="button" class="archive-tf-btn" data-tf="1h">1h</button>
<button type="button" class="archive-tf-btn" data-tf="4h">4h</button>
<form id="archive-quote-form" class="archive-quote-form">
<input id="archive-quote-date" type="date" required />
<textarea id="archive-quote-content" rows="3" placeholder="今日复盘心得…" required></textarea>
<button type="submit" class="primary">添加语录</button>
</form>
<div id="archive-quotes-list" class="archive-quotes-list"></div>
</aside>
<main class="archive-main-panel">
<div class="archive-toolbar toolbar">
<label class="chk-label"><input type="checkbox" id="archive-filter-profit" /> 盈利单</label>
<label class="chk-label"><input type="checkbox" id="archive-filter-loss" /> 亏损单</label>
<label class="chk-label"><input type="checkbox" id="archive-filter-sick" /> 犯病</label>
<label class="archive-field">
<span>日期</span>
<input id="archive-trading-day" type="date" />
</label>
<button type="button" id="archive-btn-chart-toggle" class="ghost">图表</button>
<label class="archive-field archive-search-field">
<span>搜索</span>
<input id="archive-search" type="search" placeholder="合约 / 交易所 / 备注" autocomplete="off" />
</label>
<label class="archive-field">
<span>交易所</span>
<select id="archive-exchange"><option value="">全部</option></select>
</label>
<button type="button" id="archive-btn-refresh" class="primary">刷新</button>
<button type="button" id="archive-btn-sync" class="ghost">同步</button>
<span id="archive-status" class="toolbar-meta"></span>
</div>
<div id="archive-stats" class="archive-stats-bar"></div>
<details id="archive-chart-section" class="archive-acc-section archive-chart-section">
<summary class="archive-acc-summary">K 线图表 <span id="archive-chart-title" class="archive-acc-sub"></span></summary>
<div class="archive-chart-toolbar toolbar">
<div class="archive-tf-tabs" id="archive-tf-tabs" role="tablist">
<button type="button" class="archive-tf-btn" data-tf="5m">5m</button>
<button type="button" class="archive-tf-btn is-active" data-tf="15m">15m</button>
<button type="button" class="archive-tf-btn" data-tf="1h">1h</button>
<button type="button" class="archive-tf-btn" data-tf="4h">4h</button>
</div>
<label class="archive-field">
<span>视窗</span>
<select id="archive-view-mode">
<option value="hold">持仓过程(锚平仓)</option>
<option value="entry">进场决策(锚开仓)</option>
</select>
</label>
<label class="archive-field">
<span>跳转时间</span>
<input id="archive-jump-at" type="text" placeholder="2026-06-07 14:30" autocomplete="off" />
</label>
<button type="button" id="archive-btn-jump" class="ghost">跳转</button>
<button type="button" id="archive-btn-reload-chart" class="primary">重载图表</button>
</div>
<label class="archive-field">
<span>视窗</span>
<select id="archive-view-mode">
<option value="hold">持仓过程(锚平仓)</option>
<option value="entry">进场决策(锚开仓)</option>
</select>
</label>
<label class="archive-field">
<span>跳转时间</span>
<input id="archive-jump-at" type="text" placeholder="2026-06-07 14:30" autocomplete="off" />
</label>
<button type="button" id="archive-btn-jump" class="ghost">跳转</button>
<button type="button" id="archive-btn-reload-chart" class="primary">重载图表</button>
</div>
<div class="archive-chart-wrap">
<div id="archive-chart" class="archive-chart-host"></div>
<button type="button" id="archive-mark-auto" class="archive-mark-auto is-on" title="开启:该币种全部交易均标注开/平;关闭:仅当前选中一笔">自动</button>
</div>
<div id="archive-trades" class="archive-trades"></div>
</section>
<div class="archive-chart-wrap">
<div id="archive-chart" class="archive-chart-host"></div>
<button type="button" id="archive-mark-auto" class="archive-mark-auto is-on" title="开启:该币种全部交易均标注开/平;关闭:仅当前选中一笔">自动</button>
</div>
</details>
<details id="archive-trades-section" class="archive-acc-section archive-trades-section" open>
<summary class="archive-acc-summary">交易记录</summary>
<div id="archive-trades" class="archive-trades"></div>
</details>
</main>
</div>
</div>
@@ -553,7 +573,7 @@
<script src="https://unpkg.com/lightweight-charts@4.2.0/dist/lightweight-charts.standalone.production.js"></script>
<script src="/assets/chart_draw.js?v=20260609-market-day-split"></script>
<script src="/assets/chart.js?v=20260609-market-day-split"></script>
<script src="/assets/archive.js?v=20260608-hub-archive-history"></script>
<script src="/assets/archive.js?v=20260612-inner-light-mind"></script>
<script src="/assets/funds.js?v=20260609-hub-funds-fold"></script>
<script src="/assets/dashboard.js?v=20260612-dash-monitor-count"></script>
<script src="/assets/ai_review_render.js?v=2"></script>