From 468bfdfed9328f63afa85bc4477fe09b779f39af Mon Sep 17 00:00:00 2001 From: zxhlyh Date: Thu, 5 Jun 2025 15:07:01 +0800 Subject: [PATCH] datasource --- .../hooks/use-available-nodes-meta-data.ts | 4 +++ .../workflow/nodes/data-source/constants.ts | 23 ++++++++++++++++ .../workflow/nodes/data-source/default.ts | 22 --------------- .../nodes/data-source/hooks/use-config.ts | 27 +++++++++++++++---- .../workflow/nodes/data-source/panel.tsx | 17 +++++++----- web/app/components/workflow/types.ts | 1 + 6 files changed, 61 insertions(+), 33 deletions(-) diff --git a/web/app/components/rag-pipeline/hooks/use-available-nodes-meta-data.ts b/web/app/components/rag-pipeline/hooks/use-available-nodes-meta-data.ts index ac35df2720..368224782f 100644 --- a/web/app/components/rag-pipeline/hooks/use-available-nodes-meta-data.ts +++ b/web/app/components/rag-pipeline/hooks/use-available-nodes-meta-data.ts @@ -14,6 +14,10 @@ export const useAvailableNodesMetaData = () => { ...WORKFLOW_COMMON_NODES, { ...dataSourceDefault, + defaultValue: { + ...dataSourceDefault.defaultValue, + _dataSourceStartToAdd: true, + }, metaData: { ...dataSourceDefault.metaData, isStart: true, diff --git a/web/app/components/workflow/nodes/data-source/constants.ts b/web/app/components/workflow/nodes/data-source/constants.ts index 9d6392141e..10aa058a71 100644 --- a/web/app/components/workflow/nodes/data-source/constants.ts +++ b/web/app/components/workflow/nodes/data-source/constants.ts @@ -1,5 +1,28 @@ import { VarType } from '@/app/components/workflow/types' +export const DEFAULT_FILE_EXTENSIONS_IN_LOCAL_FILE_DATA_SOURCE = [ + 'txt', + 'markdown', + 'mdx', + 'pdf', + 'html', + 'xlsx', + 'xls', + 'vtt', + 'properties', + 'doc', + 'docx', + 'csv', + 'eml', + 'msg', + 'pptx', + 'xml', + 'epub', + 'ppt', + 'md', + 'html', +] + export const OUTPUT_VARIABLES_MAP = { datasource_type: { name: 'datasource_type', diff --git a/web/app/components/workflow/nodes/data-source/default.ts b/web/app/components/workflow/nodes/data-source/default.ts index 9859be30cb..c6e73c5c34 100644 --- a/web/app/components/workflow/nodes/data-source/default.ts +++ b/web/app/components/workflow/nodes/data-source/default.ts @@ -11,28 +11,6 @@ const metaData = genNodeMetaData({ const nodeDefault: NodeDefault = { metaData, defaultValue: { - fileExtensions: [ - 'txt', - 'markdown', - 'mdx', - 'pdf', - 'html', - 'xlsx', - 'xls', - 'vtt', - 'properties', - 'doc', - 'docx', - 'csv', - 'eml', - 'msg', - 'pptx', - 'xml', - 'epub', - 'ppt', - 'md', - 'html', - ], datasource_parameters: {}, datasource_configurations: {}, }, diff --git a/web/app/components/workflow/nodes/data-source/hooks/use-config.ts b/web/app/components/workflow/nodes/data-source/hooks/use-config.ts index 57e79aac92..9473ebe717 100644 --- a/web/app/components/workflow/nodes/data-source/hooks/use-config.ts +++ b/web/app/components/workflow/nodes/data-source/hooks/use-config.ts @@ -1,18 +1,18 @@ -import { useCallback } from 'react' +import { + useCallback, + useEffect, +} from 'react' import { useStoreApi } from 'reactflow' -import { useTranslation } from 'react-i18next' import { useNodeDataUpdate } from '@/app/components/workflow/hooks' import type { DataSourceNodeType, ToolVarInputs, } from '../types' -import { useToastContext } from '@/app/components/base/toast' +import { DEFAULT_FILE_EXTENSIONS_IN_LOCAL_FILE_DATA_SOURCE } from '../constants' export const useConfig = (id: string) => { const store = useStoreApi() const { handleNodeDataUpdateWithSyncDraft } = useNodeDataUpdate() - const { notify } = useToastContext() - const { t } = useTranslation() const getNodeData = useCallback(() => { const { getNodes } = store.getState() @@ -27,6 +27,23 @@ export const useConfig = (id: string) => { data, }) }, [id, handleNodeDataUpdateWithSyncDraft]) + + const handleLocalFileDataSourceInit = useCallback(() => { + const nodeData = getNodeData() + + if (nodeData?.data._dataSourceStartToAdd && nodeData?.data.provider_type === 'local_file') { + handleNodeDataUpdate({ + ...nodeData.data, + _dataSourceStartToAdd: false, + fileExtensions: DEFAULT_FILE_EXTENSIONS_IN_LOCAL_FILE_DATA_SOURCE, + }) + } + }, [getNodeData, handleNodeDataUpdate]) + + useEffect(() => { + handleLocalFileDataSourceInit() + }, [handleLocalFileDataSourceInit]) + const handleFileExtensionsChange = useCallback((fileExtensions: string[]) => { const nodeData = getNodeData() handleNodeDataUpdate({ diff --git a/web/app/components/workflow/nodes/data-source/panel.tsx b/web/app/components/workflow/nodes/data-source/panel.tsx index f28e19d919..fb21678e53 100644 --- a/web/app/components/workflow/nodes/data-source/panel.tsx +++ b/web/app/components/workflow/nodes/data-source/panel.tsx @@ -12,7 +12,6 @@ import type { NodePanelProps } from '@/app/components/workflow/types' import { BoxGroupField, Group, - GroupField, } from '@/app/components/workflow/nodes/_base/components/layout' import OutputVars, { VarItem } from '@/app/components/workflow/nodes/_base/components/output-vars' import TagInput from '@/app/components/base/tag-input' @@ -86,7 +85,7 @@ const Panel: FC> = ({ id, data }) => { return (
{ - !isAuthorized && !showAuthModal && !isLocalFile && ( + !isAuthorized && !showAuthModal && !isLocalFile && currentDataSource && (