Merge branch 'main' into fix/stripe-issues

This commit is contained in:
Ong Chung Yau 2025-07-10 16:13:11 +08:00 committed by GitHub
commit da8623d8aa
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 37 additions and 15 deletions

View File

@ -111,7 +111,13 @@ export class MCPToolkit extends BaseToolkit {
argsSchema: createSchemaModel(tool.inputSchema) argsSchema: createSchemaModel(tool.inputSchema)
}) })
}) })
return Promise.all(toolsPromises) const res = await Promise.allSettled(toolsPromises)
const errors = res.filter((r) => r.status === 'rejected')
if (errors.length !== 0) {
console.error('MCP Tools falied to be resolved', errors)
}
const successes = res.filter((r) => r.status === 'fulfilled').map((r) => r.value)
return successes
} }
} }

View File

@ -39,7 +39,7 @@ const importData = async (req: Request, res: Response, next: NextFunction) => {
} }
await exportImportService.importData(importData, orgId, workspaceId, subscriptionId) await exportImportService.importData(importData, orgId, workspaceId, subscriptionId)
return res.json({ message: 'success' }) return res.status(StatusCodes.OK).json({ message: 'success' })
} catch (error) { } catch (error) {
next(error) next(error)
} }

View File

@ -1,5 +1,5 @@
import { StatusCodes } from 'http-status-codes' import { StatusCodes } from 'http-status-codes'
import { In, QueryRunner } from 'typeorm' import { EntityManager, In, QueryRunner } from 'typeorm'
import { v4 as uuidv4 } from 'uuid' import { v4 as uuidv4 } from 'uuid'
import { Assistant } from '../../database/entities/Assistant' import { Assistant } from '../../database/entities/Assistant'
import { ChatFlow } from '../../database/entities/ChatFlow' import { ChatFlow } from '../../database/entities/ChatFlow'
@ -255,11 +255,15 @@ async function replaceDuplicateIdsForChatMessage(
where: { id: In(ids) } where: { id: In(ids) }
}) })
if (records.length < 0) return originalData if (records.length < 0) return originalData
for (let record of records) {
const oldId = record.id // replace duplicate ids found in db to new id
const newId = uuidv4() const dbExistingIds = new Set(records.map((record) => record.id))
originalData = JSON.parse(JSON.stringify(originalData).replaceAll(oldId, newId)) originalData.ChatMessage = originalData.ChatMessage.map((item) => {
} if (dbExistingIds.has(item.id)) {
return { ...item, id: uuidv4() }
}
return item
})
return originalData return originalData
} catch (error) { } catch (error) {
throw new InternalFlowiseError( throw new InternalFlowiseError(
@ -459,11 +463,15 @@ async function replaceDuplicateIdsForDocumentStoreFileChunk(
where: { id: In(ids) } where: { id: In(ids) }
}) })
if (records.length < 0) return originalData if (records.length < 0) return originalData
for (let record of records) {
const oldId = record.id // replace duplicate ids found in db to new id
const newId = uuidv4() const dbExistingIds = new Set(records.map((record) => record.id))
originalData = JSON.parse(JSON.stringify(originalData).replaceAll(oldId, newId)) originalData.DocumentStoreFileChunk = originalData.DocumentStoreFileChunk.map((item) => {
} if (dbExistingIds.has(item.id)) {
return { ...item, id: uuidv4() }
}
return item
})
return originalData return originalData
} catch (error) { } catch (error) {
throw new InternalFlowiseError( throw new InternalFlowiseError(
@ -550,6 +558,13 @@ function insertWorkspaceId(importedData: any, activeWorkspaceId?: string) {
return importedData return importedData
} }
async function saveBatch(manager: EntityManager, entity: any, items: any[], batchSize = 900) {
for (let i = 0; i < items.length; i += batchSize) {
const batch = items.slice(i, i + batchSize)
await manager.save(entity, batch)
}
}
const importData = async (importData: ExportData, orgId: string, activeWorkspaceId: string, subscriptionId: string) => { const importData = async (importData: ExportData, orgId: string, activeWorkspaceId: string, subscriptionId: string) => {
// Initialize missing properties with empty arrays to avoid "undefined" errors // Initialize missing properties with empty arrays to avoid "undefined" errors
importData.AgentFlow = importData.AgentFlow || [] importData.AgentFlow = importData.AgentFlow || []
@ -705,13 +720,13 @@ const importData = async (importData: ExportData, orgId: string, activeWorkspace
if (importData.AssistantOpenAI.length > 0) await queryRunner.manager.save(Assistant, importData.AssistantOpenAI) 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.AssistantAzure.length > 0) await queryRunner.manager.save(Assistant, importData.AssistantAzure)
if (importData.ChatFlow.length > 0) await queryRunner.manager.save(ChatFlow, importData.ChatFlow) 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.ChatMessage.length > 0) await saveBatch(queryRunner.manager, ChatMessage, importData.ChatMessage)
if (importData.ChatMessageFeedback.length > 0) if (importData.ChatMessageFeedback.length > 0)
await queryRunner.manager.save(ChatMessageFeedback, importData.ChatMessageFeedback) await queryRunner.manager.save(ChatMessageFeedback, importData.ChatMessageFeedback)
if (importData.CustomTemplate.length > 0) await queryRunner.manager.save(CustomTemplate, importData.CustomTemplate) if (importData.CustomTemplate.length > 0) await queryRunner.manager.save(CustomTemplate, importData.CustomTemplate)
if (importData.DocumentStore.length > 0) await queryRunner.manager.save(DocumentStore, importData.DocumentStore) if (importData.DocumentStore.length > 0) await queryRunner.manager.save(DocumentStore, importData.DocumentStore)
if (importData.DocumentStoreFileChunk.length > 0) if (importData.DocumentStoreFileChunk.length > 0)
await queryRunner.manager.save(DocumentStoreFileChunk, importData.DocumentStoreFileChunk) await saveBatch(queryRunner.manager, DocumentStoreFileChunk, importData.DocumentStoreFileChunk)
if (importData.Tool.length > 0) await queryRunner.manager.save(Tool, importData.Tool) if (importData.Tool.length > 0) await queryRunner.manager.save(Tool, importData.Tool)
if (importData.Execution.length > 0) await queryRunner.manager.save(Execution, importData.Execution) if (importData.Execution.length > 0) await queryRunner.manager.save(Execution, importData.Execution)
if (importData.Variable.length > 0) await queryRunner.manager.save(Variable, importData.Variable) if (importData.Variable.length > 0) await queryRunner.manager.save(Variable, importData.Variable)

View File

@ -1882,6 +1882,7 @@ const ChatMessage = ({ open, chatflowid, isAgentCanvas, isDialog, previews, setP
removeDuplicateURL={removeDuplicateURL} removeDuplicateURL={removeDuplicateURL}
isValidURL={isValidURL} isValidURL={isValidURL}
onURLClick={onURLClick} onURLClick={onURLClick}
getLabel={getLabel}
/> />
))} ))}
</div> </div>