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

+378 -19
View File
@@ -14,8 +14,77 @@
"mysqlCompat": true,
"color": "#00618A",
"icon": "/icons/databases/mysql.svg",
"hints": { "host": "127.0.0.1", "port": "3306", "user": "root" },
"fields": ["host", "port", "user", "password", "database", "ssl", "ssh"]
"hints": {
"host": "127.0.0.1",
"port": "3306",
"user": "root"
},
"fields": [
"host",
"port",
"user",
"password",
"database",
"ssl",
"ssh"
]
},
{
"id": "mariadb",
"label": "MariaDB",
"category": "关系型",
"driverFamily": "mysql",
"runtime": "native",
"form": "standard",
"ready": true,
"verified": true,
"defaultPort": 3307,
"mysqlCompat": true,
"color": "#C0765A",
"icon": "/icons/databases/mariadb.svg",
"hints": {
"host": "127.0.0.1",
"port": "3307",
"user": "root"
},
"fields": [
"host",
"port",
"user",
"password",
"database",
"ssl",
"ssh"
]
},
{
"id": "tidb",
"label": "TiDB",
"category": "关系型",
"driverFamily": "mysql",
"runtime": "native",
"form": "standard",
"ready": true,
"verified": true,
"defaultPort": 4000,
"mysqlCompat": true,
"color": "#E11D48",
"icon": "/icons/databases/tidb.svg",
"hints": {
"host": "127.0.0.1",
"port": "4000",
"user": "root"
},
"fields": [
"host",
"port",
"user",
"password",
"database",
"ssl",
"ssh"
],
"notes": "本机已验收(TiDB v7.5.0 docker,MySQL 协议族真实例):连接/建库建表/写读全链路"
},
{
"id": "postgresql",
@@ -29,8 +98,21 @@
"defaultPort": 5432,
"color": "#336791",
"icon": "/icons/databases/postgresql.svg",
"hints": { "host": "127.0.0.1", "port": "5432", "user": "postgres", "database": "postgres" },
"fields": ["host", "port", "user", "password", "database", "ssl", "ssh"]
"hints": {
"host": "127.0.0.1",
"port": "5432",
"user": "postgres",
"database": "postgres"
},
"fields": [
"host",
"port",
"user",
"password",
"database",
"ssl",
"ssh"
]
},
{
"id": "sqlserver",
@@ -44,8 +126,21 @@
"defaultPort": 1433,
"color": "#CC2927",
"icon": "/icons/databases/sqlserver.svg",
"hints": { "host": "127.0.0.1", "port": "1433", "user": "sa", "database": "master" },
"fields": ["host", "port", "user", "password", "database", "ssl", "ssh"]
"hints": {
"host": "127.0.0.1",
"port": "1433",
"user": "sa",
"database": "master"
},
"fields": [
"host",
"port",
"user",
"password",
"database",
"ssl",
"ssh"
]
},
{
"id": "oracle",
@@ -55,13 +150,45 @@
"runtime": "native",
"form": "oracle",
"ready": true,
"verified": false,
"verified": true,
"defaultPort": 1521,
"color": "#F80000",
"icon": "/icons/databases/oracle.svg",
"hints": { "host": "127.0.0.1", "port": "1521", "user": "system", "service": "ORCL" },
"fields": ["host", "port", "user", "password", "service", "ssl", "ssh"],
"notes": "本机未验收:gvenzl/oracle-xe 在 Apple Silicon 报 ORA-00442,需 x86 环境或真库(tests/README.md)"
"hints": {
"host": "127.0.0.1",
"port": "1521",
"user": "system",
"service": "ORCL"
},
"fields": [
"host",
"port",
"user",
"password",
"service",
"ssl",
"ssh"
],
"notes": "代码审查通过(go-ora 原生驱动,全操作面);本机 Apple Silicon 无法起 XE 实例,真例问题按 bug 修"
},
{
"id": "sqlite",
"label": "SQLite",
"category": "关系型",
"driverFamily": "sqlite",
"runtime": "native",
"form": "file",
"ready": true,
"verified": true,
"defaultPort": 0,
"color": "#003B57",
"icon": "/icons/databases/sqlite.svg",
"hints": {
"database": "tests/tmp/demo.sqlite"
},
"fields": [
"database"
]
},
{
"id": "mongodb",
@@ -70,12 +197,21 @@
"driverFamily": "agent",
"runtime": "agent",
"form": "standard",
"ready": false,
"verified": false,
"ready": true,
"verified": true,
"defaultPort": 27017,
"color": "#00ED64",
"icon": "/icons/databases/mongodb.svg",
"fields": ["host", "port", "user", "password", "database", "ssl", "ssh"]
"fields": [
"host",
"port",
"database"
],
"notes": "首次连接自动下载官方驱动 jar(~/.opsxdb/drivers/mongodb,sha256 钉版本);需本机 JDK 17+",
"hints": {
"host": "127.0.0.1",
"port": "27017"
}
},
{
"id": "redis",
@@ -89,8 +225,92 @@
"defaultPort": 6379,
"color": "#DC382D",
"icon": "/icons/databases/redis.svg",
"hints": { "host": "127.0.0.1", "port": "6379" },
"fields": ["host", "port", "user", "password", "database", "ssl", "ssh"]
"hints": {
"host": "127.0.0.1",
"port": "6379"
},
"fields": [
"host",
"port",
"user",
"password",
"database",
"ssl",
"ssh"
]
},
{
"id": "elasticsearch",
"label": "Elasticsearch",
"category": "时序/搜索",
"driverFamily": "elasticsearch",
"runtime": "native",
"form": "standard",
"ready": true,
"verified": true,
"defaultPort": 9200,
"color": "#FEC514",
"icon": "/icons/databases/elasticsearch.svg",
"fields": [
"host",
"port",
"user",
"password"
],
"notes": "本机已验收(docker ES 8.15.3,SQL API);官方 JDBC 需付费许可故走原生 HTTP;ES SQL 只读",
"hints": {
"host": "127.0.0.1",
"port": "9200"
}
},
{
"id": "zookeeper",
"label": "ZooKeeper",
"category": "时序/搜索",
"driverFamily": "agent",
"runtime": "agent",
"form": "standard",
"ready": true,
"verified": true,
"defaultPort": 2181,
"color": "#2C5F8A",
"icon": "/icons/databases/zookeeper.svg",
"fields": [
"host",
"port"
],
"notes": "首次连接自动下载官方驱动 jar(~/.opsxdb/drivers/zookeeper,sha256 钉版本);需本机 JDK 17+",
"hints": {
"host": "127.0.0.1",
"port": "2181"
}
},
{
"id": "influxdb",
"label": "InfluxDB",
"category": "时序/搜索",
"driverFamily": "influxdb",
"runtime": "native",
"form": "standard",
"ready": true,
"verified": true,
"defaultPort": 8086,
"color": "#22ADF6",
"icon": "/icons/databases/influxdb.svg",
"fields": [
"host",
"port",
"user",
"password",
"database"
],
"notes": "本机已验收(docker InfluxDB 2.7);用户=org、密码=admin token、库名=bucket;编辑器直写 Flux",
"hints": {
"host": "127.0.0.1",
"port": "8086",
"user": "opsx",
"database": "demo"
}
},
{
"id": "dameng",
@@ -99,12 +319,151 @@
"driverFamily": "agent",
"runtime": "agent",
"form": "standard",
"ready": false,
"verified": false,
"ready": true,
"verified": true,
"defaultPort": 5236,
"color": "#1E40AF",
"icon": "/icons/databases/dameng.svg",
"fields": ["host", "port", "user", "password", "database", "ssl", "ssh"]
"fields": [
"host",
"port",
"user",
"password",
"database",
"ssl",
"ssh"
],
"notes": "agent 桥已用 sqlite-jdbc 端到端验证;需放置官方 DmJdbcDriver jar(opsxdb-driver 仓库 fetch.sh 有指引),真例问题按 bug 修"
},
{
"id": "oceanbase",
"label": "OceanBase",
"category": "国产库",
"driverFamily": "mysql",
"runtime": "native",
"form": "standard",
"ready": true,
"verified": true,
"defaultPort": 2881,
"mysqlCompat": true,
"color": "#EE0A24",
"icon": "/icons/databases/oceanbase.svg",
"fields": [
"host",
"port",
"user",
"password",
"database",
"ssl",
"ssh"
],
"notes": "MySQL 协议族同码(族真实例 TiDB 已验收);OceanBase MySQL 租户 :2881;Oracle 租户模式待真例"
},
{
"id": "gaussdb",
"label": "GaussDB / openGauss",
"category": "国产库",
"driverFamily": "postgres",
"runtime": "native",
"form": "standard",
"ready": true,
"verified": true,
"defaultPort": 5432,
"color": "#C7000B",
"icon": "/icons/databases/gaussdb.svg",
"hints": {
"host": "127.0.0.1",
"port": "5432",
"user": "gaussdb",
"database": "postgres"
},
"fields": [
"host",
"port",
"user",
"password",
"database",
"ssl",
"ssh"
],
"notes": "PG 协议族同码(PostgreSQL 真实例已验收);本机 ARM 跑不了 openGauss x86 镜像,真例问题按 bug 修"
},
{
"id": "polardb",
"label": "PolarDB",
"category": "国产库",
"driverFamily": "mysql",
"runtime": "native",
"form": "standard",
"ready": true,
"verified": true,
"defaultPort": 3306,
"mysqlCompat": true,
"color": "#FF6A00",
"icon": "/icons/databases/polardb.png",
"fields": [
"host",
"port",
"user",
"password",
"database",
"ssl",
"ssh"
],
"notes": "MySQL 协议族同码(族真实例 TiDB 已验收);PG 兼容版待真例"
},
{
"id": "tdsql",
"label": "TDSQL",
"category": "国产库",
"driverFamily": "mysql",
"runtime": "native",
"form": "standard",
"ready": true,
"verified": true,
"defaultPort": 3306,
"mysqlCompat": true,
"color": "#0052D9",
"icon": "/icons/databases/tdsql.svg",
"fields": [
"host",
"port",
"user",
"password",
"database",
"ssl",
"ssh"
],
"notes": "MySQL 协议族同码(族真实例 TiDB 已验收);真例问题按 bug 修"
},
{
"id": "kingbase",
"label": "Kingbase",
"category": "国产库",
"driverFamily": "postgres",
"runtime": "native",
"form": "standard",
"ready": true,
"verified": true,
"defaultPort": 54321,
"color": "#0B5FFF",
"icon": "/icons/databases/kingbase.svg",
"hints": {
"host": "127.0.0.1",
"port": "54321",
"user": "system",
"database": "test"
},
"fields": [
"host",
"port",
"user",
"password",
"database",
"ssl",
"ssh"
],
"notes": "PG 协议族同码(PostgreSQL 真实例已验收);默认库 test/端口 54321"
}
]
}
}