Skip to content

Repository files navigation

N-Tester AI 全栈测试平台

基于 FastAPI + Vue3 的AI智能化全栈测试管理平台

一个集成AI智能、API测试、UI自动化、数据工厂、评审管理等功能的企业级测试平台

Python FastAPI Vue License


线上体验地址

React版本: http://106.54.166.76 Vue3版本 http://39.96.43.109/#/auth/login 用户:admin 密码:123456

🌈 项目介绍

N-Tester AI 全栈测试平台是一个面向企业级应用的现代化智能测试管理系统,采用前后端完全分离的架构设计,集成了AI智能测试、API接口测试、UI自动化测试、数据工厂、评审管理等多个核心功能模块。

核心特性:

  • 🤖 AI智能测试:集成大语言模型,智能生成测试用例和执行测试
  • 🔌 API接口测试:完整的API测试生命周期管理
  • 🖥️ UI自动化测试:支持Web UI自动化测试执行和管理
  • 🏭 数据工厂:强大的测试数据生成和管理工具
  • 📋 评审管理:完善的测试用例评审流程
  • 📊 智能报告:可视化测试报告和数据分析
  • 🔐 完整的 RBAC 权限管理体系
  • 📱 统一通知系统:支持飞书、钉钉、微信、Telegram、邮件等多种通知方式
  • 🎯 动态路由注册,配置即可分配权限
  • 🛡️ 多层级权限控制(菜单权限、按钮权限、数据权限、API权限)
  • 📊 完善的日志管理系统(登录日志、操作日志)
  • 🎨 支持主题切换和暗黑模式
  • 📦 Docker 一键部署
  • ⚡ 异步高性能架构

📋 技术栈

环境要求

技术 版本 说明
Python < 3.13 后端运行环境
Node.js 20.0 前端构建环境
MySQL 8.0.23 主数据库
Redis 6.0.9 缓存和任务队列

后端技术栈

技术 版本 用途
FastAPI 0.111.0 异步 Web 框架
SQLAlchemy 2.0.3 异步 ORM
Pydantic 2.7.3 数据验证
Alembic 1.13.1 数据库迁移
Celery 5.2.7 异步任务队列
Redis 5.0.4 缓存和消息队列
Loguru 0.6.0 日志系统
python-jose 3.3.0 JWT 认证
asyncmy 0.2.9 异步 MySQL 驱动

前端技术栈

技术 版本 用途
Vue 3.5.8 渐进式框架
Vite 5.4.8 构建工具
TypeScript 4.9.4 类型系统
Element Plus 2.7.4 UI 组件库
Pinia 2.0.28 状态管理
Vue Router 4.1.6 路由管理
Axios 1.2.1 HTTP 客户端
Monaco Editor 0.34.1 代码编辑器
ECharts 5.6.0 数据可视化

🏗️ 系统架构

整体架构图

┌─────────────────────────────────────────────────────────────┐
│                         用户层                               │
│                    (浏览器 / 移动端)                         │
└────────────────────────┬────────────────────────────────────┘
                         │
                         ▼
┌─────────────────────────────────────────────────────────────┐
│                      前端层 (Vue 3)                          │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐  ┌──────────┐   │
│  │  路由    │  │  状态    │  │  组件    │  │  指令    │   │
│  │ Router   │  │  Pinia   │  │ Element  │  │ 权限控制 │   │
│  └──────────┘  └──────────┘  └──────────┘  └──────────┘   │
└────────────────────────┬────────────────────────────────────┘
                         │ HTTP/HTTPS
                         ▼
┌─────────────────────────────────────────────────────────────┐
│                   API 网关层 (FastAPI)                       │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐  ┌──────────┐   │
│  │  认证    │  │  限流    │  │  日志    │  │  异常    │   │
│  │ 中间件   │  │ 中间件   │  │ 中间件   │  │  处理    │   │
│  └──────────┘  └──────────┘  └──────────┘  └──────────┘   │
└────────────────────────┬────────────────────────────────────┘
                         │
                         ▼
