<feed xmlns='http://www.w3.org/2005/Atom'>
<title>strategy-lab.git/frontend/src/components/ProjectMetricRow.svelte, branch main</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<id>http://git.somhairle.bid/strategy-lab.git/atom?h=main</id>
<link rel='self' href='http://git.somhairle.bid/strategy-lab.git/atom?h=main'/>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/strategy-lab.git/'/>
<updated>2026-09-18T07:49:44+00:00</updated>
<entry>
<title>[变更性质] feat(frontend)</title>
<updated>2026-09-18T07:49:44+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-18T07:49:44+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/strategy-lab.git/commit/?id=a7aab01f051487327e5ce52b6a8905208c546e8c'/>
<id>urn:sha1:a7aab01f051487327e5ce52b6a8905208c546e8c</id>
<content type='text'>
[新增功能] 12 页面组件全量 shadcn：Card/Button/Table/Tabs/Select/Alert；375 底部 Tab Bar 改用 Tabs 组件实现
[实现方案] 页面级手写 class 全部移除（.btn/.banner/table.data/.badge/.tabs/.metric-row/.m-tile/.hint 等改为 shadcn + tailwind 工具类）；Modal/DatasetWizard/DatasetCard/DiffView/CodeEditor/Status/Layout 同步
[影响范围] src/pages/*.svelte、src/components/*.svelte
</content>
</entry>
<entry>
<title>[变更性质] feat(frontend)</title>
<updated>2026-09-18T04:03:32+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-18T04:03:32+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/strategy-lab.git/commit/?id=61f5c545953bb4ee20b123bf9671ac35d7f1f3c1'/>
<id>urn:sha1:61f5c545953bb4ee20b123bf9671ac35d7f1f3c1</id>
<content type='text'>
[新增功能] round3 页面组件全量迁移 shadcn-svelte（12 页面 + Modal/DatasetWizard/DatasetCard/Status）
[实现方案] .btn→Button、.banner→Alert、table.data→Table.Root、.badge→Badge、.tabs→Tabs.Root、.metric-card/form.card→Card.Root；ProjectStrategyTab div 配对修复
[影响范围] src/pages/*.svelte、src/components/*.svelte
</content>
</entry>
<entry>
<title>fix(frontend): AI 用量卡回归真实 /api/ai/usage totals.requests</title>
<updated>2026-09-18T02:05:56+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-18T02:05:56+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/strategy-lab.git/commit/?id=47f8f15493f839e45d2176563397f25c40125fc4'/>
<id>urn:sha1:47f8f15493f839e45d2176563397f25c40125fc4</id>
<content type='text'>
[变更性质] 文案/注释更正（Leader 验收问题 3），无行为变化。
[问题说明] 复核 server/src/ai.rs list_ai_usage：端点本就返回 totals.requests（ai_usage COUNT）；前端 dashboardMetrics 一直消费该字段，此前 doc-todo 文案误称后端缺字段。
[修复方案] 更正 metric 卡 data-todo 与 dashboardMetrics 注释；占位 - 仅在端点未返回 totals 时兜底；本轮生产 usageRequests=0 → 显示"0 次"。
[影响范围] ProjectMetricRow.svelte、dashboardMetrics.ts 注释；vitest 75/75 不变。
</content>
</entry>
<entry>
<title>feat(frontend): 首页指标卡与项目行 sparkline（前端重设计第二轮之一）</title>
<updated>2026-09-18T01:50:37+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-18T01:50:37+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/strategy-lab.git/commit/?id=0b1ad75571b312dd60f9ae0099b47cc02ac54c78'/>
<id>urn:sha1:0b1ad75571b312dd60f9ae0099b47cc02ac54c78</id>
<content type='text'>
[变更性质] 新增能力，不动后端。
[新增功能] dashboardMetrics 聚合（项目/数据集/实验/AI 用量统计 + 最近回测首末净值），实盘数据优先、缺数以占位符 '-' 兜底；ProjectMetricRow 渲染 4 张 metric-card；Sparkline 组件输出 up/down 方向线段与端点圆点。
[实现方案] 聚合逻辑与展示组件分离，sparkline 仅依赖 first/last 两个字段，无图表库依赖。
[影响范围] frontend/src/lib 与 components；配套 5 组单测（dashboardMetrics/sparkline/metricRow）。
</content>
</entry>
</feed>
