tool author (#5665)

* tool author

* doc

* doc
This commit is contained in:
Archer
2025-09-17 17:06:18 +08:00
committed by GitHub
parent 4333eb9caa
commit 235b50c07f
6 changed files with 43 additions and 11 deletions

View File

@@ -103,6 +103,7 @@ description: FastGPT 文档目录
- [/docs/upgrading/4-12/4122](/docs/upgrading/4-12/4122) - [/docs/upgrading/4-12/4122](/docs/upgrading/4-12/4122)
- [/docs/upgrading/4-12/4123](/docs/upgrading/4-12/4123) - [/docs/upgrading/4-12/4123](/docs/upgrading/4-12/4123)
- [/docs/upgrading/4-12/4124](/docs/upgrading/4-12/4124) - [/docs/upgrading/4-12/4124](/docs/upgrading/4-12/4124)
- [/docs/upgrading/4-12/4125](/docs/upgrading/4-12/4125)
- [/docs/upgrading/4-8/40](/docs/upgrading/4-8/40) - [/docs/upgrading/4-8/40](/docs/upgrading/4-8/40)
- [/docs/upgrading/4-8/41](/docs/upgrading/4-8/41) - [/docs/upgrading/4-8/41](/docs/upgrading/4-8/41)
- [/docs/upgrading/4-8/42](/docs/upgrading/4-8/42) - [/docs/upgrading/4-8/42](/docs/upgrading/4-8/42)

View File

@@ -0,0 +1,18 @@
---
title: 'V4.12.5(进行中)'
description: 'FastGPT V4.12.5 更新说明'
---
## 🚀 新增内容
## ⚙️ 优化
1. 系统工具增加对应 author 名字显示。同时使用安全的 I18n 翻译。
## 🐛 修复
## 🔨 插件更新
1. 新增火山引擎融合信息搜索工具。

View File

@@ -1,5 +1,5 @@
{ {
"title": "4.12.x", "title": "4.12.x",
"description": "", "description": "",
"pages": ["4124", "4123", "4122", "4121", "4120"] "pages": ["4125", "4124", "4123", "4122", "4121", "4120"]
} }

View File

@@ -97,7 +97,7 @@
"document/content/docs/protocol/terms.en.mdx": "2025-08-03T22:37:45+08:00", "document/content/docs/protocol/terms.en.mdx": "2025-08-03T22:37:45+08:00",
"document/content/docs/protocol/terms.mdx": "2025-08-03T22:37:45+08:00", "document/content/docs/protocol/terms.mdx": "2025-08-03T22:37:45+08:00",
"document/content/docs/toc.en.mdx": "2025-08-04T13:42:36+08:00", "document/content/docs/toc.en.mdx": "2025-08-04T13:42:36+08:00",
"document/content/docs/toc.mdx": "2025-09-15T20:02:54+08:00", "document/content/docs/toc.mdx": "2025-09-17T17:03:12+08:00",
"document/content/docs/upgrading/4-10/4100.mdx": "2025-08-02T19:38:37+08:00", "document/content/docs/upgrading/4-10/4100.mdx": "2025-08-02T19:38:37+08:00",
"document/content/docs/upgrading/4-10/4101.mdx": "2025-09-08T20:07:20+08:00", "document/content/docs/upgrading/4-10/4101.mdx": "2025-09-08T20:07:20+08:00",
"document/content/docs/upgrading/4-11/4110.mdx": "2025-08-05T23:20:39+08:00", "document/content/docs/upgrading/4-11/4110.mdx": "2025-08-05T23:20:39+08:00",
@@ -106,7 +106,8 @@
"document/content/docs/upgrading/4-12/4121.mdx": "2025-09-07T14:41:48+08:00", "document/content/docs/upgrading/4-12/4121.mdx": "2025-09-07T14:41:48+08:00",
"document/content/docs/upgrading/4-12/4122.mdx": "2025-09-07T14:41:48+08:00", "document/content/docs/upgrading/4-12/4122.mdx": "2025-09-07T14:41:48+08:00",
"document/content/docs/upgrading/4-12/4123.mdx": "2025-09-07T20:55:14+08:00", "document/content/docs/upgrading/4-12/4123.mdx": "2025-09-07T20:55:14+08:00",
"document/content/docs/upgrading/4-12/4124.mdx": "2025-09-15T20:39:54+08:00", "document/content/docs/upgrading/4-12/4124.mdx": "2025-09-16T10:46:55+08:00",
"document/content/docs/upgrading/4-12/4125.mdx": "2025-09-17T17:03:12+08:00",
"document/content/docs/upgrading/4-8/40.mdx": "2025-08-02T19:38:37+08:00", "document/content/docs/upgrading/4-8/40.mdx": "2025-08-02T19:38:37+08:00",
"document/content/docs/upgrading/4-8/41.mdx": "2025-08-02T19:38:37+08:00", "document/content/docs/upgrading/4-8/41.mdx": "2025-08-02T19:38:37+08:00",
"document/content/docs/upgrading/4-8/42.mdx": "2025-08-02T19:38:37+08:00", "document/content/docs/upgrading/4-8/42.mdx": "2025-08-02T19:38:37+08:00",
@@ -186,6 +187,6 @@
"document/content/docs/use-cases/external-integration/feishu.mdx": "2025-07-24T14:23:04+08:00", "document/content/docs/use-cases/external-integration/feishu.mdx": "2025-07-24T14:23:04+08:00",
"document/content/docs/use-cases/external-integration/official_account.mdx": "2025-08-05T23:20:39+08:00", "document/content/docs/use-cases/external-integration/official_account.mdx": "2025-08-05T23:20:39+08:00",
"document/content/docs/use-cases/external-integration/openapi.mdx": "2025-08-14T18:54:47+08:00", "document/content/docs/use-cases/external-integration/openapi.mdx": "2025-08-14T18:54:47+08:00",
"document/content/docs/use-cases/external-integration/wecom.mdx": "2025-09-15T20:02:54+08:00", "document/content/docs/use-cases/external-integration/wecom.mdx": "2025-09-16T14:22:28+08:00",
"document/content/docs/use-cases/index.mdx": "2025-07-24T14:23:04+08:00" "document/content/docs/use-cases/index.mdx": "2025-07-24T14:23:04+08:00"
} }

View File

@@ -50,6 +50,8 @@ import type { LLMModelItemType } from '@fastgpt/global/core/ai/model.d';
import { workflowStartNodeId } from '@/web/core/app/constants'; import { workflowStartNodeId } from '@/web/core/app/constants';
import ConfigToolModal from './ConfigToolModal'; import ConfigToolModal from './ConfigToolModal';
import CostTooltip from '@/components/core/app/plugin/CostTooltip'; import CostTooltip from '@/components/core/app/plugin/CostTooltip';
import { useSafeTranslation } from '@fastgpt/web/hooks/useSafeTranslation';
import { useSystemStore } from '@/web/common/system/useSystemStore';
type Props = { type Props = {
selectedTools: FlowNodeTemplateType[]; selectedTools: FlowNodeTemplateType[];
@@ -222,8 +224,10 @@ const RenderList = React.memo(function RenderList({
type: TemplateTypeEnum; type: TemplateTypeEnum;
setParentId: (parentId: ParentIdType) => any; setParentId: (parentId: ParentIdType) => any;
}) { }) {
const { t, i18n } = useTranslation(); const { i18n } = useTranslation();
const lang = i18n.language as localeType; const { t } = useSafeTranslation();
const { feConfigs } = useSystemStore();
const [configTool, setConfigTool] = useState<FlowNodeTemplateType>(); const [configTool, setConfigTool] = useState<FlowNodeTemplateType>();
const onCloseConfigTool = useCallback(() => setConfigTool(undefined), []); const onCloseConfigTool = useCallback(() => setConfigTool(undefined), []);
const { toast } = useToast(); const { toast } = useToast();
@@ -424,7 +428,7 @@ const RenderList = React.memo(function RenderList({
key={template.id} key={template.id}
placement={'right'} placement={'right'}
label={ label={
<Box py={2}> <Box py={2} minW={['auto', '250px']}>
<Flex alignItems={'center'}> <Flex alignItems={'center'}>
<MyAvatar <MyAvatar
src={template.avatar} src={template.avatar}
@@ -432,9 +436,12 @@ const RenderList = React.memo(function RenderList({
objectFit={'contain'} objectFit={'contain'}
borderRadius={'sm'} borderRadius={'sm'}
/> />
<Box fontWeight={'bold'} ml={3} color={'myGray.900'}> <Box fontWeight={'bold'} ml={3} color={'myGray.900'} flex={'1'}>
{t(template.name as any)} {t(template.name as any)}
</Box> </Box>
<Box color={'myGray.500'}>
By {template.author || feConfigs?.systemTitle}
</Box>
</Flex> </Flex>
<Box mt={2} color={'myGray.500'} maxH={'100px'} overflow={'hidden'}> <Box mt={2} color={'myGray.500'} maxH={'100px'} overflow={'hidden'}>
{t(template.intro as any) || t('common:core.workflow.Not intro')} {t(template.intro as any) || t('common:core.workflow.Not intro')}

View File

@@ -46,6 +46,8 @@ import { nodeTemplate2FlowNode } from '@/web/core/workflow/utils';
import { WorkflowEventContext } from '../../../context/workflowEventContext'; import { WorkflowEventContext } from '../../../context/workflowEventContext';
import { useToast } from '@fastgpt/web/hooks/useToast'; import { useToast } from '@fastgpt/web/hooks/useToast';
import { parseI18nString } from '@fastgpt/global/common/i18n/utils'; import { parseI18nString } from '@fastgpt/global/common/i18n/utils';
import { useSafeTranslation } from '@fastgpt/web/hooks/useSafeTranslation';
import { useSystemStore } from '@/web/common/system/useSystemStore';
export type TemplateListProps = { export type TemplateListProps = {
onAddNode: ({ newNodes }: { newNodes: Node<FlowNodeItemType>[] }) => void; onAddNode: ({ newNodes }: { newNodes: Node<FlowNodeItemType>[] }) => void;
@@ -70,7 +72,9 @@ const NodeTemplateListItem = ({
isPopover?: boolean; isPopover?: boolean;
onUpdateParentId: (parentId: string) => void; onUpdateParentId: (parentId: string) => void;
}) => { }) => {
const { t } = useTranslation(); const { t } = useSafeTranslation();
const { feConfigs } = useSystemStore();
const { screenToFlowPosition } = useReactFlow(); const { screenToFlowPosition } = useReactFlow();
const handleParams = useContextSelector(WorkflowEventContext, (v) => v.handleParams); const handleParams = useContextSelector(WorkflowEventContext, (v) => v.handleParams);
const isToolHandle = handleParams?.handleId === 'selectedTools'; const isToolHandle = handleParams?.handleId === 'selectedTools';
@@ -79,7 +83,7 @@ const NodeTemplateListItem = ({
<MyTooltip <MyTooltip
placement={'right'} placement={'right'}
label={ label={
<Box py={2}> <Box py={2} minW={['auto', '250px']}>
<Flex alignItems={'center'}> <Flex alignItems={'center'}>
<MyAvatar <MyAvatar
src={template.avatar} src={template.avatar}
@@ -87,9 +91,10 @@ const NodeTemplateListItem = ({
objectFit={'contain'} objectFit={'contain'}
borderRadius={'sm'} borderRadius={'sm'}
/> />
<Box fontWeight={'bold'} ml={3} color={'myGray.900'}> <Box fontWeight={'bold'} ml={3} color={'myGray.900'} flex={'1'}>
{template.name} {template.name}
</Box> </Box>
<Box color={'myGray.500'}>By {template.author || feConfigs?.systemTitle}</Box>
</Flex> </Flex>
<Box mt={2} color={'myGray.500'} maxH={'100px'} overflow={'hidden'}> <Box mt={2} color={'myGray.500'} maxH={'100px'} overflow={'hidden'}>
{template.intro || t('common:core.workflow.Not intro')} {template.intro || t('common:core.workflow.Not intro')}