From 1901aeb82f09412647007072c275acd34a9a0c3e Mon Sep 17 00:00:00 2001 From: JOJO <1498581755@qq.com> Date: Tue, 21 Jul 2026 17:13:19 +0800 Subject: [PATCH] =?UTF-8?q?feat(personalization):=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E9=9A=90=E8=97=8F=E5=B7=A5=E5=85=B7=E5=AE=A1=E6=A0=B8=E9=9D=A2?= =?UTF-8?q?=E6=9D=BF=E9=80=89=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 个人空间「工具」页新增开关,默认开启 - 自动审核模式下开启时,后台审核工具不再自动展开审核面板 (实时审批事件与待审批轮询两处自动展开均拦截,含移动端 overlay) - 手动批准模式不受影响,面板照常弹出等待人工操作 --- modules/personalization_manager.py | 7 ++++++ static/src/app/methods/taskPolling/tool.ts | 19 +++++++++++----- static/src/app/methods/ui/permission.ts | 6 ++++- .../personalization/PersonalizationDrawer.vue | 22 +++++++++++++++++++ static/src/stores/personalization.ts | 3 +++ 5 files changed, 50 insertions(+), 7 deletions(-) diff --git a/modules/personalization_manager.py b/modules/personalization_manager.py index 594de1df..446301ad 100644 --- a/modules/personalization_manager.py +++ b/modules/personalization_manager.py @@ -91,6 +91,7 @@ DEFAULT_PERSONALIZATION_CONFIG: Dict[str, Any] = { "deep_compress_trigger_tokens": None, "deep_compress_form": "file", # 深压缩形式:file-生成文件 / inject-直接注入文件全文 "silent_tool_disable": True, # 禁用工具时不向模型插入提示(默认开启) + "hide_tool_approval_panel": True, # 自动审核模式下不自动打开工具审核面板(默认开启) "enhanced_tool_display": True, # 增强工具显示 "compact_message_display": "full", # 简略消息显示:full-完整原始内容 / brief-一行概要 "block_display_mode": "stacked", # 堆叠块显示模式:traditional-传统列表 / stacked-堆叠动画 / minimal-极简模式 @@ -440,6 +441,12 @@ def sanitize_personalization_payload( else: base["silent_tool_disable"] = bool(base.get("silent_tool_disable")) + # 隐藏工具审核面板(自动审核模式下不自动展开) + if "hide_tool_approval_panel" in data: + base["hide_tool_approval_panel"] = bool(data.get("hide_tool_approval_panel")) + else: + base["hide_tool_approval_panel"] = bool(base.get("hide_tool_approval_panel", True)) + # 增强工具显示 if "enhanced_tool_display" in data: base["enhanced_tool_display"] = bool(data.get("enhanced_tool_display")) diff --git a/static/src/app/methods/taskPolling/tool.ts b/static/src/app/methods/taskPolling/tool.ts index ef568e75..2d6d1c83 100644 --- a/static/src/app/methods/taskPolling/tool.ts +++ b/static/src/app/methods/taskPolling/tool.ts @@ -1,6 +1,7 @@ // @ts-nocheck import { debugLog } from '../common'; import { useTaskStore } from '../../../stores/task'; +import { usePersonalizationStore } from '../../../stores/personalization'; import { getMessageVisibility, messageStartsWork } from '../../../utils/messageVisibility'; import { debugNotifyLog, @@ -347,12 +348,18 @@ export const toolMethods = { if ((this.autoApprovalFeedLines || []).length === 0) { this.autoApprovalFinalMessage = ''; } - this.rightCollapsed = false; - if (this.rightWidth < this.minPanelWidth) { - this.rightWidth = this.minPanelWidth; - } - if (this.isMobileViewport && this.activeMobileOverlay !== 'approval') { - this.openMobileOverlay('approval'); + // 自动审核模式 + 个人空间开启「隐藏工具审核面板」时,不自动展开审核面板 + const hideApprovalPanel = + this.currentPermissionMode === 'auto_approval' && + usePersonalizationStore().form.hide_tool_approval_panel !== false; + if (!hideApprovalPanel) { + this.rightCollapsed = false; + if (this.rightWidth < this.minPanelWidth) { + this.rightWidth = this.minPanelWidth; + } + if (this.isMobileViewport && this.activeMobileOverlay !== 'approval') { + this.openMobileOverlay('approval'); + } } this.$forceUpdate(); }, diff --git a/static/src/app/methods/ui/permission.ts b/static/src/app/methods/ui/permission.ts index 6e418385..8eb8ea1a 100644 --- a/static/src/app/methods/ui/permission.ts +++ b/static/src/app/methods/ui/permission.ts @@ -352,8 +352,12 @@ export const permissionMethods = { } const items = Array.isArray(payload.items) ? payload.items : []; this.pendingToolApprovals = items; + // 自动审核模式 + 个人空间开启「隐藏工具审核面板」时,不自动展开审核面板 + const hideApprovalPanel = + this.currentPermissionMode === 'auto_approval' && + usePersonalizationStore().form.hide_tool_approval_panel !== false; // 电脑端:有审批时自动展开面板 - if (items.length > 0 && !this.isMobileViewport) { + if (items.length > 0 && !this.isMobileViewport && !hideApprovalPanel) { this.rightCollapsed = false; if (this.rightWidth < this.minPanelWidth) { this.rightWidth = this.minPanelWidth; diff --git a/static/src/components/personalization/PersonalizationDrawer.vue b/static/src/components/personalization/PersonalizationDrawer.vue index a097ed27..0ea6be8f 100644 --- a/static/src/components/personalization/PersonalizationDrawer.vue +++ b/static/src/components/personalization/PersonalizationDrawer.vue @@ -1360,6 +1360,28 @@ class="fancy-path" > +