From 3688842cc7a0e90539fd145d7ed64bb4704e3f1b Mon Sep 17 00:00:00 2001 From: heheer Date: Tue, 13 May 2025 17:58:51 +0800 Subject: [PATCH] filter tool type version & fix unpublished version (#4803) --- .../service/core/app/plugin/controller.ts | 25 +++--- .../service/core/app/version/controller.ts | 3 + .../web/components/common/MySelect/index.tsx | 79 ++++++++++--------- .../Flow/nodes/render/NodeCard.tsx | 4 +- 4 files changed, 57 insertions(+), 54 deletions(-) diff --git a/packages/service/core/app/plugin/controller.ts b/packages/service/core/app/plugin/controller.ts index 2237a75da..d8fa45fe4 100644 --- a/packages/service/core/app/plugin/controller.ts +++ b/packages/service/core/app/plugin/controller.ts @@ -22,8 +22,7 @@ import { import { type PluginRuntimeType } from '@fastgpt/global/core/plugin/type'; import { MongoSystemPlugin } from './systemPluginSchema'; import { PluginErrEnum } from '@fastgpt/global/common/error/code/plugin'; -import { MongoAppVersion } from '../version/schema'; -import { i18nT } from '../../../../web/i18n/utils'; +import { Types } from 'mongoose'; /* plugin id rule: @@ -111,19 +110,13 @@ export async function getChildAppPreviewNode({ const version = await getAppVersionById({ appId, versionId, app: item }); - if (!version.versionId) return Promise.reject(i18nT('common:app_not_version')); - - const versionData = await MongoAppVersion.findById( - version.versionId, - '_id versionName appId time' - ).lean(); - - const isLatest = versionData - ? await checkIsLatestVersion({ - appId, - versionId: versionData._id - }) - : true; + const isLatest = + version.versionId && Types.ObjectId.isValid(version.versionId) + ? await checkIsLatestVersion({ + appId, + versionId: version.versionId + }) + : true; return { id: String(item._id), @@ -140,7 +133,7 @@ export async function getChildAppPreviewNode({ templateType: FlowNodeTemplateTypeEnum.teamApp, version: version.versionId, - versionLabel: versionData?.versionName || '', + versionLabel: version?.versionName || '', isLatestVersion: isLatest, originCost: 0, diff --git a/packages/service/core/app/version/controller.ts b/packages/service/core/app/version/controller.ts index 7ec631664..dbb008e26 100644 --- a/packages/service/core/app/version/controller.ts +++ b/packages/service/core/app/version/controller.ts @@ -15,6 +15,7 @@ export const getAppLatestVersion = async (appId: string, app?: AppSchema) => { if (version) { return { versionId: version._id, + versionName: version.versionName, nodes: version.nodes, edges: version.edges, chatConfig: version.chatConfig || app?.chatConfig || {} @@ -22,6 +23,7 @@ export const getAppLatestVersion = async (appId: string, app?: AppSchema) => { } return { versionId: app?.pluginData?.nodeVersion, + versionName: app?.name, nodes: app?.modules || [], edges: app?.edges || [], chatConfig: app?.chatConfig || {} @@ -47,6 +49,7 @@ export const getAppVersionById = async ({ if (version) { return { versionId: version._id, + versionName: version.versionName, nodes: version.nodes, edges: version.edges, chatConfig: version.chatConfig || app?.chatConfig || {} diff --git a/packages/web/components/common/MySelect/index.tsx b/packages/web/components/common/MySelect/index.tsx index 28172cdea..6534a4d41 100644 --- a/packages/web/components/common/MySelect/index.tsx +++ b/packages/web/components/common/MySelect/index.tsx @@ -24,6 +24,7 @@ import { useRequest2 } from '../../../hooks/useRequest'; import MyDivider from '../MyDivider'; import type { useScrollPagination } from '../../../hooks/useScrollPagination'; import Avatar from '../Avatar'; +import EmptyTip from '../EmptyTip'; /** 选择组件 Props 类型 * value: 选中的值 @@ -141,43 +142,49 @@ const MySelect = ( const ListRender = useMemo(() => { return ( <> - {filterList.map((item, i) => ( - - 0 ? ( + filterList.map((item, i) => ( + + { + if (value !== item.value) { + onClickChange(item.value); } - : { - color: 'myGray.900' - })} - onClick={() => { - if (value !== item.value) { - onClickChange(item.value); - } - }} - whiteSpace={'pre-wrap'} - fontSize={'sm'} - display={'block'} - mb={0.5} - > - - {item.icon && } - {item.label} - - {item.description && ( - - {item.description} - - )} - - {item.showBorder && } - - ))} + }} + whiteSpace={'pre-wrap'} + fontSize={'sm'} + display={'block'} + mb={0.5} + > + + {item.icon && ( + + )} + {item.label} + + {item.description && ( + + {item.description} + + )} + + {item.showBorder && } + + )) + ) : ( + + )} ); }, [filterList, onClickChange, value]); diff --git a/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/NodeCard.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/NodeCard.tsx index 6c261262a..76d47f2bb 100644 --- a/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/NodeCard.tsx +++ b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/NodeCard.tsx @@ -104,8 +104,8 @@ const NodeCard = (props: Props) => { const isAppNode = node && AppNodeFlowNodeTypeMap[node?.flowNodeType]; const showVersion = useMemo(() => { if (!isAppNode || !node?.pluginId) return false; - const splitRes = node.pluginId.split('-'); - if (splitRes.length > 1) { + if ([FlowNodeTypeEnum.tool, FlowNodeTypeEnum.toolSet].includes(node.flowNodeType)) return false; + if (node.pluginId.split('-').length > 1) { return false; } return true;