diff --git a/web/app/components/workflow/nodes/_base/components/workflow-panel/last-run/use-last-run.ts b/web/app/components/workflow/nodes/_base/components/workflow-panel/last-run/use-last-run.ts index d0a87fd61d..3af9133176 100644 --- a/web/app/components/workflow/nodes/_base/components/workflow-panel/last-run/use-last-run.ts +++ b/web/app/components/workflow/nodes/_base/components/workflow-panel/last-run/use-last-run.ts @@ -19,6 +19,7 @@ import useLoopSingleRunFormParams from '@/app/components/workflow/nodes/loop/use import useIfElseSingleRunFormParams from '@/app/components/workflow/nodes/if-else/use-single-run-form-params' import useVariableAggregatorSingleRunFormParams from '@/app/components/workflow/nodes/variable-assigner/use-single-run-form-params' import useVariableAssignerSingleRunFormParams from '@/app/components/workflow/nodes/assigner/use-single-run-form-params' +import useKnowledgeBaseSingleRunFormParams from '@/app/components/workflow/nodes/knowledge-base/use-single-run-form-params' import useToolGetDataForCheckMore from '@/app/components/workflow/nodes/tool/use-get-data-for-check-more' import { VALUE_SELECTOR_DELIMITER as DELIMITER } from '@/config' @@ -51,6 +52,7 @@ const singleRunFormParamsHooks: Record = { [BlockEnum.IfElse]: useIfElseSingleRunFormParams, [BlockEnum.VariableAggregator]: useVariableAggregatorSingleRunFormParams, [BlockEnum.Assigner]: useVariableAssignerSingleRunFormParams, + [BlockEnum.KnowledgeBase]: useKnowledgeBaseSingleRunFormParams, [BlockEnum.VariableAssigner]: undefined, [BlockEnum.End]: undefined, [BlockEnum.Answer]: undefined, @@ -60,7 +62,6 @@ const singleRunFormParamsHooks: Record = { [BlockEnum.LoopEnd]: undefined, [BlockEnum.DataSource]: undefined, [BlockEnum.DataSourceEmpty]: undefined, - [BlockEnum.KnowledgeBase]: undefined, } const useSingleRunFormParamsHooks = (nodeType: BlockEnum) => { diff --git a/web/app/components/workflow/nodes/knowledge-base/use-single-run-form-params.ts b/web/app/components/workflow/nodes/knowledge-base/use-single-run-form-params.ts new file mode 100644 index 0000000000..707407a589 --- /dev/null +++ b/web/app/components/workflow/nodes/knowledge-base/use-single-run-form-params.ts @@ -0,0 +1,59 @@ +import { useTranslation } from 'react-i18next' +import type { InputVar, Variable } from '@/app/components/workflow/types' +import { InputVarType } from '@/app/components/workflow/types' +import { useCallback, useMemo } from 'react' +import type { KnowledgeBaseNodeType } from './types' + +type Params = { + id: string, + payload: KnowledgeBaseNodeType + runInputData: Record + getInputVars: (textList: string[]) => InputVar[] + setRunInputData: (data: Record) => void + toVarInputs: (variables: Variable[]) => InputVar[] +} +const useSingleRunFormParams = ({ + payload, + runInputData, + setRunInputData, +}: Params) => { + const { t } = useTranslation() + const query = runInputData.query + const setQuery = useCallback((newQuery: string) => { + setRunInputData({ + ...runInputData, + query: newQuery, + }) + }, [runInputData, setRunInputData]) + + const forms = useMemo(() => { + return [ + { + inputs: [{ + label: t('workflow.nodes.common.inputVars'), + variable: 'query', + type: InputVarType.paragraph, + required: true, + }], + values: { query }, + onChange: (keyValue: Record) => setQuery(keyValue.query), + }, + ] + }, [query, setQuery, t]) + + const getDependentVars = () => { + return [payload.index_chunk_variable_selector] + } + const getDependentVar = (variable: string) => { + if(variable === 'query') + return payload.index_chunk_variable_selector + } + + return { + forms, + getDependentVars, + getDependentVar, + } +} + +export default useSingleRunFormParams diff --git a/web/app/components/workflow/utils/workflow.ts b/web/app/components/workflow/utils/workflow.ts index 5f8bf27683..fd0c30e5cf 100644 --- a/web/app/components/workflow/utils/workflow.ts +++ b/web/app/components/workflow/utils/workflow.ts @@ -38,7 +38,6 @@ export const canRunBySingle = (nodeType: BlockEnum, isChildNode: boolean) => { || nodeType === BlockEnum.VariableAggregator || nodeType === BlockEnum.Assigner || nodeType === BlockEnum.DataSource - // || nodeType === BlockEnum.KnowledgeBase } export const isSupportCustomRunForm = (nodeType: BlockEnum) => {