From 0b154dd313bc1ddeeba57f2687fe10049838f5d2 Mon Sep 17 00:00:00 2001 From: ma-zhongxu Date: Wed, 5 Mar 2025 18:25:17 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=87=E4=BB=B6=E4=B8=8A=E4=BC=A0=E5=90=8E?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E7=AD=89=E8=BF=87=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Documents/Directory/index.jsx | 3 +- .../Documents/UploadFile/index.jsx | 3 +- server/downloaded_localFile | Bin 0 -> 11142 bytes server/endpoints/system.js | 31 ++++++++++++-- server/endpoints/workspaces.js | 15 ++++--- server/models/deptDocument.js | 38 ++++++++++++++++++ .../cebc49a6-9df4-46cc-8ba5-672b5d72de0e.txt | 1 - .../f51243b3-13e6-4374-8b64-a7fa4ba38ed9.txt | 20 --------- server/utils/files/purgeDocument.js | 32 +++++++++++++++ 9 files changed, 109 insertions(+), 34 deletions(-) create mode 100644 server/downloaded_localFile delete mode 100644 server/storage/localFile/cebc49a6-9df4-46cc-8ba5-672b5d72de0e.txt delete mode 100644 server/storage/localFile/f51243b3-13e6-4374-8b64-a7fa4ba38ed9.txt diff --git a/frontend/src/components/Modals/ManageWorkspace/Documents/Directory/index.jsx b/frontend/src/components/Modals/ManageWorkspace/Documents/Directory/index.jsx index fdf0390..a9cbbc2 100644 --- a/frontend/src/components/Modals/ManageWorkspace/Documents/Directory/index.jsx +++ b/frontend/src/components/Modals/ManageWorkspace/Documents/Directory/index.jsx @@ -66,7 +66,8 @@ function Directory({ for (const folder of files.items) { const foundItem = folder.items.find((file) => file.id === itemId); if (foundItem) { - toRemove.push(`${folder.name}/${foundItem.name}`); + // toRemove.push(`${folder.name}/${foundItem.name}`); + toRemove.push(`${foundItem.relativePath}`); break; } } diff --git a/frontend/src/components/Modals/ManageWorkspace/Documents/UploadFile/index.jsx b/frontend/src/components/Modals/ManageWorkspace/Documents/UploadFile/index.jsx index fdd7371..508fae8 100644 --- a/frontend/src/components/Modals/ManageWorkspace/Documents/UploadFile/index.jsx +++ b/frontend/src/components/Modals/ManageWorkspace/Documents/UploadFile/index.jsx @@ -151,8 +151,7 @@ export default function UploadFile({
- 这些文件将被上传到运行于此的文档处理器上 - AnythingLLM实例。这些文件不会发送或与第三方共享 + 这些文件不会发送或与第三方共享,请放心使用。
); diff --git a/server/downloaded_localFile b/server/downloaded_localFile new file mode 100644 index 0000000000000000000000000000000000000000..984cb3653ad12ecb876b75559d9f5562ad2093ef GIT binary patch literal 11142 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 f7i&}hCHq&AnYiWac0jG0p$MxBI(78 literal 0 HcmV?d00001 diff --git a/server/endpoints/system.js b/server/endpoints/system.js index 9d4af42..4521ba7 100644 --- a/server/endpoints/system.js +++ b/server/endpoints/system.js @@ -391,17 +391,40 @@ function systemEndpoints(app) { } ); + // app.delete( + // "/system/remove-documents", + // [validatedRequest, flexUserRoleValid([ROLES.admin, ROLES.manager])], + // async (request, response) => { + // try { + // const { names } = reqBody(request); + // console.log("names", names); + // for await (const name of names) await purgeDocument(name); + // response.sendStatus(200).end(); + // } catch (e) { + // console.error(e.message, e); + // response.sendStatus(500).end(); + // } + // } + // ); + app.delete( "/system/remove-documents", [validatedRequest, flexUserRoleValid([ROLES.admin, ROLES.manager])], async (request, response) => { try { - const { names } = reqBody(request); - for await (const name of names) await purgeDocument(name); - response.sendStatus(200).end(); + const { names } = reqBody(request); // 获取请求体中的文件名列表 + console.log("names", names); + + // 遍历文件名列表,调用 purgeDocument 方法 + for (const name of names) { + await purgeDocument(name); + } + + // 返回成功响应 + response.status(200).json({ success: true, message: "Documents removed successfully." }); } catch (e) { console.error(e.message, e); - response.sendStatus(500).end(); + response.status(500).json({ success: false, error: e.message }); } } ); diff --git a/server/endpoints/workspaces.js b/server/endpoints/workspaces.js index b74379a..5888e8a 100644 --- a/server/endpoints/workspaces.js +++ b/server/endpoints/workspaces.js @@ -39,6 +39,7 @@ const { DeptUsers } = require("../models/deptUsers"); const { DeptDocument } = require("../models/deptDocument"); const { v4: uuidv4 } = require("uuid"); const { moveAndRenameFile } = require("../utils/files/index"); +const moment = require('moment'); // 引入时间格式化库 function workspaceEndpoints(app) { if (!app) return; @@ -288,11 +289,6 @@ function workspaceEndpoints(app) { fs.mkdirSync(targetDir, { recursive: true }); // 递归创建目录 } - // 保存文件 - const filePath = path.join(targetDir, originalname); // 使用原始文件名 - const fileBuffer = Buffer.from(fileContent, "base64"); - fs.writeFileSync(filePath, fileBuffer); - // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // 假设路径字符串 const location = documents[0].location; @@ -303,7 +299,14 @@ function workspaceEndpoints(app) { // 提取文件名 const parsedFileName = unixStylePath.substring(lastIndex + 1); const fileExtension = path.extname(request.file.path).toLowerCase(); - const newFileName = uuidv4() + fileExtension; // 新文件名 + // const newFileName = uuidv4() + fileExtension; // 新文件名 + const newFileName = `${uuidv4()}_${moment().format('YYYYMMDD_HHmmss')}${fileExtension}`; // 生成唯一文件名 + + // 保存文件 + const filePath = path.join(targetDir, newFileName); // 使用原始文件名 + const fileBuffer = Buffer.from(fileContent, "base64"); + fs.writeFileSync(filePath, fileBuffer); + const deptDocData = { deptId: deptUserRecord.deptUser.deptId, parsedFileName: parsedFileName, diff --git a/server/models/deptDocument.js b/server/models/deptDocument.js index 0fbf534..e26a911 100644 --- a/server/models/deptDocument.js +++ b/server/models/deptDocument.js @@ -220,6 +220,44 @@ const DeptDocument = { throw error; } }, + /** + * 根据 parsedFilePath 模糊查询数据,并将 delTag 更新为 true + * @param {string} parsedFilePath - 模糊查询的路径 + * @returns {Promise<{ success: boolean, error: string | null, count: number }>} + */ + softDeleteByParsedFilePath: async function (parsedFilePath) { + try { + if (!parsedFilePath) { + throw new Error("parsedFilePath is required"); + } + + // 模糊查询 parsedFilePath + const result = await prisma.dept_document.updateMany({ + where: { + parsedFilePath: { + contains: parsedFilePath, // 模糊匹配 + }, + }, + data: { + delTag: true, // 将 delTag 更新为 true + lastUpdatedAt: new Date(), // 更新最后修改时间 + }, + }); + + return { + success: true, + error: null, + count: result.count, // 返回更新的记录数 + }; + } catch (error) { + console.error("FAILED TO SOFT DELETE BY PARSED FILE PATH.", error.message); + return { + success: false, + error: error.message, + count: 0, + }; + } + }, }; module.exports = { DeptDocument }; diff --git a/server/storage/localFile/cebc49a6-9df4-46cc-8ba5-672b5d72de0e.txt b/server/storage/localFile/cebc49a6-9df4-46cc-8ba5-672b5d72de0e.txt deleted file mode 100644 index f3ca610..0000000 --- a/server/storage/localFile/cebc49a6-9df4-46cc-8ba5-672b5d72de0e.txt +++ /dev/null @@ -1 +0,0 @@ -你好 \ No newline at end of file diff --git a/server/storage/localFile/f51243b3-13e6-4374-8b64-a7fa4ba38ed9.txt b/server/storage/localFile/f51243b3-13e6-4374-8b64-a7fa4ba38ed9.txt deleted file mode 100644 index 43a1c3f..0000000 --- a/server/storage/localFile/f51243b3-13e6-4374-8b64-a7fa4ba38ed9.txt +++ /dev/null @@ -1,20 +0,0 @@ -一、数字驼乡 - -1、政策类型修改增删改查接口的逻辑 -2、服务事项主题分类增删改查逻辑修改,信息发布修改数据库字段类型 -3、政策内容id改成UUID, 行业资讯id修改为UUID,政策解读ID修改为UUID,用户注册校验用户名是否重复, 商家信息新增和更新时校验商家名称和统一社会信用代码 -4、商家信息添加字段:其他证照,商家信息添加字段:审核状态,审核时间,审核人,审核反馈; 商家资质添加字段:审核人 -5、添加商家信息图标 -7、政企服务建表,页面和路由生成,后端新开一个微服务 -8、配合赵洋做商家信息相关的问题 -9、 添加5个图标供参考 -10、生成提问和反馈的页面和路由 -11、商家信息修改时校验审核状态 -12、提问反馈的页面字段错误问题和提问反馈的关联用户ID问题 -13、修复商家信息和行业类型,行政区划实体里面的对应混乱问题 -二、盟林草-森林保险管理系统 - -1、修改上次测出问题,部署 -三、社会治理联动指挥平台(一期) - -1、修复导航权限问题,部署 \ No newline at end of file diff --git a/server/utils/files/purgeDocument.js b/server/utils/files/purgeDocument.js index b0c295a..186854d 100644 --- a/server/utils/files/purgeDocument.js +++ b/server/utils/files/purgeDocument.js @@ -9,10 +9,42 @@ const { } = require("."); const { Document } = require("../../models/documents"); const { Workspace } = require("../../models/workspace"); +const { DeptDocument } = require("../../models/deptDocument"); + +// async function purgeDocument(filename = null) { +// if (!filename || !normalizePath(filename)) return; +// +// await purgeVectorCache(filename); +// await purgeSourceDocument(filename); +// const workspaces = await Workspace.where(); +// for (const workspace of workspaces) { +// await Document.removeDocuments(workspace, [filename]); +// } +// return; +// } async function purgeDocument(filename = null) { if (!filename || !normalizePath(filename)) return; + // 根据环境转换分隔符 + let normalizedFilename = filename; + if (process.env.NODE_ENV === "development") { + // 开发环境:将路径分隔符转换为 Windows 风格(\) + normalizedFilename = filename.replace(/\//g, "\\"); + } else { + // 生产环境:将路径分隔符转换为 Unix 风格(/) + normalizedFilename = filename.replace(/\\/g, "/"); + } + + // 标记匹配的文件为逻辑删除 + const { success, error, count } = await DeptDocument.softDeleteByParsedFilePath(normalizedFilename); + if (!success) { + console.error("Failed to soft delete documents:", error); + return; + } + console.log(`Successfully marked ${count} documents as deleted.`); + + // 继续执行原有的清理逻辑 await purgeVectorCache(filename); await purgeSourceDocument(filename); const workspaces = await Workspace.where();