From d1a80a85c00a2c891ad93599b3c7accac1ed70c6 Mon Sep 17 00:00:00 2001 From: JzoNg Date: Thu, 9 Apr 2026 17:17:15 +0800 Subject: [PATCH] refactor(web): evaluation configure schema update --- .../evaluation/__tests__/index.spec.tsx | 10 ++++----- .../evaluation/__tests__/store.spec.ts | 22 +++++++++---------- .../components/metric-selector/utils.ts | 2 +- web/app/components/evaluation/store-utils.ts | 8 +++---- web/service/use-evaluation.ts | 18 +-------------- web/types/evaluation.ts | 18 +++++++-------- 6 files changed, 28 insertions(+), 50 deletions(-) diff --git a/web/app/components/evaluation/__tests__/index.spec.tsx b/web/app/components/evaluation/__tests__/index.spec.tsx index e2da9b196f..0e7e6b8c91 100644 --- a/web/app/components/evaluation/__tests__/index.spec.tsx +++ b/web/app/components/evaluation/__tests__/index.spec.tsx @@ -245,12 +245,10 @@ describe('Evaluation', () => { data: { evaluation_model: null, evaluation_model_provider: null, - metrics_config: { - default_metrics: [{ - metric: 'context-precision', - }], - customized_metrics: null, - }, + default_metrics: [{ + metric: 'context-precision', + }], + customized_metrics: null, judgement_conditions: null, }, }) diff --git a/web/app/components/evaluation/__tests__/store.spec.ts b/web/app/components/evaluation/__tests__/store.spec.ts index 3814b15219..843a0107e8 100644 --- a/web/app/components/evaluation/__tests__/store.spec.ts +++ b/web/app/components/evaluation/__tests__/store.spec.ts @@ -132,18 +132,16 @@ describe('evaluation store', () => { const config: EvaluationConfig = { evaluation_model: 'gpt-4o-mini', evaluation_model_provider: 'openai', - metrics_config: { - default_metrics: [{ - metric: 'faithfulness', - node_info_list: [ - { node_id: 'node-1', title: 'Retriever', type: 'retriever' }, - ], - }], - customized_metrics: { - evaluation_workflow_id: 'workflow-precision-review', - input_fields: { - 'app.input.query': 'query', - }, + default_metrics: [{ + metric: 'faithfulness', + node_info_list: [ + { node_id: 'node-1', title: 'Retriever', type: 'retriever' }, + ], + }], + customized_metrics: { + evaluation_workflow_id: 'workflow-precision-review', + input_fields: { + 'app.input.query': 'query', }, }, judgement_conditions: [{ diff --git a/web/app/components/evaluation/components/metric-selector/utils.ts b/web/app/components/evaluation/components/metric-selector/utils.ts index a88e5069d7..818c4b61da 100644 --- a/web/app/components/evaluation/components/metric-selector/utils.ts +++ b/web/app/components/evaluation/components/metric-selector/utils.ts @@ -3,7 +3,7 @@ import type { MetricVisualTone } from './types' import type { EvaluationTargetType, NodeInfo } from '@/types/evaluation' export const toEvaluationTargetType = (resourceType: 'apps' | 'snippets'): EvaluationTargetType => { - return resourceType === 'snippets' ? 'snippets' : 'app' + return resourceType === 'snippets' ? 'snippets' : 'apps' } const humanizeMetricId = (metricId: string) => { diff --git a/web/app/components/evaluation/store-utils.ts b/web/app/components/evaluation/store-utils.ts index b1c6baa4de..ee81a8b06b 100644 --- a/web/app/components/evaluation/store-utils.ts +++ b/web/app/components/evaluation/store-utils.ts @@ -16,7 +16,6 @@ import type { EvaluationDefaultMetric, EvaluationJudgementConditionGroup, EvaluationJudgementConditionItem, - EvaluationMetricsConfig, NodeInfo, } from '@/types/evaluation' import { getComparisonOperators, getDefaultOperator, getEvaluationMockConfig } from './mock' @@ -71,7 +70,7 @@ const normalizeNodeInfoList = (value: NodeInfo[] | undefined): NodeInfo[] => { const normalizeDefaultMetrics = ( resourceType: EvaluationResourceType, - value: EvaluationDefaultMetric[] | undefined, + value: EvaluationDefaultMetric[] | null | undefined, ): EvaluationMetric[] => { if (!value?.length) return [] @@ -292,9 +291,8 @@ export const buildStateFromEvaluationConfig = ( resourceType: EvaluationResourceType, config: EvaluationConfig, ): EvaluationResourceState => { - const metricsConfig: EvaluationMetricsConfig = config.metrics_config ?? {} - const defaultMetrics = normalizeDefaultMetrics(resourceType, metricsConfig.default_metrics) - const customMetrics = normalizeCustomMetric(metricsConfig.customized_metrics) + const defaultMetrics = normalizeDefaultMetrics(resourceType, config.default_metrics) + const customMetrics = normalizeCustomMetric(config.customized_metrics) return { ...buildInitialState(resourceType), diff --git a/web/service/use-evaluation.ts b/web/service/use-evaluation.ts index e57aa7e162..5b68588f63 100644 --- a/web/service/use-evaluation.ts +++ b/web/service/use-evaluation.ts @@ -29,30 +29,14 @@ const normalizeAvailableEvaluationWorkflowsParams = (params: AvailableEvaluation } } -const toEvaluationTargetType = (resourceType: Exclude) => { - return resourceType === 'snippets' ? 'snippets' : 'app' -} - const getEvaluationConfigQueryOptions = ( resourceType: EvaluationResourceType, resourceId: string, ) => { - if (resourceType === 'datasets') { - return consoleQuery.datasetEvaluation.config.queryOptions({ - input: { - params: { - datasetId: resourceId, - }, - }, - enabled: !!resourceId, - refetchOnWindowFocus: false, - }) - } - return consoleQuery.evaluation.config.queryOptions({ input: { params: { - targetType: toEvaluationTargetType(resourceType), + targetType: resourceType, targetId: resourceId, }, }, diff --git a/web/types/evaluation.ts b/web/types/evaluation.ts index 0c92d34fc2..ba329ae072 100644 --- a/web/types/evaluation.ts +++ b/web/types/evaluation.ts @@ -1,9 +1,4 @@ -export type EvaluationTargetType = 'app' | 'snippets' - -export type EvaluationMetricsConfig = { - default_metrics?: EvaluationDefaultMetric[] - customized_metrics?: EvaluationCustomizedMetric | null -} +export type EvaluationTargetType = 'apps' | 'snippets' | 'datasets' export type EvaluationConditionValue = string | number | boolean | null @@ -31,7 +26,8 @@ export type EvaluationJudgementConditions export type EvaluationConfig = { evaluation_model: string | null evaluation_model_provider: string | null - metrics_config: EvaluationMetricsConfig | null + default_metrics?: EvaluationDefaultMetric[] | null + customized_metrics?: EvaluationCustomizedMetric | null judgement_conditions: EvaluationJudgementConditions | null } @@ -43,19 +39,23 @@ export type NodeInfo = { export type EvaluationDefaultMetric = { metric?: string + value_type?: string node_info_list?: NodeInfo[] } export type EvaluationCustomizedMetric = { evaluation_workflow_id?: string input_fields?: Record - output_fields?: Array> + output_fields?: Array<{ + variable?: string + value_type?: string + }> } export type EvaluationConfigData = { evaluation_model?: string evaluation_model_provider?: string - default_metrics?: EvaluationDefaultMetric[] + default_metrics?: EvaluationDefaultMetric[] | null customized_metrics?: EvaluationCustomizedMetric | null judgment_config?: EvaluationJudgementConditions | null }