首页删除以真实接口为准:会话/工作空间删除成功才移除并刷新,删除接口改 DELETE

- deleteSessionV2 请求方式 post → delete(/ai-agent/session/delete)
- 工作空间删除:缺少删除信息提示不可删;接口失败保留数据;成功才移除本地并刷新工作空间树
- 会话记录删除:已认领后端号的会话接口失败保留数据且不打断连接;成功才 teardown/关闭并刷新列表;
  未认领的本地虚拟会话直接本地删除

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2026-08-20 16:28:25 +08:00
co-authored by Claude
parent ee5120c6ed
commit 03697b9747
2 changed files with 22 additions and 13 deletions
+1 -1
View File
@@ -48,7 +48,7 @@ export function getSessionResults(sessionId: string, params?: Record<string, any
export function deleteSessionV2(sessionId: string, requestOptions?: RequestOptions) {
return request({
url: '/ai-agent/session/delete',
method: 'post',
method: 'delete',
data: { sessionId },
requestOptions,
});
+21 -12
View File
@@ -273,16 +273,21 @@ const handleDeleteNode = async (data: TreeNode) => {
} 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(() => {