From c833c07fd6eb72d7ca2c2fe0f1d2405a75f9ed62 Mon Sep 17 00:00:00 2001 From: claude_dev Date: Thu, 13 Aug 2026 08:34:34 +0800 Subject: [PATCH] =?UTF-8?q?fix(portfolio):=20=E5=8E=86=E5=8F=B2=E7=BB=84?= =?UTF-8?q?=E5=90=88=E7=BB=93=E6=9E=9C=E5=8F=AF=E6=9F=A5=E7=9C=8B(Portfoli?= =?UTF-8?q?oBacktest=E6=9F=A5=E7=9C=8B=E6=A8=A1=E5=BC=8F+History=E8=B7=B3?= =?UTF-8?q?=E8=BD=AC/=E7=AD=9B=E9=80=89/=E6=A0=87=E7=AD=BE);=20=E5=9B=9E?= =?UTF-8?q?=E6=B5=8B=E7=AD=89=E5=BE=85=E5=8A=A0=E5=B7=B2=E8=80=97=E6=97=B6?= =?UTF-8?q?=E6=8F=90=E7=A4=BA(=E6=B2=BB=E5=8D=A1=E9=A1=BF=E9=94=99?= =?UTF-8?q?=E8=A7=89)=20[nas]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/views/backtest/History.vue | 6 ++- .../src/views/backtest/PortfolioBacktest.vue | 40 ++++++++++++++++--- 2 files changed, 39 insertions(+), 7 deletions(-) diff --git a/frontend/src/views/backtest/History.vue b/frontend/src/views/backtest/History.vue index af6223d..d24375c 100644 --- a/frontend/src/views/backtest/History.vue +++ b/frontend/src/views/backtest/History.vue @@ -9,7 +9,7 @@ const tasks = ref([]) const loading = ref(false) // 筛选 -const typeFilter = ref<'all' | 'cta' | 'optimize' | 'factor'>('all') +const typeFilter = ref<'all' | 'cta' | 'portfolio' | 'optimize' | 'factor'>('all') const statusFilter = ref<'all' | 'done' | 'failed'>('all') const keyword = ref('') // 分页 @@ -19,6 +19,7 @@ const pageSize = 20 const typeOptions = [ { key: 'all', label: '全部' }, { key: 'cta', label: '回测' }, + { key: 'portfolio', label: '组合' }, { key: 'optimize', label: '参数优化' }, { key: 'factor', label: '因子分析' }, ] as const @@ -77,10 +78,11 @@ async function load(): Promise { function open(row: TaskListItem): void { if (row.type === 'factor') router.push(`/factor/result/${row.task_id}`) else if (row.type === 'optimize') router.push(`/backtest/optimize-result/${row.task_id}`) + else if (row.type === 'portfolio') router.push(`/backtest/portfolio?task_id=${row.task_id}`) else router.push(`/backtest/result/${row.task_id}`) } -const typeLabelMap: Record = { cta: '回测', optimize: '优化', factor: '因子' } +const typeLabelMap: Record = { cta: '回测', portfolio: '组合', optimize: '优化', factor: '因子' } function typeLabel(t: string): string { return typeLabelMap[t] || t } diff --git a/frontend/src/views/backtest/PortfolioBacktest.vue b/frontend/src/views/backtest/PortfolioBacktest.vue index 972eeb3..9d1496e 100644 --- a/frontend/src/views/backtest/PortfolioBacktest.vue +++ b/frontend/src/views/backtest/PortfolioBacktest.vue @@ -1,6 +1,7 @@ @@ -193,14 +223,14 @@ async function onSubmit(): Promise {
-

组合策略回测

+

{{ viewTaskId ? '组合回测结果' : '组合策略回测' }}

BulletTrade + {{ strategyLabel }} · 本地执行回测 · MVP 验证链路

- + @@ -267,7 +297,7 @@ async function onSubmit(): Promise { -
+
{ {{ submitting ? `回测中${stageHint ? '(' + stageHint + ')' : '...'}` : '开始回测' }} - 异步执行,请勿关闭页面 + 异步执行 · 已等待 {{ elapsedSec }}s · 组合回测加载大库数据预计 1-3 分钟,请勿关闭