┌─────────────────────────────────────────────────────────────┐
│                    业务逻辑层 (Services)                     │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐  ┌──────────┐   │
│  │ AI智能   │  │ API测试  │  │ UI自动化 │  │ 数据工厂 │   │
│  │ 测试     │  │ 服务     │  │ 服务     │  │ 服务     │   │
│  └──────────┘  └──────────┘  └──────────┘  └──────────┘   │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐  ┌──────────┐   │
│  │ 评审管理 │  │ 项目管理 │  │ 通知系统 │  │ 权限管理 │   │
│  │ 服务     │  │ 服务     │  │ 服务     │  │ 服务     │   │
│  └──────────┘  └──────────┘  └──────────┘  └──────────┘   │
└────────────────────────┬────────────────────────────────────┘
                         │
                         ▼
┌─────────────────────────────────────────────────────────────┐
│              数据访问层 (SQLAlchemy / Redis)                  │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐  ┌──────────┐   │
│  │  Models  │  │ Schemas  │  │  会话    │  │  Redis   │   │
│  │  (模块内) │  │  (模块内) │  │  管理    │  │缓存/验证码│   │
│  └──────────┘  └──────────┘  └──────────┘  └──────────┘   │
└────────────────────────┬────────────────────────────────────┘
                         │
         ┌───────────────┴───────────────┬──────────────┐
         ▼                               ▼              ▼
┌──────────────────┐          ┌──────────────┐  ┌─────────────┐
│   MySQL 8.0      │          │  Redis       │  │   Celery    │
│   主数据库       │          │  缓存/队列   │  │  异步任务   │
└──────────────────┘          └──────────────┘  └─────────────┘

核心功能模块

N-Tester AI 全栈测试平台
├── 🤖 AI智能测试模块
│   ├── AI对话助手          # 智能测试咨询和建议
│   ├── 智能用例生成        # 基于需求自动生成测试用例
│   ├── 智能执行引擎        # AI驱动的测试执行
│   └── LLM配置管理         # 大语言模型配置和管理
│
├── 🔌 API接口测试模块
│   ├── 接口项目管理        # API项目和环境管理
│   ├── 接口用例设计        # 接口测试用例编写
│   ├── 批量执行引擎        # 批量接口测试执行
│   ├── 断言验证系统        # 多种断言规则支持
│   └── 测试报告生成        # 详细的测试报告
│
├── 🖥️ UI自动化测试模块
│   ├── 页面元素管理        # Web元素定位和管理
│   ├── 测试脚本编写        # 自动化测试脚本
│   ├── 执行计划调度        # 定时和批量执行
│   ├── 截图和录像          # 执行过程记录
│   └── 失败重试机制        # 智能重试策略
│
├── 🏭 数据工厂模块
│   ├── 数据模板管理        # 测试数据模板定义
│   ├── 批量数据生成        # 大量测试数据生成
│   ├── 数据关联规则        # 数据间关联关系
│   ├── 数据导入导出        # 多格式数据交换
│   └── 数据清理工具        # 测试数据清理
│
├── 📋 评审管理模块
│   ├── 评审流程配置        # 自定义评审流程
│   ├── 用例评审管理        # 测试用例评审
│   ├── 评审意见收集        # 评审意见和建议
│   ├── 评审报告生成        # 评审结果报告
│   └── 评审统计分析        # 评审效率分析
│
├── 📊 项目管理模块
│   ├── 项目信息管理        # 项目基本信息
│   ├── 成员权限管理        # 项目成员和权限
│   ├── 环境配置管理        # 测试环境配置
│   ├── 版本管理系统        # 项目版本控制
│   └── 进度跟踪统计        # 项目进度监控
│
├── 📱 通知系统模块
│   ├── 多渠道通知支持      # 飞书/钉钉/微信/邮件/Telegram
│   ├── 通知模板管理        # 自定义通知模板
│   ├── 通知历史记录        # 通知发送历史
│   ├── 任务通知设置        # 任务相关通知配置
│   └── 通知统计分析        # 通知效果分析
│
├── 🔐 系统管理模块
│   ├── 用户管理系统        # 用户账号管理
│   ├── 角色权限管理        # RBAC权限体系
│   ├── 菜单路由管理        # 动态菜单配置
│   ├── 操作日志管理        # 系统操作审计
│   └── 系统监控面板        # 系统状态监控
│
└── 📈 数据分析模块
    ├── 测试数据统计        # 测试执行统计
    ├── 质量趋势分析        # 质量指标趋势
    ├── 效率分析报告        # 测试效率分析
    ├── 可视化图表          # 多维度数据展示
    └── 自定义报表          # 个性化报表定制

