You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
3 weeks ago | |
|---|---|---|
| doc | 3 weeks ago | |
| src | 3 weeks ago | |
| README.md | 3 weeks ago | |
README.md
自然语言数据库查询系统 - 项目总说明
项目概述
自然语言数据库查询系统是一个基于大语言模型的智能数据库查询平台,支持用户通过自然语言描述查询需求,系统自动调用大模型解析查询意图,生成并执行SQL语句,将查询结果以图表形式可视化展示。
核心特性
- 智能查询:采用自然语言描述查询请求,系统调用大模型感知数据库元数据并解析用户查询请求
- 权限管理:完善的用户权限控制系统,管理员可以管理和授权用户,支持表级别的权限控制
- SQL生成与验证:采用SQL引擎生成和验证SQL语句,确保查询安全性和准确性
- 数据可视化:查询结果采用Chart图表显示,支持多种图表类型
- 多轮对话:支持用户调整查询内容,系统根据用户调整请求修改SQL语句,重新查询和可视化查询结果
- 复杂查询支持:支持多表联合等复杂SQL语句查询
- 并发支持:支持至少5个及以上并发用户,每个用户的任务在Docker容器独立运行
- 社交功能:支持查询分享、好友关系、实时聊天等社交功能
技术架构
后端技术栈
- 框架:Spring Boot 3.5.7
- 开发语言:Java 21 (JDK 21)
- 关系型数据库:MySQL 8.0+
- 非关系型数据库:MongoDB 4.0+
- ORM框架:MyBatis Plus 3.5.9
- 安全框架:Spring Security + JWT
- 缓存:Redis
- 实时通信:WebSocket
- 容器化:Docker
- 构建工具:Maven
前端技术栈
- 框架:Vue 3.5.25
- 开发语言:TypeScript 5.9
- 构建工具:Vite 7.2.4
- 路由:Vue Router 4.6.3
- 状态管理:Pinia 3.0.4
- UI框架:Tailwind CSS 4.1.18
- 图表库:Chart.js 4.5.1 + Vue-ChartJS 5.3.3
- WebSocket:SockJS + STOMP.js
系统架构
┌─────────────┐
│ 前端应用 │ Vue 3 + TypeScript
│ (Vite) │
└──────┬──────┘
│ HTTP/WebSocket
┌──────▼─────────────────┐
│ 后端应用 │
│ (Spring Boot) │
│ │
│ ┌──────────────────┐ │
│ │ Controller层 │ │ RESTful API
│ └────────┬─────────┘ │
│ ┌────────▼─────────┐ │
│ │ Service层 │ │ 业务逻辑
│ └────────┬─────────┘ │
│ ┌────────▼─────────┐ │
│ │ Mapper/Repository│ │ 数据访问
│ └────────┬─────────┘ │
└──────────┼─────────────┘
│
┌──────┼──────┐
│ │ │
┌───▼──┐ ┌▼──┐ ┌─▼────┐
│MySQL │ │Mongo│ │Redis│
└──────┘ └───┘ └──────┘
项目目录结构
xm/
├── doc/ # 文档目录
│ ├── README.md # 项目总说明(本文件)
│ ├── process/ # 开发过程文档
│ │ ├── meeting/ # 会议记录
│ │ └── weekly/ # 周报(按周组织)
│ └── project/ # 项目文档
│ ├── 01-需求文档/ # 需求规格说明书、用例文档等
│ ├── 02-设计文档/ # UML设计文档、数据库设计文档
│ ├── 03-计划文档/ # 迭代开发计划
│ ├── 04-用户手册/ # 用户使用手册
│ └── 05-测试报告/ # 测试报告
│
├── src/ # 源代码目录
│ ├── frontend/ # 前端项目
│ │ ├── src/
│ │ │ ├── components/ # Vue组件
│ │ │ ├── views/ # 页面视图
│ │ │ ├── router/ # 路由配置
│ │ │ ├── services/ # API服务
│ │ │ ├── composables/ # Composition API
│ │ │ ├── types/ # TypeScript类型定义
│ │ │ └── utils/ # 工具函数
│ │ ├── package.json # 前端依赖配置
│ │ └── vite.config.ts # Vite配置
│ │
│ ├── src/ # 后端项目
│ │ └── main/
│ │ ├── java/ # Java源代码
│ │ │ └── com/example/springboot_demo/
│ │ │ ├── controller/ # 控制器层
│ │ │ ├── service/ # 服务层
│ │ │ ├── mapper/ # MyBatis Mapper
│ │ │ ├── repository/ # MongoDB Repository
│ │ │ ├── entity/ # 实体类
│ │ │ ├── dto/ # 数据传输对象
│ │ │ ├── vo/ # 视图对象
│ │ │ ├── config/ # 配置类
│ │ │ ├── utils/ # 工具类
│ │ │ └── exception/ # 异常处理
│ │ └── resources/
│ │ └── application.yml # 应用配置文件
│ │
│ ├── pom.xml # Maven配置文件
│ └── README.md # 后端模块说明文档
│
└── scripts/ # 脚本目录
├── export-data.sh/.bat # 数据导出脚本
└── import-data.sh/.bat # 数据导入脚本
快速开始
环境要求
- JDK:21 或更高版本
- Node.js:^20.19.0 或 >=22.12.0
- MySQL:8.0 或更高版本
- MongoDB:4.0 或更高版本
- Redis:最新稳定版
- Maven:3.6+(用于后端构建)
- Docker:可选(用于容器化部署)
后端启动
-
配置数据库连接
编辑
src/src/main/resources/application.yml,配置MySQL、MongoDB和Redis连接信息。 -
构建项目
cd src mvn clean install -
启动应用
mvn spring-boot:run或直接运行主类:
com.example.springboot_demo.NaturalLanguageQueryApplication -
验证启动
访问
http://localhost:8173/actuator/health检查应用健康状态
前端启动
-
安装依赖
cd src/frontend npm install -
启动开发服务器
npm run dev -
构建生产版本
npm run build -
访问应用
开发环境:
http://localhost:5173生产环境:根据部署配置访问
Docker部署
项目支持Docker容器化部署,具体配置请参考 src/docker-compose.yml。
文档导航
需求与设计文档
用户与测试文档
开发过程文档
技术文档
- 后端模块说明:详细的后端架构和模块说明
核心功能模块
1. 用户认证与授权
- 用户注册、登录、密码重置
- JWT Token认证
- 基于角色的访问控制(RBAC)
- 表级别的权限控制
2. 自然语言查询
- 自然语言转SQL
- 数据库元数据感知
- SQL生成与验证
- 多轮对话支持
- 查询结果可视化
3. 数据库管理
- 数据库连接管理
- 表元数据管理
- 字段元数据管理
- 数据库结构导出
4. 查询管理
- 查询日志记录
- 查询收藏
- 查询分享
- SQL缓存
- 对话历史记录
5. 社交功能
- 好友关系管理
- 实时聊天(WebSocket)
- 查询分享
- 通知系统
6. 系统管理
- 大模型配置管理
- 系统健康监控
- 性能指标统计
- 错误日志管理
- 操作日志审计
安全机制
- JWT认证:使用JWT Token进行用户认证,Token包含用户ID和用户名
- 权限控制:基于角色的访问控制(RBAC),支持表级别的权限控制
- 密码加密:使用Spring Security的BCryptPasswordEncoder加密密码
- Token黑名单:支持Token失效和单点登录
- SQL注入防护:使用参数化查询和SQL验证
- 跨域配置:配置CORS允许跨域请求
测试
单元测试
后端测试使用JUnit,前端测试使用Vitest。
# 后端测试
cd src
mvn test
# 前端测试
cd src/frontend
npm run test:unit
API测试
可以使用 src/api-test.http 文件进行API接口测试(支持IntelliJ IDEA HTTP Client或VS Code REST Client)。
系统性能
- 并发支持:支持至少5个及以上并发用户
- 响应时间:SQL查询响应时间 < 3秒(取决于数据量和数据库性能)
- 可用性:系统可用性 > 99%
开发规范
代码规范
- 后端:遵循Java编码规范,使用Lombok简化代码
- 前端:遵循Vue 3 + TypeScript编码规范,使用ESLint和Prettier进行代码格式化
Git提交规范
建议使用以下格式:
<type>(<scope>): <subject>
<body>
<footer>
类型(type):
feat: 新功能fix: 修复bugdocs: 文档更新style: 代码格式调整refactor: 代码重构test: 测试相关chore: 构建/工具链相关
开发团队
团队名称:神奇宝码队
项目版本:2.0
开发时间:2025
更新日志
详细的版本更新记录请参考各迭代开发计划和周报文档。
贡献指南
- Fork本项目
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 提交Pull Request
许可证
本项目遵循相应的开源许可证。
联系方式
如有问题或建议,请联系开发团队。
未来规划
- 支持更多数据库类型(PostgreSQL、Oracle等)
- 增强大模型提示词工程,提高SQL生成准确性
- 优化查询性能,支持更大数据量查询
- 增强数据可视化功能,支持更多图表类型
- 增加数据分析功能
最后更新时间:2025年