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"
>
+