From 1970a2bac95e63ccb346ea101ff726dacdb2bde1 Mon Sep 17 00:00:00 2001 From: linshen <32978552+linshenkx@users.noreply.github.com> Date: Sat, 22 Nov 2025 13:38:52 +0800 Subject: [PATCH] =?UTF-8?q?refactor(ui):=20=E9=87=8D=E6=9E=84=E4=B8=8A?= =?UTF-8?q?=E4=B8=8B=E6=96=87=E6=A8=A1=E5=BC=8F=E6=B5=8B=E8=AF=95=E9=9D=A2?= =?UTF-8?q?=E6=9D=BF=E6=9E=B6=E6=9E=84=EF=BC=8C=E5=AE=9E=E7=8E=B0=E8=81=8C?= =?UTF-8?q?=E8=B4=A3=E5=88=86=E7=A6=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 ContextUserTestPanel 组件,专门处理 Context User 模式 - 简化 TestAreaPanel,移除多模式判断逻辑,仅保留 Basic Mode - 移除 contextMode prop,各组件职责更加清晰 - 修复 ConversationTestPanel 和 ContextUserTestPanel 的定时器内存泄漏 - 更新相关组件和类型定义,保持 API 一致性 变更影响: - TestAreaPanel: 从 780 行减少到 380 行 - 新增 ContextUserTestPanel: 630 行专用组件 - 架构更清晰:Basic/ContextUser/ContextSystem 各自独立 --- packages/extension/src/App.vue | 10 +- packages/ui/src/components/TestAreaPanel.vue | 436 +----------- .../context-mode/ContextModeActions.vue | 10 +- .../context-mode/ContextSystemWorkspace.vue | 1 - .../context-mode/ContextUserTestPanel.vue | 629 ++++++++++++++++++ .../context-mode/ContextUserWorkspace.vue | 20 +- .../context-mode/ConversationManager.vue | 7 +- .../context-mode/ConversationTestPanel.vue | 5 +- packages/ui/src/index.ts | 2 + packages/ui/src/types/components.ts | 2 - packages/web/src/App.vue | 10 +- 11 files changed, 671 insertions(+), 461 deletions(-) create mode 100644 packages/ui/src/components/context-mode/ContextUserTestPanel.vue diff --git a/packages/extension/src/App.vue b/packages/extension/src/App.vue index 967777a5..7f8ec123 100644 --- a/packages/extension/src/App.vue +++ b/packages/extension/src/App.vue @@ -2146,16 +2146,18 @@ const getActiveTestPanelInstance = (): TestAreaPanelInstance | null => { return null; }; -// 基础模式和 context-user 模式的测试处理函数 -// 注意:context-system 模式已在 ContextSystemWorkspace 内部使用 useConversationTester 处理,不会调用此函数 +// 基础模式的测试处理函数 +// 注意: +// 1. Context System 模式在 ContextSystemWorkspace 内部使用 useConversationTester 处理 +// 2. Context User 模式在 ContextUserWorkspace 内部使用 useContextUserTester 处理 +// 3. 此函数仅被 Basic Mode 的 TestAreaPanel 调用 const handleTestAreaTest = async (testVariables?: Record) => { - // 调用基础测试器(只用于基础模式和 context-user) await promptTester.executeTest( optimizer.prompt, optimizer.optimizedPrompt, testContent.value, isCompareMode.value, - testVariables + testVariables || {} ); }; diff --git a/packages/ui/src/components/TestAreaPanel.vue b/packages/ui/src/components/TestAreaPanel.vue index f072c534..59ce468b 100644 --- a/packages/ui/src/components/TestAreaPanel.vue +++ b/packages/ui/src/components/TestAreaPanel.vue @@ -15,148 +15,7 @@ /> - -
- - - - -
- - - - - - - 🗑️ - - - - 💾 - -
- - - - - - - - - {{ t("test.variables.addVariable") }} - - -
-
-
- - - - - - - - - - - - - -
@@ -255,20 +114,11 @@ diff --git a/packages/ui/src/components/context-mode/ContextModeActions.vue b/packages/ui/src/components/context-mode/ContextModeActions.vue index 9341ff7b..c2bd5e7f 100644 --- a/packages/ui/src/components/context-mode/ContextModeActions.vue +++ b/packages/ui/src/components/context-mode/ContextModeActions.vue @@ -1,7 +1,7 @@ - + @@ -254,7 +250,7 @@ import { NCard, NFlex, NButton, NText } from "naive-ui"; import { useBreakpoints } from "@vueuse/core"; import InputPanelUI from "../InputPanel.vue"; import PromptPanelUI from "../PromptPanel.vue"; -import TestAreaPanel from "../TestAreaPanel.vue"; +import ContextUserTestPanel from "./ContextUserTestPanel.vue"; import OutputDisplay from "../OutputDisplay.vue"; import type { OptimizationMode } from "../../types"; import type { diff --git a/packages/ui/src/components/context-mode/ConversationManager.vue b/packages/ui/src/components/context-mode/ConversationManager.vue index 9e21eb61..42f141e9 100644 --- a/packages/ui/src/components/context-mode/ConversationManager.vue +++ b/packages/ui/src/components/context-mode/ConversationManager.vue @@ -394,7 +394,6 @@ const props = withDefaults(defineProps(), { title: undefined, toolCount: 0, optimizationMode: "system", - contextMode: "system", scanVariables: () => [], replaceVariables: (content: string) => content, isPredefinedVariable: () => false, @@ -468,13 +467,11 @@ const scrollbarStyle = computed(() => { return {}; }); -// 模式化行为:用户模式隐藏消息增删改按钮,系统模式保留完整能力 +// 消息编辑权限控制 const canEditMessages = computed(() => { // readonly优先级最高 if (props.readonly) return false; - // 用户模式不允许编辑消息 - if (props.contextMode === "user") return false; - // 系统模式允许编辑 + // 允许编辑 return true; }); diff --git a/packages/ui/src/components/context-mode/ConversationTestPanel.vue b/packages/ui/src/components/context-mode/ConversationTestPanel.vue index 7397ba09..6d436ae8 100644 --- a/packages/ui/src/components/context-mode/ConversationTestPanel.vue +++ b/packages/ui/src/components/context-mode/ConversationTestPanel.vue @@ -242,7 +242,7 @@