Przeglądaj źródła

fix: with file conversation second chat raise error (#15097)

非法操作 1 miesiąc temu
rodzic
commit
d84fa4d154
1 zmienionych plików z 24 dodań i 4 usunięć
  1. 24 4
      web/app/components/base/chat/chat/utils.ts

+ 24 - 4
web/app/components/base/chat/chat/utils.ts

@@ -17,15 +17,35 @@ export const processOpeningStatement = (openingStatement: string, inputs: Record
   })
 }
 
+export const processInputFileFromServer = (fileItem: Record<string, any>) => {
+  return {
+    type: fileItem.type,
+    transfer_method: fileItem.transfer_method,
+    url: fileItem.remote_url,
+    upload_file_id: fileItem.related_id,
+  }
+}
+
 export const getProcessedInputs = (inputs: Record<string, any>, inputsForm: InputForm[]) => {
   const processedInputs = { ...inputs }
 
   inputsForm.forEach((item) => {
-    if (item.type === InputVarType.multiFiles && inputs[item.variable])
-      processedInputs[item.variable] = getProcessedFiles(inputs[item.variable])
+    const inputValue = inputs[item.variable]
+    if (!inputValue)
+      return
 
-    if (item.type === InputVarType.singleFile && inputs[item.variable])
-      processedInputs[item.variable] = getProcessedFiles([inputs[item.variable]])[0]
+    if (item.type === InputVarType.singleFile) {
+      if ('transfer_method' in inputValue)
+        processedInputs[item.variable] = processInputFileFromServer(inputValue)
+      else
+        processedInputs[item.variable] = getProcessedFiles([inputValue])[0]
+    }
+    else if (item.type === InputVarType.multiFiles) {
+      if ('transfer_method' in inputValue[0])
+        processedInputs[item.variable] = inputValue.map(processInputFileFromServer)
+      else
+        processedInputs[item.variable] = getProcessedFiles(inputValue)
+    }
   })
 
   return processedInputs