From 8cb634c9bc1d68cc778cb4a76473e2884ff1d8d0 Mon Sep 17 00:00:00 2001 From: JzoNg Date: Mon, 30 Mar 2026 11:27:06 +0800 Subject: [PATCH] feat(web): evaluation layout --- .../components/batch-test-panel.tsx | 71 +++++++++++-------- .../components/conditions-section.tsx | 36 ++++++---- .../components/judge-model-selector.tsx | 2 +- .../evaluation/components/metric-section.tsx | 29 ++++++-- .../evaluation/components/metric-selector.tsx | 32 +++++++-- .../evaluation/components/section-header.tsx | 55 +++++++++++++- web/app/components/evaluation/index.tsx | 40 ++++++++--- web/i18n/en-US/evaluation.json | 8 ++- web/i18n/zh-Hans/evaluation.json | 8 ++- 9 files changed, 207 insertions(+), 74 deletions(-) diff --git a/web/app/components/evaluation/components/batch-test-panel.tsx b/web/app/components/evaluation/components/batch-test-panel.tsx index 4a03de1b38..2d95abf86d 100644 --- a/web/app/components/evaluation/components/batch-test-panel.tsx +++ b/web/app/components/evaluation/components/batch-test-panel.tsx @@ -17,6 +17,10 @@ const BatchTestPanel = ({ }: EvaluationResourceProps) => { const { t } = useTranslation('evaluation') const config = getEvaluationMockConfig(resourceType) + const requirementFields = config.fieldOptions + .filter(field => field.id.includes('.input.') || field.group.toLowerCase().includes('input')) + .slice(0, 4) + const displayedRequirementFields = requirementFields.length > 0 ? requirementFields : config.fieldOptions.slice(0, 4) const tabLabels = { 'input-fields': t('batch.tabs.input-fields'), 'history': t('batch.tabs.history'), @@ -32,6 +36,7 @@ const BatchTestPanel = ({ const runBatchTest = useEvaluationStore(state => state.runBatchTest) const fileInputRef = useRef(null) const isRunnable = isEvaluationRunnable(resource) + const isPanelReady = !!resource.judgeModelId && resource.metrics.length > 0 const handleDownloadTemplate = () => { const content = ['case_id,input,expected', '1,Example input,Example output'].join('\n') @@ -51,24 +56,27 @@ const BatchTestPanel = ({ } return ( -
-
-
-