From 03697b97470f582a87a3014c4e9972be83dffb1c Mon Sep 17 00:00:00 2001 From: 2910410219 <2910410219@qq.com> Date: Thu, 20 Aug 2026 16:28:25 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A6=96=E9=A1=B5=E5=88=A0=E9=99=A4=E4=BB=A5?= =?UTF-8?q?=E7=9C=9F=E5=AE=9E=E6=8E=A5=E5=8F=A3=E4=B8=BA=E5=87=86=EF=BC=9A?= =?UTF-8?q?=E4=BC=9A=E8=AF=9D/=E5=B7=A5=E4=BD=9C=E7=A9=BA=E9=97=B4?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=88=90=E5=8A=9F=E6=89=8D=E7=A7=BB=E9=99=A4?= =?UTF-8?q?=E5=B9=B6=E5=88=B7=E6=96=B0=EF=BC=8C=E5=88=A0=E9=99=A4=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E6=94=B9=20DELETE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - deleteSessionV2 请求方式 post → delete(/ai-agent/session/delete) - 工作空间删除:缺少删除信息提示不可删;接口失败保留数据;成功才移除本地并刷新工作空间树 - 会话记录删除:已认领后端号的会话接口失败保留数据且不打断连接;成功才 teardown/关闭并刷新列表; 未认领的本地虚拟会话直接本地删除 Co-Authored-By: Claude --- src/api/settings/workflow/session.ts | 2 +- src/views/home/index.vue | 33 ++++++++++++++++++---------- 2 files changed, 22 insertions(+), 13 deletions(-) diff --git a/src/api/settings/workflow/session.ts b/src/api/settings/workflow/session.ts index 6d3913b..fc44074 100644 --- a/src/api/settings/workflow/session.ts +++ b/src/api/settings/workflow/session.ts @@ -48,7 +48,7 @@ export function getSessionResults(sessionId: string, params?: Record { } catch { return; } - // 调后端接口删除(工作空间结果:走 session 域独立接口) - if (data.backendId && data.fileUrl) { - try { - await deleteWorkspaceResult({ id: data.backendId, content: data.fileUrl }); - } catch { - // 后端已提示错误,继续本地删除 - } + // 删除以真实接口为准:成功才移除本地并刷新;失败保留数据(后端已提示错误),不本地删 + if (!data.backendId || !data.fileUrl) { + ElMessage.warning('缺少删除信息,无法删除'); + return; + } + try { + await deleteWorkspaceResult({ id: data.backendId, content: data.fileUrl }); + } catch { + // 后端已提示错误,保留本地数据,不刷新 + return; } removeNode(treeNodes.value, data.id); ElMessage.success('已删除'); + // 删除后重新拉取工作空间树,确保与后端一致(后端按流程记录删除,粒度可能大于单个文件) + loadWorkspaceTree(); }; const removeNode = (nodes: TreeNode[], targetId: string): boolean => { @@ -1681,17 +1686,19 @@ const handleDeleteHistory = async (id: string) => { } catch { return; } - // 删除会话:终止其进行中的轮(若有)并关闭其连接(后台执行一并放弃) - teardownRound(id); - closeSocket(id); - // 已认领后端正式号的会话才调后端删除接口;未认领的本地临时会话后端无记录,跳过删除 + // 删除以真实接口为准:已认领后端正式号的会话先调后端删除,失败保留数据(后端已提示错误),不本地删; + // 未认领的本地临时会话(virtual_ 开头)后端无记录,直接本地删除 if (hasBackendSessionId(id)) { try { await deleteSessionV2(id); } catch { - // 后端已提示错误,继续本地删除 + // 后端已提示错误,保留本地数据,不刷新 + return; } } + // 删除会话:终止其进行中的轮(若有)并关闭其连接(后台执行一并放弃) + teardownRound(id); + closeSocket(id); const idx = historyList.value.findIndex((item) => item.id === id); if (idx < 0) return; historyList.value.splice(idx, 1); @@ -1708,6 +1715,8 @@ const handleDeleteHistory = async (id: string) => { } } ElMessage.success('已删除会话'); + // 删除后重新拉取会话记录列表,确保与后端一致 + loadSessionHistory(); }; onMounted(() => {