diff --git a/web/app/components/workflow/nodes/knowledge-retrieval/components/add-dataset.tsx b/web/app/components/workflow/nodes/knowledge-retrieval/components/add-dataset.tsx new file mode 100644 index 0000000000..010ecbb966 --- /dev/null +++ b/web/app/components/workflow/nodes/knowledge-retrieval/components/add-dataset.tsx @@ -0,0 +1,41 @@ +'use client' +import { useBoolean } from 'ahooks' +import type { FC } from 'react' +import React, { useCallback } from 'react' +import AddButton from '@/app/components/base/button/add-button' +import SelectDataset from '@/app/components/app/configuration/dataset-config/select-dataset' +import type { DataSet } from '@/models/datasets' + +type Props = { + selectedIds: string[] + onChange: (dataSets: DataSet[]) => void +} + +const AddDataset: FC = ({ + selectedIds, + onChange, +}) => { + const [isShowModal, { + setTrue: showModal, + setFalse: hideModal, + }] = useBoolean(false) + + const handleSelect = useCallback((datasets: DataSet[]) => { + onChange(datasets) + hideModal() + }, [onChange, hideModal]) + return ( +
+ + {isShowModal && ( + + )} +
+ ) +} +export default React.memo(AddDataset) diff --git a/web/app/components/workflow/nodes/knowledge-retrieval/components/retrieval-config.tsx b/web/app/components/workflow/nodes/knowledge-retrieval/components/retrieval-config.tsx index 34387f2af6..ca9cd616ef 100644 --- a/web/app/components/workflow/nodes/knowledge-retrieval/components/retrieval-config.tsx +++ b/web/app/components/workflow/nodes/knowledge-retrieval/components/retrieval-config.tsx @@ -39,7 +39,6 @@ const RetrievalConfig: FC = ({ const { defaultModel: rerankDefaultModel, - currentModel: isRerankDefaultModelVaild, } = useModelListAndDefaultModelAndCurrentProviderAndModel(3) const { multiple_retrieval_config } = payload diff --git a/web/app/components/workflow/nodes/knowledge-retrieval/panel.tsx b/web/app/components/workflow/nodes/knowledge-retrieval/panel.tsx index 68c3a7bacb..c7254ff31b 100644 --- a/web/app/components/workflow/nodes/knowledge-retrieval/panel.tsx +++ b/web/app/components/workflow/nodes/knowledge-retrieval/panel.tsx @@ -4,6 +4,7 @@ import VarReferencePicker from '../_base/components/variable/var-reference-picke import useConfig from './use-config' import { mockData } from './mock' import RetrievalConfig from './components/retrieval-config' +import AddKnowledge from './components/add-dataset' import Field from '@/app/components/workflow/nodes/_base/components/field' import Split from '@/app/components/workflow/nodes/_base/components/split' import OutputVars, { VarItem } from '@/app/components/workflow/nodes/_base/components/output-vars' @@ -18,6 +19,7 @@ const Panel: FC = () => { handleQueryVarChange, handleRetrievalModeChange, handleMultipleRetrievalConfigChange, + handleOnDatasetsChange, } = useConfig(mockData) return ( @@ -37,7 +39,7 @@ const Panel: FC = () => { +
{ onRetrievalModeChange={handleRetrievalModeChange} onMultipleRetrievalConfigChange={handleMultipleRetrievalConfigChange} /> +
+
} > - + list
diff --git a/web/app/components/workflow/nodes/knowledge-retrieval/use-config.ts b/web/app/components/workflow/nodes/knowledge-retrieval/use-config.ts index 373955158f..8b8b72ca46 100644 --- a/web/app/components/workflow/nodes/knowledge-retrieval/use-config.ts +++ b/web/app/components/workflow/nodes/knowledge-retrieval/use-config.ts @@ -3,10 +3,11 @@ import produce from 'immer' import type { ValueSelector } from '../../types' import type { KnowledgeRetrievalNodeType, MultipleRetrievalConfig } from './types' import type { RETRIEVE_TYPE } from '@/types/app' +import type { DataSet } from '@/models/datasets' const useConfig = (initInputs: KnowledgeRetrievalNodeType) => { const [inputs, setInputs] = useState(initInputs) - + const [selectedDatasets, setSelectedDatasets] = useState([]) const handleQueryVarChange = useCallback((newVar: ValueSelector) => { const newInputs = produce(inputs, (draft) => { draft.query_variable_selector = newVar @@ -28,11 +29,20 @@ const useConfig = (initInputs: KnowledgeRetrievalNodeType) => { setInputs(newInputs) }, [inputs, setInputs]) + const handleOnDatasetsChange = useCallback((newDatasets: DataSet[]) => { + const newInputs = produce(inputs, (draft) => { + draft.dataset_ids = newDatasets.map(d => d.id) + }) + setInputs(newInputs) + setSelectedDatasets(newDatasets) + }, [inputs, setInputs]) + return { inputs, handleQueryVarChange, handleRetrievalModeChange, handleMultipleRetrievalConfigChange, + handleOnDatasetsChange, } }