后端分层架构

业务模块采用 Controller / Service / CRUD / Model / Schema 同目录 的分层方式(不单独拆 models/services/ 大目录)。

backend/
├── main.py                 # FastAPI 入口(uvicorn)
├── config.py               # pydantic_settings,读取根目录 .env
├── celery_app.py           # Celery -A 入口
├── alembic.ini
├── run_win.bat / run_linux.sh
├── .env / .env.example
├── requirements.txt
├── requirements-windows.txt
│
├── app/
│   ├── api/v1/             # 业务 API(按模块分包)
│   │   ├── system/         # 认证/用户/角色/菜单/部门/字典/日志…
│   │   │   └── auth/       # 登录、验证码(Redis)、JWT、菜单权限
│   │   ├── monitor/        # 在线用户、系统监控
│   │   ├── common/         # 公共接口
│   │   └── Ntesterc_module/
│   │       ├── Ntesterc_api/            # 接口自动化 / 代码生成 / 脚本运行时
│   │       ├── Ntesterc_ai/             # AI 对话、LLM 配置、用量
│   │       ├── Ntesterc_performance/    # 性能测试
│   │       ├── Ntesterc_web/            # Web UI 自动化
│   │       ├── Ntesterc_app/            # App 自动化
│   │       ├── Ntesterc_project/        # 项目管理
│   │       ├── Ntesterc_notifications/  # 通知
│   │       ├── Ntesterc_task_scheduler/ # 定时任务 + Celery worker
│   │       └── …                      # intel / reviews / data_factory 等
│   ├── alembic/            # 数据库迁移脚本(versions/)
│   ├── bootstrap/          # 启动装配:路由、CORS、中间件、限流、MinIO…
│   ├── common/             # 统一响应、常量、枚举
│   ├── core/               # 基类 CRUD/Model/Schema、权限、日志、OAuth
│   ├── infra/db/           # SQLAlchemy / Redis 连接池
│   ├── middleware/         # 请求日志等中间件
│   ├── utils/              # 工具(含 captcha_util 等)
│   └── static/             # 应用内静态产物(如接口执行结果)
│
├── scripts/                # 运维 / 便携 / CLI(勿堆在根目录)
│   ├── cli.py              # 库表初始化 / Alembic 命令
│   ├── run_portable.py     # 便携版启动
│   ├── scheduler_runner.py # 独立调度进程
│   └── portable_env.py     # config.yaml → 环境变量
├── sql/                    # 初始化 SQL(db_init.sql 等)
├── deploy/                 # Dockerfile、Celery runner 镜像
├── static/                 # 对外静态资源(swagger、tools/jacoco 等)
├── docs/                   # 后端开发说明
└── tests/                  # 后端测试

单模块约定(示例:app/api/v1/system/user/):

controller.py   # 路由
service.py      # 业务
crud.py         # 数据访问
model.py        # ORM
schema.py       # Pydantic 入参/出参

前端目录架构

frontend/src/
├── api/v1/                 # 按域封装的后端接口
│   ├── system/             # 认证、用户、角色、菜单…
│   ├── testing/            # 接口/性能/UI/App/调度等测试 API
│   ├── projects/           # 项目管理
│   ├── ai/                 # AI 对话与 LLM 配置
│   ├── notifications/      # 通知
│   ├── reviews/            # 评审
│   ├── monitor/            # 监控
│   └── common/             # 公共接口
│
├── views/
│   ├── login/              # 登录(验证码走后端 Redis)
│   ├── home/               # 首页
│   ├── system/             # 系统管理
│   ├── projects/           # 项目管理
│   ├── testing/            # 测试能力
│   │   ├── api-automation/ # 接口自动化 / 脚本中心 / 代码生成
│   │   ├── api-testing/    # 接口测试
│   │   ├── performance/    # 性能测试
│   │   ├── ui-automation/  # UI 自动化
│   │   ├── app-management/ # App 自动化
│   │   ├── data-factory/   # 数据工厂
│   │   ├── scheduler/      # 任务调度
│   │   └── …               # precision-test / cloud-device 等
│   ├── ai/                 # AI 智能测试
│   ├── notifications/      # 通知
│   ├── reviews/            # 评审
│   ├── monitor/            # 监控
│   ├── assistant/          # 助手
│   └── error/              # 错误页
│
├── components/             # 公共组件(Captcha、monaco、表格等)
├── stores/                 # Pinia(user / themeConfig …)
├── router/                 # 路由(含后端菜单驱动)
├── utils/                  # request、storage、权限等
└── theme/                  # 主题样式

✨ 核心特性

🤖 AI智能测试模块

1. AI对话助手

  • 智能咨询:基于大语言模型的测试咨询和建议
  • 上下文理解:理解项目背景,提供针对性建议
  • 多轮对话:支持连续对话,深入探讨测试问题
  • 知识库集成:集成测试最佳实践和经验知识

2. 智能用例生成

  • 需求分析:自动分析需求文档,提取测试点
  • 用例生成:基于需求自动生成结构化测试用例
  • 边界值分析:智能识别边界条件和异常场景
  • 用例优化:根据历史数据优化用例覆盖率

3. 智能执行引擎

  • 自适应执行:根据执行结果动态调整测试策略
  • 异常处理:智能识别和处理执行过程中的异常
  • 结果分析:自动分析测试结果,生成问题报告
  • 持续学习:从执行历史中学习,提升测试效率

🔌 API接口测试模块

1. 完整的API测试生命周期

  • 项目管理:支持多项目、多环境的API测试管理
  • 接口设计:可视化接口用例设计和参数配置
  • 批量执行:支持单个、批量、定时执行测试用例
  • 断言验证:多种断言规则,支持JSON Path、正则表达式等

2. 高级测试功能

  • 数据驱动:支持Excel、CSV等数据源驱动测试
  • 参数化测试:动态参数替换和数据关联
  • 前置后置:支持前置条件和后置清理操作
  • Mock服务:内置Mock服务,支持接口模拟

3. 测试报告和分析

  • 详细报告:生成详细的测试执行报告
  • 趋势分析:测试结果趋势分析和质量监控
  • 性能监控:接口响应时间和性能指标监控
  • 失败分析:自动分析失败原因,提供修复建议

🖥️ UI自动化测试模块

1. 元素管理系统

  • 智能定位:多种元素定位策略,提高稳定性
  • 元素库管理:统一管理页面元素,支持复用
  • 动态等待:智能等待机制,处理页面加载时序
  • 元素验证:自动验证元素有效性,及时发现变更

2. 脚本编写和执行

  • 可视化编写:拖拽式脚本编写,降低技术门槛
  • 代码生成:自动生成Selenium/Playwright代码
  • 并发执行:支持多浏览器并发执行测试
  • 失败重试:智能重试机制,提高执行稳定性

3. 执行监控和报告

  • 实时监控:实时查看测试执行状态和进度
  • 截图录像:自动截图和录像,记录执行过程
  • 详细日志:完整的执行日志,便于问题定位
  • Allure报告:集成Allure,生成专业测试报告

🏭 数据工厂模块

1. 数据模板管理

  • 模板定义:灵活定义数据模板和生成规则
  • 数据类型:支持多种数据类型和格式
  • 关联规则:定义数据间的关联关系和约束
  • 版本管理:数据模板版本控制和变更管理

2. 批量数据生成

  • 大量生成:支持百万级测试数据快速生成
  • 多格式导出:支持Excel、CSV、JSON、SQL等格式
  • 数据校验:生成数据的完整性和一致性校验
  • 增量生成:支持增量数据生成和更新

