Skip to content

wellkilo/CaseAI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CaseAI

智能测试用例生成与管理系统。支持多用户数据隔离、文档解析、AI驱动用例生成、数据分析可视化等功能。结合规则引擎与多家大模型(OpenAI/DeepSeek/OpenRouter/Ollama)自动生成测试用例,并提供思维导图可视化、编辑保存、版本与审计、历史筛选、PNG/Excel/CSV 导出等能力。

CaseAI Overview

特性

  • 多用户支持:完整的用户认证系统,数据隔离确保每个用户的私有数据安全
  • 文档解析:支持 .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本地LLM设置(推荐)

# 安装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:7b

一键部署(Shell 脚本)

chmod +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

使用说明

用户管理

功能使用

  • 生成用例:上传文档或粘贴文本,选择"模型类别",点击"生成用例"
  • 查看/编辑:在思维导图中点击节点,右侧编辑保存;可"新建用例""删除当前用例"
  • 数据分析:查看个人用例统计、趋势分析、性能指标等多维度数据
  • 导出:详情页导出 PNG/Excel;历史页可批量导出 Excel/CSV
  • 历史筛选:关键词(任务ID/时间)、开始/结束时间、用例数区间;分类会逐条验证任务内是否包含该分类用例

AI生成

  • 智能回退:LLM生成失败时自动回退到规则生成,确保服务可用性
  • 多模型支持:支持OpenAI、DeepSeek、OpenRouter、Ollama等多种LLM服务
  • 流式生成:本地Ollama支持实时流式输出,提升用户体验

API 概览

  • 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

About

CaseAI System for PRD Upload: Automatically Generate Test Case Suites

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors