Skip to content

feat: 全面升级测试与协作功能 —— 支持批量异步执行、拖拽排序、智能刷新与异步需求评审 - #11

Closed
MG-Duan wants to merge 11 commits into
masterfrom
dev
Closed

feat: 全面升级测试与协作功能 —— 支持批量异步执行、拖拽排序、智能刷新与异步需求评审#11
MG-Duan wants to merge 11 commits into
masterfrom
dev

Conversation

@MG-Duan

@MG-Duan MG-Duan commented Oct 31, 2025

Copy link
Copy Markdown
Collaborator

1. 测试管理模块 (Test Management)

批量测试执行系统

  • 异步执行: 引入 Celery 分布式任务队列,实现了测试用例的批量异步执行,支持并发处理,大幅提升了测试效率。
  • 状态追踪与报告: 系统能够实时追踪执行状态、统计通过率,并生成详细的测试报告,包括执行日志和截图。
  • 套件管理: 新增测试套件管理页面,支持创建、编辑、删除和执行测试套件。

测试用例操作优化

  • 拖拽排序: 在测试用例编辑界面,增加了对测试步骤的拖拽排序功能,使步骤调整更加直观便捷。
  • 截图批量删除: 新增了截图的批量选择和删除功能,简化了测试资产的管理。

2. 聊天与会话管理 (Chat & Session Management)

实时与批量操作

  • 历史记录自动刷新: 实现了聊天历史的智能自动刷新机制,每3秒静默检查新消息,提升了多端协作的实时性。
  • 批量删除会话: 在侧边栏增加了对聊天会话的批量选择和删除功能,方便用户快速清理会话列表。

3. 需求管理模块 (Requirements Management)

异步需求评审

  • 性能提升: 将需求文档的 AI 评审过程改造为异步处理。用户提交评审后可立即返回,任务在后台通过 Celery 执行,避免了长时间的等待。
  • 进度监控: 前端通过轮询机制实时监控评审进度,并向用户反馈状态。

4. 核心架构与性能 (Core Architecture & Performance)

MCP 客户端增强

  • 会话级缓存: 为 MCP 客户端引入了会话级工具缓存,显著提升了多轮对话场景下的响应速度。
  • 并发隔离: 为每个测试会话创建独立的客户端实例,解决了并发测试中可能出现的资源冲突问题,增强了系统的稳定性。

5. DevOps 与自动化部署

持续集成/持续部署 (CI/CD)

  • 自动镜像构建: 添加了 GitHub Actions 工作流,实现了代码提交后自动构建和推送 Docker 镜像到容器仓库的功能。
  • 简化部署: 优化了 docker-compose.yml 配置,使其默认使用预构建的镜像,简化了部署流程。

- 将所有服务的镜像源从 ghcr.nju.edu.cn 切换至官方 ghcr.io
- 添加 docker-images 目录到 .gitignore
- 支持通过环境变量 MEDIA_ROOT 配置媒体文件路径,便于 Docker 部署
- 移除媒体文件访问的 DEBUG 模式限制,适配容器化部署场景
- 添加静态文件访问路由配置
- 在 celery-worker 和 celery-beat 启动前自动执行数据库迁移
为了简化部署配置并提高稳定性,此更改将原先独立的`backend`、`celery-worker`和`celery-beat`服务合并为一个`backend`服务。

- 在 `docker-compose.yml` 中,删除了`celery-worker`和`celery-beat`服务定义,将其启动命令合并到`backend`服务中。
- 这简化了容器间的依赖关系,并统一了环境变量和卷的配置。

同时,为了解决合并后可能出现的数据库竞态问题:
- 在 `testcases/views.py` 中,使用 `transaction.on_commit()` 来延迟Celery任务的启动。
- 这确保了测试执行记录的数据库事务完全提交后,Celery任务才开始执行,避免了任务因找不到数据而失败的问题。
- 在 Django 容器中引入 supervisord 统一管理 uvicorn、celery worker 和 celery beat
- 添加 entrypoint.sh 脚本处理数据库迁移和初始化逻辑
- 修复截图 URL 序列化问题,统一使用相对路径避免跨域问题
- 优化 nginx 配置,提升 /media/ 路径匹配优先级
- 支持通过环境变量 DATABASE_PATH 配置数据库路径
- 为 Vue 前端添加 /media 代理配置
- 更新 .gitignore 忽略 data 目录
- 修复会话列表重复添加的问题,使用临时数组收集会话后一次性更新
- 修复流式消息中工具消息的显示逻辑,将工具消息独立展示
- 优化会话加载流程,避免服务器失败时加载过期的本地缓存
- 增强 updateSessionInList 的防重逻辑,添加双重检查机制
- 调整测试管理菜单结构,使用子菜单方式组织相关功能
- 完善流完成后的历史记录重新加载,确保工具消息正确显示
- 新增 tasks.py 实现异步评审任务(execute_requirement_review)
- 修改 start_review 视图改为立即返回,通过 Celery 异步执行评审
- 优化文档状态检查逻辑,允许 reviewing 状态重入和 failed 状态重新评审
- 前端添加轮询机制监控评审进度,每5秒检查一次状态最多轮询60次
- 优化 UI 文本对齐和显示逻辑
- 前端集成 vuedraggable 实现步骤拖拽重排
- 添加拖拽手柄和视觉反馈样式
- 优化表格布局,使用自定义 table 替代 a-table
- 后端修复步骤更新时的 unique constraint 冲突
- 使用临时编号策略避免 step_number 重复
- 编辑模式下保存后自动刷新当前页面数据
- 后端新增 ChatBatchDeleteAPIView 接口支持批量删除会话
- 前端侧边栏增加全选和批量删除按钮
- 实现会话复选框选择交互
- 批量删除支持权限验证和错误处理
- 删除操作同时清理 SQLite checkpoints 和 Django ChatSession 记录
实现智能定时刷新机制,每3秒自动检查并加载新消息。只在非流式输出状态下执行静默刷新,避免干扰用户当前操作。当检测到新消息时自动更新聊天列表,提升多端协同体验。

- 新增静默加载历史记录函数,不显示loading状态
- 智能判断是否需要刷新(非流式、非加载状态)
- 监听会话ID变化自动启停刷新定时器
- 组件卸载时清理定时器防止内存泄漏
- 后端新增批量删除截图API接口,支持一次性删除多个截图
- 前端实现截图全选/多选交互功能
- 添加批量删除确认弹窗,显示删除详情
- 优化截图卡片样式,支持选中状态高亮显示
- 删除操作使用事务保证数据一致性
- 批量删除时隐藏单个删除按钮,避免操作冲突
- 将批量删除弹窗从 warning 改为 confirm,增加取消选项
- 为删除确认按钮添加 danger 状态,强化危险操作提示
- 更换测试管理菜单图标为实验图标(IconExperiment),更贴合功能语义
@MG-Duan MG-Duan closed this Oct 31, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant