Skip to content

Latest commit

 

History

History
187 lines (142 loc) · 5.45 KB

File metadata and controls

187 lines (142 loc) · 5.45 KB

AI Agent 取消功能测试指南

功能概述

本文档介绍如何测试 TIS AI Agent 的任务取消功能。该功能允许用户在发送请求后终止服务端执行流程,避免长时间无效等待和服务端计算资源浪费。

测试前准备

1. 确保代码更新

  • 前端文件:/Users/mozhenghua/j2ee_solution/project/tis-console/src/runtime/chat.pipeline.component.ts
  • 后端文件:/Users/mozhenghua/j2ee_solution/project/tis-solr/tis-console/src/main/java/com/qlangtech/tis/coredefine/module/action/ChatPipelineAction.java

2. 重新编译和部署

# 前端编译
cd /Users/mozhenghua/j2ee_solution/project/tis-console
npm run build

# 后端编译
cd /Users/mozhenghua/j2ee_solution/project/tis-solr
mvn clean package -Dmaven.test.skip=true

功能测试步骤

测试场景 1:基本取消功能

  1. 启动对话

    • 打开 AI Agent 聊天界面
    • 选择一个大模型提供者
  2. 发送任务请求

    • 输入一个需要较长时间处理的任务,例如:
      • "创建一个MySQL到Doris的完整数据同步管道"
      • "配置所有数据源连接并同步10张表"
  3. 执行取消操作

    • 观察"发送"按钮变为红色的"取消执行"按钮
    • 在任务执行过程中点击"取消执行"按钮
  4. 验证结果

    • ✅ 应该看到成功通知:"当前执行任务已经停止"
    • ✅ 按钮应该恢复为"发送"状态
    • ✅ 打字机效果应该停止
    • ✅ SSE连接应该关闭
    • ✅ 后续步骤不应该继续执行

测试场景 2:快速取消

  1. 快速操作

    • 发送消息后立即点击取消
    • 验证系统能够正确处理快速取消
  2. 预期结果

    • ✅ 系统应该能够正确处理
    • ✅ 不应该出现界面卡死或异常

测试场景 3:多会话取消

  1. 创建多个会话

    • 创建会话A,发送任务并执行
    • 切换到新会话B,发送另一个任务
  2. 取消特定会话

    • 在会话B中点击取消
    • 切换回会话A,验证A的任务不受影响
  3. 预期结果

    • ✅ 只有当前会话的任务被取消
    • ✅ 其他会话不受影响

测试场景 4:取消后重新发送

  1. 取消当前任务

    • 发送任务并取消
  2. 重新发送新任务

    • 取消成功后,输入新的请求并发送
  3. 预期结果

    • ✅ 能够正常发送新任务
    • ✅ 新任务能够正常执行

测试场景 5:等待用户输入时取消

  1. 触发用户输入请求

    • 发送一个需要用户选择或输入的任务
    • 等待系统显示选择框或输入框
  2. 执行取消

    • 在等待用户输入时点击取消
  3. 预期结果

    • ✅ 倒计时应该停止
    • ✅ 输入框/选择框应该变为禁用状态
    • ✅ 系统正确退出等待状态

错误处理测试

测试场景 6:网络异常

  1. 模拟网络中断

    • 发送任务后断开网络
    • 点击取消按钮
  2. 预期结果

    • ✅ 应该显示错误消息
    • ✅ 界面状态应该正确重置

测试场景 7:会话不存在

  1. 清理后端会话

    • 重启后端服务
    • 在前端点击取消(此时后端会话已丢失)
  2. 预期结果

    • ✅ 应该显示友好的错误提示
    • ✅ 界面应该正确重置状态

性能测试

测试场景 8:并发取消

  1. 同时操作多个浏览器标签

    • 在多个标签页中同时发送任务
    • 同时点击取消
  2. 预期结果

    • ✅ 每个会话都能独立取消
    • ✅ 不应该出现资源竞争或死锁

日志验证

后端日志检查点

tail -f /path/to/tis/logs/tis.log | grep "cancelled task"

应该看到类似日志:

INFO - User admin cancelled task for session: xxx-xxx-xxx

前端控制台检查

打开浏览器开发者工具,查看:

  1. Network标签:确认取消请求已发送
  2. Console标签:确认没有JavaScript错误

测试结果记录

测试场景 测试结果 备注
基本取消功能 ⬜ 通过 / ⬜ 失败
快速取消 ⬜ 通过 / ⬜ 失败
多会话取消 ⬜ 通过 / ⬜ 失败
取消后重新发送 ⬜ 通过 / ⬜ 失败
等待用户输入时取消 ⬜ 通过 / ⬜ 失败
网络异常 ⬜ 通过 / ⬜ 失败
会话不存在 ⬜ 通过 / ⬜ 失败
并发取消 ⬜ 通过 / ⬜ 失败

已知限制

  1. 当前正在执行的步骤不会被强制中断

    • 系统会等待当前步骤完成后停止后续步骤
    • 这是为了保证数据一致性和避免执行逻辑混乱
  2. 取消操作不可撤销

    • 一旦取消,需要重新发送任务

问题排查

如果取消功能不工作,请检查:

  1. 前端检查

    • 确认按钮切换逻辑是否正常
    • 确认取消请求是否正确发送
    • 检查浏览器控制台是否有错误
  2. 后端检查

    • 确认 doCancelCurrentTask 方法是否被调用
    • 检查 AgentContext 是否正确保存在会话中
    • 查看后端日志是否有异常
  3. 常见问题

    • 按钮没有切换:检查 isProcessing 状态管理
    • 取消不生效:验证 AgentContext.cancel() 是否被调用
    • 状态未重置:检查前端状态重置逻辑

后续优化建议

  1. 添加取消确认对话框(避免误操作)
  2. 显示取消进度(哪些步骤已完成,哪些被跳过)
  3. 支持部分取消(选择性跳过某些步骤)
  4. 添加取消操作的审计日志
  5. 优化取消响应时间