# 企业级自然语言转SQL查询平台 **Repository Path**: liupantl/Text2SQL ## Basic Information - **Project Name**: 企业级自然语言转SQL查询平台 - **Description**: 一款功能完善的企业级自然语言转SQL查询平台,让业务人员通过自然语言直接与数据库交互,实现数据访问的民主化。 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-29 - **Last Updated**: 2026-04-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Text2SQL 企业级智能查询平台 一款功能完善的企业级自然语言转SQL查询平台,让业务人员通过自然语言直接与数据库交互,实现数据访问的民主化。 ## 技术架构 ### 后端 - **Spring Boot 3.2.5** - 核心框架 - **MyBatis Plus 3.5.7** - ORM框架 - **JWT** - Token认证 - **BCrypt** - 密码加密 - **MySQL 8** - 平台数据库(存储用户信息、查询历史等) - **easy-captcha** - 动态验证码 - **OkHttp** - AI接口调用 - **Apache POI** - Excel导出 ### 前端 - **Vue 3** - 渐进式框架 - **Vite** - 构建工具 - **Element Plus** - UI组件库 - **Pinia** - 状态管理 - **Vue Router** - 路由管理 - **ECharts** - 数据可视化 ## 功能模块 ### 1. 用户管理 - 用户注册、登录(支持动态验证码) - JWT Token认证 - 角色权限管理(RBAC) - 用户状态管理(启用/禁用) - 密码重置 ### 2. 数据库管理 - 多数据库类型支持(MySQL, PostgreSQL, Oracle, SQL Server) - 数据库连接配置管理 - 连接测试功能 - 元数据自动获取(表结构、字段信息) - 密码AES加密存储 ### 3. Text2SQL核心功能 - 自然语言转SQL - 基于AI大模型(GPT/通义千问/DeepSeek) - 数据库表结构上下文增强 - SQL语法检查 - 查询结果图表可视化 - 结果导出(Excel/CSV) ### 4. 查询历史 - 查询历史记录保存 - 查询收藏功能 - 历史记录搜索 - 一键复用历史查询 ### 5. 审计日志 - 异步记录用户操作日志 - 操作IP、UA信息 - 请求参数脱敏处理 ## 快速开始 ### 环境要求 - JDK 17+ - Node.js 18+ - MySQL 8.0+ ### 1. 初始化数据库 ```bash mysql -u root -p # 执行 init.sql source backend/src/main/resources/sql/init.sql ``` ### 2. 配置后端 编辑 `backend/src/main/resources/application.yml`: - 配置MySQL连接信息 - 配置AI接口(API密钥、模型选择) ### 3. 启动后端 ```bash cd backend mvn spring-boot:run ``` ### 4. 启动前端 ```bash cd frontend npm install npm run dev ``` ### 5. 访问平台 - 前端地址: http://localhost:3000 - 后端地址: http://localhost:8080/api - 默认账号: admin / 123456 ## AI配置 在 `application.yml` 中配置AI接口: ```yaml ai: provider: openai # 可选: openai, deepseek, qwen api-key: your-api-key api-url: https://api.openai.com/v1/chat/completions model: gpt-4 ``` 支持的平台: - **OpenAI** - GPT-4/GPT-3.5 - **DeepSeek** - DeepSeek-V3 - **通义千问** - Qwen-Plus ## 项目结构 ``` text2sql-platform/ ├── backend/ # 后端项目 │ ├── src/main/java/com/text2sql/ │ │ ├── Text2SqlApplication.java # 启动类 │ │ ├── config/ # 配置类 │ │ ├── controller/ # 控制器 │ │ ├── service/ # 服务层 │ │ ├── mapper/ # 数据访问层 │ │ ├── entity/ # 实体类 │ │ ├── dto/ # 数据传输对象 │ │ ├── interceptor/ # 拦截器 │ │ ├── utils/ # 工具类 │ │ └── common/ # 公共组件 │ └── src/main/resources/ │ ├── application.yml # 配置文件 │ ├── sql/init.sql # 数据库初始化 │ └── mapper/ # MyBatis XML ├── frontend/ # 前端项目 │ ├── src/ │ │ ├── views/ # 页面组件 │ │ │ ├── query/Convert.vue # Text2SQL核心页面 │ │ │ ├── system/ # 用户/角色管理 │ │ │ ├── database/ # 连接/元数据管理 │ │ │ └── history/List.vue # 历史记录 │ │ ├── components/ # 公共组件 │ │ ├── api/ # API接口 │ │ ├── store/ # Pinia状态管理 │ │ ├── router/ # Vue Router │ │ └── utils/ # 工具函数 │ └── package.json └── README.md ``` ## API接口文档 ### 认证相关 | 接口 | 方法 | 说明 | |------|------|------| | /api/auth/captcha | GET | 获取验证码 | | /api/auth/login | POST | 用户登录 | | /api/auth/register | POST | 用户注册 | ### 系统管理 | 接口 | 方法 | 说明 | |------|------|------| | /api/system/user/page | GET | 用户分页列表 | | /api/system/user/info | GET | 当前用户信息 | | /api/system/role/list | GET | 角色列表 | | /api/system/menu/tree | GET | 菜单树形结构 | ### 数据库管理 | 接口 | 方法 | 说明 | |------|------|------| | /api/database/connection/page | GET | 连接列表 | | /api/database/connection/{id}/test | POST | 测试连接 | | /api/database/{id}/tables | GET | 获取表列表 | | /api/database/{id}/columns | GET | 获取表字段 | ### Text2SQL查询 | 接口 | 方法 | 说明 | |------|------|------| | /api/query/convert | POST | 自然语言转SQL | | /api/query/execute | POST | 执行SQL | | /api/query/ask | POST | 一站式(转换+执行) | ### 历史记录 | 接口 | 方法 | 说明 | |------|------|------| | /api/history/page | GET | 历史记录分页 | | /api/history/{id}/favorite | PUT | 收藏/取消收藏 | ## 数据库设计 ### 核心表 - `sys_user` - 用户表 - `sys_role` - 角色表 - `sys_menu` - 菜单权限表 - `sys_role_menu` - 角色权限关联 - `db_connection` - 数据库连接配置 - `db_metadata` - 数据库元数据 - `query_history` - 查询历史记录 - `audit_log` - 审计日志 ## 安全配置 - 密码使用BCrypt加密存储 - 数据库连接密码AES加密 - JWT Token认证 - CORS跨域配置 - 验证码防暴力破解 - 审计日志记录所有操作 ## License MIT License