From 9407618c8a4040eb8140054db6a9d40b0dc0797f Mon Sep 17 00:00:00 2001 From: wangdan-fit2cloud Date: Fri, 6 Nov 2026 13:49:50 +0800 Subject: [PATCH] fix: Select the sharing that is missing in the knowledge base. --- ui/package.json | 2 +- ui/pnpm-lock.yaml | 10 +++++----- ui/src/components/COMPONENT_README.md | 3 ++- .../business/select-knowledge-dialog/index.vue | 15 +++++++++++---- .../log-message-footer/improve/context.ts | 10 ++++++++++ 5 files changed, 29 insertions(+), 11 deletions(-) create mode 100644 ui/src/conversation-panel/components/log-message-footer/improve/context.ts diff --git a/ui/package.json b/ui/package.json index e28323de2d4..b6a901a78c1 100644 --- a/ui/package.json +++ b/ui/package.json @@ -36,7 +36,7 @@ "dingtalk-jsapi": "^3.2.9", "dompurify": "^3.4.14", "echarts": "^6.1.0", - "element-plus": "^2.14.2", + "element-plus": "^2.14.7", "highlight.js": "^11.12.0", "jsencrypt": "^3.5.4", "katex": "^0.16.47", diff --git a/ui/pnpm-lock.yaml b/ui/pnpm-lock.yaml index 96cd1b49a65..f7925c1a13e 100644 --- a/ui/pnpm-lock.yaml +++ b/ui/pnpm-lock.yaml @@ -69,8 +69,8 @@ importers: specifier: ^6.1.0 version: 6.1.0 element-plus: - specifier: ^2.14.2 - version: 2.14.6(vue@3.5.43(typescript@6.0.3)) + specifier: ^2.14.7 + version: 2.14.7(vue@3.5.43(typescript@6.0.3)) highlight.js: specifier: ^11.12.0 version: 11.12.0 @@ -1784,8 +1784,8 @@ packages: electron-to-chromium@1.5.433: resolution: {integrity: sha512-5lCAbyZBjtmUt/RAGHRqrL2q0oEFRThDAsZHHDn9XHa89Qw7gMYOeSicBTy+AHfvo0r6vwsZvqNJTQIQy1BLzA==} - element-plus@2.14.6: - resolution: {integrity: sha512-GH0fMoMgVEKkHimoaKvg5B00NmfPbQ+qxX6/JrO7F+dLAC3atrZr2Y2MoccHMxS22M7QE12/s0DG0Zs49iwJ/A==} + element-plus@2.14.7: + resolution: {integrity: sha512-lrG7pZyCS+mpCNVpzxxyu5r35+T6V0hzkAeIwn7HA6to772XSTHKuYCZG51OfzlqaxGbNegLxs650zAF1j43gA==} peerDependencies: vue: ^3.3.7 @@ -4851,7 +4851,7 @@ snapshots: electron-to-chromium@1.5.433: {} - element-plus@2.14.6(vue@3.5.43(typescript@6.0.3)): + element-plus@2.14.7(vue@3.5.43(typescript@6.0.3)): dependencies: '@ctrl/tinycolor': 4.2.1 '@element-plus/icons-vue': 2.3.2(vue@3.5.43(typescript@6.0.3)) diff --git a/ui/src/components/COMPONENT_README.md b/ui/src/components/COMPONENT_README.md index 2bb6b93f1d5..4723a03b3ed 100644 --- a/ui/src/components/COMPONENT_README.md +++ b/ui/src/components/COMPONENT_README.md @@ -821,7 +821,8 @@ Workspace 的文件夹虚拟树业务组件。组件根据当前资源上下文 切换选择,始终过滤掉 `embedding_model_id` 为空的知识库;选中后仅展示相同 Embedding 模型的选项,清空后恢复可选范围;悬停展示知识库详情。 按工作空间、System 资源管理、System 共享资源选择完整 Knowledge API 的 `getAllKnowledge`, 一次加载当前查询的全部知识库,不使用滚动分页,不增加 Workspace 共享页面来源分支。 -仅普通工作空间显示只读 `FolderTree`,不显示共享目录、不调用 Workspace Shared API;其他范围不显示或查询文件夹。 +仅普通工作空间显示只读 `FolderTree`,包含共享目录;选中共享目录时调用 Workspace Shared API 的 +`getAllKnowledge`,不传文件夹参数;其他范围不显示或查询文件夹。 支持名称搜索和跨目录保留选择,调用方维护最终关联 ID 与快照。 ### SelectApplicationDialog、SelectToolDialog diff --git a/ui/src/components/business/select-knowledge-dialog/index.vue b/ui/src/components/business/select-knowledge-dialog/index.vue index 8015871967e..a3131609e3c 100644 --- a/ui/src/components/business/select-knowledge-dialog/index.vue +++ b/ui/src/components/business/select-knowledge-dialog/index.vue @@ -4,11 +4,12 @@ import { computed, nextTick, ref, useTemplateRef } from 'vue' import { cloneDeep } from 'lodash' import { isSystemResource, isSystemSharedResource, isWorkspaceResource } from '@/utils/resource-context' import KnowledgeApi from '@/api/admin/workspace/knowledge/knowledge' +import SharedKnowledgeApi from '@/api/admin/workspace/shared/knowledge/knowledge' import SystemKnowledgeApi from '@/api/admin/system/resource-management/knowledge/knowledge' import SystemSharedKnowledgeApi from '@/api/admin/system/shared-resources/knowledge/knowledge' import type { FolderItem, KnowledgeItem } from '@/api/types' import { RESOURCE_TYPE } from '@/api/enums' -import { FOLDER_ENTRIES } from '@/constants/folder' +import { FOLDER_ENTRIES, FOLDER_ENTRY_ID } from '@/constants/folder' import FolderTree from '@/components/business/folder-tree/index.vue' import MkCardCheckbox from '@/components/mk-card-checkbox/index.vue' import KnowledgeCard from '@/views/knowledge/knowledge-card/KnowledgeCard.vue' @@ -48,10 +49,17 @@ function refreshKnowledge() { loading.value = true knowledgeOptions.value = [] appliedSearchKeyword.value = searchKeyword.value.trim() - const requestApi = isSystemResource() ? SystemKnowledgeApi : isSystemSharedResource() ? SystemSharedKnowledgeApi : KnowledgeApi + const isSharedFolder = isWorkspaceScope.value && currentFolder.value.id === FOLDER_ENTRY_ID.SHARED + const requestApi = isSystemResource() + ? SystemKnowledgeApi + : isSystemSharedResource() + ? SystemSharedKnowledgeApi + : isSharedFolder + ? SharedKnowledgeApi + : KnowledgeApi return requestApi .getAllKnowledge({ - ...(isWorkspaceScope.value ? { folder_id: currentFolder.value.id } : {}), + ...(isWorkspaceScope.value && !isSharedFolder ? { folder_id: currentFolder.value.id } : {}), ...(appliedSearchKeyword.value ? { name: appliedSearchKeyword.value } : {}), }) .then((knowledge) => { @@ -123,7 +131,6 @@ defineExpose({ open }) ref="folderTreeRef" class="pt-4" :can-edit="false" - :show-shared="false" :source="RESOURCE_TYPE.KNOWLEDGE" @loaded="selectFolder" @select="selectFolder" diff --git a/ui/src/conversation-panel/components/log-message-footer/improve/context.ts b/ui/src/conversation-panel/components/log-message-footer/improve/context.ts new file mode 100644 index 00000000000..dd744cd6824 --- /dev/null +++ b/ui/src/conversation-panel/components/log-message-footer/improve/context.ts @@ -0,0 +1,10 @@ +import type { InjectionKey, ComputedRef } from 'vue' +import type ChatLogApi from '@/api/admin/workspace/application/chat-log' + +export const LOG_IMPROVE_KEY: InjectionKey< + ComputedRef<{ + api: Pick + applicationId: string + chatId: string + }> +> = Symbol('log-improve')