3. 数据管理工具

  • 数据清理:测试完成后自动清理测试数据
  • 数据备份:重要数据的备份和恢复功能
  • 数据脱敏:生产数据脱敏处理,保护隐私
  • 数据同步:多环境间数据同步和一致性保证

📋 评审管理模块

1. 评审流程配置

  • 自定义流程:灵活配置评审流程和节点
  • 角色权限:不同角色的评审权限和职责
  • 审批规则:自定义审批规则和条件
  • 通知机制:评审状态变更自动通知相关人员

2. 用例评审管理

  • 在线评审:支持在线查看和评审测试用例
  • 批注功能:支持添加评审意见和建议
  • 版本对比:用例版本对比,跟踪变更历史
  • 评审统计:评审效率和质量统计分析

3. 评审报告和分析

  • 评审报告:生成详细的评审结果报告
  • 问题跟踪:评审问题的跟踪和解决状态
  • 质量分析:用例质量分析和改进建议
  • 效率监控:评审效率监控和流程优化

📱 统一通知系统

1. 多渠道通知支持

  • 企业通讯:飞书、钉钉、企业微信集成
  • 即时通讯:Telegram、微信通知
  • 邮件通知:SMTP邮件发送支持
  • Webhook:自定义Webhook通知

2. 智能通知管理

  • 通知模板:自定义通知模板和格式
  • 通知规则:基于条件的智能通知规则
  • 通知历史:完整的通知发送历史记录
  • 失败重试:通知发送失败自动重试机制

🔐 企业级权限管理

1. RBAC权限体系

  • 用户管理:完整的用户生命周期管理
  • 角色管理:灵活的角色定义和权限分配
  • 菜单权限:动态菜单权限控制
  • 按钮权限:页面级按钮权限控制

2. 数据权限控制

  • 数据范围:支持5种数据权限范围
  • 部门权限:基于部门的数据权限过滤
  • 个人权限:个人数据权限控制
  • 自定义权限:灵活的自定义权限规则

3. 安全审计

  • 登录日志:详细的用户登录行为记录
  • 操作日志:完整的用户操作审计跟踪
  • 权限变更:权限变更历史和审计
  • 安全监控:异常行为检测和告警

🚀 快速开始

方式一:Docker 部署(推荐)

1. 克隆项目

git clone https://github.com/rebort-hub/N-Tester.git
cd N-Tester

2. 配置环境变量

# 复制环境变量文件
cp .env.example .env

# 编辑 .env 文件,配置数据库密码等信息

3. Docker部署,启动服务

# 一键启动所有服务
docker-compose up -d

# 查看服务状态
docker-compose ps

# 查看日志
docker-compose logs -f

4. 访问系统

默认账号:admin / 123456 也可以快捷方式登录


方式二:源码部署

后端部署

1. 环境准备
# 确保已安装 Python 3.11-12、MySQL 8.0、Redis 6.0
python --version
mysql --version
redis-server --version
2. 创建数据库
CREATE DATABASE ntester CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
3. 配置环境
cd backend

# 复制配置文件
cp .env.example .env

# 编辑 .env 文件,修改数据库连接信息(注意,其他数据库连接配置不使用默认要改为注释)
# MySQL 数据库配置
DB_HOST=localhost
DB_PORT=3306
DB_USER=root
DB_PASSWORD=123456
DB_NAME=ntester

使用 pip 时需手动创建虚拟环境;使用 uv 时 uv sync 会自动创建 backend/.venv

# pip 方式:创建并激活虚拟环境
python -m venv .venv
# Windows:  .venv\Scripts\activate
# Linux/Mac: source .venv/bin/activate
4. 安装依赖

方式 A:使用 uv(强烈推荐,更快)

cd backend

# 若未安装 uv(Linux/macOS)
curl -LsSf https://astral.sh/uv/install.sh | sh

# 若未安装 uv(Windows PowerShell)
# irm https://astral.sh/uv/install.ps1 | iex

