智能测试用例生成与管理系统。支持多用户数据隔离、文档解析、AI驱动用例生成、数据分析可视化等功能。结合规则引擎与多家大模型(OpenAI/DeepSeek/OpenRouter/Ollama)自动生成测试用例,并提供思维导图可视化、编辑保存、版本与审计、历史筛选、PNG/Excel/CSV 导出等能力。
- 多用户支持:完整的用户认证系统,数据隔离确保每个用户的私有数据安全
- 文档解析:支持
.md/.txt/.pdf/.docx等多种文档格式 - AI驱动生成:结合规则引擎与多模型(OpenAI/DeepSeek/OpenRouter/Ollama),智能回退机制
- 数据分析:多维度的用例统计、趋势分析、性能指标和用户行为洞察
- 可视化:原生 SVG 思维导图(缩放/拖拽/悬停)
- 编辑与版本:就地编辑保存、版本快照与审计日志
- 删除与新建:界面直接删除/新增节点,事务保证一致性,库失败回退内存
- 历史筛选:关键词/时间范围/用例数,后端筛选 + 前端回退不清空
- 导出功能:单任务导出 PNG/Excel;历史页批量导出 Excel/CSV(含摘要与来源类型)
- 主题系统:CSS 变量深浅色主题,对比度 ≥ 4.5:1
- 流式生成:支持实时流式LLM生成,提升用户体验
- 前端:React 18(ESM)、原生 SVG、Hash 路由、CSS 设计令牌
- 后端:Node.js + Express(TypeScript)、Zod 参数校验、JWT认证、错误中间件
- 数据库:MySQL(mysql2/promise 连接池)、迁移脚本、版本/审计表
- 缓存:Redis(可选,用于性能优化)
- 文件解析:pdf-parse、mammoth
- 导出:xlsx、Canvas PNG
- AI集成:OpenAI、DeepSeek、OpenRouter、Ollama(本地)
- 实时通信:WebSocket(流式生成)
backend/
├── public/ # 静态文件
│ ├── app.html # 前端单页应用(React + SVG)
│ └── login.html # 用户登录页面
├── src/
│ ├── server.ts # 应用入口、路由挂载
│ ├── web/ # API路由层
│ │ ├── auth.ts # 用户认证API
│ │ ├── testcases.ts # 测试用例API
│ │ ├── analytics.ts # 数据分析API
│ │ └── ...
│ ├── repo/ # 数据访问层
│ │ ├── mysql.ts # MySQL数据访问
│ │ └── users.ts # 用户数据访问
│ ├── services/ # 业务逻辑层
│ │ ├── llm.ts # LLM服务
│ │ ├── docgen.ts # 文档解析
│ │ └── ...
│ ├── setup/ # 初始化配置
│ │ ├── auth.ts # 认证中间件
│ │ ├── dbInit.ts # 数据库初始化
│ │ └── ...
│ ├── store/ # 内存存储
│ ├── middleware/ # 中间件
│ ├── utils/ # 工具函数
│ └── config/ # 配置文件
├── db/
│ └── migrations/ # 数据库迁移脚本
└── dist/ # TypeScript编译输出
- Node.js ≥ 18
- MySQL ≥ 8(或兼容的 InnoDB)
- Redis ≥ 6(可选,用于缓存优化)
- Ollama(可选,用于本地LLM)
CREATE DATABASE caseai CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'caseai'@'%' IDENTIFIED BY 'caseai';
GRANT ALL PRIVILEGES ON caseai.* TO 'caseai'@'%';
FLUSH PRIVILEGES;在 backend/.env(或你的环境)设置:
# 数据库配置
DB_HOST=localhost
DB_PORT=3306
DB_USER=root
DB_PASSWORD=your_password
DB_NAME=caseai
# 服务器配置
PORT=3000
JWT_SECRET=your_jwt_secret
DEMO_MODE=0
# LLM配置
LLM_ENABLED=1
LLM_PROVIDER=ollama
LLM_MODEL=qwen2.5:7b
LLM_TEMPERATURE=0.7
OLLAMA_ENDPOINT=http://localhost:11434/api/generate
# 可选:云LLM服务
OPENAI_API_KEY=your_openai_key
DEEPSEEK_API_KEY=your_deepseek_key
OPENROUTER_API_KEY=your_openrouter_key
# Redis配置(可选)
REDIS_URL=redis://localhost:6379
REDIS_HOST=localhost
REDIS_PORT=6379
cd backend
npm install
npm run build
npm start
# 浏览器打开 http://localhost:3000/login.html# 安装Ollama
brew install ollama # macOS
# 或访问 https://ollama.ai 下载
# 启动Ollama服务
ollama serve
# 下载模型
ollama pull qwen2.5:7b # 推荐7B模型
ollama pull qwen2.5:1.5b # 轻量版
# 测试模型
ollama run qwen2.5:7bchmod +x scripts/deploy.sh
./scripts/deploy.sh
# 成功后,进入 backend 目录运行开发服务器:
cd backend && npm run dev脚本内容见 scripts/deploy.sh:
- 检查
node/npm/mysql命令是否可用 - 加载环境变量文件(默认
backend/.env,可通过--env指定) - 尝试创建数据库(若有权限),安装后端依赖
- 输出后续运行方式与访问地址(可加
--start-dev直接启动)
高级用法:
# 指定 env 文件并在部署后自动启动开发服务器
scripts/deploy.sh --env backend/.env.local --start-dev
# 跳过数据库创建(已有库或无权限时)
scripts/deploy.sh --skip-db- 注册/登录:访问 http://localhost:3000/login.html 进行用户注册或登录
- 数据隔离:每个用户的数据完全隔离,确保隐私安全
- 生成用例:上传文档或粘贴文本,选择"模型类别",点击"生成用例"
- 查看/编辑:在思维导图中点击节点,右侧编辑保存;可"新建用例""删除当前用例"
- 数据分析:查看个人用例统计、趋势分析、性能指标等多维度数据
- 导出:详情页导出 PNG/Excel;历史页可批量导出 Excel/CSV
- 历史筛选:关键词(任务ID/时间)、开始/结束时间、用例数区间;分类会逐条验证任务内是否包含该分类用例
- 智能回退:LLM生成失败时自动回退到规则生成,确保服务可用性
- 多模型支持:支持OpenAI、DeepSeek、OpenRouter、Ollama等多种LLM服务
- 流式生成:本地Ollama支持实时流式输出,提升用户体验
POST /api/testcases/generate生成任务与用例(文件或文本)GET /api/testcases/tasks历史列表GET /api/testcases/tasks/filter筛选(kw/category/from/to/minCase/maxCase)GET /api/testcases/tasks/:id任务详情(含 cases)PATCH /api/testcases/:id更新用例(标题/分类/优先级/前置/步骤/期望)POST /api/testcases/tasks/:id/testcases新建用例DELETE /api/testcases/:id删除用例(事务 + 回退)GET /api/testcases/:id/versions用例版本列表GET /api/testcases/:id/audits用例审计日志
- 登录跳转报错:预览环境只读接口已开放;如需写操作,请在前端提供令牌或关闭 DEMO_MODE
- 任务未落库:早期迁移导致
template_id非空;启动时已自动修正为可空。若历史任务仍在内存,可重新生成以写库 - 删除失败:后端会返回明确
message;前端也会保持视图一致(本地移除并提示)
- 不要将 API Key 写入仓库;使用
.env或安全注入 - 导出文件仅包含用例信息,不含密钥或令牌
Apache License 2.0
