From 0f74d0721b7407709b6bdd45dc6b58970820536b Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期二, 09 六月 2026 10:03:46 +0800
Subject: [PATCH] docs(knowledge-base): 更新知识库RAG向量检索功能前端联调文档

---
 src/views/collaborativeApproval/knowledgeBase/index.vue |   72 +++++++++++++++++------------------
 1 files changed, 35 insertions(+), 37 deletions(-)

diff --git a/src/views/collaborativeApproval/knowledgeBase/index.vue b/src/views/collaborativeApproval/knowledgeBase/index.vue
index 669b260..ab78893 100644
--- a/src/views/collaborativeApproval/knowledgeBase/index.vue
+++ b/src/views/collaborativeApproval/knowledgeBase/index.vue
@@ -256,6 +256,7 @@
               :action="uploadUrl"
               :headers="uploadHeaders"
               :on-success="handleUploadSuccess"
+              :on-change="handleFileChange"
               :before-upload="beforeUpload"
               :accept="acceptTypes"
               :file-list="uploadFileList"
@@ -398,9 +399,10 @@
   updateKnowledgeBase,
   getVectorStatus,
   reprocessVector,
-  knowledgeChat
+  knowledgeChat,
+  saveKnowledgeBaseFiles,
+  deleteKnowledgeBaseFile
 } from "@/api/collaborativeApproval/knowledgeBase.js";
-import { attachmentList, createAttachment, deleteAttachment } from "@/api/basicData/storageAttachment.js";
 import useUserStore from '@/store/modules/user';
 import { userListNoPageByTenantId } from '@/api/system/user.js';
 import { getToken } from '@/utils/auth';
@@ -874,33 +876,17 @@
   refreshFileList();
 };
 
-// 鍒锋柊鏂囦欢鍒楄〃
+// 鍒锋柊鏂囦欢鍒楄〃锛堢洿鎺ヤ娇鐢ㄥ悜閲忕姸鎬佹帴鍙o級
 const refreshFileList = async () => {
   if (!selectedKnowledgeBaseId.value) return;
 
   fileLoading.value = true;
   try {
-    // 鑾峰彇闄勪欢鍒楄〃
-    const attachmentRes = await attachmentList({
-      recordType: 'knowledge_base',
-      recordId: selectedKnowledgeBaseId.value,
-      application: 'rag_file'
-    });
-
-    // 鑾峰彇鍚戦噺鍖栫姸鎬�
-    const vectorRes = await getVectorStatus(selectedKnowledgeBaseId.value);
-
-    // 鍚堝苟鏁版嵁
-    const vectorMap = {};
-    (vectorRes.data || []).forEach(v => {
-      vectorMap[v.storageBlobId] = v;
-    });
-
-    fileList.value = (attachmentRes.data || []).map(file => ({
-      ...file,
-      vectorStatus: vectorMap[file.storageBlobId]?.vectorStatus ?? 0,
-      chunkCount: vectorMap[file.storageBlobId]?.chunkCount ?? 0,
-      vectorId: vectorMap[file.storageBlobId]?.id
+    const res = await getVectorStatus(selectedKnowledgeBaseId.value);
+    fileList.value = (res.data || []).map(item => ({
+      ...item,
+      name: item.fileName,
+      vectorId: item.id
     }));
   } catch (error) {
     console.error('鑾峰彇鏂囦欢鍒楄〃澶辫触:', error);
@@ -924,23 +910,35 @@
 const handleUploadSuccess = async (response, file) => {
   if (response.code === 200) {
     uploadedBlobs.value.push(...response.data);
-    await saveAttachment();
-    ElMessage.success('鏂囦欢涓婁紶鎴愬姛锛屾鍦ㄥ鐞嗗悜閲忓寲...');
-    uploadedBlobs.value = [];
-    refreshFileList();
   } else {
     ElMessage.error(response.msg || '涓婁紶澶辫触');
   }
 };
 
-// 淇濆瓨闄勪欢鍏宠仈鍒扮煡璇嗗簱
-const saveAttachment = async () => {
-  await createAttachment({
-    recordType: 'knowledge_base',
-    recordId: selectedKnowledgeBaseId.value,
-    application: 'rag_file',
-    storageBlobDTOs: uploadedBlobs.value.map(b => b.id)
-  });
+// 涓婁紶鏂囦欢鍙樺寲澶勭悊锛堢敤浜庢娴嬫墍鏈夋枃浠朵笂浼犲畬鎴愶級
+const handleFileChange = (file, fileList) => {
+  // 褰撴枃浠剁姸鎬佸彉鍖栦笖娌℃湁姝e湪涓婁紶鐨勬枃浠舵椂锛岀粺涓�鎻愪氦
+  if (file.status === 'success' && fileList.every(f => f.status === 'success' || f.status === 'fail')) {
+    if (uploadedBlobs.value.length > 0) {
+      saveKnowledgeBaseFilesAndRefresh();
+    }
+  }
+};
+
+// 淇濆瓨鐭ヨ瘑搴撴枃浠跺叧鑱斿苟瑙﹀彂鍚戦噺鍖�
+const saveKnowledgeBaseFilesAndRefresh = async () => {
+  try {
+    await saveKnowledgeBaseFiles({
+      knowledgeBaseId: selectedKnowledgeBaseId.value,
+      storageBlobIds: uploadedBlobs.value.map(b => b.id)
+    });
+    ElMessage.success('鏂囦欢涓婁紶鎴愬姛锛屾鍦ㄥ鐞嗗悜閲忓寲...');
+  } catch (error) {
+    ElMessage.error('淇濆瓨鏂囦欢鍏宠仈澶辫触');
+  } finally {
+    uploadedBlobs.value = [];
+    refreshFileList();
+  }
 };
 
 // 鑾峰彇鏂囦欢绫诲瀷
@@ -987,7 +985,7 @@
       type: 'warning'
     });
 
-    await deleteAttachment([row.id]);
+    await deleteKnowledgeBaseFile([row.id]);
     ElMessage.success('鍒犻櫎鎴愬姛');
     refreshFileList();
   } catch (error) {

--
Gitblit v1.9.3