# 同步依赖(自动创建 .venv 虚拟环境)
uv sync --group dev

# 或使用项目根目录脚本一键安装后端+前端
# Linux/macOS:  bash scripts/install-deps.sh
# Windows:      powershell -ExecutionPolicy Bypass -File scripts/install-deps.ps1

方式 B:使用 pip(传统方式-备选方案)

# 安装依赖(linux&mac)
pip install -r requirements.txt
# windows 用户
pip install -r requirements-windows.txt

依赖定义以 backend/pyproject.toml 为准;requirements.txt / requirements-windows.txt 保留用于 Docker / pip 兼容。

5. 初始化数据库
# 一键初始化(推荐)
python scripts/cli.py init-db
#或者
uv run python scripts/cli.py init-db


# 或手动使用 Alembic
alembic upgrade heads
python scripts/cli.py init-data
6. 启动后端服务
# 开发模式(uv,无需手动激活虚拟环境)
uv run python main.py

# 或激活虚拟环境后
python main.py

# 生产模式
gunicorn main:app -w 4 -k uvicorn.workers.UvicornWorker -b 0.0.0.0:8100
7. 启动 Celery(可选)
# Windows 启动 Worker(单线程)
celery -A celery_app.celery worker --pool=solo -l INFO

# Linux 启动 Worker(多线程)
celery -A celery_app.celery worker --loglevel=INFO -c 10 -P solo -n ntester-celery-worker

# 启动定时任务调度器(数据库)
celery -A celery_app.celery beat -S app.api.v1.Ntesterc_module.Ntesterc_task_scheduler.celery_worker.scheduler.schedulers:DatabaseScheduler -l INFO

# 启动心跳监控
celery -A celery_app.celery beat -l INFO

前端部署

1. 环境准备
# 确保已安装 Node.js >=20.0
node -v  # v20.0
2. 安装依赖管理工具
# 安装 yarn
npm install -g yarn
3. 安装项目依赖
cd frontend

# 方式 A:使用项目根目录脚本(推荐,与后端一并安装)
# Linux/macOS:  bash scripts/install-deps.sh
# Windows:      powershell -ExecutionPolicy Bypass -File scripts/install-deps.ps1

# 方式 B:手动安装
# 新建配置文件.env,添加如下内容到配置文件
# port 端口号
VITE_PORT=3000

# open 运行 npm run dev 时自动打开浏览器
VITE_OPEN=true

# public path 配置线上环境路径(打包)、本地通过 http-server 访问时,请置空即可
VITE_PUBLIC_PATH=/

# 网站主标题(菜单导航、浏览器当前网页标题)
VITE_GLOBAL_TITLE=N-Tester
#网站副标题(登录页顶部文字)
VITE_GLOBAL_VICE_TITLE=N-Tester

VITE_APP_NAMESPACE=N-Tester

# 安装依赖使用 yarn
yarn install
4. 启动开发服务器
# 使用 yarn
yarn dev

访问:http://localhost:5173

5. 生产构建
# 使用 yarn
yarn build

# 构建产物在 dist/ 目录

🗄️ 数据库管理

Alembic 迁移命令

# 初始化数据库(包含迁移和初始数据)
python scripts/cli.py init-db

# 生成迁移文件
alembic revision --autogenerate -m "描述信息"

# 执行迁移
alembic upgrade head

# 回滚迁移
alembic downgrade -1

# 查看迁移历史
alembic history

# 查看当前版本
alembic current

📸 系统截图

登录页

登录页

首页

首页

项目管理

项目管理

UI自动化管理

UI自动化管理

AI用例生成

AI用例生成

AI智能对话

AI智能对话

AI智能浏览器

AI智能浏览器

个人中心

个人中心1

主题切换

主题切换1


🔧 开发指南

后端开发

添加新的 API 模块

  1. app/api/v1/<域>/<模块名>/ 下同目录创建:model.py / schema.py / crud.py / service.py / controller.py
  2. app/api/v1/__init__.py(或对应域 __init__.py)注册路由
  3. 新表模型需在 app/alembic/env.py 中 import,再执行 python scripts/cli.py revision / upgrade
  4. 需要鉴权的接口使用权限装饰器

示例:模块内分层(同目录)

# app/api/v1/system/user/model.py
from app.core.db_base import Base
from sqlalchemy import Column, String, Integer

class User(Base):
    __tablename__ = "sys_user"
    username = Column(String(50), nullable=False, unique=True)
    email = Column(String(100), nullable=True)
    status = Column(Integer, nullable=False, default=1)

# app/api/v1/system/user/schema.py
from pydantic import BaseModel
from typing import Optional

class UserCreate(BaseModel):
    username: str
    email: Optional[str] = None
    status: int = 1

class UserResponse(BaseModel):
    id: int
    username: str
    email: Optional[str]
    status: int

# app/api/v1/system/user/controller.py
from fastapi import APIRouter
from app.core.api_permission import ApiPermission
from app.core.data_permission import DataPermission

router = APIRouter()

@router.post("/", response_model=UserResponse)
@ApiPermission("system:user:add")
async def create_user(user: UserCreate):
    ...

@router.get("/", response_model=list[UserResponse])
@ApiPermission("system:user:list")
@DataPermission(data_scope="dept")
async def get_users():
    ...

权限系统使用

# 数据权限装饰器
@DataPermission(
    data_scope="dept",  # 数据范围:dept, user, all, custom
    dept_field="dept_id",  # 部门字段名
    user_field="created_by"  # 用户字段名
)
async def get_filtered_data():
    # 会自动根据用户权限过滤数据
    pass

# API权限装饰器
@ApiPermission("system:user:edit")
async def update_user():
    # 会检查用户是否有对应的API权限
    pass

前端开发

添加新页面

  1. src/views/<域>/ 创建页面组件
  2. src/api/v1/<域>/ 创建接口封装
  3. 后台菜单管理配置路由(后端菜单驱动时无需改死路由表)

示例:创建用户列表页面

// src/api/v1/system/user.ts
import request from '/@/utils/request'

export const getUserList = (params: any) => {
  return request({ url: '/v1/system/user/list', method: 'GET', params })
}

// src/views/system/user/index.vue
<template>
  <div class="user-container">
    <el-table :data="userList">
      <el-table-column prop="username" label="用户名" />
      <el-table-column prop="email" label="邮箱" />
    </el-table>
  </div>
</template>

<script setup lang="ts">
import { ref, onMounted } from 'vue'
import { getUserList } from '/@/api/v1/system/user'

const userList = ref([])

onMounted(async () => {
  const res = await getUserList({})
  userList.value = res.data
})
</script>

菜单路由一般由后端菜单下发,在后台「菜单管理」配置即可;仅本地调试时再改 src/router

权限控制

<!-- 按钮级权限控制 -->
<el-button v-auth="'system:user:add'">新增用户</el-button>
<el-button v-auth="'system:user:edit'">编辑</el-button>
<el-button v-auth="'system:user:delete'">删除</el-button>

<!-- 批量操作权限控制 -->
<el-button v-auth="'system:user:delete'" :disabled="selectedRows.length === 0">
  批量删除
</el-button>

<!-- 表格配置 -->
<z-table
  :columns="columns"
  :data="tableData"
  :options="{ stripe: true, border: true }"
  @selection-change="handleSelectionChange"
>
  <!-- 添加选择列 -->
  { columnType: 'selection', width: '50', align: 'center' }
</z-table>

日志管理功能

<!-- 登录日志页面示例 -->
<template>
  <div class="login-record-container">
    <!-- 搜索条件 -->
    <div class="search-form">
      <el-input v-model="queryParams.username" placeholder="用户名" />
      <el-date-picker v-model="dateRange" type="datetimerange" />
      <el-button @click="search">查询</el-button>
      <el-button v-auth="'system:log:login:delete'" @click="batchDelete">
        批量删除
      </el-button>
      <el-button v-auth="'system:log:login:clean'" @click="clearLogs">
        清理日志
      </el-button>
    </div>
    
    <!-- 数据表格 -->
    <z-table
      :columns="columns"
      :data="logData"
      :options="{ stripe: true, border: true }"
      @selection-change="handleSelectionChange"
    />
  </div>
</template>


📦 部署

生产环境部署

使用 Docker Compose(推荐)

# 生产环境配置
docker-compose -f docker-compose.prod.yml up -d

# 查看日志
docker-compose logs -f backend

# 重启服务
docker-compose restart backend

手动部署

后端部署:

# 使用 Gunicorn + Uvicorn
gunicorn main:app \
  -w 4 \
  -k uvicorn.workers.UvicornWorker \
  -b 0.0.0.0:8100 \
  --access-logfile logs/access.log \
  --error-logfile logs/error.log

前端部署:

# 构建
npm run build

# 使用 Nginx 部署
# 将 dist/ 目录内容复制到 Nginx 静态目录
cp -r dist/* /usr/share/nginx/html/

Nginx 配置示例:

server {
    listen 80;
    server_name your-domain.com;

    # 前端静态文件
    location / {
        root /usr/share/nginx/html;
        try_files $uri $uri/ /index.html;
    }

    # 后端 API 代理
    location /api {
        proxy_pass http://localhost:8100;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

🛠️ 常见问题

后端问题

Q: 数据库连接失败?

A: 检查 .env 文件中的数据库配置,确保 MySQL 服务已启动。

Q: Redis 连接失败?

A: 确保 Redis 服务已启动,检查 REDIS_URI 配置。

Q: Celery 任务不执行?

A: 确保 Celery Worker 和 Beat 都已启动,检查 Redis 连接。

前端问题

Q: 启动报错 "Cannot find module"?

A: 删除 node_modulespackage-lock.json,重新安装依赖。

Q: 接口请求 404?

A: 检查 src/config/ 中的 API 地址配置。

Q: 权限控制不生效?

A:

  1. 确保后台已配置菜单权限,并分配给对应角色
  2. 检查权限编码是否正确(如:system:user:add
  3. 确认用户已分配相应角色
  4. 检查前端 v-auth 指令使用是否正确

Q: 数据权限不生效?

A:

  1. 确保在接口上使用了 @DataPermission 装饰器
  2. 检查用户角色的数据权限范围配置
  3. 确认数据表中有对应的部门字段或用户字段

Q: 日志记录不完整?

A:

  1. 确保日志中间件已正确配置
  2. 检查数据库中的日志表是否存在
  3. 确认 Redis 连接正常(用于日志缓存)

🤝 贡献指南

欢迎贡献代码!请遵循以下步骤:

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 提交 Pull Request

代码规范

后端:

  • 遵循 PEP 8 规范
  • 使用类型注解
  • 编写单元测试

前端:

  • 遵循 Vue 3 风格指南
  • 使用 TypeScript
  • 组件命名使用 PascalCase

📄 开源协议

本项目采用 MIT 协议开源。


🔗 相关链接


💬 交流群

微信群

微信群

QQ 群

QQ群

打赏作者,可以请作者喝杯咖啡,你的鼓励将是更新最大的动力

wx

欢迎加入交流群,一起学习进步!


💌 支持作者

如果这个项目对你有帮助,请在 GitHub 上给个 ⭐ Star 支持一下!

你的支持是我持续更新的动力 🚀


Made with ❤️ by Rebort

N-Tester AI 全栈测试平台 - 让测试更智能,让质量更可靠

About

N-Tester1.0架构升级版,UI升级版本,全新架构升级,基于Fastapi+vue3的高性能测试平台,企业级RBAC权限管理系统,接口自动化,UI自动化,性能测试,用例评审,AI生成,skill管理一站式服务,客户端自动化,小程序自动化全栈企业测试平台 ,官网:http://www.ntesterc.com/N-Tester/ React版本体验地址:http://www.ntesterc.com 全新Vue3版本:http://rebort.ntesterc.com/ 智能体平台体验地址:http://jnstack.cn/web,社区版:jnstack.cn

Resources

Stars

63 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages