From 4277819c5f9907ea9e32f007a95fbec41b2867a9 Mon Sep 17 00:00:00 2001 From: Ong Chung Yau <33013947+chungyau97@users.noreply.github.com> Date: Wed, 9 Apr 2025 16:28:51 +0800 Subject: [PATCH] feature/export-import-4 (#4272) * feat: seperate assistant export-import into custom, openai and azure * chore: update assistant names in export data to maintain consistency --- .../src/services/export-import/index.ts | 31 ++++++++++++++----- .../Header/ProfileSection/index.jsx | 8 +++-- packages/ui/src/utils/exportImport.js | 4 ++- 3 files changed, 32 insertions(+), 11 deletions(-) diff --git a/packages/server/src/services/export-import/index.ts b/packages/server/src/services/export-import/index.ts index 9c4f3173c..90317d8fd 100644 --- a/packages/server/src/services/export-import/index.ts +++ b/packages/server/src/services/export-import/index.ts @@ -23,7 +23,9 @@ import variableService from '../variables' type ExportInput = { agentflow: boolean - assistant: boolean + assistantCustom: boolean + assistantOpenAI: boolean + assistantAzure: boolean chatflow: boolean chat_message: boolean chat_feedback: boolean @@ -35,8 +37,10 @@ type ExportInput = { type ExportData = { AgentFlow: ChatFlow[] + AssistantCustom: Assistant[] AssistantFlow: ChatFlow[] - Assistant: Assistant[] + AssistantOpenAI: Assistant[] + AssistantAzure: Assistant[] ChatFlow: ChatFlow[] ChatMessage: ChatMessage[] ChatMessageFeedback: ChatMessageFeedback[] @@ -77,9 +81,12 @@ const exportData = async (exportInput: ExportInput): Promise<{ FileDefaultName: try { let AgentFlow: ChatFlow[] = exportInput.agentflow === true ? await chatflowService.getAllChatflows('MULTIAGENT') : [] - let Assistant: Assistant[] = exportInput.assistant === true ? await assistantService.getAllAssistants() : [] + let AssistantCustom: Assistant[] = exportInput.assistantCustom === true ? await assistantService.getAllAssistants('CUSTOM') : [] + let AssistantFlow: ChatFlow[] = exportInput.assistantCustom === true ? await chatflowService.getAllChatflows('ASSISTANT') : [] - let AssistantFlow: ChatFlow[] = exportInput.assistant === true ? await chatflowService.getAllChatflows('ASSISTANT') : [] + let AssistantOpenAI: Assistant[] = exportInput.assistantOpenAI === true ? await assistantService.getAllAssistants('OPENAI') : [] + + let AssistantAzure: Assistant[] = exportInput.assistantAzure === true ? await assistantService.getAllAssistants('AZURE') : [] let ChatFlow: ChatFlow[] = exportInput.chatflow === true ? await chatflowService.getAllChatflows('CHATFLOW') : [] @@ -103,8 +110,10 @@ const exportData = async (exportInput: ExportInput): Promise<{ FileDefaultName: return { FileDefaultName, AgentFlow, + AssistantCustom, AssistantFlow, - Assistant, + AssistantOpenAI, + AssistantAzure, ChatFlow, ChatMessage, ChatMessageFeedback, @@ -412,12 +421,16 @@ const importData = async (importData: ExportData) => { importData.AgentFlow = reduceSpaceForChatflowFlowData(importData.AgentFlow) importData = await replaceDuplicateIdsForChatFlow(queryRunner, importData, importData.AgentFlow) } + if (importData.AssistantCustom.length > 0) + importData = await replaceDuplicateIdsForAssistant(queryRunner, importData, importData.AssistantCustom) if (importData.AssistantFlow.length > 0) { importData.AssistantFlow = reduceSpaceForChatflowFlowData(importData.AssistantFlow) importData = await replaceDuplicateIdsForChatFlow(queryRunner, importData, importData.AssistantFlow) } - if (importData.Assistant.length > 0) - importData = await replaceDuplicateIdsForAssistant(queryRunner, importData, importData.Assistant) + if (importData.AssistantOpenAI.length > 0) + importData = await replaceDuplicateIdsForAssistant(queryRunner, importData, importData.AssistantOpenAI) + if (importData.AssistantAzure.length > 0) + importData = await replaceDuplicateIdsForAssistant(queryRunner, importData, importData.AssistantAzure) if (importData.ChatFlow.length > 0) { importData.ChatFlow = reduceSpaceForChatflowFlowData(importData.ChatFlow) importData = await replaceDuplicateIdsForChatFlow(queryRunner, importData, importData.ChatFlow) @@ -440,7 +453,9 @@ const importData = async (importData: ExportData) => { if (importData.AgentFlow.length > 0) await queryRunner.manager.save(ChatFlow, importData.AgentFlow) if (importData.AssistantFlow.length > 0) await queryRunner.manager.save(ChatFlow, importData.AssistantFlow) - if (importData.Assistant.length > 0) await queryRunner.manager.save(Assistant, importData.Assistant) + if (importData.AssistantCustom.length > 0) await queryRunner.manager.save(Assistant, importData.AssistantCustom) + if (importData.AssistantOpenAI.length > 0) await queryRunner.manager.save(Assistant, importData.AssistantOpenAI) + if (importData.AssistantAzure.length > 0) await queryRunner.manager.save(Assistant, importData.AssistantAzure) if (importData.ChatFlow.length > 0) await queryRunner.manager.save(ChatFlow, importData.ChatFlow) if (importData.ChatMessage.length > 0) await queryRunner.manager.save(ChatMessage, importData.ChatMessage) if (importData.ChatMessageFeedback.length > 0) diff --git a/packages/ui/src/layout/MainLayout/Header/ProfileSection/index.jsx b/packages/ui/src/layout/MainLayout/Header/ProfileSection/index.jsx index 59b4b8280..866087b2b 100644 --- a/packages/ui/src/layout/MainLayout/Header/ProfileSection/index.jsx +++ b/packages/ui/src/layout/MainLayout/Header/ProfileSection/index.jsx @@ -54,7 +54,9 @@ import { useNavigate } from 'react-router-dom' const dataToExport = [ 'Agentflows', - 'Assistants', + 'Assistants Custom', + 'Assistants OpenAI', + 'Assistants Azure', 'Chatflows', 'Chat Messages', 'Chat Feedbacks', @@ -254,7 +256,9 @@ const ProfileSection = ({ username, handleLogout }) => { const onExport = (data) => { const body = {} if (data.includes('Agentflows')) body.agentflow = true - if (data.includes('Assistants')) body.assistant = true + if (data.includes('Assistants Custom')) body.assistantCustom = true + if (data.includes('Assistants OpenAI')) body.assistantOpenAI = true + if (data.includes('Assistants Azure')) body.assistantAzure = true if (data.includes('Chatflows')) body.chatflow = true if (data.includes('Chat Messages')) body.chat_message = true if (data.includes('Chat Feedbacks')) body.chat_feedback = true diff --git a/packages/ui/src/utils/exportImport.js b/packages/ui/src/utils/exportImport.js index 518f8230f..91d8ab6b0 100644 --- a/packages/ui/src/utils/exportImport.js +++ b/packages/ui/src/utils/exportImport.js @@ -79,7 +79,9 @@ export const exportData = (exportAllData) => { return { AgentFlow: sanitizeChatflow(exportAllData.AgentFlow), AssistantFlow: sanitizeChatflow(exportAllData.AssistantFlow), - Assistant: sanitizeAssistant(exportAllData.Assistant), + AssistantCustom: sanitizeAssistant(exportAllData.AssistantCustom), + AssistantOpenAI: sanitizeAssistant(exportAllData.AssistantOpenAI), + AssistantAzure: sanitizeAssistant(exportAllData.AssistantAzure), ChatFlow: sanitizeChatflow(exportAllData.ChatFlow), ChatMessage: exportAllData.ChatMessage, ChatMessageFeedback: exportAllData.ChatMessageFeedback,