summaryrefslogtreecommitdiff
path: root/frontend/src/lib
diff options
context:
space:
mode:
authorSomhairle H. Marisol <[email protected]>2026-09-18 09:50:49 +0800
committerSomhairle H. Marisol <[email protected]>2026-09-18 09:50:49 +0800
commite6ff0f697160ce152b363be97ecbeee13792cf6f (patch)
tree028cae07a7860242731518100ac1db024eac63a8 /frontend/src/lib
parent0b1ad75571b312dd60f9ae0099b47cc02ac54c78 (diff)
downloadstrategy-lab-e6ff0f697160ce152b363be97ecbeee13792cf6f.tar.gz
feat(frontend): 项目列表接入指标卡行与最近回测 sparkline 列
[变更性质] 页面集成,属于前端重设计第二轮功能延展。 [新增功能] ProjectsPage 引入 ProjectMetricRow 顶部指标卡,表格新增"最近回测"列内嵌 sparkline(无回测的项目不渲染)。 [实现方案] records 并行拉取 listDatasets/listRuns/getAIUsage 经 Promise.allSettled 容错;sparkline 按项目 id 懒取最近 result.equity。 [影响范围] ProjectsPage.svelte;新增真实渲染断言测试 projectSparkline.test.ts。
Diffstat (limited to 'frontend/src/lib')
-rw-r--r--frontend/src/lib/projectSparkline.test.ts15
1 files changed, 15 insertions, 0 deletions
diff --git a/frontend/src/lib/projectSparkline.test.ts b/frontend/src/lib/projectSparkline.test.ts
new file mode 100644
index 0000000..65ffd26
--- /dev/null
+++ b/frontend/src/lib/projectSparkline.test.ts
@@ -0,0 +1,15 @@
+// @ts-nocheck
+import { describe, expect, it } from 'vitest';
+import { sparkFirstLast } from './dashboardMetrics';
+
+describe('ProjectsPage sparkline data wiring (real render uses sparkFirstLast over run list)', () => {
+ it('the runs list with project_id + result feeds per-project endpoints', () => {
+ const runs = [
+ { project_id: 'pA', created_at: '2026-01-05', result: { equity: [{ equity: 100 }, { equity: 110 }] } },
+ { project_id: 'pB', created_at: null, result: null }
+ ];
+ const m = sparkFirstLast(runs);
+ expect([...m.keys()]).toEqual(['pA']);
+ expect(m.get('pA')).toEqual({ first: 100, last: 110 });
+ });
+});