From 4487964d177129eaa4e3121fcaa6879ca3110eb0 Mon Sep 17 00:00:00 2001 From: zhangzhanwei Date: Wed, 22 Oct 2025 11:22:24 +0800 Subject: [PATCH] feat: Replace source file permission --- apps/common/constants/permission_constants.py | 19 ++++++++++++++++++- apps/knowledge/views/document.py | 4 ++-- apps/locales/en_US/LC_MESSAGES/django.po | 6 ++++++ apps/locales/zh_CN/LC_MESSAGES/django.po | 6 ++++++ apps/locales/zh_Hant/LC_MESSAGES/django.po | 6 ++++++ ui/src/permission/knowledge/system-manage.ts | 6 ++++++ ui/src/permission/knowledge/system-share.ts | 8 ++++++++ .../permission/knowledge/workspace-share.ts | 1 + ui/src/permission/knowledge/workspace.ts | 10 ++++++++++ ui/src/utils/permission/data.ts | 3 +++ ui/src/views/document/index.vue | 6 ++++-- 11 files changed, 70 insertions(+), 5 deletions(-) diff --git a/apps/common/constants/permission_constants.py b/apps/common/constants/permission_constants.py index 335cdf0d4..278401116 100644 --- a/apps/common/constants/permission_constants.py +++ b/apps/common/constants/permission_constants.py @@ -177,6 +177,7 @@ class Operate(Enum): DOWNLOAD = "READ+DOWNLOAD" # 下载 AUTH = "READ+AUTH" # 资源授权 TAG = "READ+TAG" # 标签设置 + REPLACE = "READ+REPLACE" # 标签设置 class RoleGroup(Enum): @@ -340,7 +341,7 @@ Permission_Label = { Operate.RELATE.value: _("Relate"), Operate.ANNOTATION.value: _("Annotation"), Operate.CLEAR_POLICY.value: _("Clear Policy"), - Operate.DOWNLOAD.value: _('Download'), + Operate.DOWNLOAD.value: _('Download Original Document'), Operate.EMBED.value: _('Embed third party'), Operate.ACCESS.value: _('Access restrictions'), Operate.DISPLAY.value: _('Display Settings'), @@ -353,6 +354,8 @@ Permission_Label = { Operate.ADD_KNOWLEDGE.value: _('Add to Knowledge Base'), Operate.AUTH.value: _('resource authorization'), Operate.TAG.value: _('Tag Setting'), + Operate.REPLACE.value: _('Replace Original Document'), + Group.APPLICATION_OVERVIEW.value: _('Overview'), Group.APPLICATION_ACCESS.value: _('Application Access'), Group.APPLICATION_CHAT_USER.value: _('Dialogue users'), @@ -675,6 +678,12 @@ class PermissionConstants(Enum): resource_permission_group_list=[ResourcePermissionConst.KNOWLEDGE_MANGE], parent_group=[WorkspaceGroup.KNOWLEDGE, UserGroup.KNOWLEDGE] ) + KNOWLEDGE_DOCUMENT_REPLACE = Permission( + group=Group.KNOWLEDGE_DOCUMENT, operate=Operate.REPLACE, + role_list=[RoleConstants.ADMIN, RoleConstants.USER], + resource_permission_group_list=[ResourcePermissionConst.KNOWLEDGE_MANGE], + parent_group=[WorkspaceGroup.KNOWLEDGE, UserGroup.KNOWLEDGE] + ) KNOWLEDGE_HIT_TEST = Permission( group=Group.KNOWLEDGE_HIT_TEST, operate=Operate.READ, role_list=[RoleConstants.ADMIN, RoleConstants.USER], @@ -1238,6 +1247,10 @@ class PermissionConstants(Enum): group=Group.SYSTEM_KNOWLEDGE_DOCUMENT, operate=Operate.TAG, role_list=[RoleConstants.ADMIN], parent_group=[SystemGroup.SHARED_KNOWLEDGE], is_ee=settings.edition == "EE" ) + SHARED_KNOWLEDGE_DOCUMENT_REPLACE = Permission( + group=Group.SYSTEM_KNOWLEDGE_DOCUMENT, operate=Operate.REPLACE, role_list=[RoleConstants.ADMIN], + parent_group=[SystemGroup.SHARED_KNOWLEDGE], is_ee=settings.edition == "EE" + ) SHARED_KNOWLEDGE_TAG_READ = Permission( group=Group.SYSTEM_KNOWLEDGE_TAG, operate=Operate.READ, role_list=[RoleConstants.ADMIN], parent_group=[SystemGroup.SHARED_KNOWLEDGE], is_ee=settings.edition == "EE" @@ -1462,6 +1475,10 @@ class PermissionConstants(Enum): group=Group.SYSTEM_RES_KNOWLEDGE_DOCUMENT, operate=Operate.TAG, role_list=[RoleConstants.ADMIN], parent_group=[SystemGroup.RESOURCE_KNOWLEDGE], is_ee=settings.edition == "EE" ) + RESOURCE_KNOWLEDGE_DOCUMENT_REPLACE = Permission( + group=Group.SYSTEM_RES_KNOWLEDGE_DOCUMENT, operate=Operate.REPLACE, role_list=[RoleConstants.ADMIN], + parent_group=[SystemGroup.RESOURCE_KNOWLEDGE], is_ee=settings.edition == "EE" + ) RESOURCE_KNOWLEDGE_HIT_TEST = Permission( group=Group.SYSTEM_RES_KNOWLEDGE_HIT_TEST, operate=Operate.READ, role_list=[RoleConstants.ADMIN], parent_group=[SystemGroup.RESOURCE_KNOWLEDGE], is_ee=settings.edition == "EE" diff --git a/apps/knowledge/views/document.py b/apps/knowledge/views/document.py index 17472f387..88f529f1a 100644 --- a/apps/knowledge/views/document.py +++ b/apps/knowledge/views/document.py @@ -698,8 +698,8 @@ class DocumentView(APIView): tags=[_('Knowledge Base/Documentation')] # type: ignore ) @has_permissions( - PermissionConstants.KNOWLEDGE_DOCUMENT_EDIT.get_workspace_knowledge_permission(), - PermissionConstants.KNOWLEDGE_DOCUMENT_EDIT.get_workspace_permission_workspace_manage_role(), + PermissionConstants.KNOWLEDGE_DOCUMENT_REPLACE.get_workspace_knowledge_permission(), + PermissionConstants.KNOWLEDGE_DOCUMENT_REPLACE.get_workspace_permission_workspace_manage_role(), RoleConstants.WORKSPACE_MANAGE.get_workspace_role(), ViewPermission([RoleConstants.USER.get_workspace_role()], [PermissionConstants.KNOWLEDGE.get_workspace_knowledge_permission()], CompareConstants.AND), diff --git a/apps/locales/en_US/LC_MESSAGES/django.po b/apps/locales/en_US/LC_MESSAGES/django.po index 77f0ce5ce..d4e3ba7b9 100644 --- a/apps/locales/en_US/LC_MESSAGES/django.po +++ b/apps/locales/en_US/LC_MESSAGES/django.po @@ -8736,4 +8736,10 @@ msgid "Tag" msgstr "" msgid "Tag Setting" +msgstr "" + +msgid "Download Original Document" +msgstr "" + +msgid "Replace Original Document" msgstr "" \ No newline at end of file diff --git a/apps/locales/zh_CN/LC_MESSAGES/django.po b/apps/locales/zh_CN/LC_MESSAGES/django.po index 6a27336ab..99de44746 100644 --- a/apps/locales/zh_CN/LC_MESSAGES/django.po +++ b/apps/locales/zh_CN/LC_MESSAGES/django.po @@ -8863,3 +8863,9 @@ msgstr "标签管理" msgid "Tag Setting" msgstr "标签设置" + +msgid "Download Original Document" +msgstr "下载原文档" + +msgid "Replace Original Document" +msgstr "替换原文档" diff --git a/apps/locales/zh_Hant/LC_MESSAGES/django.po b/apps/locales/zh_Hant/LC_MESSAGES/django.po index 05c06bae8..042b934e4 100644 --- a/apps/locales/zh_Hant/LC_MESSAGES/django.po +++ b/apps/locales/zh_Hant/LC_MESSAGES/django.po @@ -8863,3 +8863,9 @@ msgstr "標籤管理" msgid "Tag Setting" msgstr "標籤設定" + +msgid "Download Original Document" +msgstr "下載原文件" + +msgid "Replace Original Document" +msgstr "替換原文件" diff --git a/ui/src/permission/knowledge/system-manage.ts b/ui/src/permission/knowledge/system-manage.ts index 442919e55..07208f5f0 100644 --- a/ui/src/permission/knowledge/system-manage.ts +++ b/ui/src/permission/knowledge/system-manage.ts @@ -115,6 +115,12 @@ const systemManage = { PermissionConst.RESOURCE_KNOWLEDGE_DOCUMENT_TAG ],'OR' ), + doc_replace: () => hasPermission( + [ + RoleConst.ADMIN, + PermissionConst.RESOURCE_KNOWLEDGE_DOCUMENT_REPLACE + ],'OR' + ), knowledge_chat_user_read: () => hasPermission([ RoleConst.ADMIN, diff --git a/ui/src/permission/knowledge/system-share.ts b/ui/src/permission/knowledge/system-share.ts index 56a17c05b..76beff8bc 100644 --- a/ui/src/permission/knowledge/system-share.ts +++ b/ui/src/permission/knowledge/system-share.ts @@ -141,6 +141,14 @@ const share = { ], 'OR' ), + doc_replace: () => + hasPermission ( + [ + RoleConst.ADMIN, + PermissionConst.SHARED_KNOWLEDGE_DOCUMENT_REPLACE + ], + 'OR' + ), problem_create: () => hasPermission ( [ diff --git a/ui/src/permission/knowledge/workspace-share.ts b/ui/src/permission/knowledge/workspace-share.ts index 40a607f09..65d9a0b0e 100644 --- a/ui/src/permission/knowledge/workspace-share.ts +++ b/ui/src/permission/knowledge/workspace-share.ts @@ -23,6 +23,7 @@ const workspaceShare = { doc_export: () => false, doc_download: () => false, doc_tag: () => false, + doc_replace: () => false, knowledge_chat_user_read: () => false, knowledge_chat_user_edit: () => false, diff --git a/ui/src/permission/knowledge/workspace.ts b/ui/src/permission/knowledge/workspace.ts index 836e0b01f..a0e7307ab 100644 --- a/ui/src/permission/knowledge/workspace.ts +++ b/ui/src/permission/knowledge/workspace.ts @@ -242,6 +242,16 @@ const workspace = { ], 'OR', ), + doc_replace: (source_id:string) => + hasPermission( + [ + new ComplexPermission([RoleConst.USER],[PermissionConst.KNOWLEDGE.getKnowledgeWorkspaceResourcePermission(source_id)],[],'AND'), + RoleConst.WORKSPACE_MANAGE.getWorkspaceRole, + PermissionConst.KNOWLEDGE_DOCUMENT_REPLACE.getKnowledgeWorkspaceResourcePermission(source_id), + PermissionConst.KNOWLEDGE_DOCUMENT_REPLACE.getWorkspacePermissionWorkspaceManageRole, + ], + 'OR', + ), knowledge_chat_user_read: (source_id:string) => false, knowledge_chat_user_edit: (source_id:string) => hasPermission( diff --git a/ui/src/utils/permission/data.ts b/ui/src/utils/permission/data.ts index 9165facb6..16635f9d9 100644 --- a/ui/src/utils/permission/data.ts +++ b/ui/src/utils/permission/data.ts @@ -121,6 +121,7 @@ const PermissionConst = { KNOWLEDGE_DOCUMENT_EXPORT: new Permission('KNOWLEDGE_DOCUMENT:READ+EXPORT'), KNOWLEDGE_DOCUMENT_DOWNLOAD_SOURCE_FILE: new Permission('KNOWLEDGE_DOCUMENT:READ+DOWNLOAD'), KNOWLEDGE_DOCUMENT_TAG: new Permission('KNOWLEDGE_DOCUMENT:READ+TAG'), + KNOWLEDGE_DOCUMENT_REPLACE: new Permission('KNOWLEDGE_DOCUMENT:READ+REPLACE'), KNOWLEDGE_TAG_READ: new Permission('KNOWLEDGE_TAG:READ'), KNOWLEDGE_TAG_CREATE: new Permission('KNOWLEDGE_TAG:READ+CREATE'), @@ -201,6 +202,7 @@ const PermissionConst = { SHARED_KNOWLEDGE_DOCUMENT_EXPORT: new Permission('SYSTEM_KNOWLEDGE_DOCUMENT:READ+EXPORT'), SHARED_KNOWLEDGE_DOCUMENT_DOWNLOAD_SOURCE_FILE: new Permission('SYSTEM_KNOWLEDGE_DOCUMENT:READ+DOWNLOAD'), SHARED_KNOWLEDGE_DOCUMENT_TAG: new Permission('SYSTEM_KNOWLEDGE_DOCUMENT:READ+TAG'), + SHARED_KNOWLEDGE_DOCUMENT_REPLACE: new Permission('SYSTEM_KNOWLEDGE_DOCUMENT:READ+REPLACE'), SHARED_KNOWLEDGE_TAG_READ: new Permission('SYSTEM_KNOWLEDGE_TAG:READ'), SHARED_KNOWLEDGE_TAG_EDIT: new Permission('SYSTEM_KNOWLEDGE_TAG:READ+EDIT'), @@ -253,6 +255,7 @@ const PermissionConst = { RESOURCE_KNOWLEDGE_DOCUMENT_EXPORT: new Permission('SYSTEM_RESOURCE_KNOWLEDGE_DOCUMENT:READ+EXPORT'), RESOURCE_KNOWLEDGE_DOCUMENT_DOWNLOAD_SOURCE_FILE: new Permission('SYSTEM_RESOURCE_KNOWLEDGE_DOCUMENT:READ+DOWNLOAD'), RESOURCE_KNOWLEDGE_DOCUMENT_TAG: new Permission('SYSTEM_RESOURCE_KNOWLEDGE_DOCUMENT:READ+TAG'), + RESOURCE_KNOWLEDGE_DOCUMENT_REPLACE: new Permission('SYSTEM_RESOURCE_KNOWLEDGE_DOCUMENT:READ+REPLACE'), RESOURCE_KNOWLEDGE_TAG_READ: new Permission('SYSTEM_RESOURCE_KNOWLEDGE_PROBLEM:READ'), RESOURCE_KNOWLEDGE_TAG_CREATE: new Permission('SYSTEM_RESOURCE_KNOWLEDGE_PROBLEM:READ+CREATE'), diff --git a/ui/src/views/document/index.vue b/ui/src/views/document/index.vue index 450ab018f..0ef38202b 100644 --- a/ui/src/views/document/index.vue +++ b/ui/src/views/document/index.vue @@ -519,6 +519,7 @@ {{ $t('views.document.setting.download') }} - + @@ -786,7 +787,8 @@ const MoreFilledPermission1 = (id: string) => { permissionPrecise.value.doc_export(id) || permissionPrecise.value.doc_download(id) || permissionPrecise.value.doc_delete(id) || - permissionPrecise.value.doc_tag(id) + permissionPrecise.value.doc_tag(id) || + permissionPrecise.value.doc_replace(id) ) }