fix: 顶栏文案去重与文档/连库体验更新

顶栏定为:连接 · 新建连接 · 新建查询 · 查询历史 · 快捷键;
同步 docs/落地页、对象树与 connection-types 注册表整理。
This commit is contained in:
logan committed 2026-09-20 16:32:29 +08:00
1 parent f8740d27f7
commit 26f459d1b8
49 files changed
+2682 -492

No files matched your search

+12
View File
@@ -0,0 +1,12 @@
# 数据来源说明(NOTICE)
`connection-types.json` 的字段取值来源如下,供维护与审计对照:
| 数据 | 来源 |
|---|---|
| `id` / `label` / `category` / `defaultPort` / `color` / `icon` / `mysqlCompat` / `ready` / `form` / `hints` | `packages/ui/src/catalog.ts` 的 `DRIVERS` 数组(注册表顺序 = 该数组顺序) |
| `driverFamily` / `runtime` | `apps/server/internal/db/open.go` 的服务端驱动分发 |
| `verified` / `notes` | `tests/README.md` 驱动验收表 |
| 默认端口、产品名、品牌色等产品事实 | 各数据库官方公开文档(MySQL 3306、PostgreSQL 5432、SQL Server 1433、Oracle 1521、Redis 6379、MongoDB 27017、达梦 DM8 5236 等),属不受著作权保护的技术事实 |
opsxdb 整体许可证以仓库根 LICENSE 为准。
+40
View File
@@ -0,0 +1,40 @@
# opsxdb 连接类型注册表(connection-types.json,schema v1)
`connection-types.json` 是 opsxdb 驱动目录的**单一事实来源**(规划中):`packages/ui/src/catalog.ts`
的 `DRIVERS` 与服务端 `apps/server/internal/db/open.go` 的驱动分发,最终都应从本注册表生成。
当前阶段注册表与代码手工保持一致,生成器接入前以代码为准。
数据来源说明见 `NOTICE.md`。
## 设计
- **单个 JSON 注册表**:`types` 数组顺序即选择器展示顺序,与 `catalog.ts` 的 `DRIVERS`
数组保持同序;不设独立排序字段,避免引入任意常数。
- **JSON 无注释**:字段语义统一在本文件说明,条目级备注(如验收阻塞原因)写入 `notes` 字段。
## 字段说明
| 字段 | 必填 | 说明 |
|---|---|---|
| `id` | ✓ | 驱动 ID,与 `catalog.ts` 的 `DriverId` 一致 |
| `label` | ✓ | 显示名 |
| `category` | ✓ | `关系型` / `NoSQL` / `国产库` / `时序/搜索`(选择器分组) |
| `driverFamily` | ✓ | 服务端分发:`mysql` / `postgres` / `sqlserver` / `oracle` / `sqlite` / `redis` / `agent`(未实现,走外部驱动) |
| `runtime` | ✓ | `native`(Go 驱动编译内置)/ `agent`(按需下载的外部驱动)/ `file`(本地文件库) |
| `form` | ✓ | 连接表单:`standard` / `file` / `redis` / `oracle`(对应 `ConnectionForm`) |
| `ready` | ✓ | 用户可测试/连接;`false` 时选择器显示"未就绪",仅可保存 |
| `verified` | ✓ | 本机 docker 验收通过(依据 `tests/README.md` 驱动验收表);`false` 表示代码就绪但未经本机验证 |
| `defaultPort` | ✓ | 默认端口;文件库为 `0` |
| `mysqlCompat` | | MySQL 协议族(TiDB/OceanBase/PolarDB/TDSQL 等复用 mysql 驱动) |
| `color` / `icon` | | 选择器展示 |
| `hints` | | 表单占位提示(host/port/user/database/service) |
| `fields` | ✓ | 连接表单收集且服务端实际消费的字段;表单不渲染、服务端不接收的字段**禁止**列入 |
| `notes` | | 条目级备注(如 `verified: false` 的原因) |
## 纪律
- `fields` 必须与 `apps/server/internal/db/types.go` 的 `ConnReq` 实际消费字段一致
(审计记录:Oracle 的 `oracleRole`/`oracleIdKind`、SQL Server 的 `authMode`、
Redis 的 `keySeparator`/`redisMode` 为已知的死参数,不得回流)。
- 新增驱动时同步更新 `tests/README.md` 验收表与 `catalog.ts`,并保持注册表与
`DRIVERS` 数组同序。
+110
View File
@@ -0,0 +1,110 @@
{
"schemaVersion": 1,
"types": [
{
"id": "mysql",
"label": "MySQL",
"category": "关系型",
"driverFamily": "mysql",
"runtime": "native",
"form": "standard",
"ready": true,
"verified": true,
"defaultPort": 3306,
"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"]
},
{
"id": "postgresql",
"label": "PostgreSQL",
"category": "关系型",
"driverFamily": "postgres",
"runtime": "native",
"form": "standard",
"ready": true,
"verified": true,
"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"]
},
{
"id": "sqlserver",
"label": "SQL Server",
"category": "关系型",
"driverFamily": "sqlserver",
"runtime": "native",
"form": "standard",
"ready": true,
"verified": true,
"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"]
},
{
"id": "oracle",
"label": "Oracle",
"category": "关系型",
"driverFamily": "oracle",
"runtime": "native",
"form": "oracle",
"ready": true,
"verified": false,
"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)"
},
{
"id": "mongodb",
"label": "MongoDB",
"category": "NoSQL",
"driverFamily": "agent",
"runtime": "agent",
"form": "standard",
"ready": false,
"verified": false,
"defaultPort": 27017,
"color": "#00ED64",
"icon": "/icons/databases/mongodb.svg",
"fields": ["host", "port", "user", "password", "database", "ssl", "ssh"]
},
{
"id": "redis",
"label": "Redis",
"category": "NoSQL",
"driverFamily": "redis",
"runtime": "native",
"form": "redis",
"ready": true,
"verified": true,
"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"]
},
{
"id": "dameng",
"label": "达梦",
"category": "国产库",
"driverFamily": "agent",
"runtime": "agent",
"form": "standard",
"ready": false,
"verified": false,
"defaultPort": 5236,
"color": "#1E40AF",
"icon": "/icons/databases/dameng.svg",
"fields": ["host", "port", "user", "password", "database", "ssl", "ssh"]
}
]
}
-39
View File
@@ -1,39 +0,0 @@
schemaVersion: 1
order: 260
dbType: dameng
rustVariant: Dameng
label: 达梦 DM8
dialect: Dameng
runtimeMode: agent
mcpMode: bridge
agentKey: dameng
driverStoreVisible: true
driverStoreOrder: 1
singleConnectionPool: true
metadataConnectionScoped: false
skipTcpProbe: true
defaultPort: 5236
traits:
schemaAware: true
singleDatabase: true
clearableQuerySchema: true
fetchFirst: true
diagramSql: true
supportLevel: operate
capabilities:
queryExecution: true
metadataBrowse: true
objectBrowser: true
objectSource: true
schemaSearch: true
diagram: true
tableDataEdit: true
tableStructureEdit: true
tableImport: true
dataTransfer: true
sqlFileExecution: true
databaseCreate: false
fieldLineage: true
sqlExplain: true
userAdmin: false
driverManagement: true
-37
View File
@@ -1,37 +0,0 @@
schemaVersion: 1
order: 110
dbType: mongodb
rustVariant: MongoDb
label: MongoDB (Legacy)
runtimeMode: agent
mcpMode: bridge
agentKey: mongodb
driverStoreVisible: true
driverStoreOrder: 41
driverProfiles:
- profile: mongodb-legacy
agentKey: mongodb
label: MongoDB (Legacy)
storeVisible: false
singleConnectionPool: true
metadataConnectionScoped: false
skipTcpProbe: true
defaultPort: 27017
supportLevel: connect
capabilities:
queryExecution: true
metadataBrowse: false
objectBrowser: true
objectSource: false
schemaSearch: false
diagram: false
tableDataEdit: false
tableStructureEdit: false
tableImport: false
dataTransfer: true
sqlFileExecution: false
databaseCreate: false
fieldLineage: false
sqlExplain: false
userAdmin: false
driverManagement: false
-32
View File
@@ -1,32 +0,0 @@
schemaVersion: 1
order: 10
dbType: mysql
rustVariant: Mysql
label: MySQL
dialect: MySQL
runtimeMode: native
mcpMode: direct
singleConnectionPool: false
metadataConnectionScoped: true
skipTcpProbe: false
defaultPort: 3306
traits:
diagramSql: true
supportLevel: operate
capabilities:
queryExecution: true
metadataBrowse: true
objectBrowser: true
objectSource: true
schemaSearch: true
diagram: true
tableDataEdit: true
tableStructureEdit: true
tableImport: true
dataTransfer: true
sqlFileExecution: true
databaseCreate: true
fieldLineage: true
sqlExplain: true
userAdmin: true
driverManagement: false
-48
View File
@@ -1,48 +0,0 @@
schemaVersion: 1
order: 130
dbType: oracle
rustVariant: Oracle
label: Oracle
dialect: Oracle
runtimeMode: agent
mcpMode: bridge
agentKey: oracle
driverStoreVisible: true
driverStoreOrder: 18
driverProfiles:
- profile: oracle-legacy
agentKey: oracle
label: Oracle
storeVisible: false
- profile: oracle-10g
agentKey: oracle
label: Oracle
storeVisible: false
singleConnectionPool: true
metadataConnectionScoped: false
skipTcpProbe: true
defaultPort: 1521
traits:
schemaAware: true
singleDatabase: true
clearableQuerySchema: true
fetchFirst: true
diagramSql: true
supportLevel: operate
capabilities:
queryExecution: true
metadataBrowse: true
objectBrowser: true
objectSource: true
schemaSearch: true
diagram: true
tableDataEdit: true
tableStructureEdit: true
tableImport: true
dataTransfer: true
sqlFileExecution: true
databaseCreate: false
fieldLineage: true
sqlExplain: true
userAdmin: false
driverManagement: true
-36
View File
@@ -1,36 +0,0 @@
schemaVersion: 1
order: 20
dbType: postgres
rustVariant: Postgres
label: PostgreSQL
dialect: PostgreSQL
runtimeMode: native
mcpMode: direct
singleConnectionPool: false
metadataConnectionScoped: false
skipTcpProbe: false
defaultPort: 5432
traits:
schemaAware: true
treeSchema: true
pgVacuum: true
pgLikeStructure: true
diagramSql: true
supportLevel: operate
capabilities:
queryExecution: true
metadataBrowse: true
objectBrowser: true
objectSource: true
schemaSearch: true
diagram: true
tableDataEdit: true
tableStructureEdit: true
tableImport: true
dataTransfer: true
sqlFileExecution: true
databaseCreate: true
fieldLineage: true
sqlExplain: true
userAdmin: true
driverManagement: false
-29
View File
@@ -1,29 +0,0 @@
schemaVersion: 1
order: 70
dbType: redis
rustVariant: Redis
label: Redis
runtimeMode: native
mcpMode: bridge
singleConnectionPool: false
metadataConnectionScoped: false
skipTcpProbe: false
defaultPort: 6379
supportLevel: connect
capabilities:
queryExecution: true
metadataBrowse: false
objectBrowser: false
objectSource: false
schemaSearch: false
diagram: false
tableDataEdit: false
tableStructureEdit: false
tableImport: false
dataTransfer: false
sqlFileExecution: false
databaseCreate: false
fieldLineage: false
sqlExplain: false
userAdmin: false
driverManagement: false
-41
View File
@@ -1,41 +0,0 @@
schemaVersion: 1
order: 100
dbType: sqlserver
rustVariant: SqlServer
label: SQL Server
dialect: SQL Server
runtimeMode: native
mcpMode: bridge
driverProfiles:
- profile: sqlserver-legacy
agentKey: sqlserver-legacy
label: SQL Server legacy compatibility component
storeVisible: true
storeOrder: 47
singleConnectionPool: false
metadataConnectionScoped: false
skipTcpProbe: false
defaultPort: 1433
traits:
schemaAware: true
databaseSchemaQualified: true
treeSchema: true
diagramSql: true
supportLevel: operate
capabilities:
queryExecution: true
metadataBrowse: true
objectBrowser: true
objectSource: true
schemaSearch: true
diagram: true
tableDataEdit: true
tableStructureEdit: true
tableImport: true
dataTransfer: true
sqlFileExecution: true
databaseCreate: true
fieldLineage: true
sqlExplain: true
userAdmin: false
driverManagement: false