feat: 18 引擎驱动全家桶 + 驱动管理/离线包 + 设置中心 + 工作台交互打磨
CI / Go server (push) Canceled after 0s
CI / Web + core packages (push) Canceled after 0s
CI / Desktop (Tauri) cargo check (push) Canceled after 0s

驱动接入(全部本机真实例验收):
- Elasticsearch 原生 SQL API、InfluxDB 原生 HTTP+Flux(官方 JDBC 付费许可,实测弃用)
- ZooKeeper/MongoDB JVM agent(连接时自动下载官方驱动 jar,sha256 钉版本到 ~/.opsxdb/drivers/)
- 达梦 JDBC agent 桥就绪(待厂商 jar+实例);TiDB 真实例验收
- 协议族代码审查放行 PolarDB/TDSQL/OceanBase/Kingbase/GaussDB/Oracle
- 驱动能力模型:按驱动开关对象树分组/右键菜单/行编辑,NoSQL 树拍平(对象直挂库节点)

驱动管理:
- 驱动管理弹框(状态/预装/离线包导入/JDK 检测)+ /api/drivers/* 三接口
- opsxdb-driver 驱动商店仓库(清单/fetch.sh/pack.sh 离线包/import.sh)
- 连接时懒加载:DMG 零 Java 产物,首连自动下载(实测 ZK 九件套 1.35s),离线包自动回退

UI/交互:
- 设置中心(⚙):常规/执行/结果/驱动/快捷键/关于,左导航+右面板(对标 opsxshell)
- 实例级展开箭头(行首 SVG chevron,替代字体回退失真的 Unicode 三角)
- 树内嵌套渲染修复:对象树挂在激活连接下;工具栏窄窗口不断行(按钮 nowrap+整颗换行)
- 侧栏连接行精简(图标+连接名)、SQLite SSH 守卫、Oracle 死参数清理

质量:
- Go 协议层/离线回退单测、E2E 门控测试(ES/ZK/Influx/Mongo/TiDB/JDBC 桥)
- 驱动注册表单一事实来源 connection-types.json,README/BACKLOG/AGENTS 同步
This commit is contained in:
logan committed 2026-09-22 01:07:46 +08:00
1 parent 26f459d1b8
commit a9510235bb
156 files changed
+17200 -2520

No files matched your search

+35 -41
View File
@@ -1,20 +1,20 @@
> **产品形态:桌面 GUI(Tauri)**。`http://127.0.0.1:5174` 仅为开发壳。文档 `/docs`、官网 `/` 由本机后端提供。
> **产品形态**:浏览器 = Gin **官网 + 文档**(`:8788`);**操作只走桌面 Tauri**。
> `apps/web`(`:5174`)仅是桌面 `devUrl`/打包源,**不是**浏览器客户端。
> AI / 协作规范见 [AGENTS.md](./AGENTS.md)(短入口 [CLAUDE.md](./CLAUDE.md))。
# OpsxDB
给运维和开发用的 **数据库客户端**(连接管理 / SQL 工作台 / AI 写 SQL)。
从 OpsxAPI 脚手架分叉:同一套 monorepo(web + Gin + 可选 Tauri),产品面换成 DB。
给运维和开发用的 **数据库桌面客户端**(连接管理 / SQL 工作台 / AI 写 SQL)。
## 架构
```
packages/ui 连接选择器 + SQL 工作台 + AI 面板
packages/core 共享工具(保留)
packages/transport 浏览器 / Gin / Tauri(保留兼容)
apps/web Vite + React(:5174)
apps/desktop Tauri 2 壳
apps/server Gin:health + 内置驱动(MySQL 族/PG 族/SQL Server/Oracle/SQLite/Redis)+ AI stub(:8788)
packages/ui 连接选择器 + SQL 工作台 + AI 面板(给桌面打包)
packages/core 共享工具
packages/transport Gin / Tauri 传输
apps/web Vite + React —— **仅桌面前端源**(勿当浏览器产品)
apps/desktop Tauri 2 壳(唯一操作入口)
apps/server Gin:官网/docs + health + 驱动 API(:8788)
```
## 怎么跑
@@ -24,45 +24,39 @@ export PATH="$HOME/.nvm/versions/node/v24.19.0/bin:/opt/homebrew/bin:$PATH"
export OPSXDB_SERVER_PORT=8788 OPSXDB_WEB_PORT=5174
npm install
./run.sh web # Gin :8788 + Vite :5174
./run.sh web # 仅官网 + docs → http://127.0.0.1:8788/
./run.sh gui # 桌面操作入口(推荐)
```
打开 http://127.0.0.1:5174/
```bash
curl -s http://127.0.0.1:8788/api/health
curl -s -X POST http://127.0.0.1:8788/api/ai/chat \
-H 'Content-Type: application/json' \
-d '{"action":"generate","prompt":"查最近用户"}'
curl -s http://127.0.0.1:8788/health
open http://127.0.0.1:8788/ # 官网
open http://127.0.0.1:8788/docs # 文档
```
## 日常怎么用
## 日常怎么用(桌面)
1. **新建连接** → 选类型,或粘贴 `mysql://user:pass@host:3306/db` 点「填入」
2. **测试** → **保存并连接**
3. 左侧点库展开表;**点表名**打开前 100 行(展开表看列)
4. 编辑器 **⌘/Ctrl+Enter** 执行当前语句或选区(不是整页脚本)
5. 结果:**复制 / CSV / INSERT**;双击单元格复制
1. `./run.sh gui` → Dock 打开 OpsxDB
2. **新建连接** → 选类型 / 粘贴 URL → **测试** → **保存并连接**
3. 左侧对象树点库/表;编辑器 **⌘/Ctrl+Enter** 执行
4. 结果集:复制 / CSV / 粘贴 / 行删(有主键)
## 已做(便捷向)
## 已做(摘要)
- 连接选择器:搜索 / 分类 / 最近 / 图标网格;URL 拆字段;按驱动表单(SQLite 文件、Redis、Oracle Service、SSL)
- 工作台:懒加载对象树、点表看数据、CodeMirror SQL、多 Tab、可拖分栏
- 会话:连接后查询只带 `sessionId`,账密不再每次上送;本机密码做了混淆
- 结果截断提示、危险 SQL 确认、查询历史、主题/Tab 持久化、快捷键
- 驱动:MySQL 族 / PostgreSQL 族(含 GaussDB、人大金仓)/ SQL Server / Oracle / SQLite / Redis
- AI 面板仍是 stub(生成/解释/优化/修复/方言/样例)
## 驱动与连接类型
- **注册表**:`connection-types/connection-types.json`(schema v1,字段说明见该目录 `README.md`)。规划为驱动目录的单一事实来源;生成器接入前以 `packages/ui/src/catalog.ts` 与 `apps/server/internal/db/open.go` 为准。
- **就绪状态**:`ready` = 可测试/连接;`verified` = 本机 docker 验收通过,依据 `tests/README.md` 驱动验收表。当前 MySQL/MariaDB/PG/SQL Server/SQLite/Redis 已验收,Oracle 代码就绪但本机未验证,达梦/MongoDB/ZK/ES/InfluxDB 未就绪。
- **路线**:常用库走 native Go 驱动编译内置(go-ora 连 Oracle,不引入 JVM);长尾库(达梦/MongoDB/ZK/InfluxDB 等)规划 agent 按需接入,驱动分发走 Maven 坐标钉版本 + sha256 + 镜像回退,计划托管于 `opsxdb-driver` 仓库(Gitee/GitHub)。
- **许可**:`connection-types/` 注册表数据从自有代码与厂商公开事实推导(见 `connection-types/NOTICE.md`);仓库整体许可证以根 LICENSE 为准。
- 桌面工作台:对象树、SQL、多 Tab、结果编辑、Redis 键浏览(单机)
- Redis Sentinel/Cluster:表单 + 后端(真拓扑待环境)
- 自绘右键(编辑器 / 库·表·键);拦系统菜单
- Gin 官网 + docs;驱动注册表见 `connection-types/`
- 新引擎接入并本机验收:Elasticsearch(原生 SQL API)、InfluxDB(原生 HTTP+Flux)、ZooKeeper / MongoDB(JVM agent)、达梦(JDBC agent 桥已验证,待实例)
- 驱动管理弹框(连接列表页 ⚙):agent 驱动状态/预装/离线包导入/JDK 检测;开源驱动首次连接自动下载到 ~/.opsxdb/drivers/
## 端口
| 服务 | 端口 | 环境变量 |
|------|------|----------|
| Gin | 8788 | `OPSXDB_SERVER_PORT` / `OPSXDB_ADDR` |
| Vite | 5174 | `OPSXDB_WEB_PORT` |
| 服务 | 端口 | 说明 |
|------|------|------|
| Gin 官网/docs/API | 8788 | 浏览器只看站点和文档 |
| Vite(桌面源) | 5174 | 仅 `gui`/打包用,非产品入口 |
## 待开发
见 [docs/BACKLOG.md](docs/BACKLOG.md)。