From 6df1e19eaa67239e2f5b44086fdece40e3e50433 Mon Sep 17 00:00:00 2001 From: shaohuzhang1 <80892890+shaohuzhang1@users.noreply.github.com> Date: Thu, 6 Nov 2025 20:17:21 +0800 Subject: [PATCH 01/88] fix: dependency package (#4328) --- apps/maxkb/wsgi/web.py | 25 +++++++++++++++++++++++-- pyproject.toml | 1 + 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/apps/maxkb/wsgi/web.py b/apps/maxkb/wsgi/web.py index e95125e42..e835612ca 100644 --- a/apps/maxkb/wsgi/web.py +++ b/apps/maxkb/wsgi/web.py @@ -6,16 +6,36 @@ @date:2025/11/5 15:14 @desc: """ +import builtins import os +import sys from django.core.wsgi import get_wsgi_application + +class TorchBlocker: + def __init__(self): + self.original_import = builtins.__import__ + + def __call__(self, name, *args, **kwargs): + if len([True for i in + ['torch'] + if + i in name.lower()]) > 0: + print(f"Disable package is being imported: 【{name}】", file=sys.stderr) + pass + else: + return self.original_import(name, *args, **kwargs) + + +# 安装导入拦截器 +builtins.__import__ = TorchBlocker() + os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'maxkb.settings') application = get_wsgi_application() - def post_handler(): from common.database_model_manage.database_model_manage import DatabaseModelManage from common import event @@ -29,9 +49,10 @@ def post_scheduler_handler(): job.run() + # 启动后处理函数 post_handler() # 仅在scheduler中启动定时任务,dev local_model celery 不需要 if os.environ.get('ENABLE_SCHEDULER') == '1': - post_scheduler_handler() \ No newline at end of file + post_scheduler_handler() diff --git a/pyproject.toml b/pyproject.toml index 76a2cd195..9d4dd900f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -29,6 +29,7 @@ dependencies = [ "langchain-huggingface==0.3.0", "langchain-ollama==0.3.4", "langgraph==0.5.3", + "langchain_core==0.3.74", "torch==2.8.0", "sentence-transformers==5.0.0", "qianfan==0.4.12.3", From 12635922213adbbce0df549b0bce2504905091c9 Mon Sep 17 00:00:00 2001 From: wangdan-fit2cloud Date: Thu, 6 Nov 2025 21:02:47 +0800 Subject: [PATCH 02/88] feat: Folder directories support moving or dragging. --- ui/src/components/folder-breadcrumb/index.vue | 36 +++++++--- .../components/folder-tree/MoveToDialog.vue | 34 +++++----- ui/src/components/folder-tree/index.vue | 66 +++++++++++-------- ui/src/styles/element-plus.scss | 3 + .../component/DropdownMenu.vue | 40 +++++------ .../component/AddKnowledgeDialog.vue | 22 +++---- .../application/component/ToolDialog.vue | 40 +++++------ ui/src/views/application/index.vue | 18 ++--- ui/src/views/knowledge/index.vue | 22 +++---- ui/src/views/tool/index.vue | 24 +++---- 10 files changed, 166 insertions(+), 139 deletions(-) diff --git a/ui/src/components/folder-breadcrumb/index.vue b/ui/src/components/folder-breadcrumb/index.vue index 8517c19e8..ac743d33d 100644 --- a/ui/src/components/folder-breadcrumb/index.vue +++ b/ui/src/components/folder-breadcrumb/index.vue @@ -3,14 +3,34 @@ {{ breadcrumbData[0]?.name }} - -
- {{ item.name }} -
- - {{ item.name }} - -
+ +
diff --git a/ui/src/components/folder-tree/MoveToDialog.vue b/ui/src/components/folder-tree/MoveToDialog.vue index aeed2a5e3..af61f6a37 100644 --- a/ui/src/components/folder-tree/MoveToDialog.vue +++ b/ui/src/components/folder-tree/MoveToDialog.vue @@ -11,12 +11,6 @@ ref="treeRef" :source="source" :data="folderList" - :treeStyle="{ - height: 'calc(100vh - 320px)', - border: '1px solid #ebeef5', - borderRadius: '6px', - padding: '8px', - }" :default-expanded-keys="[currentNodeKey]" :canOperation="false" class="move-to-dialog-tree" @@ -74,7 +68,7 @@ watch(dialogVisible, (bool) => { const isFolder = ref(false) -const open = (data: any, is_folder?:any) => { +const open = (data: any, is_folder?: any) => { detail.value = data isFolder.value = is_folder getFolder() @@ -105,17 +99,17 @@ const submitHandle = async () => { } if (isFolder.value) { const folder_obj = { - ...detail.value, - parent_id: selectForderId.value, - } - folderApi.putFolder(detail.value.id, detail.value.folder_type, folder_obj, loading) + ...detail.value, + parent_id: selectForderId.value, + } + folderApi + .putFolder(detail.value.id, detail.value.folder_type, folder_obj, loading) .then(() => { MsgSuccess(t('common.saveSuccess')) - emit('refresh') - dialogVisible.value = false - }) - } - else if (props.source === SourceTypeEnum.KNOWLEDGE) { + emit('refresh') + dialogVisible.value = false + }) + } else if (props.source === SourceTypeEnum.KNOWLEDGE) { if (detail.value.type === 2) { KnowledgeApi.putLarkKnowledge(detail.value.id, obj, loading).then(() => { MsgSuccess(t('common.saveSuccess')) @@ -155,8 +149,12 @@ defineExpose({ open }) padding: 0 !important; margin-bottom: 8px; } - :deep(.tree-label) { - max-width: 100% !important; + :deep(.el-scrollbar) { + border: 1px solid var(--el-border-color-light); + border-radius: 6px; + } + :deep(.el-tree) { + height: calc(100vh - 320px)!important; } } diff --git a/ui/src/components/folder-tree/index.vue b/ui/src/components/folder-tree/index.vue index 68a950b3a..b2a1f44d8 100644 --- a/ui/src/components/folder-tree/index.vue +++ b/ui/src/components/folder-tree/index.vue @@ -5,27 +5,28 @@ :placeholder="$t('common.search')" prefix-icon="Search" clearable - class="p-8" + class="p-16 pb-0" /> - -
-
- - {{ shareTitle }} +
+
+
+ + {{ shareTitle }} +
@@ -198,15 +196,17 @@ function getList() { type: 'tool', isShared: folder_id === 'share', systemType: 'workspace', - }).getToolList({ - folder_id: folder_id, - tool_type: 'CUSTOM' - }).then((res: any) => { - toolList.value = res.data?.tools || res.data || [] - toolList.value = toolList.value?.filter((item: any) => item.is_active) - searchData.value = res.data.tools || res.data - searchData.value = searchData.value?.filter((item: any) => item.is_active) }) + .getToolList({ + folder_id: folder_id, + tool_type: 'CUSTOM', + }) + .then((res: any) => { + toolList.value = res.data?.tools || res.data || [] + toolList.value = toolList.value?.filter((item: any) => item.is_active) + searchData.value = res.data.tools || res.data + searchData.value = searchData.value?.filter((item: any) => item.is_active) + }) } defineExpose({ open }) diff --git a/ui/src/views/application/index.vue b/ui/src/views/application/index.vue index 34a0a197f..c81c5f26e 100644 --- a/ui/src/views/application/index.vue +++ b/ui/src/views/application/index.vue @@ -2,15 +2,15 @@