diff --git a/web/app/components/workflow/nodes/knowledge-retrieval/default.ts b/web/app/components/workflow/nodes/knowledge-retrieval/default.ts index 958e176e2f..540cb8a869 100644 --- a/web/app/components/workflow/nodes/knowledge-retrieval/default.ts +++ b/web/app/components/workflow/nodes/knowledge-retrieval/default.ts @@ -4,6 +4,7 @@ import type { KnowledgeRetrievalNodeType } from './types' import { ALL_CHAT_AVAILABLE_BLOCKS, ALL_COMPLETION_AVAILABLE_BLOCKS } from '@/app/components/workflow/constants' import { RETRIEVE_TYPE } from '@/types/app' +const i18nPrefix = 'workflow' const nodeDefault: NodeDefault = { defaultValue: { @@ -21,15 +22,22 @@ const nodeDefault: NodeDefault = { const nodes = isChatMode ? ALL_CHAT_AVAILABLE_BLOCKS : ALL_COMPLETION_AVAILABLE_BLOCKS return nodes }, - checkValid(payload: KnowledgeRetrievalNodeType) { - let isValid = true + checkValid(payload: KnowledgeRetrievalNodeType, t: any) { let errorMessages = '' - if (payload.type) { - isValid = true - errorMessages = '' - } + if (!errorMessages && (!payload.query_variable_selector || payload.query_variable_selector.length === 0)) + errorMessages = t(`${i18nPrefix}.errorMsg.fieldRequired`, { field: t(`${i18nPrefix}.nodes.knowledgeRetrieval.queryVariable`) }) + + if (!errorMessages && (!payload.dataset_ids || payload.dataset_ids.length === 0)) + errorMessages = t(`${i18nPrefix}.errorMsg.fieldRequired`, { field: t(`${i18nPrefix}.nodes.knowledgeRetrieval.knowledge`) }) + + if (!errorMessages && payload.retrieval_mode === RETRIEVE_TYPE.multiWay && !payload.multiple_retrieval_config?.reranking_model?.provider) + errorMessages = t(`${i18nPrefix}.errorMsg.fieldRequired`, { field: t(`${i18nPrefix}.errorMsg.fields.rerankModel`) }) + + if (!errorMessages && payload.retrieval_mode === RETRIEVE_TYPE.oneWay && !payload.single_retrieval_config?.model?.provider) + errorMessages = t(`${i18nPrefix}.errorMsg.fieldRequired`, { field: t('common.modelProvider.systemReasoningModel.key') }) + return { - isValid, + isValid: !errorMessages, errorMessage: errorMessages, } }, diff --git a/web/i18n/en-US/workflow.ts b/web/i18n/en-US/workflow.ts index da67a3fb6e..22f710d39b 100644 --- a/web/i18n/en-US/workflow.ts +++ b/web/i18n/en-US/workflow.ts @@ -36,6 +36,7 @@ const translation = { variableValue: 'Variable Value', code: 'Code', model: 'Model', + rerankModel: 'Rerank Model', }, }, singleRun: { diff --git a/web/i18n/zh-Hans/workflow.ts b/web/i18n/zh-Hans/workflow.ts index 2df76fb6f1..4cbb19af7d 100644 --- a/web/i18n/zh-Hans/workflow.ts +++ b/web/i18n/zh-Hans/workflow.ts @@ -36,6 +36,7 @@ const translation = { variableValue: '变量值', code: '代码', model: '模型', + rerankModel: 'Rerank 模型', }, }, singleRun: {