From a430284aa21e3ae1f0d5654e55b2ad2852519cc2 Mon Sep 17 00:00:00 2001 From: wwf <yearningwang@iqtogether.com> Date: 星期三, 04 六月 2025 15:17:49 +0800 Subject: [PATCH] 初始化 --- app/components/workflow/hooks/use-checklist.ts | 110 +++---------------------------------------------------- 1 files changed, 6 insertions(+), 104 deletions(-) diff --git a/app/components/workflow/hooks/use-checklist.ts b/app/components/workflow/hooks/use-checklist.ts index c1b0189..36201dd 100644 --- a/app/components/workflow/hooks/use-checklist.ts +++ b/app/components/workflow/hooks/use-checklist.ts @@ -1,12 +1,10 @@ import { useCallback, useMemo, - useRef, } from 'react' import { useTranslation } from 'react-i18next' import { useStoreApi } from 'reactflow' import type { - CommonNodeType, Edge, Node, } from '../types' @@ -26,13 +24,6 @@ import { useToastContext } from '@/app/components/base/toast' import { CollectionType } from '@/app/components/tools/types' import { useGetLanguage } from '@/context/i18n' -import type { AgentNodeType } from '../nodes/agent/types' -import { useStrategyProviders } from '@/service/use-strategy' -import { canFindTool } from '@/utils' -import { useDatasetsDetailStore } from '../datasets-detail-store/store' -import type { KnowledgeRetrievalNodeType } from '../nodes/knowledge-retrieval/types' -import type { DataSet } from '@/models/datasets' -import { fetchDatasets } from '@/service/datasets' export const useChecklist = (nodes: Node[], edges: Edge[]) => { const { t } = useTranslation() @@ -42,25 +33,6 @@ const buildInTools = useStore(s => s.buildInTools) const customTools = useStore(s => s.customTools) const workflowTools = useStore(s => s.workflowTools) - const { data: strategyProviders } = useStrategyProviders() - const datasetsDetail = useDatasetsDetailStore(s => s.datasetsDetail) - - const getCheckData = useCallback((data: CommonNodeType<{}>) => { - let checkData = data - if (data.type === BlockEnum.KnowledgeRetrieval) { - const datasetIds = (data as CommonNodeType<KnowledgeRetrievalNodeType>).dataset_ids - const _datasets = datasetIds.reduce<DataSet[]>((acc, id) => { - if (datasetsDetail[id]) - acc.push(datasetsDetail[id]) - return acc - }, []) - checkData = { - ...data, - _datasets, - } as CommonNodeType<KnowledgeRetrievalNodeType> - } - return checkData - }, [datasetsDetail]) const needWarningNodes = useMemo(() => { const list = [] @@ -76,7 +48,7 @@ moreDataForCheckValid = getToolCheckParams(node.data as ToolNodeType, buildInTools, customTools, workflowTools, language) if (provider_type === CollectionType.builtIn) - toolIcon = buildInTools.find(tool => canFindTool(tool.id, node.data.provider_id || ''))?.icon + toolIcon = buildInTools.find(tool => tool.id === node.data.provider_id)?.icon if (provider_type === CollectionType.custom) toolIcon = customTools.find(tool => tool.id === node.data.provider_id)?.icon @@ -85,22 +57,8 @@ toolIcon = workflowTools.find(tool => tool.id === node.data.provider_id)?.icon } - if (node.data.type === BlockEnum.Agent) { - const data = node.data as AgentNodeType - const isReadyForCheckValid = !!strategyProviders - const provider = strategyProviders?.find(provider => provider.declaration.identity.name === data.agent_strategy_provider_name) - const strategy = provider?.declaration.strategies?.find(s => s.identity.name === data.agent_strategy_name) - moreDataForCheckValid = { - provider, - strategy, - language, - isReadyForCheckValid, - } - } - if (node.type === CUSTOM_NODE) { - const checkData = getCheckData(node.data) - const { errorMessage } = nodesExtraData[node.data.type].checkValid(checkData, t, moreDataForCheckValid) + const { errorMessage } = nodesExtraData[node.data.type].checkValid(node.data, t, moreDataForCheckValid) if (errorMessage || !validNodes.find(n => n.id === node.id)) { list.push({ @@ -134,7 +92,7 @@ } return list - }, [nodes, edges, isChatMode, buildInTools, customTools, workflowTools, language, nodesExtraData, t, strategyProviders, getCheckData]) + }, [t, nodes, edges, nodesExtraData, buildInTools, customTools, workflowTools, language, isChatMode]) return needWarningNodes } @@ -149,32 +107,8 @@ const isChatMode = useIsChatMode() const store = useStoreApi() const nodesExtraData = useNodesExtraData() - const { data: strategyProviders } = useStrategyProviders() - const updateDatasetsDetail = useDatasetsDetailStore(s => s.updateDatasetsDetail) - const updateTime = useRef(0) - const getCheckData = useCallback((data: CommonNodeType<{}>, datasets: DataSet[]) => { - let checkData = data - if (data.type === BlockEnum.KnowledgeRetrieval) { - const datasetIds = (data as CommonNodeType<KnowledgeRetrievalNodeType>).dataset_ids - const datasetsDetail = datasets.reduce<Record<string, DataSet>>((acc, dataset) => { - acc[dataset.id] = dataset - return acc - }, {}) - const _datasets = datasetIds.reduce<DataSet[]>((acc, id) => { - if (datasetsDetail[id]) - acc.push(datasetsDetail[id]) - return acc - }, []) - checkData = { - ...data, - _datasets, - } as CommonNodeType<KnowledgeRetrievalNodeType> - } - return checkData - }, []) - - const handleCheckBeforePublish = useCallback(async () => { + const handleCheckBeforePublish = useCallback(() => { const { getNodes, edges, @@ -189,24 +123,6 @@ notify({ type: 'error', message: t('workflow.common.maxTreeDepth', { depth: MAX_TREE_DEPTH }) }) return false } - // Before publish, we need to fetch datasets detail, in case of the settings of datasets have been changed - const knowledgeRetrievalNodes = nodes.filter(node => node.data.type === BlockEnum.KnowledgeRetrieval) - const allDatasetIds = knowledgeRetrievalNodes.reduce<string[]>((acc, node) => { - return Array.from(new Set([...acc, ...(node.data as CommonNodeType<KnowledgeRetrievalNodeType>).dataset_ids])) - }, []) - let datasets: DataSet[] = [] - if (allDatasetIds.length > 0) { - updateTime.current = updateTime.current + 1 - const currUpdateTime = updateTime.current - const { data: datasetsDetail } = await fetchDatasets({ url: '/datasets', params: { page: 1, ids: allDatasetIds } }) - if (datasetsDetail && datasetsDetail.length > 0) { - // avoid old data to overwrite the new data - if (currUpdateTime < updateTime.current) - return false - datasets = datasetsDetail - updateDatasetsDetail(datasetsDetail) - } - } for (let i = 0; i < nodes.length; i++) { const node = nodes[i] @@ -214,21 +130,7 @@ if (node.data.type === BlockEnum.Tool) moreDataForCheckValid = getToolCheckParams(node.data as ToolNodeType, buildInTools, customTools, workflowTools, language) - if (node.data.type === BlockEnum.Agent) { - const data = node.data as AgentNodeType - const isReadyForCheckValid = !!strategyProviders - const provider = strategyProviders?.find(provider => provider.declaration.identity.name === data.agent_strategy_provider_name) - const strategy = provider?.declaration.strategies?.find(s => s.identity.name === data.agent_strategy_name) - moreDataForCheckValid = { - provider, - strategy, - language, - isReadyForCheckValid, - } - } - - const checkData = getCheckData(node.data, datasets) - const { errorMessage } = nodesExtraData[node.data.type as BlockEnum].checkValid(checkData, t, moreDataForCheckValid) + const { errorMessage } = nodesExtraData[node.data.type as BlockEnum].checkValid(node.data, t, moreDataForCheckValid) if (errorMessage) { notify({ type: 'error', message: `[${node.data.title}] ${errorMessage}` }) @@ -252,7 +154,7 @@ } return true - }, [store, isChatMode, notify, t, buildInTools, customTools, workflowTools, language, nodesExtraData, strategyProviders, updateDatasetsDetail, getCheckData]) + }, [nodesExtraData, notify, t, store, isChatMode, buildInTools, customTools, workflowTools, language]) return { handleCheckBeforePublish, -- Gitblit v1.8.0