From 3cbdebc57058917fc72409f9566962664e740e81 Mon Sep 17 00:00:00 2001 From: panxinying Date: Wed, 4 Nov 2026 11:07:59 +0800 Subject: [PATCH] feat: system and workspace knowledge permission --- ui/src/permission/core/common.ts | 17 +- ui/src/permission/core/data.ts | 394 +++++++++--------- ui/src/permission/modules/knowledge/index.ts | 6 +- ui/src/permission/modules/knowledge/share.ts | 231 +++++++++- ui/src/permission/modules/knowledge/system.ts | 207 ++++++++- .../permission/modules/knowledge/workspace.ts | 240 ++++++++++- .../modules/knowledge-system-resource.ts | 24 +- .../system/modules/knowledge-system-shared.ts | 23 +- .../admin/workspace/modules/knowledge.ts | 40 +- ui/src/views/document-detail/index.vue | 34 +- .../paragraph-dialog/ParagraphDialog.vue | 18 +- .../components/ParagraphQuestions.vue | 23 +- .../knowledge-detail/chat-user/index.vue | 24 +- .../external-retrieval/index.vue | 19 +- .../hit-test/components/HitTestInput.vue | 17 +- .../library/document/index.vue | 49 ++- .../knowledge-detail/library/image/index.vue | 40 +- .../library/tags/AssociatedDocumentDrawer.vue | 136 +++--- .../knowledge-detail/library/tags/index.vue | 30 +- .../components/ButtonCreateProblem.vue | 16 +- .../views/knowledge-detail/problem/index.vue | 30 +- .../knowledge-detail/setting/base/index.vue | 19 +- .../setting/document-strategy/index.vue | 18 +- .../setting/scheduled-sync/index.vue | 19 +- .../components/ButtonCreateTermbase.vue | 16 +- .../views/knowledge-detail/termbase/index.vue | 24 +- ui/src/views/knowledge/index.vue | 22 +- .../resource-management/knowledge/index.vue | 17 +- .../shared-resources/knowledge/index.vue | 15 +- 29 files changed, 1349 insertions(+), 419 deletions(-) diff --git a/ui/src/permission/core/common.ts b/ui/src/permission/core/common.ts index d0bba1df96e..eb9625bbf0f 100644 --- a/ui/src/permission/core/common.ts +++ b/ui/src/permission/core/common.ts @@ -92,6 +92,21 @@ export enum Group { SYSTEM_ACCESS = 'SYSTEM_ACCESS', SYSTEM_CHAT_LOG = 'SYSTEM_CHAT_LOG', CHAT = 'CHAT', + SYSTEM_SHARED_TOOL = 'SYSTEM_SHARED_TOOL', + SYSTEM_SHARED_KNOWLEDGE = 'SYSTEM_SHARED_KNOWLEDGE', + SYSTEM_SHARED_WORKFLOW = 'SYSTEM_SHARED_WORKFLOW', + SYSTEM_SHARED_DOCUMENT = 'SYSTEM_SHARED_DOCUMENT', + SYSTEM_SHARED_TAG = 'SYSTEM_SHARED_TAG', + SYSTEM_SHARED_PROBLEM = 'SYSTEM_SHARED_PROBLEM', + SYSTEM_SHARED_TERMBASE = 'SYSTEM_SHARED_TERMBASE', + SYSTEM_SHARED_HIT_TEST = 'SYSTEM_SHARED_HIT_TEST', + SYSTEM_SHARED_CHAT_USER= 'SYSTEM_SHARED_CHAT_USER', + SYSTEM_SHARED_IMAGE = 'SYSTEM_SHARED_IMAGE', + SYSTEM_SHARED_EXTERNAL_SERVICE = 'SYSTEM_SHARED_EXTERNAL_SERVICE', + SYSTEM_SHARED_KNOWLEDGE_SETTING = 'SYSTEM_SHARED_KNOWLEDGE_SETTING', + SYSTEM_SHARED_DOCUMENT_STRATEGY = 'SYSTEM_SHARED_DOCUMENT_STRATEGY', + SYSTEM_SHARED_SCHEDULED_SYNC = 'SYSTEM_SHARED_SCHEDULED_SYNC', + SYSTEM_SHARED_MODEL = 'SYSTEM_SHARED_MODEL', } /** @@ -261,7 +276,7 @@ export class Permission { const workspace = this.workspaceId ? `:w:${this.workspaceId}` : '' const resource = this.resourceId ? `:r:${this.resourceId}` : '' const flag = this.flag ? `_${this.flag}` : '' - const group = (this.group === Group.SYSTEM_RES_KNOWLEDGE || this.group === Group.KNOWLEDGE) && this.subGroup !== this.group ? `${this.group}_${this.subGroup}` : this.group + const group = this.group return `${group}${flag}${workspace}${resource}` } diff --git a/ui/src/permission/core/data.ts b/ui/src/permission/core/data.ts index 89ebe420924..b5efe40d39e 100644 --- a/ui/src/permission/core/data.ts +++ b/ui/src/permission/core/data.ts @@ -84,78 +84,78 @@ export const PermissionConstants = { TOOL_FOLDER_AUTH: p(Group.TOOL, Group.FOLDER, Operate.AUTH, 4), // ==================== KNOWLEDGE ==================== - KNOWLEDGE_READ: p(Group.KNOWLEDGE, Group.KNOWLEDGE, Operate.READ, 1), - KNOWLEDGE_CREATE: p(Group.KNOWLEDGE, Group.KNOWLEDGE, Operate.CREATE, 2), - KNOWLEDGE_EDIT: p(Group.KNOWLEDGE, Group.KNOWLEDGE, Operate.EDIT, 3), - KNOWLEDGE_DELETE: p(Group.KNOWLEDGE, Group.KNOWLEDGE, Operate.DELETE, 4), - KNOWLEDGE_SYNC: p(Group.KNOWLEDGE, Group.KNOWLEDGE, Operate.SYNC, 5), - KNOWLEDGE_EXPORT: p(Group.KNOWLEDGE, Group.KNOWLEDGE, Operate.EXPORT, 6), - KNOWLEDGE_VECTOR: p(Group.KNOWLEDGE, Group.KNOWLEDGE, Operate.VECTOR, 7), - KNOWLEDGE_GENERATE: p(Group.KNOWLEDGE, Group.KNOWLEDGE, Operate.GENERATE, 8), - KNOWLEDGE_BATCH_DELETE: p(Group.KNOWLEDGE, Group.KNOWLEDGE, Operate.BATCH_DELETE, 9), - KNOWLEDGE_BATCH_MOVE: p(Group.KNOWLEDGE, Group.KNOWLEDGE, Operate.BATCH_MOVE, 10), - KNOWLEDGE_RESOURCE_AUTHORIZATION: p(Group.KNOWLEDGE, Group.KNOWLEDGE, Operate.AUTH, 11), - KNOWLEDGE_RELATE_RESOURCE_VIEW: p(Group.KNOWLEDGE, Group.KNOWLEDGE, Operate.RELATE_VIEW, 12), - KNOWLEDGE_FOLDER_READ: p(Group.KNOWLEDGE, Group.FOLDER, Operate.READ, 0), - KNOWLEDGE_FOLDER_CREATE: p(Group.KNOWLEDGE, Group.FOLDER, Operate.CREATE, 1), - KNOWLEDGE_FOLDER_EDIT: p(Group.KNOWLEDGE, Group.FOLDER, Operate.EDIT, 2), - KNOWLEDGE_FOLDER_DELETE: p(Group.KNOWLEDGE, Group.FOLDER, Operate.DELETE, 3), - KNOWLEDGE_FOLDER_AUTH: p(Group.KNOWLEDGE, Group.FOLDER, Operate.AUTH, 4), - KNOWLEDGE_WORKFLOW_READ: p(Group.KNOWLEDGE, Group.WORKFLOW, Operate.READ, 0), - KNOWLEDGE_WORKFLOW_EDIT: p(Group.KNOWLEDGE, Group.WORKFLOW, Operate.EDIT, 1), - KNOWLEDGE_WORKFLOW_EXPORT: p(Group.KNOWLEDGE, Group.WORKFLOW, Operate.EXPORT, 2), - KNOWLEDGE_WORKFLOW_PUBLISH: p(Group.KNOWLEDGE, Group.WORKFLOW, Operate.PUBLISH, 3), - KNOWLEDGE_MCP_CONFIG: p(Group.KNOWLEDGE, Group.KNOWLEDGE, Operate.MCP_CONFIG, 13), - KNOWLEDGE_EXPORT_SKILLS: p(Group.KNOWLEDGE, Group.KNOWLEDGE, Operate.EXPORT_SKILLS, 14), - KNOWLEDGE_IMAGE_READ: p(Group.KNOWLEDGE, Group.IMAGE, Operate.READ, 0), - KNOWLEDGE_IMAGE_CREATE: p(Group.KNOWLEDGE, Group.IMAGE, Operate.CREATE, 1), - KNOWLEDGE_IMAGE_EDIT: p(Group.KNOWLEDGE, Group.IMAGE, Operate.EDIT, 2), - KNOWLEDGE_IMAGE_DELETE: p(Group.KNOWLEDGE, Group.IMAGE, Operate.DELETE, 3), - KNOWLEDGE_IMAGE_DOWNLOAD_SOURCE_FILE: p(Group.KNOWLEDGE, Group.IMAGE, Operate.DOWNLOAD, 4), - KNOWLEDGE_IMAGE_GENERATE: p(Group.KNOWLEDGE, Group.IMAGE, Operate.GENERATE, 5), - KNOWLEDGE_IMAGE_VECTOR: p(Group.KNOWLEDGE, Group.IMAGE, Operate.VECTOR, 6), - KNOWLEDGE_IMAGE_MIGRATE: p(Group.KNOWLEDGE, Group.IMAGE, Operate.MIGRATE, 7), - KNOWLEDGE_IMAGE_TAG: p(Group.KNOWLEDGE, Group.IMAGE, Operate.TAG, 8), - KNOWLEDGE_IMAGE_REPLACE: p(Group.KNOWLEDGE, Group.IMAGE, Operate.REPLACE, 9), - KNOWLEDGE_IMAGE_TOKEN: p(Group.KNOWLEDGE, Group.IMAGE, Operate.TOKEN, 10), - KNOWLEDGE_SCHEDULED_SYNC_READ: p(Group.KNOWLEDGE, Group.SCHEDULED_SYNC, Operate.READ, 0), - KNOWLEDGE_SCHEDULED_SYNC_EDIT: p(Group.KNOWLEDGE, Group.SCHEDULED_SYNC, Operate.EDIT, 1), - KNOWLEDGE_DOCUMENT_STRATEGY_READ: p(Group.KNOWLEDGE, Group.DOCUMENT_STRATEGY, Operate.READ, 0), - KNOWLEDGE_DOCUMENT_STRATEGY_EDIT: p(Group.KNOWLEDGE, Group.DOCUMENT_STRATEGY, Operate.EDIT, 1), - KNOWLEDGE_EXTERNAL_SERVICE_READ: p(Group.KNOWLEDGE, Group.EXTERNAL_SERVICE, Operate.READ, 0), - KNOWLEDGE_EXTERNAL_SERVICE_EDIT: p(Group.KNOWLEDGE, Group.EXTERNAL_SERVICE, Operate.EDIT, 1), - KNOWLEDGE_SETTING_READ: p(Group.KNOWLEDGE, Group.KNOWLEDGE_SETTING, Operate.READ, 0), - KNOWLEDGE_SETTING_EDIT: p(Group.KNOWLEDGE, Group.KNOWLEDGE_SETTING, Operate.EDIT, 1), - - KNOWLEDGE_DOCUMENT_READ: p(Group.KNOWLEDGE, Group.DOCUMENT, Operate.READ, 0), - KNOWLEDGE_DOCUMENT_CREATE: p(Group.KNOWLEDGE, Group.DOCUMENT, Operate.CREATE, 1), - KNOWLEDGE_DOCUMENT_EDIT: p(Group.KNOWLEDGE, Group.DOCUMENT, Operate.EDIT, 2), - KNOWLEDGE_DOCUMENT_DELETE: p(Group.KNOWLEDGE, Group.DOCUMENT, Operate.DELETE, 3), - KNOWLEDGE_DOCUMENT_SYNC: p(Group.KNOWLEDGE, Group.DOCUMENT, Operate.SYNC, 4), - KNOWLEDGE_DOCUMENT_EXPORT: p(Group.KNOWLEDGE, Group.DOCUMENT, Operate.EXPORT, 5), - KNOWLEDGE_DOCUMENT_DOWNLOAD_SOURCE_FILE: p(Group.KNOWLEDGE, Group.DOCUMENT, Operate.DOWNLOAD, 6), - KNOWLEDGE_DOCUMENT_GENERATE: p(Group.KNOWLEDGE, Group.DOCUMENT, Operate.GENERATE, 7), - KNOWLEDGE_DOCUMENT_VECTOR: p(Group.KNOWLEDGE, Group.DOCUMENT, Operate.VECTOR, 8), - KNOWLEDGE_DOCUMENT_MIGRATE: p(Group.KNOWLEDGE, Group.DOCUMENT, Operate.MIGRATE, 9), - KNOWLEDGE_DOCUMENT_TAG: p(Group.KNOWLEDGE, Group.DOCUMENT, Operate.TAG, 10), - KNOWLEDGE_DOCUMENT_REPLACE: p(Group.KNOWLEDGE, Group.DOCUMENT, Operate.REPLACE, 11), - KNOWLEDGE_DOCUMENT_TOKEN: p(Group.KNOWLEDGE, Group.DOCUMENT, Operate.TOKEN, 12), - KNOWLEDGE_HIT_TEST: p(Group.KNOWLEDGE, Group.HIT_TEST, Operate.READ, 0), - KNOWLEDGE_PROBLEM_READ: p(Group.KNOWLEDGE, Group.PROBLEM, Operate.READ, 0), - KNOWLEDGE_PROBLEM_CREATE: p(Group.KNOWLEDGE, Group.PROBLEM, Operate.CREATE, 1), - KNOWLEDGE_PROBLEM_EDIT: p(Group.KNOWLEDGE, Group.PROBLEM, Operate.EDIT, 2), - KNOWLEDGE_PROBLEM_DELETE: p(Group.KNOWLEDGE, Group.PROBLEM, Operate.DELETE, 3), - KNOWLEDGE_PROBLEM_RELATE: p(Group.KNOWLEDGE, Group.PROBLEM, Operate.RELATE, 4), - KNOWLEDGE_TERMBASE_READ: p(Group.KNOWLEDGE, Group.TERMBASE, Operate.READ, 0), - KNOWLEDGE_TERMBASE_CREATE: p(Group.KNOWLEDGE, Group.TERMBASE, Operate.CREATE, 1), - KNOWLEDGE_TERMBASE_EDIT: p(Group.KNOWLEDGE, Group.TERMBASE, Operate.EDIT, 2), - KNOWLEDGE_TERMBASE_DELETE: p(Group.KNOWLEDGE, Group.TERMBASE, Operate.DELETE, 3), - KNOWLEDGE_TAG_READ: p(Group.KNOWLEDGE, Group.TAG, Operate.READ, 0), - KNOWLEDGE_TAG_CREATE: p(Group.KNOWLEDGE, Group.TAG, Operate.CREATE, 1), - KNOWLEDGE_TAG_EDIT: p(Group.KNOWLEDGE, Group.TAG, Operate.EDIT, 2), - KNOWLEDGE_TAG_DELETE: p(Group.KNOWLEDGE, Group.TAG, Operate.DELETE, 3), - KNOWLEDGE_CHAT_USER_READ: p(Group.KNOWLEDGE, Group.CHAT_USER, Operate.READ, 0), - KNOWLEDGE_CHAT_USER_EDIT: p(Group.KNOWLEDGE, Group.CHAT_USER, Operate.EDIT, 1), + KNOWLEDGE_READ: p(Group.KNOWLEDGE, Group.KNOWLEDGE, Operate.READ, 0), + KNOWLEDGE_CREATE: p(Group.KNOWLEDGE, Group.KNOWLEDGE, Operate.CREATE, 1), + KNOWLEDGE_EDIT: p(Group.KNOWLEDGE, Group.KNOWLEDGE, Operate.EDIT, 2), + KNOWLEDGE_DELETE: p(Group.KNOWLEDGE, Group.KNOWLEDGE, Operate.DELETE, 3), + KNOWLEDGE_SYNC: p(Group.KNOWLEDGE, Group.KNOWLEDGE, Operate.SYNC, 4), + KNOWLEDGE_EXPORT: p(Group.KNOWLEDGE, Group.KNOWLEDGE, Operate.EXPORT, 5), + KNOWLEDGE_VECTOR: p(Group.KNOWLEDGE, Group.KNOWLEDGE, Operate.VECTOR, 6), + KNOWLEDGE_GENERATE: p(Group.KNOWLEDGE, Group.KNOWLEDGE, Operate.GENERATE, 7), + KNOWLEDGE_BATCH_DELETE: p(Group.KNOWLEDGE, Group.KNOWLEDGE, Operate.BATCH_DELETE, 8), + KNOWLEDGE_BATCH_MOVE: p(Group.KNOWLEDGE, Group.KNOWLEDGE, Operate.BATCH_MOVE, 9), + KNOWLEDGE_RESOURCE_AUTHORIZATION: p(Group.KNOWLEDGE, Group.KNOWLEDGE, Operate.AUTH, 10), + KNOWLEDGE_RELATE_RESOURCE_VIEW: p(Group.KNOWLEDGE, Group.KNOWLEDGE, Operate.RELATE_VIEW, 11), + KNOWLEDGE_MCP_CONFIG: p(Group.KNOWLEDGE, Group.KNOWLEDGE, Operate.MCP_CONFIG, 12), + KNOWLEDGE_EXPORT_SKILLS: p(Group.KNOWLEDGE, Group.KNOWLEDGE, Operate.EXPORT_SKILLS, 13), + KNOWLEDGE_IMAGE_READ: p(Group.KNOWLEDGE, Group.IMAGE, Operate.READ, 14), + KNOWLEDGE_IMAGE_CREATE: p(Group.KNOWLEDGE, Group.IMAGE, Operate.CREATE, 15), + KNOWLEDGE_IMAGE_EDIT: p(Group.KNOWLEDGE, Group.IMAGE, Operate.EDIT, 16), + KNOWLEDGE_IMAGE_DELETE: p(Group.KNOWLEDGE, Group.IMAGE, Operate.DELETE, 17), + KNOWLEDGE_IMAGE_DOWNLOAD_SOURCE_FILE: p(Group.KNOWLEDGE, Group.IMAGE, Operate.DOWNLOAD, 18), + KNOWLEDGE_IMAGE_GENERATE: p(Group.KNOWLEDGE, Group.IMAGE, Operate.GENERATE, 19), + KNOWLEDGE_IMAGE_VECTOR: p(Group.KNOWLEDGE, Group.IMAGE, Operate.VECTOR, 20), + KNOWLEDGE_IMAGE_MIGRATE: p(Group.KNOWLEDGE, Group.IMAGE, Operate.MIGRATE, 21), + KNOWLEDGE_IMAGE_TAG: p(Group.KNOWLEDGE, Group.IMAGE, Operate.TAG, 22), + KNOWLEDGE_IMAGE_REPLACE: p(Group.KNOWLEDGE, Group.IMAGE, Operate.REPLACE, 23), + KNOWLEDGE_IMAGE_TOKEN: p(Group.KNOWLEDGE, Group.IMAGE, Operate.TOKEN, 24), + KNOWLEDGE_SCHEDULED_SYNC_READ: p(Group.KNOWLEDGE, Group.SCHEDULED_SYNC, Operate.READ, 25), + KNOWLEDGE_SCHEDULED_SYNC_EDIT: p(Group.KNOWLEDGE, Group.SCHEDULED_SYNC, Operate.EDIT, 26), + KNOWLEDGE_DOCUMENT_STRATEGY_READ: p(Group.KNOWLEDGE, Group.DOCUMENT_STRATEGY, Operate.READ, 27), + KNOWLEDGE_DOCUMENT_STRATEGY_EDIT: p(Group.KNOWLEDGE, Group.DOCUMENT_STRATEGY, Operate.EDIT, 28), + KNOWLEDGE_EXTERNAL_SERVICE_READ: p(Group.KNOWLEDGE, Group.EXTERNAL_SERVICE, Operate.READ, 29), + KNOWLEDGE_EXTERNAL_SERVICE_EDIT: p(Group.KNOWLEDGE, Group.EXTERNAL_SERVICE, Operate.EDIT, 30), + KNOWLEDGE_SETTING_READ: p(Group.KNOWLEDGE, Group.KNOWLEDGE_SETTING, Operate.READ, 31), + KNOWLEDGE_SETTING_EDIT: p(Group.KNOWLEDGE, Group.KNOWLEDGE_SETTING, Operate.EDIT, 32), + KNOWLEDGE_FOLDER_READ: p(Group.KNOWLEDGE, Group.FOLDER, Operate.READ, 33), + KNOWLEDGE_FOLDER_CREATE: p(Group.KNOWLEDGE, Group.FOLDER, Operate.CREATE, 34), + KNOWLEDGE_FOLDER_EDIT: p(Group.KNOWLEDGE, Group.FOLDER, Operate.EDIT, 35), + KNOWLEDGE_FOLDER_DELETE: p(Group.KNOWLEDGE, Group.FOLDER, Operate.DELETE, 36), + KNOWLEDGE_FOLDER_AUTH: p(Group.KNOWLEDGE, Group.FOLDER, Operate.AUTH, 37), + KNOWLEDGE_WORKFLOW_READ: p(Group.KNOWLEDGE, Group.WORKFLOW, Operate.READ, 38), + KNOWLEDGE_WORKFLOW_EDIT: p(Group.KNOWLEDGE, Group.WORKFLOW, Operate.EDIT, 39), + KNOWLEDGE_WORKFLOW_EXPORT: p(Group.KNOWLEDGE, Group.WORKFLOW, Operate.EXPORT, 40), + KNOWLEDGE_WORKFLOW_PUBLISH: p(Group.KNOWLEDGE, Group.WORKFLOW, Operate.PUBLISH, 41), + KNOWLEDGE_DOCUMENT_READ: p(Group.KNOWLEDGE, Group.DOCUMENT, Operate.READ, 42), + KNOWLEDGE_DOCUMENT_CREATE: p(Group.KNOWLEDGE, Group.DOCUMENT, Operate.CREATE, 43), + KNOWLEDGE_DOCUMENT_EDIT: p(Group.KNOWLEDGE, Group.DOCUMENT, Operate.EDIT, 44), + KNOWLEDGE_DOCUMENT_DELETE: p(Group.KNOWLEDGE, Group.DOCUMENT, Operate.DELETE, 45), + KNOWLEDGE_DOCUMENT_SYNC: p(Group.KNOWLEDGE, Group.DOCUMENT, Operate.SYNC, 46), + KNOWLEDGE_DOCUMENT_EXPORT: p(Group.KNOWLEDGE, Group.DOCUMENT, Operate.EXPORT, 47), + KNOWLEDGE_DOCUMENT_DOWNLOAD_SOURCE_FILE: p(Group.KNOWLEDGE, Group.DOCUMENT, Operate.DOWNLOAD, 48), + KNOWLEDGE_DOCUMENT_GENERATE: p(Group.KNOWLEDGE, Group.DOCUMENT, Operate.GENERATE, 49), + KNOWLEDGE_DOCUMENT_VECTOR: p(Group.KNOWLEDGE, Group.DOCUMENT, Operate.VECTOR, 50), + KNOWLEDGE_DOCUMENT_MIGRATE: p(Group.KNOWLEDGE, Group.DOCUMENT, Operate.MIGRATE, 51), + KNOWLEDGE_DOCUMENT_TAG: p(Group.KNOWLEDGE, Group.DOCUMENT, Operate.TAG, 52), + KNOWLEDGE_DOCUMENT_REPLACE: p(Group.KNOWLEDGE, Group.DOCUMENT, Operate.REPLACE, 53), + KNOWLEDGE_DOCUMENT_TOKEN: p(Group.KNOWLEDGE, Group.DOCUMENT, Operate.TOKEN, 54), + KNOWLEDGE_HIT_TEST: p(Group.KNOWLEDGE, Group.HIT_TEST, Operate.READ, 55), + KNOWLEDGE_PROBLEM_READ: p(Group.KNOWLEDGE, Group.PROBLEM, Operate.READ, 56), + KNOWLEDGE_PROBLEM_CREATE: p(Group.KNOWLEDGE, Group.PROBLEM, Operate.CREATE, 57), + KNOWLEDGE_PROBLEM_EDIT: p(Group.KNOWLEDGE, Group.PROBLEM, Operate.EDIT, 58), + KNOWLEDGE_PROBLEM_DELETE: p(Group.KNOWLEDGE, Group.PROBLEM, Operate.DELETE, 59), + KNOWLEDGE_PROBLEM_RELATE: p(Group.KNOWLEDGE, Group.PROBLEM, Operate.RELATE, 60), + KNOWLEDGE_TERMBASE_READ: p(Group.KNOWLEDGE, Group.TERMBASE, Operate.READ, 61), + KNOWLEDGE_TERMBASE_CREATE: p(Group.KNOWLEDGE, Group.TERMBASE, Operate.CREATE, 62), + KNOWLEDGE_TERMBASE_EDIT: p(Group.KNOWLEDGE, Group.TERMBASE, Operate.EDIT, 63), + KNOWLEDGE_TERMBASE_DELETE: p(Group.KNOWLEDGE, Group.TERMBASE, Operate.DELETE, 64), + KNOWLEDGE_TERMBASE_EXPORT: p(Group.KNOWLEDGE, Group.TERMBASE, Operate.EXPORT, 65), + KNOWLEDGE_TAG_READ: p(Group.KNOWLEDGE, Group.TAG, Operate.READ, 66), + KNOWLEDGE_TAG_CREATE: p(Group.KNOWLEDGE, Group.TAG, Operate.CREATE, 67), + KNOWLEDGE_TAG_EDIT: p(Group.KNOWLEDGE, Group.TAG, Operate.EDIT, 68), + KNOWLEDGE_TAG_DELETE: p(Group.KNOWLEDGE, Group.TAG, Operate.DELETE, 69), + KNOWLEDGE_CHAT_USER_READ: p(Group.KNOWLEDGE, Group.CHAT_USER, Operate.READ, 70), + KNOWLEDGE_CHAT_USER_EDIT: p(Group.KNOWLEDGE, Group.CHAT_USER, Operate.EDIT, 71), // ==================== RESOURCE_PERMISSION ==================== APPLICATION_RESOURCE_PERMISSION_READ: p(Group.RESOURCE_PERMISSION, Group.APPLICATION_RESOURCE_PERMISSION, Operate.READ, 0), @@ -269,70 +269,89 @@ export const PermissionConstants = { PORTAL_EDIT: p(Group.PORTAL, Group.PORTAL, Operate.EDIT, 0), // ==================== SYSTEM_TOOL ==================== - SHARED_TOOL_READ: p(Group.SYSTEM_TOOL, Group.SYSTEM_TOOL, Operate.READ, 0), - SHARED_TOOL_CREATE: p(Group.SYSTEM_TOOL, Group.SYSTEM_TOOL, Operate.CREATE, 1), - SHARED_TOOL_EDIT: p(Group.SYSTEM_TOOL, Group.SYSTEM_TOOL, Operate.EDIT, 2), - SHARED_TOOL_DELETE: p(Group.SYSTEM_TOOL, Group.SYSTEM_TOOL, Operate.DELETE, 3), - SHARED_TOOL_IMPORT: p(Group.SYSTEM_TOOL, Group.SYSTEM_TOOL, Operate.IMPORT, 4), - SHARED_TOOL_EXPORT: p(Group.SYSTEM_TOOL, Group.SYSTEM_TOOL, Operate.EXPORT, 5), - SHARED_TOOL_PUBLISH: p(Group.SYSTEM_TOOL, Group.SYSTEM_TOOL, Operate.PUBLISH, 6), - SHARED_TOOL_RELATE_RESOURCE_VIEW: p(Group.SYSTEM_TOOL, Group.SYSTEM_TOOL, Operate.RELATE_VIEW, 7), - SHARED_TOOL_EXECUTE_RECORD: p(Group.SYSTEM_TOOL, Group.SYSTEM_TOOL, Operate.RECORD, 8), - SHARED_TOOL_TO_WORKSPACE: p(Group.SYSTEM_TOOL, Group.SYSTEM_TOOL, Operate.TO_WORKSPACE, 9), + SHARED_TOOL_READ: p(Group.SYSTEM_SHARED_TOOL, Group.SYSTEM_SHARED_TOOL, Operate.READ, 0), + SHARED_TOOL_CREATE: p(Group.SYSTEM_SHARED_TOOL, Group.SYSTEM_SHARED_TOOL, Operate.CREATE, 1), + SHARED_TOOL_EDIT: p(Group.SYSTEM_SHARED_TOOL, Group.SYSTEM_SHARED_TOOL, Operate.EDIT, 2), + SHARED_TOOL_DELETE: p(Group.SYSTEM_SHARED_TOOL, Group.SYSTEM_SHARED_TOOL, Operate.DELETE, 3), + SHARED_TOOL_IMPORT: p(Group.SYSTEM_SHARED_TOOL, Group.SYSTEM_SHARED_TOOL, Operate.IMPORT, 4), + SHARED_TOOL_EXPORT: p(Group.SYSTEM_SHARED_TOOL, Group.SYSTEM_SHARED_TOOL, Operate.EXPORT, 5), + SHARED_TOOL_PUBLISH: p(Group.SYSTEM_SHARED_TOOL, Group.SYSTEM_SHARED_TOOL, Operate.PUBLISH, 6), + SHARED_TOOL_RELATE_RESOURCE_VIEW: p(Group.SYSTEM_SHARED_TOOL, Group.SYSTEM_SHARED_TOOL, Operate.RELATE_VIEW, 7), + SHARED_TOOL_EXECUTE_RECORD: p(Group.SYSTEM_SHARED_TOOL, Group.SYSTEM_SHARED_TOOL, Operate.RECORD, 8), + SHARED_TOOL_TO_WORKSPACE: p(Group.SYSTEM_SHARED_TOOL, Group.SYSTEM_SHARED_TOOL, Operate.TO_WORKSPACE, 9), // ==================== SYSTEM_KNOWLEDGE ==================== - SHARED_KNOWLEDGE_READ: p(Group.SYSTEM_KNOWLEDGE, Group.SYSTEM_KNOWLEDGE, Operate.READ, 0), - SHARED_KNOWLEDGE_CREATE: p(Group.SYSTEM_KNOWLEDGE, Group.SYSTEM_KNOWLEDGE, Operate.CREATE, 1), - SHARED_KNOWLEDGE_EDIT: p(Group.SYSTEM_KNOWLEDGE, Group.SYSTEM_KNOWLEDGE, Operate.EDIT, 2), - SHARED_KNOWLEDGE_SYNC: p(Group.SYSTEM_KNOWLEDGE, Group.SYSTEM_KNOWLEDGE, Operate.SYNC, 3), - SHARED_KNOWLEDGE_VECTOR: p(Group.SYSTEM_KNOWLEDGE, Group.SYSTEM_KNOWLEDGE, Operate.VECTOR, 4), - SHARED_KNOWLEDGE_EXPORT: p(Group.SYSTEM_KNOWLEDGE, Group.SYSTEM_KNOWLEDGE, Operate.EXPORT, 5), - SHARED_KNOWLEDGE_GENERATE: p(Group.SYSTEM_KNOWLEDGE, Group.SYSTEM_KNOWLEDGE, Operate.GENERATE, 6), - SHARED_KNOWLEDGE_DELETE: p(Group.SYSTEM_KNOWLEDGE, Group.SYSTEM_KNOWLEDGE, Operate.DELETE, 7), - SHARED_KNOWLEDGE_RELATE_RESOURCE_VIEW: p(Group.SYSTEM_KNOWLEDGE, Group.SYSTEM_KNOWLEDGE, Operate.RELATE_VIEW, 8), - SHARED_KNOWLEDGE_TO_WORKSPACE: p(Group.SYSTEM_KNOWLEDGE, Group.SYSTEM_KNOWLEDGE, Operate.TO_WORKSPACE, 9), - SHARED_KNOWLEDGE_WORKFLOW_READ: p(Group.SYSTEM_KNOWLEDGE, Group.SYSTEM_WORKFLOW, Operate.READ, 0), - SHARED_KNOWLEDGE_WORKFLOW_EDIT: p(Group.SYSTEM_KNOWLEDGE, Group.SYSTEM_WORKFLOW, Operate.EDIT, 1), - SHARED_KNOWLEDGE_WORKFLOW_EXPORT: p(Group.SYSTEM_KNOWLEDGE, Group.SYSTEM_WORKFLOW, Operate.EXPORT, 2), - SHARED_KNOWLEDGE_WORKFLOW_PUBLISH: p(Group.SYSTEM_KNOWLEDGE, Group.SYSTEM_WORKFLOW, Operate.PUBLISH, 3), - SHARED_KNOWLEDGE_DOCUMENT_READ: p(Group.SYSTEM_KNOWLEDGE, Group.SYSTEM_DOCUMENT, Operate.READ, 0), - SHARED_KNOWLEDGE_DOCUMENT_CREATE: p(Group.SYSTEM_KNOWLEDGE, Group.SYSTEM_DOCUMENT, Operate.CREATE, 1), - SHARED_KNOWLEDGE_DOCUMENT_EDIT: p(Group.SYSTEM_KNOWLEDGE, Group.SYSTEM_DOCUMENT, Operate.EDIT, 2), - SHARED_KNOWLEDGE_DOCUMENT_DELETE: p(Group.SYSTEM_KNOWLEDGE, Group.SYSTEM_DOCUMENT, Operate.DELETE, 3), - SHARED_KNOWLEDGE_DOCUMENT_SYNC: p(Group.SYSTEM_KNOWLEDGE, Group.SYSTEM_DOCUMENT, Operate.SYNC, 4), - SHARED_KNOWLEDGE_DOCUMENT_EXPORT: p(Group.SYSTEM_KNOWLEDGE, Group.SYSTEM_DOCUMENT, Operate.EXPORT, 5), - SHARED_KNOWLEDGE_DOCUMENT_DOWNLOAD_SOURCE_FILE: p(Group.SYSTEM_KNOWLEDGE, Group.SYSTEM_DOCUMENT, Operate.DOWNLOAD, 6), - SHARED_KNOWLEDGE_DOCUMENT_GENERATE: p(Group.SYSTEM_KNOWLEDGE, Group.SYSTEM_DOCUMENT, Operate.GENERATE, 7), - SHARED_KNOWLEDGE_DOCUMENT_VECTOR: p(Group.SYSTEM_KNOWLEDGE, Group.SYSTEM_DOCUMENT, Operate.VECTOR, 8), - SHARED_KNOWLEDGE_DOCUMENT_MIGRATE: p(Group.SYSTEM_KNOWLEDGE, Group.SYSTEM_DOCUMENT, Operate.MIGRATE, 9), - SHARED_KNOWLEDGE_DOCUMENT_TAG: p(Group.SYSTEM_KNOWLEDGE, Group.SYSTEM_DOCUMENT, Operate.TAG, 10), - SHARED_KNOWLEDGE_DOCUMENT_REPLACE: p(Group.SYSTEM_KNOWLEDGE, Group.SYSTEM_DOCUMENT, Operate.REPLACE, 11), - SHARED_KNOWLEDGE_DOCUMENT_TOKEN: p(Group.SYSTEM_KNOWLEDGE, Group.SYSTEM_DOCUMENT, Operate.TOKEN, 12), - SHARED_KNOWLEDGE_TAG_READ: p(Group.SYSTEM_KNOWLEDGE, Group.SYSTEM_TAG, Operate.READ, 0), - SHARED_KNOWLEDGE_TAG_CREATE: p(Group.SYSTEM_KNOWLEDGE, Group.SYSTEM_TAG, Operate.CREATE, 1), - SHARED_KNOWLEDGE_TAG_EDIT: p(Group.SYSTEM_KNOWLEDGE, Group.SYSTEM_TAG, Operate.EDIT, 2), - SHARED_KNOWLEDGE_TAG_DELETE: p(Group.SYSTEM_KNOWLEDGE, Group.SYSTEM_TAG, Operate.DELETE, 3), - SHARED_KNOWLEDGE_PROBLEM_READ: p(Group.SYSTEM_KNOWLEDGE, Group.SYSTEM_PROBLEM, Operate.READ, 0), - SHARED_KNOWLEDGE_PROBLEM_CREATE: p(Group.SYSTEM_KNOWLEDGE, Group.SYSTEM_PROBLEM, Operate.CREATE, 1), - SHARED_KNOWLEDGE_PROBLEM_EDIT: p(Group.SYSTEM_KNOWLEDGE, Group.SYSTEM_PROBLEM, Operate.EDIT, 2), - SHARED_KNOWLEDGE_PROBLEM_DELETE: p(Group.SYSTEM_KNOWLEDGE, Group.SYSTEM_PROBLEM, Operate.DELETE, 3), - SHARED_KNOWLEDGE_PROBLEM_RELATE: p(Group.SYSTEM_KNOWLEDGE, Group.SYSTEM_PROBLEM, Operate.RELATE, 4), - SHARED_KNOWLEDGE_TERMBASE_READ: p(Group.SYSTEM_KNOWLEDGE, Group.SYSTEM_TERMBASE, Operate.READ, 0), - SHARED_KNOWLEDGE_TERMBASE_CREATE: p(Group.SYSTEM_KNOWLEDGE, Group.SYSTEM_TERMBASE, Operate.CREATE, 1), - SHARED_KNOWLEDGE_TERMBASE_EDIT: p(Group.SYSTEM_KNOWLEDGE, Group.SYSTEM_TERMBASE, Operate.EDIT, 2), - SHARED_KNOWLEDGE_TERMBASE_DELETE: p(Group.SYSTEM_KNOWLEDGE, Group.SYSTEM_TERMBASE, Operate.DELETE, 3), - SHARED_KNOWLEDGE_TERMBASE_EXPORT: p(Group.SYSTEM_KNOWLEDGE, Group.SYSTEM_TERMBASE, Operate.EXPORT, 4), - SHARED_KNOWLEDGE_HIT_TEST: p(Group.SYSTEM_KNOWLEDGE, Group.SYSTEM_HIT_TEST, Operate.READ, 0), - SHARED_KNOWLEDGE_CHAT_USER_READ: p(Group.SYSTEM_KNOWLEDGE, Group.SYSTEM_CHAT_USER, Operate.READ, 0), - SHARED_KNOWLEDGE_CHAT_USER_EDIT: p(Group.SYSTEM_KNOWLEDGE, Group.SYSTEM_CHAT_USER, Operate.EDIT, 1), + SHARED_KNOWLEDGE_READ: p(Group.SYSTEM_SHARED_KNOWLEDGE, Group.SYSTEM_SHARED_KNOWLEDGE, Operate.READ, 0), + SHARED_KNOWLEDGE_CREATE: p(Group.SYSTEM_SHARED_KNOWLEDGE, Group.SYSTEM_SHARED_KNOWLEDGE, Operate.CREATE, 1), + SHARED_KNOWLEDGE_EDIT: p(Group.SYSTEM_SHARED_KNOWLEDGE, Group.SYSTEM_SHARED_KNOWLEDGE, Operate.EDIT, 2), + SHARED_KNOWLEDGE_SYNC: p(Group.SYSTEM_SHARED_KNOWLEDGE, Group.SYSTEM_SHARED_KNOWLEDGE, Operate.SYNC, 3), + SHARED_KNOWLEDGE_VECTOR: p(Group.SYSTEM_SHARED_KNOWLEDGE, Group.SYSTEM_SHARED_KNOWLEDGE, Operate.VECTOR, 4), + SHARED_KNOWLEDGE_EXPORT: p(Group.SYSTEM_SHARED_KNOWLEDGE, Group.SYSTEM_SHARED_KNOWLEDGE, Operate.EXPORT, 5), + SHARED_KNOWLEDGE_GENERATE: p(Group.SYSTEM_SHARED_KNOWLEDGE, Group.SYSTEM_SHARED_KNOWLEDGE, Operate.GENERATE, 6), + SHARED_KNOWLEDGE_DELETE: p(Group.SYSTEM_SHARED_KNOWLEDGE, Group.SYSTEM_SHARED_KNOWLEDGE, Operate.DELETE, 7), + SHARED_KNOWLEDGE_RELATE_RESOURCE_VIEW: p(Group.SYSTEM_SHARED_KNOWLEDGE, Group.SYSTEM_SHARED_KNOWLEDGE, Operate.RELATE_VIEW, 8), + SHARED_KNOWLEDGE_TO_WORKSPACE: p(Group.SYSTEM_SHARED_KNOWLEDGE, Group.SYSTEM_SHARED_KNOWLEDGE, Operate.TO_WORKSPACE, 9), + SHARED_KNOWLEDGE_WORKFLOW_READ: p(Group.SYSTEM_SHARED_KNOWLEDGE, Group.SYSTEM_SHARED_WORKFLOW, Operate.READ, 10), + SHARED_KNOWLEDGE_WORKFLOW_EDIT: p(Group.SYSTEM_SHARED_KNOWLEDGE, Group.SYSTEM_SHARED_WORKFLOW, Operate.EDIT, 11), + SHARED_KNOWLEDGE_WORKFLOW_EXPORT: p(Group.SYSTEM_SHARED_KNOWLEDGE, Group.SYSTEM_SHARED_WORKFLOW, Operate.EXPORT, 12), + SHARED_KNOWLEDGE_WORKFLOW_PUBLISH: p(Group.SYSTEM_SHARED_KNOWLEDGE, Group.SYSTEM_SHARED_WORKFLOW, Operate.PUBLISH, 13), + SHARED_KNOWLEDGE_DOCUMENT_READ: p(Group.SYSTEM_SHARED_KNOWLEDGE, Group.SYSTEM_SHARED_DOCUMENT, Operate.READ, 14), + SHARED_KNOWLEDGE_DOCUMENT_CREATE: p(Group.SYSTEM_SHARED_KNOWLEDGE, Group.SYSTEM_SHARED_DOCUMENT, Operate.CREATE, 15), + SHARED_KNOWLEDGE_DOCUMENT_EDIT: p(Group.SYSTEM_SHARED_KNOWLEDGE, Group.SYSTEM_SHARED_DOCUMENT, Operate.EDIT, 16), + SHARED_KNOWLEDGE_DOCUMENT_DELETE: p(Group.SYSTEM_SHARED_KNOWLEDGE, Group.SYSTEM_SHARED_DOCUMENT, Operate.DELETE, 17), + SHARED_KNOWLEDGE_DOCUMENT_SYNC: p(Group.SYSTEM_SHARED_KNOWLEDGE, Group.SYSTEM_SHARED_DOCUMENT, Operate.SYNC, 18), + SHARED_KNOWLEDGE_DOCUMENT_EXPORT: p(Group.SYSTEM_SHARED_KNOWLEDGE, Group.SYSTEM_SHARED_DOCUMENT, Operate.EXPORT, 19), + SHARED_KNOWLEDGE_DOCUMENT_DOWNLOAD_SOURCE_FILE: p(Group.SYSTEM_SHARED_KNOWLEDGE, Group.SYSTEM_SHARED_DOCUMENT, Operate.DOWNLOAD, 20), + SHARED_KNOWLEDGE_DOCUMENT_GENERATE: p(Group.SYSTEM_SHARED_KNOWLEDGE, Group.SYSTEM_SHARED_DOCUMENT, Operate.GENERATE, 21), + SHARED_KNOWLEDGE_DOCUMENT_VECTOR: p(Group.SYSTEM_SHARED_KNOWLEDGE, Group.SYSTEM_SHARED_DOCUMENT, Operate.VECTOR, 22), + SHARED_KNOWLEDGE_DOCUMENT_MIGRATE: p(Group.SYSTEM_SHARED_KNOWLEDGE, Group.SYSTEM_SHARED_DOCUMENT, Operate.MIGRATE, 23), + SHARED_KNOWLEDGE_DOCUMENT_TAG: p(Group.SYSTEM_SHARED_KNOWLEDGE, Group.SYSTEM_SHARED_DOCUMENT, Operate.TAG, 24), + SHARED_KNOWLEDGE_DOCUMENT_REPLACE: p(Group.SYSTEM_SHARED_KNOWLEDGE, Group.SYSTEM_SHARED_DOCUMENT, Operate.REPLACE, 25), + SHARED_KNOWLEDGE_DOCUMENT_TOKEN: p(Group.SYSTEM_SHARED_KNOWLEDGE, Group.SYSTEM_SHARED_DOCUMENT, Operate.TOKEN, 26), + SHARED_KNOWLEDGE_TAG_READ: p(Group.SYSTEM_SHARED_KNOWLEDGE, Group.SYSTEM_SHARED_TAG, Operate.READ, 27), + SHARED_KNOWLEDGE_TAG_CREATE: p(Group.SYSTEM_SHARED_KNOWLEDGE, Group.SYSTEM_SHARED_TAG, Operate.CREATE, 28), + SHARED_KNOWLEDGE_TAG_EDIT: p(Group.SYSTEM_SHARED_KNOWLEDGE, Group.SYSTEM_SHARED_TAG, Operate.EDIT, 29), + SHARED_KNOWLEDGE_TAG_DELETE: p(Group.SYSTEM_SHARED_KNOWLEDGE, Group.SYSTEM_SHARED_TAG, Operate.DELETE, 30), + SHARED_KNOWLEDGE_PROBLEM_READ: p(Group.SYSTEM_SHARED_KNOWLEDGE, Group.SYSTEM_SHARED_PROBLEM, Operate.READ, 31), + SHARED_KNOWLEDGE_PROBLEM_CREATE: p(Group.SYSTEM_SHARED_KNOWLEDGE, Group.SYSTEM_SHARED_PROBLEM, Operate.CREATE, 32), + SHARED_KNOWLEDGE_PROBLEM_EDIT: p(Group.SYSTEM_SHARED_KNOWLEDGE, Group.SYSTEM_SHARED_PROBLEM, Operate.EDIT, 33), + SHARED_KNOWLEDGE_PROBLEM_DELETE: p(Group.SYSTEM_SHARED_KNOWLEDGE, Group.SYSTEM_SHARED_PROBLEM, Operate.DELETE, 34), + SHARED_KNOWLEDGE_PROBLEM_RELATE: p(Group.SYSTEM_SHARED_KNOWLEDGE, Group.SYSTEM_SHARED_PROBLEM, Operate.RELATE, 35), + SHARED_KNOWLEDGE_TERMBASE_READ: p(Group.SYSTEM_SHARED_KNOWLEDGE, Group.SYSTEM_SHARED_TERMBASE, Operate.READ, 36), + SHARED_KNOWLEDGE_TERMBASE_CREATE: p(Group.SYSTEM_SHARED_KNOWLEDGE, Group.SYSTEM_SHARED_TERMBASE, Operate.CREATE, 37), + SHARED_KNOWLEDGE_TERMBASE_EDIT: p(Group.SYSTEM_SHARED_KNOWLEDGE, Group.SYSTEM_SHARED_TERMBASE, Operate.EDIT, 38), + SHARED_KNOWLEDGE_TERMBASE_DELETE: p(Group.SYSTEM_SHARED_KNOWLEDGE, Group.SYSTEM_SHARED_TERMBASE, Operate.DELETE, 39), + SHARED_KNOWLEDGE_TERMBASE_EXPORT: p(Group.SYSTEM_SHARED_KNOWLEDGE, Group.SYSTEM_SHARED_TERMBASE, Operate.EXPORT, 40), + SHARED_KNOWLEDGE_HIT_TEST: p(Group.SYSTEM_SHARED_KNOWLEDGE, Group.SYSTEM_SHARED_HIT_TEST, Operate.READ, 41), + SHARED_KNOWLEDGE_CHAT_USER_READ: p(Group.SYSTEM_SHARED_KNOWLEDGE, Group.SYSTEM_SHARED_CHAT_USER, Operate.READ, 42), + SHARED_KNOWLEDGE_CHAT_USER_EDIT: p(Group.SYSTEM_SHARED_KNOWLEDGE, Group.SYSTEM_SHARED_CHAT_USER, Operate.EDIT, 43), + SHARED_KNOWLEDGE_IMAGE_READ: p(Group.SYSTEM_SHARED_KNOWLEDGE, Group.SYSTEM_SHARED_IMAGE, Operate.READ, 44), + SHARED_KNOWLEDGE_IMAGE_CREATE: p(Group.SYSTEM_SHARED_KNOWLEDGE, Group.SYSTEM_SHARED_IMAGE, Operate.CREATE, 45), + SHARED_KNOWLEDGE_IMAGE_EDIT: p(Group.SYSTEM_SHARED_KNOWLEDGE, Group.SYSTEM_SHARED_IMAGE, Operate.EDIT, 46), + SHARED_KNOWLEDGE_IMAGE_DELETE: p(Group.SYSTEM_SHARED_KNOWLEDGE, Group.SYSTEM_SHARED_IMAGE, Operate.DELETE, 47), + SHARED_KNOWLEDGE_IMAGE_DOWNLOAD_SOURCE_FILE: p(Group.SYSTEM_SHARED_KNOWLEDGE, Group.SYSTEM_SHARED_IMAGE, Operate.DOWNLOAD, 48), + SHARED_KNOWLEDGE_IMAGE_GENERATE: p(Group.SYSTEM_SHARED_KNOWLEDGE, Group.SYSTEM_SHARED_IMAGE, Operate.GENERATE, 49), + SHARED_KNOWLEDGE_IMAGE_VECTOR: p(Group.SYSTEM_SHARED_KNOWLEDGE, Group.SYSTEM_SHARED_IMAGE, Operate.VECTOR, 50), + SHARED_KNOWLEDGE_IMAGE_MIGRATE: p(Group.SYSTEM_SHARED_KNOWLEDGE, Group.SYSTEM_SHARED_IMAGE, Operate.MIGRATE, 51), + SHARED_KNOWLEDGE_IMAGE_TAG: p(Group.SYSTEM_SHARED_KNOWLEDGE, Group.SYSTEM_SHARED_IMAGE, Operate.TAG, 52), + SHARED_KNOWLEDGE_IMAGE_REPLACE: p(Group.SYSTEM_SHARED_KNOWLEDGE, Group.SYSTEM_SHARED_IMAGE, Operate.REPLACE, 53), + SHARED_KNOWLEDGE_IMAGE_TOKEN: p(Group.SYSTEM_SHARED_KNOWLEDGE, Group.SYSTEM_SHARED_IMAGE, Operate.TOKEN, 54), + SHARED_KNOWLEDGE_EXTERNAL_SERVICE_READ: p(Group.SYSTEM_SHARED_KNOWLEDGE, Group.SYSTEM_SHARED_EXTERNAL_SERVICE, Operate.READ, 55), + SHARED_KNOWLEDGE_EXTERNAL_SERVICE_EDIT: p(Group.SYSTEM_SHARED_KNOWLEDGE, Group.SYSTEM_SHARED_EXTERNAL_SERVICE, Operate.EDIT, 56), + SHARED_KNOWLEDGE_SETTING_READ: p(Group.SYSTEM_SHARED_KNOWLEDGE, Group.SYSTEM_SHARED_KNOWLEDGE_SETTING, Operate.READ, 57), + SHARED_KNOWLEDGE_SETTING_EDIT: p(Group.SYSTEM_SHARED_KNOWLEDGE, Group.SYSTEM_SHARED_KNOWLEDGE_SETTING, Operate.EDIT, 58), + SHARED_KNOWLEDGE_DOCUMENT_STRATEGY_READ: p(Group.SYSTEM_SHARED_KNOWLEDGE, Group.SYSTEM_SHARED_DOCUMENT_STRATEGY, Operate.READ, 59), + SHARED_KNOWLEDGE_DOCUMENT_STRATEGY_EDIT: p(Group.SYSTEM_SHARED_KNOWLEDGE, Group.SYSTEM_SHARED_DOCUMENT_STRATEGY, Operate.EDIT, 60), + SHARED_KNOWLEDGE_SCHEDULED_SYNC_READ: p(Group.SYSTEM_SHARED_KNOWLEDGE, Group.SYSTEM_SHARED_SCHEDULED_SYNC, Operate.READ, 61), + SHARED_KNOWLEDGE_SCHEDULED_SYNC_EDIT: p(Group.SYSTEM_SHARED_KNOWLEDGE, Group.SYSTEM_SHARED_SCHEDULED_SYNC, Operate.EDIT, 62), // ==================== SYSTEM_MODEL ==================== - SHARED_MODEL_READ: p(Group.SYSTEM_MODEL, Group.SYSTEM_MODEL, Operate.READ, 0), - SHARED_MODEL_CREATE: p(Group.SYSTEM_MODEL, Group.SYSTEM_MODEL, Operate.CREATE, 1), - SHARED_MODEL_EDIT: p(Group.SYSTEM_MODEL, Group.SYSTEM_MODEL, Operate.EDIT, 2), - SHARED_MODEL_DELETE: p(Group.SYSTEM_MODEL, Group.SYSTEM_MODEL, Operate.DELETE, 3), - SHARED_MODEL_RELATE_RESOURCE_VIEW: p(Group.SYSTEM_MODEL, Group.SYSTEM_MODEL, Operate.RELATE_VIEW, 4), - SHARED_MODEL_TO_WORKSPACE: p(Group.SYSTEM_MODEL, Group.SYSTEM_MODEL, Operate.TO_WORKSPACE, 5), + SHARED_MODEL_READ: p(Group.SYSTEM_SHARED_MODEL, Group.SYSTEM_SHARED_MODEL, Operate.READ, 0), + SHARED_MODEL_CREATE: p(Group.SYSTEM_SHARED_MODEL, Group.SYSTEM_SHARED_MODEL, Operate.CREATE, 1), + SHARED_MODEL_EDIT: p(Group.SYSTEM_SHARED_MODEL, Group.SYSTEM_SHARED_MODEL, Operate.EDIT, 2), + SHARED_MODEL_DELETE: p(Group.SYSTEM_SHARED_MODEL, Group.SYSTEM_SHARED_MODEL, Operate.DELETE, 3), + SHARED_MODEL_RELATE_RESOURCE_VIEW: p(Group.SYSTEM_SHARED_MODEL, Group.SYSTEM_SHARED_MODEL, Operate.RELATE_VIEW, 4), + SHARED_MODEL_TO_WORKSPACE: p(Group.SYSTEM_SHARED_MODEL, Group.SYSTEM_SHARED_MODEL, Operate.TO_WORKSPACE, 5), // ==================== SYSTEM_RES_APPLICATION ==================== RESOURCE_APPLICATION_READ: p(Group.SYSTEM_RES_APPLICATION, Group.SYSTEM_RES_APPLICATION, Operate.READ, 0), @@ -376,62 +395,61 @@ export const PermissionConstants = { RESOURCE_KNOWLEDGE_GENERATE: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_RES_KNOWLEDGE, Operate.GENERATE, 7), RESOURCE_KNOWLEDGE_AUTH: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_RES_KNOWLEDGE, Operate.AUTH, 8), RESOURCE_KNOWLEDGE_RELATE_RESOURCE_VIEW: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_RES_KNOWLEDGE, Operate.RELATE_VIEW, 9), - RESOURCE_KNOWLEDGE_WORKFLOW_READ: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_WORKFLOW, Operate.READ, 0), - RESOURCE_KNOWLEDGE_WORKFLOW_EDIT: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_WORKFLOW, Operate.EDIT, 1), - RESOURCE_KNOWLEDGE_WORKFLOW_EXPORT: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_WORKFLOW, Operate.EXPORT, 2), - RESOURCE_KNOWLEDGE_WORKFLOW_PUBLISH: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_WORKFLOW, Operate.PUBLISH, 3), - RESOURCE_KNOWLEDGE_DOCUMENT_READ: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_DOCUMENT, Operate.READ, 0), - RESOURCE_KNOWLEDGE_DOCUMENT_CREATE: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_DOCUMENT, Operate.CREATE, 1), - RESOURCE_KNOWLEDGE_DOCUMENT_EDIT: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_DOCUMENT, Operate.EDIT, 2), - RESOURCE_KNOWLEDGE_DOCUMENT_DELETE: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_DOCUMENT, Operate.DELETE, 3), - RESOURCE_KNOWLEDGE_DOCUMENT_SYNC: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_DOCUMENT, Operate.SYNC, 4), - RESOURCE_KNOWLEDGE_DOCUMENT_EXPORT: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_DOCUMENT, Operate.EXPORT, 5), - RESOURCE_KNOWLEDGE_DOCUMENT_DOWNLOAD_SOURCE_FILE: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_DOCUMENT, Operate.DOWNLOAD, 6), - RESOURCE_KNOWLEDGE_DOCUMENT_GENERATE: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_DOCUMENT, Operate.GENERATE, 7), - RESOURCE_KNOWLEDGE_DOCUMENT_VECTOR: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_DOCUMENT, Operate.VECTOR, 8), - RESOURCE_KNOWLEDGE_DOCUMENT_MIGRATE: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_DOCUMENT, Operate.MIGRATE, 9), - RESOURCE_KNOWLEDGE_DOCUMENT_TAG: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_DOCUMENT, Operate.TAG, 10), - RESOURCE_KNOWLEDGE_DOCUMENT_REPLACE: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_DOCUMENT, Operate.REPLACE, 11), - RESOURCE_KNOWLEDGE_DOCUMENT_TOKEN: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_DOCUMENT, Operate.TOKEN, 12), - RESOURCE_KNOWLEDGE_HIT_TEST: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_HIT_TEST, Operate.READ, 0), - RESOURCE_KNOWLEDGE_PROBLEM_READ: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_PROBLEM, Operate.READ, 0), - RESOURCE_KNOWLEDGE_PROBLEM_CREATE: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_PROBLEM, Operate.CREATE, 1), - RESOURCE_KNOWLEDGE_PROBLEM_EDIT: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_PROBLEM, Operate.EDIT, 2), - RESOURCE_KNOWLEDGE_PROBLEM_DELETE: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_PROBLEM, Operate.DELETE, 3), - RESOURCE_KNOWLEDGE_PROBLEM_RELATE: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_PROBLEM, Operate.RELATE, 4), - RESOURCE_KNOWLEDGE_TERMBASE_READ: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_TERMBASE, Operate.READ, 0), - RESOURCE_KNOWLEDGE_TERMBASE_CREATE: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_TERMBASE, Operate.CREATE, 1), - RESOURCE_KNOWLEDGE_TERMBASE_EDIT: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_TERMBASE, Operate.EDIT, 2), - RESOURCE_KNOWLEDGE_TERMBASE_DELETE: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_TERMBASE, Operate.DELETE, 3), - RESOURCE_KNOWLEDGE_TERMBASE_EXPORT: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_TERMBASE, Operate.EXPORT, 4), - RESOURCE_KNOWLEDGE_TAG_READ: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_TAG, Operate.READ, 0), - RESOURCE_KNOWLEDGE_TAG_CREATE: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_TAG, Operate.CREATE, 1), - RESOURCE_KNOWLEDGE_TAG_EDIT: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_TAG, Operate.EDIT, 2), - RESOURCE_KNOWLEDGE_TAG_DELETE: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_TAG, Operate.DELETE, 3), - RESOURCE_KNOWLEDGE_CHAT_USER_READ: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_CHAT_USER, Operate.READ, 0), - RESOURCE_KNOWLEDGE_CHAT_USER_EDIT: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_CHAT_USER, Operate.EDIT, 1), - - RESOURCE_KNOWLEDGE_MCP_CONFIG: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_RES_KNOWLEDGE, Operate.MCP_CONFIG, 10), - RESOURCE_KNOWLEDGE_EXPORT_SKILLS: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_RES_KNOWLEDGE, Operate.EXPORT_SKILLS, 11), - RESOURCE_KNOWLEDGE_IMAGE_READ: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_IMAGE, Operate.READ, 0), - RESOURCE_KNOWLEDGE_IMAGE_CREATE: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_IMAGE, Operate.CREATE, 1), - RESOURCE_KNOWLEDGE_IMAGE_EDIT: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_IMAGE, Operate.EDIT, 2), - RESOURCE_KNOWLEDGE_IMAGE_DELETE: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_IMAGE, Operate.DELETE, 3), - RESOURCE_KNOWLEDGE_IMAGE_DOWNLOAD_SOURCE_FILE: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_IMAGE, Operate.DOWNLOAD, 4), - RESOURCE_KNOWLEDGE_IMAGE_GENERATE: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_IMAGE, Operate.GENERATE, 5), - RESOURCE_KNOWLEDGE_IMAGE_VECTOR: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_IMAGE, Operate.VECTOR, 6), - RESOURCE_KNOWLEDGE_IMAGE_MIGRATE: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_IMAGE, Operate.MIGRATE, 7), - RESOURCE_KNOWLEDGE_IMAGE_TAG: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_IMAGE, Operate.TAG, 8), - RESOURCE_KNOWLEDGE_IMAGE_REPLACE: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_IMAGE, Operate.REPLACE, 9), - RESOURCE_KNOWLEDGE_IMAGE_TOKEN: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_IMAGE, Operate.TOKEN, 10), - RESOURCE_KNOWLEDGE_SCHEDULED_SYNC_READ: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_SCHEDULED_SYNC, Operate.READ, 0), - RESOURCE_KNOWLEDGE_SCHEDULED_SYNC_EDIT: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_SCHEDULED_SYNC, Operate.EDIT, 1), - RESOURCE_KNOWLEDGE_DOCUMENT_STRATEGY_READ: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_DOCUMENT_STRATEGY, Operate.READ, 0), - RESOURCE_KNOWLEDGE_DOCUMENT_STRATEGY_EDIT: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_DOCUMENT_STRATEGY, Operate.EDIT, 1), - RESOURCE_KNOWLEDGE_EXTERNAL_SERVICE_READ: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_EXTERNAL_SERVICE, Operate.READ, 0), - RESOURCE_KNOWLEDGE_EXTERNAL_SERVICE_EDIT: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_EXTERNAL_SERVICE, Operate.EDIT, 1), - RESOURCE_KNOWLEDGE_SETTING_READ: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_KNOWLEDGE_SETTING, Operate.READ, 0), - RESOURCE_KNOWLEDGE_SETTING_EDIT: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_KNOWLEDGE_SETTING, Operate.EDIT, 1), + RESOURCE_KNOWLEDGE_WORKFLOW_READ: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_WORKFLOW, Operate.READ, 10), + RESOURCE_KNOWLEDGE_WORKFLOW_EDIT: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_WORKFLOW, Operate.EDIT, 11), + RESOURCE_KNOWLEDGE_WORKFLOW_EXPORT: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_WORKFLOW, Operate.EXPORT, 12), + RESOURCE_KNOWLEDGE_WORKFLOW_PUBLISH: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_WORKFLOW, Operate.PUBLISH, 13), + RESOURCE_KNOWLEDGE_DOCUMENT_READ: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_DOCUMENT, Operate.READ, 14), + RESOURCE_KNOWLEDGE_DOCUMENT_CREATE: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_DOCUMENT, Operate.CREATE, 15), + RESOURCE_KNOWLEDGE_DOCUMENT_EDIT: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_DOCUMENT, Operate.EDIT, 16), + RESOURCE_KNOWLEDGE_DOCUMENT_DELETE: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_DOCUMENT, Operate.DELETE, 17), + RESOURCE_KNOWLEDGE_DOCUMENT_SYNC: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_DOCUMENT, Operate.SYNC, 18), + RESOURCE_KNOWLEDGE_DOCUMENT_EXPORT: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_DOCUMENT, Operate.EXPORT, 19), + RESOURCE_KNOWLEDGE_DOCUMENT_DOWNLOAD_SOURCE_FILE: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_DOCUMENT, Operate.DOWNLOAD, 20), + RESOURCE_KNOWLEDGE_DOCUMENT_GENERATE: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_DOCUMENT, Operate.GENERATE, 21), + RESOURCE_KNOWLEDGE_DOCUMENT_VECTOR: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_DOCUMENT, Operate.VECTOR, 22), + RESOURCE_KNOWLEDGE_DOCUMENT_MIGRATE: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_DOCUMENT, Operate.MIGRATE, 23), + RESOURCE_KNOWLEDGE_DOCUMENT_TAG: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_DOCUMENT, Operate.TAG, 24), + RESOURCE_KNOWLEDGE_DOCUMENT_REPLACE: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_DOCUMENT, Operate.REPLACE, 25), + RESOURCE_KNOWLEDGE_DOCUMENT_TOKEN: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_DOCUMENT, Operate.TOKEN, 26), + RESOURCE_KNOWLEDGE_HIT_TEST: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_HIT_TEST, Operate.READ, 27), + RESOURCE_KNOWLEDGE_PROBLEM_READ: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_PROBLEM, Operate.READ, 28), + RESOURCE_KNOWLEDGE_PROBLEM_CREATE: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_PROBLEM, Operate.CREATE, 29), + RESOURCE_KNOWLEDGE_PROBLEM_EDIT: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_PROBLEM, Operate.EDIT, 30), + RESOURCE_KNOWLEDGE_PROBLEM_DELETE: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_PROBLEM, Operate.DELETE, 31), + RESOURCE_KNOWLEDGE_PROBLEM_RELATE: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_PROBLEM, Operate.RELATE, 32), + RESOURCE_KNOWLEDGE_TERMBASE_READ: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_TERMBASE, Operate.READ, 33), + RESOURCE_KNOWLEDGE_TERMBASE_CREATE: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_TERMBASE, Operate.CREATE, 34), + RESOURCE_KNOWLEDGE_TERMBASE_EDIT: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_TERMBASE, Operate.EDIT, 35), + RESOURCE_KNOWLEDGE_TERMBASE_DELETE: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_TERMBASE, Operate.DELETE, 36), + RESOURCE_KNOWLEDGE_TERMBASE_EXPORT: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_TERMBASE, Operate.EXPORT, 37), + RESOURCE_KNOWLEDGE_TAG_READ: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_TAG, Operate.READ, 38), + RESOURCE_KNOWLEDGE_TAG_CREATE: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_TAG, Operate.CREATE, 39), + RESOURCE_KNOWLEDGE_TAG_EDIT: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_TAG, Operate.EDIT, 40), + RESOURCE_KNOWLEDGE_TAG_DELETE: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_TAG, Operate.DELETE, 41), + RESOURCE_KNOWLEDGE_CHAT_USER_READ: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_CHAT_USER, Operate.READ, 42), + RESOURCE_KNOWLEDGE_CHAT_USER_EDIT: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_CHAT_USER, Operate.EDIT, 43), + RESOURCE_KNOWLEDGE_MCP_CONFIG: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_RES_KNOWLEDGE, Operate.MCP_CONFIG, 44), + RESOURCE_KNOWLEDGE_EXPORT_SKILLS: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_RES_KNOWLEDGE, Operate.EXPORT_SKILLS, 45), + RESOURCE_KNOWLEDGE_IMAGE_READ: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_IMAGE, Operate.READ, 46), + RESOURCE_KNOWLEDGE_IMAGE_CREATE: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_IMAGE, Operate.CREATE, 47), + RESOURCE_KNOWLEDGE_IMAGE_EDIT: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_IMAGE, Operate.EDIT, 48), + RESOURCE_KNOWLEDGE_IMAGE_DELETE: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_IMAGE, Operate.DELETE, 49), + RESOURCE_KNOWLEDGE_IMAGE_DOWNLOAD_SOURCE_FILE: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_IMAGE, Operate.DOWNLOAD, 50), + RESOURCE_KNOWLEDGE_IMAGE_GENERATE: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_IMAGE, Operate.GENERATE, 51), + RESOURCE_KNOWLEDGE_IMAGE_VECTOR: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_IMAGE, Operate.VECTOR, 52), + RESOURCE_KNOWLEDGE_IMAGE_MIGRATE: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_IMAGE, Operate.MIGRATE, 53), + RESOURCE_KNOWLEDGE_IMAGE_TAG: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_IMAGE, Operate.TAG, 54), + RESOURCE_KNOWLEDGE_IMAGE_REPLACE: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_IMAGE, Operate.REPLACE, 55), + RESOURCE_KNOWLEDGE_IMAGE_TOKEN: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_IMAGE, Operate.TOKEN, 56), + RESOURCE_KNOWLEDGE_SCHEDULED_SYNC_READ: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_SCHEDULED_SYNC, Operate.READ, 57), + RESOURCE_KNOWLEDGE_SCHEDULED_SYNC_EDIT: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_SCHEDULED_SYNC, Operate.EDIT, 58), + RESOURCE_KNOWLEDGE_DOCUMENT_STRATEGY_READ: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_DOCUMENT_STRATEGY, Operate.READ, 59), + RESOURCE_KNOWLEDGE_DOCUMENT_STRATEGY_EDIT: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_DOCUMENT_STRATEGY, Operate.EDIT, 60), + RESOURCE_KNOWLEDGE_EXTERNAL_SERVICE_READ: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_EXTERNAL_SERVICE, Operate.READ, 61), + RESOURCE_KNOWLEDGE_EXTERNAL_SERVICE_EDIT: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_EXTERNAL_SERVICE, Operate.EDIT, 62), + RESOURCE_KNOWLEDGE_SETTING_READ: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_KNOWLEDGE_SETTING, Operate.READ, 63), + RESOURCE_KNOWLEDGE_SETTING_EDIT: p(Group.SYSTEM_RES_KNOWLEDGE, Group.SYSTEM_KNOWLEDGE_SETTING, Operate.EDIT, 64), // ==================== SYSTEM_RES_TOOL ==================== RESOURCE_TOOL_READ: p(Group.SYSTEM_RES_TOOL, Group.SYSTEM_RES_TOOL, Operate.READ, 0), diff --git a/ui/src/permission/modules/knowledge/index.ts b/ui/src/permission/modules/knowledge/index.ts index 90b7cfb6d42..57c60273ce4 100644 --- a/ui/src/permission/modules/knowledge/index.ts +++ b/ui/src/permission/modules/knowledge/index.ts @@ -4,7 +4,11 @@ import workspace from './workspace' import system from './system' import share from './share' -export default { workspace, +export default { + /** + * 工作空间「知识库」权限 + */ + workspace, /** * 系统「知识库」权限 * */ diff --git a/ui/src/permission/modules/knowledge/share.ts b/ui/src/permission/modules/knowledge/share.ts index 805f36ee934..97f1089500c 100644 --- a/ui/src/permission/modules/knowledge/share.ts +++ b/ui/src/permission/modules/knowledge/share.ts @@ -6,14 +6,10 @@ import { Edition } from '@/permission/core/common' const share = { // —— 共享页不提供 —— - isShare: () => false, batchDelete: () => false, batchMove: () => false, - docRead: () => false, chatUserEdit: () => false, auth: () => false, - knowledgeChatUserRead: () => false, - hitTest: () => false, folderRead: () => false, folderCreate: () => false, folderEdit: () => false, @@ -22,63 +18,284 @@ const share = { folderManage: () => false, // —— 知识库资源 —— +/** + * 系统「共享知识库」只读权限 + */ + isShare: () => canSys(P.SHARED_KNOWLEDGE_READ), +/** + * 系统「共享知识库」创建权限 + */ create: () => canSys(P.SHARED_KNOWLEDGE_CREATE), +/** + * 系统「共享知识库」编辑权限 + */ edit: () => canSys(P.SHARED_KNOWLEDGE_EDIT), +/** + * 系统「共享知识库」删除权限 + */ delete: () => canSys(P.SHARED_KNOWLEDGE_DELETE), +/** + * 系统「共享知识库」同步权限 + */ sync: () => canSys(P.SHARED_KNOWLEDGE_SYNC), +/** + * 系统「共享知识库」向量化权限 + */ vector: () => canSys(P.SHARED_KNOWLEDGE_VECTOR), +/** + * 系统「共享知识库」生成问题权限 + */ generate: () => canSys(P.SHARED_KNOWLEDGE_GENERATE), +/** + * 系统「共享知识库」导出权限 + */ export: () => canSys(P.SHARED_KNOWLEDGE_EXPORT), +/** + * 系统「共享知识库」发布权限 + */ publish: () => canSys(P.SHARED_KNOWLEDGE_WORKFLOW_PUBLISH), +/** + * 系统「共享知识库」查看关联资源权限 + */ relateMap: () => canSys(P.SHARED_KNOWLEDGE_RELATE_RESOURCE_VIEW), +/** + * 系统「共享知识库」授权工作空间权限 + */ authToWorkspace: () => canSys(P.SHARED_KNOWLEDGE_TO_WORKSPACE), +/** + * 系统「共享知识库」召回测试权限 + */ + hitTest: () => canSys(P.SHARED_KNOWLEDGE_HIT_TEST), + + image: { + /** + * 系统「共享知识库」「图片」只读权限 + */ + read: () => canSys(P.SHARED_KNOWLEDGE_IMAGE_READ), + /** + * 系统「共享知识库」「图片」创建权限 + */ + create: () => canSys(P.SHARED_KNOWLEDGE_IMAGE_CREATE), + /** + * 系统「共享知识库」「图片」编辑权限 + */ + edit: () => canSys(P.SHARED_KNOWLEDGE_IMAGE_EDIT), + /** + * 系统「共享知识库」「图片」删除权限 + */ + delete: () => canSys(P.SHARED_KNOWLEDGE_IMAGE_DELETE), + /** + * 系统「共享知识库」「图片」下载原文档权限 + */ + download: () => canSys(P.SHARED_KNOWLEDGE_IMAGE_DOWNLOAD_SOURCE_FILE), + /** + * 系统「共享知识库」「图片」生成问题权限 + */ + generate: () => canSys(P.SHARED_KNOWLEDGE_IMAGE_GENERATE), + /** + * 系统「共享知识库」「图片」向量化权限 + */ + vector: () => canSys(P.SHARED_KNOWLEDGE_IMAGE_VECTOR), + /** + * 系统「共享知识库」「图片」迁移权限 + */ + migrate: () => canSys(P.SHARED_KNOWLEDGE_IMAGE_MIGRATE), + /** + * 系统「共享知识库」「图片」标签设置权限 + */ + tag: () => canSys(P.SHARED_KNOWLEDGE_IMAGE_TAG), + /** + * 系统「共享知识库」「图片」替换原文档权限 + */ + replace: () => canSys(P.SHARED_KNOWLEDGE_IMAGE_REPLACE), + /** + * 系统「共享知识库」「图片」分词索引权限 + */ + token: () => canSys(P.SHARED_KNOWLEDGE_IMAGE_TOKEN), + }, // —— 文档 —— +/** + * 系统「共享知识库」「文档」只读权限 + */ + docRead: () => canSys(P.SHARED_KNOWLEDGE_DOCUMENT_READ), +/** + * 系统「共享知识库」「文档」创建权限 + */ docCreate: () => canSys(P.SHARED_KNOWLEDGE_DOCUMENT_CREATE), +/** + * 系统「共享知识库」「文档」编辑权限 + */ docEdit: () => canSys(P.SHARED_KNOWLEDGE_DOCUMENT_EDIT), +/** + * 系统「共享知识库」「文档」删除权限 + */ docDelete: () => canSys(P.SHARED_KNOWLEDGE_DOCUMENT_DELETE), +/** + * 系统「共享知识库」「文档」同步权限 + */ docSync: () => canSys(P.SHARED_KNOWLEDGE_DOCUMENT_SYNC), +/** + * 系统「共享知识库」「文档」导出权限 + */ docExport: () => canSys(P.SHARED_KNOWLEDGE_DOCUMENT_EXPORT), +/** + * 系统「共享知识库」「文档」下载原文档权限 + */ docDownload: () => canSys(P.SHARED_KNOWLEDGE_DOCUMENT_DOWNLOAD_SOURCE_FILE), +/** + * 系统「共享知识库」「文档」向量化权限 + */ docVector: () => canSys(P.SHARED_KNOWLEDGE_DOCUMENT_VECTOR), +/** + * 系统「共享知识库」「文档」分词索引权限 + */ docToken: () => canSys(P.SHARED_KNOWLEDGE_DOCUMENT_TOKEN), +/** + * 系统「共享知识库」「文档」生成问题权限 + */ docGenerate: () => canSys(P.SHARED_KNOWLEDGE_DOCUMENT_GENERATE), +/** + * 系统「共享知识库」「文档」迁移权限 + */ docMigrate: () => canSys(P.SHARED_KNOWLEDGE_DOCUMENT_MIGRATE), +/** + * 系统「共享知识库」「文档」标签设置权限 + */ docTag: () => canSys(P.SHARED_KNOWLEDGE_DOCUMENT_TAG), +/** + * 系统「共享知识库」「文档」替换原文档权限 + */ docReplace: () => canSys(P.SHARED_KNOWLEDGE_DOCUMENT_REPLACE), // —— 问题 —— +/** + * 系统「共享知识库」「问题」只读权限 + */ problemRead: () => canSys(P.SHARED_KNOWLEDGE_PROBLEM_READ), +/** + * 系统「共享知识库」「问题」创建权限 + */ problemCreate: () => canSys(P.SHARED_KNOWLEDGE_PROBLEM_CREATE), +/** + * 系统「共享知识库」「问题」编辑权限 + */ problemEdit: () => canSys(P.SHARED_KNOWLEDGE_PROBLEM_EDIT), +/** + * 系统「共享知识库」「问题」删除权限 + */ problemDelete: () => canSys(P.SHARED_KNOWLEDGE_PROBLEM_DELETE), +/** + * 系统「共享知识库」「问题」关联分段权限 + */ problemRelate: () => canSys(P.SHARED_KNOWLEDGE_PROBLEM_RELATE), // —— 术语库 —— +/** + * 系统「共享知识库」「词库」只读权限 + */ termbaseRead: () => canSys(P.SHARED_KNOWLEDGE_TERMBASE_READ), +/** + * 系统「共享知识库」「词库」创建权限 + */ termbaseCreate: () => canSys(P.SHARED_KNOWLEDGE_TERMBASE_CREATE), +/** + * 系统「共享知识库」「词库」编辑权限 + */ termbaseEdit: () => canSys(P.SHARED_KNOWLEDGE_TERMBASE_EDIT), +/** + * 系统「共享知识库」「词库」删除权限 + */ termbaseDelete: () => canSys(P.SHARED_KNOWLEDGE_TERMBASE_DELETE), - +/** + * 系统「共享知识库」「词库」导出权限 + */ + termbaseExport: () => canSys(P.SHARED_KNOWLEDGE_TERMBASE_EXPORT), // —— 标签 —— +/** + * 系统「共享知识库」「标签」只读权限 + */ tagRead: () => canSys(P.SHARED_KNOWLEDGE_TAG_READ), +/** + * 系统「共享知识库」「标签」创建权限 + */ tagCreate: () => canSys(P.SHARED_KNOWLEDGE_TAG_CREATE), +/** + * 系统「共享知识库」「标签」编辑权限 + */ tagEdit: () => canSys(P.SHARED_KNOWLEDGE_TAG_EDIT), +/** + * 系统「共享知识库」「标签」删除权限 + */ tagDelete: () => canSys(P.SHARED_KNOWLEDGE_TAG_DELETE), // —— 工作流 —— +/** + * 系统「共享知识库」「工作流」只读权限 + */ debug: () => canSys(P.SHARED_KNOWLEDGE_WORKFLOW_READ), +/** + * 系统「共享知识库」「工作流」编辑权限 + */ workflowEdit: () => canSys(P.SHARED_KNOWLEDGE_WORKFLOW_EDIT), +/** + * 系统「共享知识库」「工作流」导出权限 + */ workflowExport: () => canSys(P.SHARED_KNOWLEDGE_WORKFLOW_EXPORT), // —— 访客 —— +/** + * 系统「共享知识库」「对话用户」只读权限 + */ + knowledgeChatUserRead: () => canSys(P.SHARED_KNOWLEDGE_CHAT_USER_READ), +/** + * 系统「共享知识库」「对话用户」编辑权限 + */ knowledgeChatUserEdit: () => canSys(P.SHARED_KNOWLEDGE_CHAT_USER_EDIT), + // —— 外部检索服务 —— +/** + * 系统「共享知识库」「外部检索服务」只读权限 + */ + knowledgeExternalServiceRead: () => canSys(P.SHARED_KNOWLEDGE_EXTERNAL_SERVICE_READ), +/** + * 系统「共享知识库」「外部检索服务」编辑权限 + */ + knowledgeExternalServiceEdit: () => canSys(P.SHARED_KNOWLEDGE_EXTERNAL_SERVICE_EDIT), + + // —— 外部检索服务 —— +/** + * 系统「共享知识库」「设置」只读权限 + */ + settingRead: () => canSys(P.SHARED_KNOWLEDGE_SETTING_READ), +/** + * 系统「共享知识库」「设置」编辑权限 + */ + settingEdit: () => canSys(P.SHARED_KNOWLEDGE_SETTING_EDIT), + + // —— 定时同步 —— +/** + * 系统「共享知识库」「定时同步」只读权限 + */ + scheduledSyncRead: () => canSys(P.SHARED_KNOWLEDGE_SCHEDULED_SYNC_READ), +/** + * 系统「共享知识库」「定时同步」只读权限 + */ + scheduledSyncEdit: () => canSys(P.SHARED_KNOWLEDGE_SCHEDULED_SYNC_EDIT), + /** + * 系统「知识库」文档只读权限 + */ + documentStrategyRead: () => canSys(P.SHARED_KNOWLEDGE_DOCUMENT_STRATEGY_READ), +/** + * 系统「知识库」文档编辑权限 + */ + documentStrategyEdit: () => canSys(P.SHARED_KNOWLEDGE_DOCUMENT_STRATEGY_EDIT), + // —— 组合:进入知识库 —— /** - * 系统「共享知识库」(系统 > 共享 > 知识库)只读权限 + * 系统「共享知识库」只读权限 * */ - read: () => canSys(P.SHARED_KNOWLEDGE_WORKFLOW_READ) && hasEdition(Edition.EE), + read: () => canSys(P.SHARED_KNOWLEDGE_READ) && hasEdition(Edition.EE), } export default share diff --git a/ui/src/permission/modules/knowledge/system.ts b/ui/src/permission/modules/knowledge/system.ts index e7ca6a44810..00ebc9c9cda 100644 --- a/ui/src/permission/modules/knowledge/system.ts +++ b/ui/src/permission/modules/knowledge/system.ts @@ -21,88 +21,285 @@ const system = { isShare: () => canSys(P.SHARED_KNOWLEDGE_READ), // —— 知识库资源 —— +/** + * 系统「知识库」编辑权限 + */ edit: () => canSys(P.RESOURCE_KNOWLEDGE_EDIT), +/** + * 系统「知识库」删除权限 + */ delete: () => canSys(P.RESOURCE_KNOWLEDGE_DELETE), +/** + * 系统「知识库」同步权限 + */ sync: () => canSys(P.RESOURCE_KNOWLEDGE_SYNC), +/** + * 系统「知识库」向量化权限 + */ vector: () => canSys(P.RESOURCE_KNOWLEDGE_VECTOR), +/** + * 系统「知识库」生成问题权限 + */ generate: () => canSys(P.RESOURCE_KNOWLEDGE_GENERATE), +/** + * 系统「知识库」导出权限 + */ export: () => canSys(P.RESOURCE_KNOWLEDGE_EXPORT), +/** + * 系统「知识库」发布权限 + */ publish: () => canSys(P.RESOURCE_KNOWLEDGE_PUBLISH), +/** + * 系统「知识库」资源授权权限 + */ auth: () => canSys(P.RESOURCE_KNOWLEDGE_AUTH), +/** + * 系统「知识库」查看关联资源权限 + */ relateMap: () => canSys(P.RESOURCE_KNOWLEDGE_RELATE_RESOURCE_VIEW), +/** + * 系统「知识库」召回测试权限 + */ hitTest: () => canSys(P.RESOURCE_KNOWLEDGE_HIT_TEST), - +/** + * 系统「知识库」MCP配置详情权限 + */ mcpConfig: () => canSys(P.RESOURCE_KNOWLEDGE_MCP_CONFIG), +/** + * 系统「知识库」导出权限 + */ exportSkills: () => canSys(P.RESOURCE_KNOWLEDGE_EXPORT_SKILLS), +/** + * 系统「知识库」「定时同步」只读权限 + */ scheduledSyncRead: () => canSys(P.RESOURCE_KNOWLEDGE_SCHEDULED_SYNC_READ), +/** + * 系统「知识库」「定时同步」编辑权限 + */ scheduledSyncEdit: () => canSys(P.RESOURCE_KNOWLEDGE_SCHEDULED_SYNC_EDIT), +/** + * 系统「知识库」文档只读权限 + */ documentStrategyRead: () => canSys(P.RESOURCE_KNOWLEDGE_DOCUMENT_STRATEGY_READ), +/** + * 系统「知识库」文档编辑权限 + */ documentStrategyEdit: () => canSys(P.RESOURCE_KNOWLEDGE_DOCUMENT_STRATEGY_EDIT), +/** + * 系统「知识库」「外部检索」只读权限 + */ externalServiceRead: () => canSys(P.RESOURCE_KNOWLEDGE_EXTERNAL_SERVICE_READ), +/** + * 系统「知识库」「外部检索」编辑权限 + */ externalServiceEdit: () => canSys(P.RESOURCE_KNOWLEDGE_EXTERNAL_SERVICE_EDIT), +/** + * 系统「知识库」「设置」只读权限 + */ settingRead: () => canSys(P.RESOURCE_KNOWLEDGE_SETTING_READ), +/** + * 系统「知识库」「设置」编辑权限 + */ settingEdit: () => canSys(P.RESOURCE_KNOWLEDGE_SETTING_EDIT), image: { + /** + * 系统「知识库」「图片」只读权限 + */ read: () => canSys(P.RESOURCE_KNOWLEDGE_IMAGE_READ), + /** + * 系统「知识库」「图片」创建权限 + */ create: () => canSys(P.RESOURCE_KNOWLEDGE_IMAGE_CREATE), + /** + * 系统「知识库」「图片」编辑权限 + */ edit: () => canSys(P.RESOURCE_KNOWLEDGE_IMAGE_EDIT), + /** + * 系统「知识库」「图片」删除权限 + */ delete: () => canSys(P.RESOURCE_KNOWLEDGE_IMAGE_DELETE), + /** + * 系统「知识库」「图片」下载原文档权限 + */ download: () => canSys(P.RESOURCE_KNOWLEDGE_IMAGE_DOWNLOAD_SOURCE_FILE), + /** + * 系统「知识库」「图片」生成问题权限 + */ generate: () => canSys(P.RESOURCE_KNOWLEDGE_IMAGE_GENERATE), + /** + * 系统「知识库」「图片」向量化权限 + */ vector: () => canSys(P.RESOURCE_KNOWLEDGE_IMAGE_VECTOR), + /** + * 系统「知识库」「图片」迁移权限 + */ migrate: () => canSys(P.RESOURCE_KNOWLEDGE_IMAGE_MIGRATE), + /** + * 系统「知识库」「图片」标签设置权限 + */ tag: () => canSys(P.RESOURCE_KNOWLEDGE_IMAGE_TAG), + /** + * 系统「知识库」「图片」替换原文档权限 + */ replace: () => canSys(P.RESOURCE_KNOWLEDGE_IMAGE_REPLACE), + /** + * 系统「知识库」「图片」分词索引权限 + */ token: () => canSys(P.RESOURCE_KNOWLEDGE_IMAGE_TOKEN), }, // —— 文档 —— +/** +* 系统「知识库」「文档」只读权限 +*/ docRead: () => canSys(P.RESOURCE_KNOWLEDGE_DOCUMENT_READ), +/** +* 系统「知识库」「文档」创建权限 +*/ docCreate: () => canSys(P.RESOURCE_KNOWLEDGE_DOCUMENT_CREATE), +/** +* 系统「知识库」「文档」编辑权限 +*/ docEdit: () => canSys(P.RESOURCE_KNOWLEDGE_DOCUMENT_EDIT), +/** +* 系统「知识库」「文档」删除权限 +*/ docDelete: () => canSys(P.RESOURCE_KNOWLEDGE_DOCUMENT_DELETE), +/** +* 系统「知识库」「文档」同步权限 +*/ docSync: () => canSys(P.RESOURCE_KNOWLEDGE_DOCUMENT_SYNC), +/** +* 系统「知识库」「文档」导出权限 +*/ docExport: () => canSys(P.RESOURCE_KNOWLEDGE_DOCUMENT_EXPORT), +/** +* 系统「知识库」「文档」下载原文档权限 +*/ docDownload: () => canSys(P.RESOURCE_KNOWLEDGE_DOCUMENT_DOWNLOAD_SOURCE_FILE), +/** +* 系统「知识库」「文档」向量化权限 +*/ docVector: () => canSys(P.RESOURCE_KNOWLEDGE_DOCUMENT_VECTOR), +/** +* 系统「知识库」「文档」分词索引权限 +*/ docToken: () => canSys(P.RESOURCE_KNOWLEDGE_DOCUMENT_TOKEN), +/** +* 系统「知识库」「文档」生成问题权限 +*/ docGenerate: () => canSys(P.RESOURCE_KNOWLEDGE_DOCUMENT_GENERATE), +/** +* 系统「知识库」「文档」迁移权限 +*/ docMigrate: () => canSys(P.RESOURCE_KNOWLEDGE_DOCUMENT_MIGRATE), +/** +* 系统「知识库」「文档」标签设置权限 +*/ docTag: () => canSys(P.RESOURCE_KNOWLEDGE_DOCUMENT_TAG), +/** +* 系统「知识库」「文档」替换原文档权限 +*/ docReplace: () => canSys(P.RESOURCE_KNOWLEDGE_DOCUMENT_REPLACE), // —— 问题 —— +/** +* 系统「知识库」「问题」只读权限 +*/ problemRead: () => canSys(P.RESOURCE_KNOWLEDGE_PROBLEM_READ), +/** +* 系统「知识库」「问题」创建权限 +*/ problemCreate: () => canSys(P.RESOURCE_KNOWLEDGE_PROBLEM_CREATE), +/** +* 系统「知识库」「问题」编辑权限 +*/ problemEdit: () => canSys(P.RESOURCE_KNOWLEDGE_PROBLEM_EDIT), +/** +* 系统「知识库」「问题」删除权限 +*/ problemDelete: () => canSys(P.RESOURCE_KNOWLEDGE_PROBLEM_DELETE), +/** +* 系统「知识库」「问题」关联分段权限 +*/ problemRelate: () => canSys(P.RESOURCE_KNOWLEDGE_PROBLEM_RELATE), // —— 术语库 —— +/** +* 系统「知识库」「词库」只读权限 +*/ termbaseRead: () => canSys(P.RESOURCE_KNOWLEDGE_TERMBASE_READ), +/** +* 系统「知识库」「词库」创建权限 +*/ termbaseCreate: () => canSys(P.RESOURCE_KNOWLEDGE_TERMBASE_CREATE), +/** +* 系统「知识库」「词库」编辑权限 +*/ termbaseEdit: () => canSys(P.RESOURCE_KNOWLEDGE_TERMBASE_EDIT), +/** +* 系统「知识库」「词库」删除权限 +*/ termbaseDelete: () => canSys(P.RESOURCE_KNOWLEDGE_TERMBASE_DELETE), - +/** + * 系统「知识库」「词库」导出权限 + */ + termbaseExport: () => canSys(P.RESOURCE_KNOWLEDGE_TERMBASE_EXPORT), // —— 标签 —— +/** +* 系统「知识库」「标签管理」只读权限 +*/ tagRead: () => canSys(P.RESOURCE_KNOWLEDGE_TAG_READ), +/** +* 系统「知识库」「标签管理」创建权限 +*/ tagCreate: () => canSys(P.RESOURCE_KNOWLEDGE_TAG_CREATE), +/** +* 系统「知识库」「标签管理」编辑权限 +*/ tagEdit: () => canSys(P.RESOURCE_KNOWLEDGE_TAG_EDIT), +/** +* 系统「知识库」「标签管理」删除权限 +*/ tagDelete: () => canSys(P.RESOURCE_KNOWLEDGE_TAG_DELETE), // —— 工作流 —— +/** +* 系统「知识库」「工作流」只读权限 +*/ debug: () => canSys(P.RESOURCE_KNOWLEDGE_WORKFLOW_READ), +/** +* 系统「知识库」「工作流」编辑权限 +*/ workflowEdit: () => canSys(P.RESOURCE_KNOWLEDGE_WORKFLOW_EDIT), +/** +* 系统「知识库」「工作流」导出权限 +*/ workflowExport: () => canSys(P.RESOURCE_KNOWLEDGE_WORKFLOW_EXPORT), // —— 访客 —— +/** +* 系统「知识库」「对话用户」只读权限 +*/ knowledgeChatUserRead: () => canSys(P.RESOURCE_KNOWLEDGE_CHAT_USER_READ), +/** +* 系统「知识库」「对话用户」编辑权限 +*/ knowledgeChatUserEdit: () => canSys(P.RESOURCE_KNOWLEDGE_CHAT_USER_EDIT), + // —— 外部检索服务 —— +/** + * 系统「知识库」「外部检索服务」只读权限 + */ + knowledgeExternalServiceRead: () => canSys(P.RESOURCE_KNOWLEDGE_EXTERNAL_SERVICE_READ), +/** + * 系统「知识库」「外部检索服务」编辑权限 + */ + knowledgeExternalServiceEdit: () => canSys(P.RESOURCE_KNOWLEDGE_EXTERNAL_SERVICE_EDIT), // —— 组合:进入知识库 —— - /** - * 系统「知识库资源管理」(系统 > 资源管理 > 知识库)只读权限 - * */ +/** +* 系统「知识库」只读权限 +*/ read: () => canSys(P.RESOURCE_KNOWLEDGE_READ) && hasEdition(Edition.EE), } diff --git a/ui/src/permission/modules/knowledge/workspace.ts b/ui/src/permission/modules/knowledge/workspace.ts index e5bcd6aeb9e..3e160ca80cf 100644 --- a/ui/src/permission/modules/knowledge/workspace.ts +++ b/ui/src/permission/modules/knowledge/workspace.ts @@ -1,6 +1,6 @@ /** 工作空间「知识库」按钮权限。 */ -import { can } from '../../policy' +import { can, canRes } from '../../policy' import { hasPermission, buildBaseResourcePermission, RoleConstants, Compare } from '../../core' import { AggregatePermission, type Permission, Role } from '../../core/common' import { getWorkspaceId } from '@/utils/resource-context' @@ -21,103 +21,335 @@ export function canWorkspaceKnowledge(permission: Permission, id: string, worksp const workspace = { // —— 工作空间级 —— +/** + * 工作空间「知识库」只读权限 + */ isShare: () => can(P.KNOWLEDGE_READ), +/** + * 工作空间「知识库」创建权限 + */ create: () => can(P.KNOWLEDGE_CREATE), +/** + * 工作空间「知识库」批量删除权限 + */ batchDelete: () => can(P.KNOWLEDGE_BATCH_DELETE), +/** + * 工作空间「知识库」批量移动权限 + */ batchMove: () => can(P.KNOWLEDGE_BATCH_MOVE), // —— 知识库资源级 —— +/** + * 工作空间「知识库」编辑权限 + */ edit: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_EDIT, id), +/** + * 工作空间「知识库」删除权限 + */ delete: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_DELETE, id), +/** + * 工作空间「知识库」同步权限 + */ sync: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_SYNC, id), +/** + * 工作空间「知识库」向量化权限 + */ vector: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_VECTOR, id), +/** + * 工作空间「知识库」生成问题权限 + */ generate: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_GENERATE, id), +/** + * 工作空间「知识库」导出权限 + */ export: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_EXPORT, id), +/** + * 工作空间「知识库」发布权限 + */ publish: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_WORKFLOW_PUBLISH, id), +/** + * 工作空间「知识库」资源授权权限 + */ auth: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_RESOURCE_AUTHORIZATION, id), +/** + * 工作空间「知识库」查看关联资源权限 + */ relateMap: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_RELATE_RESOURCE_VIEW, id), authToWorkspace: () => false, - +/** + * 工作空间「知识库」MCP配置详情权限 + */ mcpConfig: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_MCP_CONFIG, id), +/** + * 工作空间「知识库」导出权限 + */ exportSkills: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_EXPORT_SKILLS, id), +/** + * 工作空间「知识库」「定时同步」只读权限 + */ scheduledSyncRead: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_SCHEDULED_SYNC_READ, id), +/** + * 工作空间「知识库」「定时同步」编辑权限 + */ scheduledSyncEdit: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_SCHEDULED_SYNC_EDIT, id), +/** + * 工作空间「知识库」文档只读权限 + */ documentStrategyRead: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_DOCUMENT_STRATEGY_READ, id), +/** + * 工作空间「知识库」文档编辑权限 + */ documentStrategyEdit: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_DOCUMENT_STRATEGY_EDIT, id), +/** + * 工作空间「知识库」「外部检索」只读权限 + */ externalServiceRead: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_EXTERNAL_SERVICE_READ, id), +/** + * 工作空间「知识库」「外部检索」编辑权限 + */ externalServiceEdit: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_EXTERNAL_SERVICE_EDIT, id), +/** + * 工作空间「知识库」「设置」只读权限 + */ settingRead: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_SETTING_READ, id), +/** + * 工作空间「知识库」「设置」编辑权限 + */ settingEdit: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_SETTING_EDIT, id), image: { + /** + * 工作空间「知识库」「图片」只读权限 + */ read: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_IMAGE_READ, id), + /** + * 工作空间「知识库」「图片」创建权限 + */ create: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_IMAGE_CREATE, id), + /** + * 工作空间「知识库」「图片」编辑权限 + */ edit: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_IMAGE_EDIT, id), + /** + * 工作空间「知识库」「图片」删除权限 + */ delete: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_IMAGE_DELETE, id), + /** + * 工作空间「知识库」「图片」下载原文档权限 + */ download: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_IMAGE_DOWNLOAD_SOURCE_FILE, id), + /** + * 工作空间「知识库」「图片」生成问题权限 + */ generate: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_IMAGE_GENERATE, id), + /** + * 工作空间「知识库」「图片」向量化权限 + */ vector: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_IMAGE_VECTOR, id), + /** + * 工作空间「知识库」「图片」迁移权限 + */ migrate: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_IMAGE_MIGRATE, id), + /** + * 工作空间「知识库」「图片」标签设置权限 + */ tag: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_IMAGE_TAG, id), + /** + * 工作空间「知识库」「图片」替换原文件权限 + */ replace: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_IMAGE_REPLACE, id), + /** + * 工作空间「知识库」「图片」分词索引权限 + */ token: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_IMAGE_TOKEN, id), }, // —— 文件夹 —— +/** + * 工作空间「知识库」「文件夹」只读权限 + */ folderRead: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_FOLDER_READ, id), +/** + * 工作空间「知识库」「文件夹」创建权限 + */ folderCreate: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_FOLDER_CREATE, id), +/** + * 工作空间「知识库」「文件夹」编辑权限 + */ folderEdit: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_FOLDER_EDIT, id), +/** + * 工作空间「知识库」「文件夹」删除权限 + */ folderDelete: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_FOLDER_DELETE, id), +/** + * 工作空间「知识库」「文件夹」资源授权权限 + */ folderAuth: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_FOLDER_AUTH, id), folderManage: () => true, // —— 文档 —— - docRead: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_DOCUMENT_READ, id), +/** + * 工作空间「知识库」「文档」只读权限 + */ + docRead: (id: string) =>canRes(P.KNOWLEDGE_DOCUMENT_READ, id), +/** + * 工作空间「知识库」「文档」创建权限 + */ docCreate: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_DOCUMENT_CREATE, id), +/** + * 工作空间「知识库」「文档」编辑权限 + */ docEdit: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_DOCUMENT_EDIT, id), +/** + * 工作空间「知识库」「文档」删除权限 + */ docDelete: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_DOCUMENT_DELETE, id), +/** + * 工作空间「知识库」「文档」同步权限 + */ docSync: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_DOCUMENT_SYNC, id), +/** + * 工作空间「知识库」「文档」导出权限 + */ docExport: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_DOCUMENT_EXPORT, id), +/** + * 工作空间「知识库」「文档」下载原文档权限 + */ docDownload: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_DOCUMENT_DOWNLOAD_SOURCE_FILE, id), +/** + * 工作空间「知识库」「文档」向量化权限 + */ docVector: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_DOCUMENT_VECTOR, id), +/** + * 工作空间「知识库」「文档」分词索引权限 + */ docToken: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_DOCUMENT_TOKEN, id), +/** + * 工作空间「知识库」「文档」生成问题权限 + */ docGenerate: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_DOCUMENT_GENERATE, id), +/** + * 工作空间「知识库」「文档」迁移权限 + */ docMigrate: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_DOCUMENT_MIGRATE, id), +/** + * 工作空间「知识库」「文档」标签设置权限 + */ docTag: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_DOCUMENT_TAG, id), +/** + * 工作空间「知识库」「文档」替换原文档权限 + */ docReplace: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_DOCUMENT_REPLACE, id), // —— 问题 —— +/** + * 工作空间「知识库」「问题」只读权限 + */ problemRead: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_PROBLEM_READ, id), +/** + * 工作空间「知识库」「问题」创建权限 + */ problemCreate: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_PROBLEM_CREATE, id), +/** + * 工作空间「知识库」「问题」编辑权限 + */ problemEdit: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_PROBLEM_EDIT, id), +/** + * 工作空间「知识库」「问题」删除权限 + */ problemDelete: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_PROBLEM_DELETE, id), +/** + * 工作空间「知识库」「问题」关联分段权限 + */ problemRelate: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_PROBLEM_RELATE, id), // —— 术语库 —— +/** + * 工作空间「知识库」「词库」只读权限 + */ termbaseRead: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_TERMBASE_READ, id), +/** + * 工作空间「知识库」「词库」创建权限 + */ termbaseCreate: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_TERMBASE_CREATE, id), +/** + * 工作空间「知识库」「词库」编辑权限 + */ termbaseEdit: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_TERMBASE_EDIT, id), +/** + * 工作空间「知识库」「词库」删除权限 + */ termbaseDelete: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_TERMBASE_DELETE, id), - +/** + * 工作空间「知识库」「词库」导出权限 + */ + termbaseExport: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_TERMBASE_EXPORT, id), // —— 标签 —— +/** + * 工作空间「知识库」「标签管理」只读权限 + */ tagRead: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_TAG_READ, id), +/** + * 工作空间「知识库」「标签管理」创建权限 + */ tagCreate: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_TAG_CREATE, id), +/** + * 工作空间「知识库」「标签管理」编辑权限 + */ tagEdit: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_TAG_EDIT, id), +/** + * 工作空间「知识库」「标签管理」删除权限 + */ tagDelete: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_TAG_DELETE, id), // —— 工作流 —— +/** + * 工作空间「知识库」「工作流」只读权限 + */ debug: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_WORKFLOW_READ, id), +/** + * 工作空间「知识库」「工作流」编辑权限 + */ workflowEdit: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_WORKFLOW_EDIT, id), +/** + * 工作空间「知识库」「工作流」导出权限 + */ workflowExport: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_WORKFLOW_EXPORT, id), // —— 访客 —— +/** + * 工作空间「知识库」「对话用户」只读权限 + */ knowledgeChatUserRead: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_CHAT_USER_READ, id), +/** + * 工作空间「知识库」「对话用户」编辑权限 + */ knowledgeChatUserEdit: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_CHAT_USER_EDIT, id), +/** + * 工作空间「知识库」「对话用户」编辑权限 + */ chatUserEdit: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_CHAT_USER_EDIT, id), // —— 命中测试 —— +/** + * 工作空间「知识库」「命中测试」只读权限 + */ hitTest: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_HIT_TEST, id), + // —— 外部检索服务 —— +/** + * 工作空间「知识库」「外部检索服务」只读权限 + */ + knowledgeExternalServiceRead: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_EXTERNAL_SERVICE_READ, id), +/** + * 工作空间「知识库」「外部检索服务」 编辑权限 + */ + knowledgeExternalServiceEdit: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_EXTERNAL_SERVICE_EDIT, id), + + // —— 组合:进入知识库 —— +/** + * 工作空间「知识库」只读权限 + */ read: (id: string) => canWorkspaceKnowledge(P.KNOWLEDGE_READ, id), } diff --git a/ui/src/router/admin/system/modules/knowledge-system-resource.ts b/ui/src/router/admin/system/modules/knowledge-system-resource.ts index d22b6a0655e..bb0448ce802 100644 --- a/ui/src/router/admin/system/modules/knowledge-system-resource.ts +++ b/ui/src/router/admin/system/modules/knowledge-system-resource.ts @@ -41,19 +41,19 @@ export const systemResourceKnowledgeRoutes: RouteRecordRaw[] = [ path: 'document', name: 'system-resource-knowledge-document-list', component: () => import('@/views/knowledge-detail/library/document/index.vue'), - meta: { permission: () => perm.knowledge.system.docRead(), next: 'system-resource-knowledge', title: '文档', order: 10 }, + meta: { permission: () => perm.knowledge.system.docRead(), next: 'system-resource-knowledge-image-list', title: '文档', order: 10 }, }, { path: 'image', name: 'system-resource-knowledge-image-list', component: () => import('@/views/knowledge-detail/library/image/index.vue'), - meta: { permission: () => perm.knowledge.system.image.read(), next: 'system-resource-knowledge', title: '图片', order: 20, detailMenuVisible: (params) => params.type === KNOWLEDGE_TYPE_KEY.BASE }, + meta: { permission: () => perm.knowledge.system.image.read(), next: 'system-resource-knowledge-tag', title: '图片', order: 20, detailMenuVisible: (params) => params.type === KNOWLEDGE_TYPE_KEY.BASE }, }, { path: 'tag', name: 'system-resource-knowledge-tag', component: () => import('@/views/knowledge-detail/library/tags/index.vue'), - meta: { permission: () => perm.knowledge.system.tagRead(), next: 'system-resource-knowledge', title: '标签管理', order: 30 }, + meta: { permission: () => perm.knowledge.system.tagRead(), next: 'system-resource-knowledge-workflow', title: '标签管理', order: 30 }, }, ], }, @@ -71,7 +71,7 @@ export const systemResourceKnowledgeRoutes: RouteRecordRaw[] = [ } } }, - meta: { permission: () => perm.knowledge.system.debug(), next: 'system-resource-knowledge', title: '工作流', icon: 'icon_ticket-flow_outlined', order: 20 }, + meta: { permission: () => perm.knowledge.system.debug(), next: 'system-resource-knowledge-retrieval', title: '工作流', icon: 'icon_ticket-flow_outlined', order: 20 }, }, { path: 'retrieval', @@ -83,19 +83,19 @@ export const systemResourceKnowledgeRoutes: RouteRecordRaw[] = [ path: 'hit-test', name: 'system-resource-knowledge-hit-test', component: () => import('@/views/knowledge-detail/hit-test/index.vue'), - meta: { permission: () => perm.knowledge.system.hitTest(), next: 'system-resource-knowledge', title: '召回测试', order: 10 }, + meta: { permission: () => perm.knowledge.system.hitTest(), next: 'system-resource-knowledge-problem', title: '召回测试', order: 10 }, }, { path: 'problem', name: 'system-resource-knowledge-problem', component: () => import('@/views/knowledge-detail/problem/index.vue'), - meta: { permission: () => perm.knowledge.system.problemRead(), next: 'system-resource-knowledge', title: '问题', order: 20 }, + meta: { permission: () => perm.knowledge.system.problemRead(), next: 'system-resource-knowledge-dictionary', title: '问题', order: 20 }, }, { path: 'dictionary', name: 'system-resource-knowledge-dictionary', component: () => import('@/views/knowledge-detail/termbase/index.vue'), - meta: { permission: () => perm.knowledge.system.termbaseRead(), next: 'system-resource-knowledge', title: '自定义分词', order: 30 }, + meta: { permission: () => perm.knowledge.system.termbaseRead(), next: 'system-resource-knowledge-integration', title: '自定义分词', order: 30 }, }, ], }, @@ -109,13 +109,13 @@ export const systemResourceKnowledgeRoutes: RouteRecordRaw[] = [ path: 'chat-user', name: 'system-resource-knowledge-chat-user', component: () => import('@/views/knowledge-detail/chat-user/index.vue'), - meta: { permission: () => perm.knowledge.system.knowledgeChatUserRead(), next: 'system-resource-knowledge', title: '对话用户', order: 10 }, + meta: { permission: () => perm.knowledge.system.knowledgeChatUserRead(), next: 'system-resource-knowledge-external-retrieval', title: '对话用户', order: 10 }, }, { path: 'external-retrieval', name: 'system-resource-knowledge-external-retrieval', component: () => import('@/views/knowledge-detail/external-retrieval/index.vue'), - meta: { permission: () => perm.knowledge.system.externalServiceRead(), next: 'system-resource-knowledge', title: '外部检索服务', order: 20 }, + meta: { permission: () => perm.knowledge.system.externalServiceRead(), next: 'system-resource-knowledge-setting', title: '外部检索服务', order: 20 }, }, ], }, @@ -150,19 +150,19 @@ export const systemResourceKnowledgeRoutes: RouteRecordRaw[] = [ path: 'setting/base', name: 'system-resource-knowledge-base-setting', component: () => import('@/views/knowledge-detail/setting/base/index.vue'), - meta: { permission: () => perm.knowledge.system.settingRead(), next: 'system-resource-knowledge', title: '基础设置', order: 10 }, + meta: { permission: () => perm.knowledge.system.settingRead(), next: 'system-resource-knowledge-document-strategy', title: '基础设置', order: 10 }, }, { path: 'setting/document-strategy', name: 'system-resource-knowledge-document-strategy', component: () => import('@/views/knowledge-detail/setting/document-strategy/index.vue'), - meta: { permission: () => perm.knowledge.system.documentStrategyRead(), next: 'system-resource-knowledge', title: '文档处理策略', order: 20, detailMenuVisible: (params) => params.type === KNOWLEDGE_TYPE_KEY.WEB }, + meta: { permission: () => perm.knowledge.system.documentStrategyRead(), next: 'system-resource-knowledge-scheduled-sync', title: '文档处理策略', order: 20, detailMenuVisible: (params) => params.type === KNOWLEDGE_TYPE_KEY.WEB }, }, { path: 'setting/scheduled-sync', name: 'system-resource-knowledge-scheduled-sync', component: () => import('@/views/knowledge-detail/setting/scheduled-sync/index.vue'), - meta: { permission: () => perm.knowledge.system.scheduledSyncRead(), next: 'system-resource-knowledge', title: '定时同步', order: 30 }, + meta: { permission: () => perm.knowledge.system.scheduledSyncRead(), next: 'system-resource-knowledge-library', title: '定时同步', order: 30 }, }, ], }, diff --git a/ui/src/router/admin/system/modules/knowledge-system-shared.ts b/ui/src/router/admin/system/modules/knowledge-system-shared.ts index 60a01d61177..54e44f35f26 100644 --- a/ui/src/router/admin/system/modules/knowledge-system-shared.ts +++ b/ui/src/router/admin/system/modules/knowledge-system-shared.ts @@ -1,5 +1,6 @@ import type { RouteRecordRaw } from 'vue-router' import { KNOWLEDGE_TYPE_KEY } from '@/constants/knowledge' +import { perm } from '@/permission' /** System 知识库详情路由,由 System 汇总并继承系统布局。 */ export const systemSharedKnowledgeRoutes: RouteRecordRaw[] = [ @@ -20,19 +21,19 @@ export const systemSharedKnowledgeRoutes: RouteRecordRaw[] = [ path: 'document', name: 'system-shared-knowledge-document-list', component: () => import('@/views/knowledge-detail/library/document/index.vue'), - meta: { title: '文档', order: 10 }, + meta: { permission: () => perm.knowledge.share.docRead(), next: 'system-shared-knowledge-image-list', title: '文档', order: 10, }, }, { path: 'image', name: 'system-shared-knowledge-image-list', component: () => import('@/views/knowledge-detail/library/image/index.vue'), - meta: { title: '图片', order: 20, detailMenuVisible: (params) => params.type === KNOWLEDGE_TYPE_KEY.BASE }, + meta: { permission: () => perm.knowledge.share.image.read(), next: 'system-shared-knowledge-tag', title: '图片', order: 20, detailMenuVisible: (params) => params.type === KNOWLEDGE_TYPE_KEY.BASE }, }, { path: 'tag', name: 'system-shared-knowledge-tag', component: () => import('@/views/knowledge-detail/library/tags/index.vue'), - meta: { title: '标签管理', order: 30 }, + meta: { permission: () => perm.knowledge.share.tagRead(), next: 'system-shared-knowledge-workflow', title: '标签管理', order: 30 }, }, ], }, @@ -62,19 +63,19 @@ export const systemSharedKnowledgeRoutes: RouteRecordRaw[] = [ path: 'hit-test', name: 'system-shared-knowledge-hit-test', component: () => import('@/views/knowledge-detail/hit-test/index.vue'), - meta: { title: '召回测试', order: 10 }, + meta: {permission: () => perm.knowledge.share.hitTest(), next: 'system-shared-knowledge-problem',title: '召回测试', order: 10 }, }, { path: 'problem', name: 'system-shared-knowledge-problem', component: () => import('@/views/knowledge-detail/problem/index.vue'), - meta: { title: '问题', order: 20 }, + meta: { permission: () => perm.knowledge.share.problemRead(), next: 'system-shared-knowledge-dictionary', title: '问题', order: 20 }, }, { path: 'dictionary', name: 'system-shared-knowledge-dictionary', component: () => import('@/views/knowledge-detail/termbase/index.vue'), - meta: { title: '自定义分词', order: 30 }, + meta: { permission: () => perm.knowledge.share.termbaseRead(), next: 'system-shared-knowledge-integration', title: '自定义分词', order: 30 }, }, ], }, @@ -88,13 +89,13 @@ export const systemSharedKnowledgeRoutes: RouteRecordRaw[] = [ path: 'chat-user', name: 'system-shared-knowledge-chat-user', component: () => import('@/views/knowledge-detail/chat-user/index.vue'), - meta: { title: '对话用户', order: 10 }, + meta: { permission: () => perm.knowledge.share.knowledgeChatUserRead(), next: 'system-shared-knowledge-external-retrieval', title: '对话用户', order: 10 }, }, { path: 'external-retrieval', name: 'system-shared-knowledge-external-retrieval', component: () => import('@/views/knowledge-detail/external-retrieval/index.vue'), - meta: { title: '外部检索服务', order: 20 }, + meta: { permission: () => perm.knowledge.share.knowledgeExternalServiceRead(), next: 'system-shared-knowledge-setting', title: '外部检索服务', order: 20 }, }, ], }, @@ -127,19 +128,19 @@ export const systemSharedKnowledgeRoutes: RouteRecordRaw[] = [ path: 'setting/base', name: 'system-shared-knowledge-base-setting', component: () => import('@/views/knowledge-detail/setting/base/index.vue'), - meta: { title: '基础设置', order: 10 }, + meta: { permission: () => perm.knowledge.share.settingRead(), next: 'system-shared-knowledge-document-strategy', title: '基础设置', order: 10 }, }, { path: 'setting/document-strategy', name: 'system-shared-knowledge-document-strategy', component: () => import('@/views/knowledge-detail/setting/document-strategy/index.vue'), - meta: { title: '文档处理策略', order: 20, detailMenuVisible: (params) => params.type === KNOWLEDGE_TYPE_KEY.WEB }, + meta: { permission: () => perm.knowledge.share.documentStrategyRead(), next: 'system-shared-knowledge-scheduled-sync', title: '文档处理策略', order: 20, detailMenuVisible: (params) => params.type === KNOWLEDGE_TYPE_KEY.WEB }, }, { path: 'setting/scheduled-sync', name: 'system-shared-knowledge-scheduled-sync', component: () => import('@/views/knowledge-detail/setting/scheduled-sync/index.vue'), - meta: { title: '定时同步', order: 30 }, + meta: { permission: () => perm.knowledge.share.scheduledSyncRead(), next: 'system-shared-knowledge-library', title: '定时同步', order: 30 }, }, ], }, diff --git a/ui/src/router/admin/workspace/modules/knowledge.ts b/ui/src/router/admin/workspace/modules/knowledge.ts index 9102e1bb69c..fa3dd99234c 100644 --- a/ui/src/router/admin/workspace/modules/knowledge.ts +++ b/ui/src/router/admin/workspace/modules/knowledge.ts @@ -1,14 +1,6 @@ -import type { RouteRecordRaw, RouteParamsGeneric } from 'vue-router' -import { canWorkspaceKnowledge } from '@/permission/modules/knowledge/workspace' -import { PermissionConstants as P } from '@/permission/core' -import type { Permission } from '@/permission/core/common' +import type { RouteRecordRaw } from 'vue-router' import { KNOWLEDGE_TYPE_KEY } from '@/constants/knowledge' - -function knowledgeAccess(permission: Permission, typeAllowed: (type: string) => boolean = () => true) { - return (route: { params: RouteParamsGeneric }) => typeAllowed(String(route.params.type)) && canWorkspaceKnowledge( - permission, String(route.params.knowledgeId), String(route.params.workspaceId), - ) -} +import { perm } from '@/permission' export const knowledgeRoutes: RouteRecordRaw[] = [ { @@ -41,19 +33,19 @@ export const knowledgeRoutes: RouteRecordRaw[] = [ path: 'document', name: 'workspace-knowledge-document-list', component: () => import('@/views/knowledge-detail/library/document/index.vue'), - meta: { permission: knowledgeAccess(P.KNOWLEDGE_DOCUMENT_READ), next: 'workspace-knowledge-image-list', title: '文档', order: 10 }, + meta: { permission: ({ params }) => perm.knowledge.workspace.docRead(String(params.knowledgeId)), next: 'workspace-knowledge-image-list', title: '文档', order: 10 }, }, { path: 'image', name: 'workspace-knowledge-image-list', component: () => import('@/views/knowledge-detail/library/image/index.vue'), - meta: { permission: knowledgeAccess(P.KNOWLEDGE_IMAGE_READ, (type) => type === KNOWLEDGE_TYPE_KEY.BASE), next: 'workspace-knowledge-hit-test', title: '图片', order: 20, detailMenuVisible: (params) => params.type === KNOWLEDGE_TYPE_KEY.BASE }, + meta: { permission: ({ params }) => perm.knowledge.workspace.image.read(String(params.knowledgeId)), next: 'workspace-knowledge-tag', title: '图片', order: 20, detailMenuVisible: (params) => params.type === KNOWLEDGE_TYPE_KEY.BASE }, }, { path: 'tag', name: 'workspace-knowledge-tag', component: () => import('@/views/knowledge-detail/library/tags/index.vue'), - meta: { permission: knowledgeAccess(P.KNOWLEDGE_TAG_READ), next: 'workspace-knowledge-dictionary', title: '标签管理', order: 30 }, + meta: { permission: ({ params }) => perm.knowledge.workspace.tagRead(String(params.knowledgeId)), next: 'workspace-knowledge-workflow', title: '标签管理', order: 30 }, }, ], }, @@ -71,7 +63,7 @@ export const knowledgeRoutes: RouteRecordRaw[] = [ } } }, - meta: { permission: knowledgeAccess(P.KNOWLEDGE_WORKFLOW_READ), next: 'workspace-knowledge-list', title: '工作流', icon: 'icon_ticket-flow_outlined', order: 20 }, + meta: { permission: ({ params }) => perm.knowledge.workspace.debug(String(params.knowledgeId)), next: 'workspace-knowledge-hit-test', title: '工作流', icon: 'icon_ticket-flow_outlined', order: 20 }, }, { path: '', @@ -83,19 +75,19 @@ export const knowledgeRoutes: RouteRecordRaw[] = [ path: 'hit-test', name: 'workspace-knowledge-hit-test', component: () => import('@/views/knowledge-detail/hit-test/index.vue'), - meta: { permission: knowledgeAccess(P.KNOWLEDGE_HIT_TEST), next: 'workspace-knowledge-problem', title: '召回测试', order: 10 }, + meta: { permission: ({ params }) => perm.knowledge.workspace.hitTest(String(params.knowledgeId)), next: 'workspace-knowledge-problem', title: '召回测试', order: 10 }, }, { path: 'problem', name: 'workspace-knowledge-problem', component: () => import('@/views/knowledge-detail/problem/index.vue'), - meta: { permission: knowledgeAccess(P.KNOWLEDGE_PROBLEM_READ), next: 'workspace-knowledge-tag', title: '问题', order: 20 }, + meta: { permission: ({ params }) => perm.knowledge.workspace.problemRead(String(params.knowledgeId)), next: 'workspace-knowledge-dictionary', title: '问题', order: 20 }, }, { path: 'dictionary', name: 'workspace-knowledge-dictionary', component: () => import('@/views/knowledge-detail/termbase/index.vue'), - meta: { permission: knowledgeAccess(P.KNOWLEDGE_TERMBASE_READ), next: 'workspace-knowledge-chat-user', title: '自定义分词', order: 30 }, + meta: { permission: ({ params }) => perm.knowledge.workspace.termbaseRead(String(params.knowledgeId)), next: 'workspace-knowledge-chat-user', title: '自定义分词', order: 30 }, }, ], }, @@ -109,13 +101,13 @@ export const knowledgeRoutes: RouteRecordRaw[] = [ path: 'chat-user', name: 'workspace-knowledge-chat-user', component: () => import('@/views/knowledge-detail/chat-user/index.vue'), - meta: { permission: knowledgeAccess(P.KNOWLEDGE_CHAT_USER_READ), next: 'workspace-knowledge-external-retrieval', title: '对话用户', order: 10 }, + meta: { permission: ({ params }) => perm.knowledge.workspace.knowledgeChatUserRead(String(params.knowledgeId)), next: 'workspace-knowledge-external-retrieval', title: '对话用户', order: 10 }, }, { path: 'external-retrieval', name: 'workspace-knowledge-external-retrieval', component: () => import('@/views/knowledge-detail/external-retrieval/index.vue'), - meta: { permission: knowledgeAccess(P.KNOWLEDGE_EXTERNAL_SERVICE_READ), next: 'workspace-knowledge-setting', title: '外部检索服务', order: 20 }, + meta: { permission: ({ params }) => perm.knowledge.workspace.externalServiceRead(String(params.knowledgeId)), next: 'workspace-knowledge-setting', title: '外部检索服务', order: 20 }, }, ], }, @@ -123,7 +115,9 @@ export const knowledgeRoutes: RouteRecordRaw[] = [ path: 'setting', name: 'workspace-knowledge-setting', component: () => import('@/views/knowledge-detail/setting/base/index.vue'), - meta: { permission: knowledgeAccess(P.KNOWLEDGE_SETTING_READ, (type) => type === KNOWLEDGE_TYPE_KEY.BASE), next: 'workspace-knowledge-base-setting', + meta: { + permission: ({ params }) => perm.knowledge.workspace.settingRead(String(params.knowledgeId)), + next: 'workspace-knowledge-settings', title: '设置', icon: 'icon_setting', activeIcon: 'icon_setting_filled', @@ -148,19 +142,19 @@ export const knowledgeRoutes: RouteRecordRaw[] = [ path: 'setting/base', name: 'workspace-knowledge-base-setting', component: () => import('@/views/knowledge-detail/setting/base/index.vue'), - meta: { permission: knowledgeAccess(P.KNOWLEDGE_SETTING_READ, (type) => type !== KNOWLEDGE_TYPE_KEY.BASE), next: 'workspace-knowledge-document-strategy', title: '基础设置', order: 10 }, + meta: { permission: ({ params }) => perm.knowledge.workspace.settingRead(String(params.knowledgeId)), next: 'workspace-knowledge-document-strategy', title: '基础设置', order: 10 }, }, { path: 'setting/document-strategy', name: 'workspace-knowledge-document-strategy', component: () => import('@/views/knowledge-detail/setting/document-strategy/index.vue'), - meta: { permission: knowledgeAccess(P.KNOWLEDGE_DOCUMENT_STRATEGY_READ, (type) => type === KNOWLEDGE_TYPE_KEY.WEB), next: 'workspace-knowledge-scheduled-sync', title: '文档处理策略', order: 20, detailMenuVisible: (params) => params.type === KNOWLEDGE_TYPE_KEY.WEB }, + meta: { permission: ({ params }) => perm.knowledge.workspace.documentStrategyRead(String(params.knowledgeId)), next: 'workspace-knowledge-scheduled-sync', title: '文档处理策略', order: 20, detailMenuVisible: (params) => params.type === KNOWLEDGE_TYPE_KEY.WEB }, }, { path: 'setting/scheduled-sync', name: 'workspace-knowledge-scheduled-sync', component: () => import('@/views/knowledge-detail/setting/scheduled-sync/index.vue'), - meta: { permission: knowledgeAccess(P.KNOWLEDGE_SCHEDULED_SYNC_READ, (type) => type !== KNOWLEDGE_TYPE_KEY.BASE), next: 'workspace-knowledge-workflow', title: '定时同步', order: 30 }, + meta: { permission: ({ params }) => perm.knowledge.workspace.scheduledSyncRead(String(params.knowledgeId)), next: 'workspace-knowledge-document-list', title: '定时同步', order: 30 }, }, ], }, diff --git a/ui/src/views/document-detail/index.vue b/ui/src/views/document-detail/index.vue index cef926e2749..e4aa6ffc187 100644 --- a/ui/src/views/document-detail/index.vue +++ b/ui/src/views/document-detail/index.vue @@ -18,7 +18,21 @@ import { GenerateQuestionsAction, MoveParagraphAction, } from './action-dropdown' -import { isWorkspaceSharedResource } from '@/utils/resource-context' +import { isWorkspaceSharedResource, isSystemResource, isSystemSharedResource } from '@/utils/resource-context' +import { perm } from '@/permission' + +/** + * 知识库「文档」权限判断 + */ +type KnowledgeDocPermissionMethod = + | 'docCreate' | 'docEdit' | 'docDelete' | 'docGenerate' | 'docMigrate' + +function knowledgeDocPermission(method: KnowledgeDocPermissionMethod): boolean { + if (isSystemResource()) return Boolean(perm.knowledge.system[method]()) + if (isSystemSharedResource()) return Boolean(perm.knowledge.share[method]()) + if (isWorkspaceSharedResource()) return false // 共享知识库在工作空间侧只读 + return Boolean(perm.knowledge.workspace[method](knowledgeId.value)) +} defineOptions({ name: 'KnowledgeParagraphView' }) @@ -213,6 +227,7 @@ const paragraphSortDisabled = computed( createDialogMounted.value || editDialogMounted.value || paragraphs.value.length < 2, + !knowledgeDocPermission('docEdit') ) const { handleMoveParagraph } = useParagraphSort({ paragraphs, @@ -272,7 +287,7 @@ onMounted(() => { - + 添加分段 @@ -356,19 +371,19 @@ onMounted(() => { - + - + @@ -395,6 +410,7 @@ onMounted(() => { :paragraph-id="paragraph.id" :disabled="loading" @refresh="handleGenerateQuestionsSuccess" + v-if="knowledgeDocPermission('docGenerate')" /> { :paragraph-id="paragraph.id" :disabled="loading" @success="refreshParagraphs" + v-if="knowledgeDocPermission('docMigrate')" /> { :disabled="loading" @move="handleMoveParagraph(paragraph, $event)" @visible-change="handleParagraphMenuVisibleChange(paragraph.id, 'position', $event)" + v-if="knowledgeDocPermission('docEdit')" /> - + 删除 @@ -460,6 +478,7 @@ onMounted(() => { :paragraph-ids="selectedParagraphIds" :disabled="loading" @success="refreshParagraphs" + v-if="knowledgeDocPermission('docMigrate')" /> { :paragraph-ids="selectedParagraphIds" :disabled="loading" @refresh="handleGenerateQuestionsSuccess" + v-if="knowledgeDocPermission('docGenerate')" /> - + 删除 diff --git a/ui/src/views/document-detail/paragraph-dialog/ParagraphDialog.vue b/ui/src/views/document-detail/paragraph-dialog/ParagraphDialog.vue index be97e00a43b..52626086b5b 100644 --- a/ui/src/views/document-detail/paragraph-dialog/ParagraphDialog.vue +++ b/ui/src/views/document-detail/paragraph-dialog/ParagraphDialog.vue @@ -6,8 +6,22 @@ import type { ParagraphQuestionDraft } from './types.ts' import ParagraphForm from './components/ParagraphForm.vue' import ParagraphQuestions from './components/ParagraphQuestions.vue' import ParagraphPreview from './components/ParagraphPreview.vue' -import { isWorkspaceSharedResource } from '@/utils/resource-context' import { MsgSuccess } from '@/utils/message' +import { isWorkspaceSharedResource, isSystemResource, isSystemSharedResource } from '@/utils/resource-context' +import { perm } from '@/permission' + +/** + * 知识库「文档」权限判断 + */ +type KnowledgeDocPermissionMethod = + | 'docCreate' | 'docEdit' | 'docDelete' | 'docGenerate' | 'docMigrate' + +function knowledgeDocPermission(method: KnowledgeDocPermissionMethod): boolean { + if (isSystemResource()) return Boolean(perm.knowledge.system[method]()) + if (isSystemSharedResource()) return Boolean(perm.knowledge.share[method]()) + if (isWorkspaceSharedResource()) return false // 共享知识库在工作空间侧只读 + return Boolean(perm.knowledge.workspace[method](props.knowledgeId)) +} defineOptions({ name: 'EditParagraphDialog' }) const props = defineProps<{ @@ -115,7 +129,7 @@ defineExpose({ open, close }) { - if (!props.readonly && !isWorkspaceSharedResource()) void loadProblemOptions() + if ( knowledgeQuestionPermission('problemRead') && !props.readonly && !isWorkspaceSharedResource()) void loadProblemOptions() }) /* 新增分段维护本地草稿;已有分段创建或关联问题后刷新关联列表。 */ @@ -122,11 +135,11 @@ function handleRemoveProblem(index: number) { diff --git a/ui/src/views/knowledge-detail/external-retrieval/index.vue b/ui/src/views/knowledge-detail/external-retrieval/index.vue index f82d363039f..43a114b0036 100644 --- a/ui/src/views/knowledge-detail/external-retrieval/index.vue +++ b/ui/src/views/knowledge-detail/external-retrieval/index.vue @@ -6,9 +6,18 @@ import type { KnowledgeExternalRetrievalPayload, KnowledgeExternalRetrievalSetti import type { ResourceDetailPageProps } from '@/layout/ResourceDetailLayout.vue' import { copyText } from '@/utils/clipboard' import { MsgSuccess } from '@/utils/message' -import { isWorkspaceResource, isWorkspaceSharedResource, isSystemResource } from '@/utils/resource-context' +import {isWorkspaceSharedResource, isSystemResource, isSystemSharedResource } from '@/utils/resource-context' +/** + * 知识库「外部检索服务」权限判断 + */ +type KnowledgeExternalServicePermissionMethod = 'knowledgeExternalServiceRead' | 'knowledgeExternalServiceEdit' -const canEdit = () => !isWorkspaceSharedResource() && (isSystemResource() ? perm.knowledge.system.externalServiceEdit() : !isWorkspaceResource() || perm.knowledge.workspace.externalServiceEdit(knowledgeId.value)) +function knowledgeExternalServicePermission(method: KnowledgeExternalServicePermissionMethod): boolean { + if (isSystemResource()) return Boolean(perm.knowledge.system[method]()) + if (isSystemSharedResource()) return Boolean(perm.knowledge.share[method]()) + if (isWorkspaceSharedResource()) return false // 共享知识库在工作空间侧只读 + return Boolean(perm.knowledge.workspace[method](knowledgeId.value)) +} defineOptions({ name: 'ExternalRetrievalView' }) defineProps() @@ -37,7 +46,7 @@ async function loadExternalRetrieval() { // 仅保存本次切换的字段,成功后按完整响应更新开关及配置示例。 async function handleSettingChange(field: keyof KnowledgeExternalRetrievalPayload, value: string | number | boolean) { - if (!setting.value || loading.value || saving.value || !canEdit()) return + if (!setting.value || loading.value || saving.value || !knowledgeExternalServicePermission('knowledgeExternalServiceEdit')) return saving.value = true try { const result = await resourceApi.externalRetrieval.putKnowledgeExternalRetrieval?.(knowledgeId.value, { [field]: value === true }) @@ -79,7 +88,7 @@ watch([knowledgeId, () => resourceApi.externalRetrieval], loadExternalRetrieval, @@ -89,7 +98,7 @@ watch([knowledgeId, () => resourceApi.externalRetrieval], loadExternalRetrieval, API 服务地址 { - + 测试 diff --git a/ui/src/views/knowledge-detail/library/document/index.vue b/ui/src/views/knowledge-detail/library/document/index.vue index c12f5a570b8..1035fe4d5f5 100644 --- a/ui/src/views/knowledge-detail/library/document/index.vue +++ b/ui/src/views/knowledge-detail/library/document/index.vue @@ -17,7 +17,7 @@ import { numberFormat } from '@/utils/number' import { toOrderBy, isWorkFlow } from '@/utils/common' import { MsgSuccess, MsgWarning } from '@/utils/message' import { getFileIconUrl } from '@/utils/icon' -import { isWorkspaceResource, isWorkspaceSharedResource } from '@/utils/resource-context' +import { isWorkspaceResource, isWorkspaceSharedResource,isSystemResource, isSystemSharedResource } from '@/utils/resource-context' import ButtonUploadDocument from './upload-document/ButtonUploadDocument.vue' import ButtonImportDocument from './import-document/ButtonImportDocument.vue' import ButtonExecutionRecord from './components/ButtonExecutionRecord.vue' @@ -45,6 +45,22 @@ import { TokenizeDocumentAction, BatchTokenizeAction, } from './action-dropdown' +import { perm } from '@/permission' + +/** + * 知识库「文档」权限判断 + */ +type KnowledgeDocPermissionMethod = + | 'docCreate' | 'docEdit' | 'docDelete' | 'docSync' + | 'docExport' | 'docDownload' | 'docVector' | 'docToken' + | 'docGenerate' | 'docMigrate' | 'docTag' | 'docReplace' + +function knowledgeDocPermission(method: KnowledgeDocPermissionMethod): boolean { + if (isSystemResource()) return Boolean(perm.knowledge.system[method]()) + if (isSystemSharedResource()) return Boolean(perm.knowledge.share[method]()) + if (isWorkspaceSharedResource()) return false // 共享知识库在工作空间侧只读 + return Boolean(perm.knowledge.workspace[method](knowledgeId.value)) +} defineOptions({ name: 'DocumentListView' }) defineProps() @@ -333,7 +349,7 @@ onBeforeUnmount(() => { /> { :maxlength="128" :validate="validateDocumentName" :save="(name) => saveDocumentName(row.id, name)" - :disabled="isWorkspaceSharedResource()" + :disabled="isWorkspaceSharedResource() || !knowledgeDocPermission('docEdit')" > @@ -476,7 +492,7 @@ onBeforeUnmount(() => { diff --git a/ui/src/views/knowledge-detail/library/image/index.vue b/ui/src/views/knowledge-detail/library/image/index.vue index cca1c2e14b2..6fa06cc2dd8 100644 --- a/ui/src/views/knowledge-detail/library/image/index.vue +++ b/ui/src/views/knowledge-detail/library/image/index.vue @@ -15,7 +15,7 @@ import { datetimeFormat } from '@/utils/time' import { numberFormat } from '@/utils/number' import { getFileUrl } from '@/utils/common' import { MsgSuccess } from '@/utils/message' -import { isWorkspaceResource, isWorkspaceSharedResource, isSystemResource } from '@/utils/resource-context' +import { isWorkspaceResource, isWorkspaceSharedResource,isSystemResource, isSystemSharedResource } from '@/utils/resource-context' import ButtonUploadImage from './upload-image/ButtonUploadImage.vue' import { useKnowledgeDetailContext } from '@/views/knowledge-detail/context' import ParagraphDialog from '@/views/document-detail/paragraph-dialog/ParagraphDialog.vue' @@ -43,12 +43,24 @@ defineOptions({ name: 'ImageListView' }) defineProps() defineExpose({ customHeader: true }) +/** + * 知识库「图片」权限判断 + */ +type KnowledgeImagePermissionMethod = + | 'read' | 'create' | 'edit' | 'delete' | 'download' + | 'generate' | 'vector' | 'migrate' | 'tag' | 'replace' | 'token' + +function canImage(method: KnowledgeImagePermissionMethod): boolean { + if (isSystemResource()) return Boolean(perm.knowledge.system.image[method]()) + if (isSystemSharedResource()) return Boolean(perm.knowledge.share.image[method]()) + if (isWorkspaceSharedResource()) return false // 共享知识库在工作空间侧只读 + return Boolean(perm.knowledge.workspace.image[method](knowledgeId.value)) +} + const route = useRoute() const knowledgeId = computed(() => String(route.params.knowledgeId ?? '')) const { knowledge, resourceApi } = useKnowledgeDetailContext() -const canImage = (action: keyof typeof perm.knowledge.system.image) => !isWorkspaceSharedResource() && (isSystemResource() ? perm.knowledge.system.image[action]() : !isWorkspaceResource() || perm.knowledge.workspace.image[action](knowledgeId.value)) - /* 图片分段详情:取首个分段,弹窗关闭后卸载。 */ const paragraphDialogRef = ref>() const selectedParagraph = ref() @@ -378,7 +390,7 @@ onBeforeUnmount(() => { :document="row" v-model:loading="operationLoading" @refresh="refreshAfterOperation" - :disabled="!canImage('edit')" + :disabled="!canImage('tag')" /> @@ -416,14 +428,14 @@ onBeforeUnmount(() => {