# SQL Origin **Repository Path**: junluoyu/sql-origin ## Basic Information - **Project Name**: SQL Origin - **Description**: SQL Origin 是面向企业内部的**专业数据治理平台**,主要用户为 DBA、开发工程师、研发负责人 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 18 - **Forks**: 2 - **Created**: 2026-03-23 - **Last Updated**: 2026-11-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SQL Origin > **AI 驱动的企业级 SQL 全生命周期治理平台** SQL Origin 以 SQL 指纹为全局关联键,打通 **代码、运行时监控、慢 SQL 治理、变更工单、AI 优化与安全审计**,让 SQL 从“写代码”到“跑在数据库上”的每一步都可控、可追溯、可优化。 - **统一入口**:多数据库连接、SQL 工作台、慢 SQL、优化会话、工单与审计集中管理 - **AI 原生**:SQL 优化智能体支持 ReAct Loop、MCP 工具调用、技能编排与执行计划验证 - **安全可控**:企业邮箱验证码双因子登录、角色权限、连接授权、DDL 审批门、全链路审计 - **生产可用**:Go 单体后端 + React 前端,支持 Docker 镜像化部署与平滑升级 --- ## 界面预览 | 双因子认证登录 | SQL 优化智能体 | | --- | --- | | ![企业微信邮箱验证码双因子认证](docs/images/readme-2fa.png) | ![SQL 优化智能体与技能](docs/images/readme-optimizer-agents.png) | | 企业微信邮箱验证码默认启用,阿里云短信可切换 | ReAct Loop、MCP 只读工具、技能与 DDL 审批门 | | 权限管控 | 审计升级 | | --- | --- | | ![角色权限与超级管理员全部权限](docs/images/readme-rbac.png) | ![操作审计与查询审计](docs/images/readme-audit.png) | | 超级管理员默认拥有全部权限,权限点按菜单/功能精细分配 | 操作审计、查询审计、统计报表与验证码发送记录 | --- ## 核心能力 ### 1. 双因子认证登录 在账号密码之外,支持企业邮箱验证码与阿里云短信验证码两种二次验证方式: - **企业微信邮箱验证码(默认推荐)** - 通过企业微信 Exmail API 发送登录验证码,无需自建 SMTP; - 支持企业邮箱域名白名单,避免向无效邮箱发码; - 支持验证码位数、有效期、重发间隔、单用户每日上限、单 IP 小时上限等安全参数。 - **阿里云短信验证码(可选)** - 支持 AccessKey、签名、模板、Region、Endpoint 配置; - 与邮箱验证码渠道互斥,启用一个会自动关闭另一个; - 默认关闭,按需开启。 - **防锁死与审计** - 启用前校验至少一个可用超级管理员已绑定合法邮箱/手机号; - 企业微信扫码登录、账号绑定、验证码发送与验证结果均有关联记录; - 登录验证码发送/重发/验证成功均纳入审计日志。 ### 2. SQL 优化智能体 面向 Oracle、MySQL、PostgreSQL、达梦、金仓、YashanDB、TiDB 等数据库的自动 SQL 优化能力: - **ReAct Loop**:模型自主规划、调用工具、分析结果并迭代,默认最多 12 步; - **MCP 只读工具集**:执行计划、慢 SQL、表结构、索引、约束、锁等待、表空间、数据库健康度等工具按智能体挂载; - **DDL 审批门**:涉及 DDL 的建议不会直接执行,统一走工单审批; - **技能编排**:慢 SQL 诊断、执行计划解读、索引建议等技能可安装、可组合; - **建议闭环**:生成建议 → 验证新执行计划 → 人工确认/采纳 → 工作台执行; - **上下文打通**:支持从慢 SQL、工单、优化会话直接进入工作台,SQL 通过一次性 token 交接,不在 URL 中暴露; - **Oracle Schema 补全**:工作台遇到 `ORA-00942` 时自动推导并补全 Schema,同时保留实际执行 SQL 供查看。 ### 3. 慢 SQL 采集与治理 平台内置慢 SQL 采集能力,不依赖外部 Prometheus 也可以完成闭环治理: - **脚本化采集**:按数据库类型维护采集脚本,任务关联脚本并支持周期调度; - **统一慢 SQL 视图**:按指纹 + 连接聚合,展示平均耗时、执行次数、磁盘读、Buffer Gets; - **连接池筛选**:按具体数据库连接池筛选慢 SQL,快速定位单一业务库问题; - **优化状态流转**:未优化、优化中、待审批、待验证、已优化、已回退、已忽略; - **一键优化/重新发起**:从慢 SQL 直接创建优化会话,或在原会话卡住时重新发起; - **清单导出**:支持按当前筛选条件导出 Excel,SQL 文本与 SQL_ID 以文本写入,避免科学计数法或内容被改写; - **采集审计**:采集任务执行记录、采集数据与优化标记可追溯。 ### 4. 权限与连接授权 - **超级管理员默认全部权限**:启动时自动补齐全部权限点,新增权限点也会自动授予,无需手工勾选; - **细粒度权限点**:覆盖用户、角色、数据库连接、SQL 开发、采集、优化、工单、审计、系统配置等菜单与功能; - **独立功能权限**:审批流模板等菜单拥有独立权限点,不再复用“管理工单”等宽泛权限; - **连接授权两层模型** - 连接授权:作为 MCP 隔离和可见范围的兜底基线; - 用户查询权限:在连接授权范围内按用户个性化收紧; - **工作台沙箱**:只读、确认沙箱等等级控制,避免误操作生产库; - **安全设置独立权限**:登录安全、短信/邮箱验证码等配置仅超管安全权限可修改。 ### 5. SQL 变更工单与审核 - 支持 DDL/DML 工单创建、审批、执行与回滚记录; - 审批流模板支持画布式编辑、多级审批、按工单类型匹配; - 审核规则支持通用规则与自定义规则,可在提交前进行风险拦截; - 工单与优化会话、慢 SQL、审计记录关联,形成完整证据链; - MCP 提权、DDL 变更等高危动作统一纳入审批。 ### 6. 审计与合规 审计能力已从单一操作日志升级为多维审计体系: - **操作日志**:谁在什么时间、对什么资源执行了什么动作; - **查询审计**:记录 SQL 工作台的连接、Schema、SQL 文本、耗时、影响行数与执行结果; - **统计报表**:按时间、用户、动作、资源类型聚合分析; - **登录安全审计**:验证码发送、重发、验证成功、配置变更全部留痕; - **风险操作留痕**:SQL 审核、工单审批、连接授权、采集任务、DDL 执行均可回溯; - 审计日志支持筛选、分页与详情查看,满足内部合规与问题定位需求。 ### 7. 数据库资产与 SQL 开发 - **多数据库支持**:Oracle、MySQL、PostgreSQL、达梦、金仓、YashanDB、TiDB; - **元数据与字典**:自动采集 Schema、表、列、索引、约束、注释; - **对象树与工作台**:浏览库表结构、执行 SQL、查看执行计划、对象源码; - **血缘与别名映射**:Neo4j 存储表关系,支持中间件 SQL 别名映射; - **Chat to SQL**:自然语言生成 SQL,结合元数据、历史 SQL 与 RAG 知识库; - **MCP 能力插件**:数据库查询、执行计划、元数据等能力以插件方式统一暴露。 --- ## 架构概览 ```text ┌─────────────────────────────────────────────────────────────┐ │ React 19 + TanStack Router + Vite │ │ 工作台 · 慢 SQL · 优化智能体 · 工单 · 权限 · 审计 · 设置 │ └─────────────────────────────────────────────────────────────┘ │ HTTP / SSE / MCP ┌─────────────────────────────────────────────────────────────┐ │ Go + Gin + GORM 后端 │ │ SQL 指纹 · Agent Runtime · 工单工作流 · RBAC · 审计 · AI 接入 │ └─────────────────────────────────────────────────────────────┘ │ │ │ ┌──────────────────┐ ┌─────────────────┐ ┌──────────────────┐ │ PostgreSQL 主库 │ │ Redis 缓存/黑名单│ │ 可选扩展组件 │ │ 业务/工单/审计 │ │ JWT/OTP/分布式锁 │ │ Neo4j · Milvus │ └──────────────────┘ └─────────────────┘ └──────────────────┘ ``` 生产部署使用 **Nginx + Go 后端 + 前端静态资源** 的单一镜像,数据库迁移随应用启动自动执行,详细流程见 [DEPLOYMENT.md](DEPLOYMENT.md)。 --- ## 技术栈 | 层级 | 技术 | | --- | --- | | 前端 | React 19、TypeScript、TanStack Router、Vite、Tailwind CSS、shadcn/ui、Monaco Editor | | 后端 | Go 1.25+、Gin、GORM、golang-migrate | | 数据库 | PostgreSQL 15+ / 18、Redis 7+ | | 图与向量 | Neo4j(血缘)、Milvus(RAG/向量检索,可选) | | AI | OpenAI 兼容接口、多 Provider、MCP 工具协议、ReAct Loop | | 安全 | JWT、AES-256-GCM 加密配置、企业微信邮箱 OTP、阿里云短信 OTP | | 部署 | Docker、Nginx、Docker Compose(可选) | --- ## 快速开始 ### 前置依赖 | 组件 | 推荐版本 | 用途 | | --- | --- | --- | | Go | 1.25+ | 后端编译 | | Node.js | 20+ | 前端构建 | | pnpm | 9+ | 前端包管理 | | PostgreSQL | 15+ | 主业务数据库 | | Redis | 7+ | 缓存、JWT 黑名单、OTP | > Neo4j、Milvus、Prometheus 为可选组件;不启用时相关能力自动降级。 ### 1. 克隆项目 ```bash git clone https://gitee.com/junluoyu/sql-origin.git cd sql-origin ``` ### 2. 配置环境变量 ```bash cp .env.example .env ``` 至少配置: ```env DATABASE_URL=postgres://user:password@127.0.0.1:5432/sqlorigin?sslmode=disable REDIS_URL=redis://:password@127.0.0.1:6379/0 ENCRYPT_KEY=至少32位随机字符串 JWT_SECRET=至少32位随机字符串 ``` 可按需调整 PostgreSQL 连接池: ```env DB_MAX_OPEN_CONNS=50 DB_MAX_IDLE_CONNS=10 DB_CONN_MAX_LIFETIME_MINUTES=60 DB_CONN_MAX_IDLE_TIME_MINUTES=10 ``` ### 3. 启动后端 ```bash go mod download go run ./cmd/server ``` 后端默认监听 `http://localhost:8080`。 ### 4. 启动前端 ```bash cd frontend-v2 pnpm install pnpm dev ``` 前端默认访问地址:`http://localhost:5200`。 ### 5. 初始化系统 首次访问会进入初始化向导: 1. 配置 PostgreSQL 主库; 2. 配置 Redis; 3. 创建超级管理员; 4. 配置可选的 Neo4j、Milvus、Prometheus 或 AI Provider; 5. 完成初始化后进入工作台。 ### 一键命令 Linux/macOS: ```bash ./sqlorigin.sh start # 启动前后端 ./sqlorigin.sh status # 查看状态 ./sqlorigin.sh logs # 查看日志 ./sqlorigin.sh build # 构建前后端 ``` Windows: ```powershell .\sqlorigin.ps1 start .\sqlorigin.ps1 status .\sqlorigin.ps1 restart ``` > 生产环境构建、镜像制作、远程更新与回滚步骤,请直接参考 [DEPLOYMENT.md](DEPLOYMENT.md)。 --- ## 目录结构 ```text . ├── api/ # Gin 路由与处理器注册 ├── cmd/ # 后端入口 ├── internal/ │ ├── module/ # 业务模块:auth、rbac、ticket、optimizer、monitor、audit... │ ├── storage/ # PostgreSQL/Redis 初始化与迁移 │ ├── middleware/ # JWT、权限、审计、日志、CORS │ ├── wecom/ # 企业微信登录与企业邮箱验证码 │ ├── sms/ # 阿里云短信 │ ├── cache/ # Redis 缓存 │ └── mcphub/ # MCP 能力插件 ├── migrations/ # 数据库迁移(按版本顺序) ├── frontend-v2/ # React 19 前端 ├── deploy/ # Dockerfile、Nginx、启动脚本 ├── docs/images/ # README 截图 └── DEPLOYMENT.md # 生产部署与回滚说明 ``` --- ## 最近更新 ### v1.2.0 - 企业微信邮箱验证码双因子登录,支持与阿里云短信互斥切换; - 企业微信扫码登录、账号绑定与登录安全配置; - SQL 优化智能体升级为 ReAct Loop,支持 MCP 只读工具、技能挂载与 DDL 审批门; - 优化会话总览摘要、建议验证闭环、已采纳状态; - PostgreSQL 连接池参数支持环境变量配置; - 慢 SQL 页面增加连接池筛选,Excel 导出支持自定义条数与文本保护; - 新增审批流模板独立权限点,超级管理员默认拥有全部权限; - 登录安全、采集任务、连接授权等关键操作审计增强。 --- ## 安全说明 - `.env` 包含数据库密码、JWT Secret、加密密钥等敏感信息,**不要提交到 Git**; - 生产环境请使用独立随机密钥,并定期轮换 JWT/验证码相关配置; - 双因子认证启用前,请确认至少一个超级管理员绑定有效企业邮箱或手机号; - 连接授权是权限基线,工作台查询权限只能在基线内收紧,不能越权放大; - 生产环境建议开启 HTTPS、限制数据库端口访问来源,并保留审计日志。 --- ## 贡献 欢迎提交 Issue、Pull Request 或功能建议。 1. Fork 仓库并创建功能分支; 2. 提交变更并补充必要测试; 3. 发起 Pull Request,描述变更背景、实现方式和验证结果。 --- ## License [MIT License](./LICENSE) --- ## 联系 - 作者:君洛羽 - 邮箱:1064140997@qq.com - 仓库: