From 1c6320828cff3014bab4cf71d8f26db23f6547a5 Mon Sep 17 00:00:00 2001 From: balibabu Date: Tue, 20 May 2025 19:13:19 +0800 Subject: [PATCH] Feat: Rename agent #3221 (#7740) ### What problem does this PR solve? Feat: Rename agent #3221 ### Type of change - [x] New Feature (non-breaking change which adds functionality) --- web/src/hooks/use-agent-request.ts | 53 ++++++++++++++++++++++- web/src/pages/agents/agent-card.tsx | 8 ++-- web/src/pages/agents/agent-dropdown.tsx | 24 +++++------ web/src/pages/agents/index.tsx | 24 +++++------ web/src/pages/agents/use-rename-agent.ts | 55 +++++++++++------------- 5 files changed, 104 insertions(+), 60 deletions(-) diff --git a/web/src/hooks/use-agent-request.ts b/web/src/hooks/use-agent-request.ts index 645a32b89..17589dbb3 100644 --- a/web/src/hooks/use-agent-request.ts +++ b/web/src/hooks/use-agent-request.ts @@ -1,7 +1,8 @@ import { IFlow } from '@/interfaces/database/flow'; import flowService from '@/services/flow-service'; -import { useQuery } from '@tanstack/react-query'; +import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'; import { useDebounce } from 'ahooks'; +import { message } from 'antd'; import { useCallback } from 'react'; import { useGetPaginationWithRouter, @@ -10,6 +11,8 @@ import { export const enum AgentApiAction { FetchAgentList = 'fetchAgentList', + UpdateAgentSetting = 'updateAgentSetting', + DeleteAgent = 'deleteAgent', } export const useFetchAgentListByPage = () => { @@ -58,3 +61,51 @@ export const useFetchAgentListByPage = () => { setPagination, }; }; + +export const useUpdateAgentSetting = () => { + const queryClient = useQueryClient(); + + const { + data, + isPending: loading, + mutateAsync, + } = useMutation({ + mutationKey: [AgentApiAction.UpdateAgentSetting], + mutationFn: async (params: any) => { + const ret = await flowService.settingCanvas(params); + if (ret?.data?.code === 0) { + message.success('success'); + queryClient.invalidateQueries({ + queryKey: [AgentApiAction.FetchAgentList], + }); + } else { + message.error(ret?.data?.data); + } + return ret?.data?.code; + }, + }); + + return { data, loading, updateAgentSetting: mutateAsync }; +}; + +export const useDeleteAgent = () => { + const queryClient = useQueryClient(); + const { + data, + isPending: loading, + mutateAsync, + } = useMutation({ + mutationKey: [AgentApiAction.DeleteAgent], + mutationFn: async (canvasIds: string[]) => { + const { data } = await flowService.removeCanvas({ canvasIds }); + if (data.code === 0) { + queryClient.invalidateQueries({ + queryKey: [AgentApiAction.FetchAgentList], + }); + } + return data?.data ?? []; + }, + }); + + return { data, loading, deleteAgent: mutateAsync }; +}; diff --git a/web/src/pages/agents/agent-card.tsx b/web/src/pages/agents/agent-card.tsx index 41ef85003..b2ccabe6b 100644 --- a/web/src/pages/agents/agent-card.tsx +++ b/web/src/pages/agents/agent-card.tsx @@ -9,9 +9,9 @@ import { useRenameAgent } from './use-rename-agent'; export type DatasetCardProps = { data: IFlow; -} & Pick, 'showDatasetRenameModal'>; +} & Pick, 'showAgentRenameModal'>; -export function AgentCard({ data, showDatasetRenameModal }: DatasetCardProps) { +export function AgentCard({ data, showAgentRenameModal }: DatasetCardProps) { const { navigateToAgent } = useNavigatePage(); return ( @@ -25,8 +25,8 @@ export function AgentCard({ data, showDatasetRenameModal }: DatasetCardProps) { diff --git a/web/src/pages/agents/agent-dropdown.tsx b/web/src/pages/agents/agent-dropdown.tsx index d9030e7c2..3a3360a3d 100644 --- a/web/src/pages/agents/agent-dropdown.tsx +++ b/web/src/pages/agents/agent-dropdown.tsx @@ -6,7 +6,7 @@ import { DropdownMenuSeparator, DropdownMenuTrigger, } from '@/components/ui/dropdown-menu'; -import { useDeleteKnowledge } from '@/hooks/use-knowledge-request'; +import { useDeleteAgent } from '@/hooks/use-agent-request'; import { IFlow } from '@/interfaces/database/flow'; import { PenLine, Trash2 } from 'lucide-react'; import { MouseEventHandler, PropsWithChildren, useCallback } from 'react'; @@ -15,33 +15,33 @@ import { useRenameAgent } from './use-rename-agent'; export function AgentDropdown({ children, - showDatasetRenameModal, - dataset, + showAgentRenameModal, + agent: agent, }: PropsWithChildren & - Pick, 'showDatasetRenameModal'> & { - dataset: IFlow; + Pick, 'showAgentRenameModal'> & { + agent: IFlow; }) { const { t } = useTranslation(); - const { deleteKnowledge } = useDeleteKnowledge(); + const { deleteAgent } = useDeleteAgent(); - const handleShowDatasetRenameModal: MouseEventHandler = + const handleShowAgentRenameModal: MouseEventHandler = useCallback( (e) => { e.stopPropagation(); - showDatasetRenameModal(dataset); + showAgentRenameModal(agent); }, - [dataset, showDatasetRenameModal], + [agent, showAgentRenameModal], ); const handleDelete: MouseEventHandler = useCallback(() => { - deleteKnowledge(dataset.id); - }, [dataset.id, deleteKnowledge]); + deleteAgent([agent.id]); + }, [agent.id, deleteAgent]); return ( {children} - + {t('common.rename')} diff --git a/web/src/pages/agents/index.tsx b/web/src/pages/agents/index.tsx index 7bb80780c..c4a2d0d5a 100644 --- a/web/src/pages/agents/index.tsx +++ b/web/src/pages/agents/index.tsx @@ -16,12 +16,12 @@ export default function Agent() { const { navigateToAgentTemplates } = useNavigatePage(); const { - datasetRenameLoading, - initialDatasetName, - onDatasetRenameOk, - datasetRenameVisible, - hideDatasetRenameModal, - showDatasetRenameModal, + agentRenameLoading, + initialAgentName, + onAgentRenameOk, + agentRenameVisible, + hideAgentRenameModal, + showAgentRenameModal, } = useRenameAgent(); const handlePageChange = useCallback( @@ -51,7 +51,7 @@ export default function Agent() { ); })} @@ -63,12 +63,12 @@ export default function Agent() { onChange={handlePageChange} > - {datasetRenameVisible && ( + {agentRenameVisible && ( )} diff --git a/web/src/pages/agents/use-rename-agent.ts b/web/src/pages/agents/use-rename-agent.ts index 2022ee6fd..c2f3fac4d 100644 --- a/web/src/pages/agents/use-rename-agent.ts +++ b/web/src/pages/agents/use-rename-agent.ts @@ -1,53 +1,46 @@ import { useSetModalState } from '@/hooks/common-hooks'; -import { useUpdateKnowledge } from '@/hooks/use-knowledge-request'; +import { useUpdateAgentSetting } from '@/hooks/use-agent-request'; import { IFlow } from '@/interfaces/database/flow'; -import { omit } from 'lodash'; +import { pick } from 'lodash'; import { useCallback, useState } from 'react'; export const useRenameAgent = () => { - const [dataset, setDataset] = useState({} as IFlow); + const [agent, setAgent] = useState({} as IFlow); const { - visible: datasetRenameVisible, - hideModal: hideDatasetRenameModal, - showModal: showDatasetRenameModal, + visible: agentRenameVisible, + hideModal: hideAgentRenameModal, + showModal: showAgentRenameModal, } = useSetModalState(); - const { saveKnowledgeConfiguration, loading } = useUpdateKnowledge(true); + const { updateAgentSetting, loading } = useUpdateAgentSetting(); - const onDatasetRenameOk = useCallback( + const onAgentRenameOk = useCallback( async (name: string) => { - const ret = await saveKnowledgeConfiguration({ - ...omit(dataset, [ - 'id', - 'update_time', - 'nickname', - 'tenant_avatar', - 'tenant_id', - ]), - kb_id: dataset.id, - name, + const ret = await updateAgentSetting({ + ...pick(agent, ['id', 'avatar', 'description', 'permission']), + title: name, }); - if (ret.code === 0) { - hideDatasetRenameModal(); + if (ret === 0) { + hideAgentRenameModal(); } }, - [saveKnowledgeConfiguration, dataset, hideDatasetRenameModal], + [updateAgentSetting, agent, hideAgentRenameModal], ); - const handleShowDatasetRenameModal = useCallback( + const handleShowAgentRenameModal = useCallback( async (record: IFlow) => { - setDataset(record); - showDatasetRenameModal(); + setAgent(record); + showAgentRenameModal(); }, - [showDatasetRenameModal], + [showAgentRenameModal], ); return { - datasetRenameLoading: loading, - initialDatasetName: dataset?.title, - onDatasetRenameOk, - datasetRenameVisible, - hideDatasetRenameModal, - showDatasetRenameModal: handleShowDatasetRenameModal, + agentRenameLoading: loading, + initialAgentName: agent?.title, + onAgentRenameOk, + agentRenameVisible, + hideAgentRenameModal, + showAgentRenameModal: handleShowAgentRenameModal, }; };