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(() => {