同步完整源码至远程:扁平化重构现状 + 未入库源文件
- 补入库:server/internal/db/dump.go、redis 分页/扫描预算测试、opsxdb-mcp main_test、 packages/opsxdb-mcp package-lock、docs 审计与对比文档等 37 个新文件 - 含结构扁平化进行中的 80 处修改与 155 处旧结构删除(server/ src/ src-tauri/ 为当前有效源) - 构建产物(bin/target/dist)与签名私钥仍按规则排除
This commit is contained in:
1 parent
5c0be49217
commit
2c0bfafd8d
269 files changed
+10372
-16435
No files matched your search
@@ -0,0 +1,94 @@
|
||||
# 库、表与数据迁移功能缺项盘点
|
||||
|
||||
更新:2026-10-14(同日复核一轮:右键与复制主路径已落地,本文相关条目同步;代码现状以根级 `src` / `src-tauri` / `server` 布局核查)。依据当前 OpsxDB 代码以及 DBFlux、dbx、RustGrid 本地源码/文档静态核查;未运行参考项目,能力存在不等于所有引擎已验证。本文优先于早期「整表导出尚未实现」等笼统表述。
|
||||
|
||||
## 已确认的现状
|
||||
|
||||
- 按用户要求移除工作台「执行计划」按钮、结果「计划」页签及其前端执行处理。底层 API 保留兼容,不列入近期开发。
|
||||
- 表/视图节点下有字段分组(对象树自带);表节点另有索引、外键、触发器分组(`TableMetadataTree`,按驱动 DDL 能力挂载)。目录查询覆盖 MySQL 系列、PG 系列、SQLite,未适配引擎明确提示而非伪装空列表,尚待真库验证。
|
||||
- 右侧/结果区「结构」页有字段列表,索引/外键/触发器区块已复用对象树的目录查询,覆盖 MySQL 系列、PG 系列和 SQLite;每组单独显示加载、失败重试、空态与截断。编辑入口在表右键「设计表」,MySQL 普通索引可编辑,外键/触发器仍只读;真实数据库兼容性待验收。
|
||||
- 已有当前结果 CSV/JSON/INSERT 导出及服务端整表、完整查询导出入口;表右键已有 CSV/JSON 导出与 SQL 三态转储。这些有行数上限的导出不等于数据库备份。
|
||||
- 编辑器/结果/对象树右键主路径已于 2026-10-14 补齐一轮(格式化、注释、查找替换、定义跳转、复制与导出、SELECT/INSERT 模板、新建查询带库),验收状态以 BACKLOG §3 为准;本文只保留与结构、表设计、迁移相关的条目。AI 晚到 SQL 的原标签、未保存状态和切库保护已补回归。
|
||||
- Redis 键浏览/编辑已有独立面板(`RedisKeyPane`),非本盘点的关系对象迁移范畴。
|
||||
|
||||
## 库与 Schema
|
||||
|
||||
| 操作 | OpsxDB 状态 | 缺口与优先级 |
|
||||
|---|---|---|
|
||||
| 新建查询、刷新、复制名称/连接地址 | 已有(另含设为默认库、删除库、限定名与主机端口复制) | 菜单键盘、焦点、视口约束已统一实现(2026-10-14),待桌面验收;剩余为禁用项说明的一致性 |
|
||||
| 默认库切换 | 部分 | P1:PG Schema/search_path 与会话隔离验证;显示实际生效目标 |
|
||||
| 新建数据库 / Schema | 缺少可视化流程 | P1:库名、字符集/排序规则或 owner 按方言开放,预览 SQL |
|
||||
| 删除数据库 | 有能力裁剪入口 | P1:验收目标确认、权限失败、删除后连接与标签刷新 |
|
||||
| 查看/修改库属性 | 缺少 | P2:编码、排序规则、大小、注释;可修改项按引擎限制 |
|
||||
| 批量选择表 | 缺少 | P1:为多表导出/备份提供选择,不优先批量删除 |
|
||||
| 视图、过程、函数定义管理 | 列表 + 视图可展开字段、复制建表/视图 SQL | P2:查看/复制定义已部分具备,新建/修改/删除、参数调用仍缺;按引擎支持 |
|
||||
| 用户/权限、服务器管理 | 缺少 | 后置:不挤占表设计和迁移优先级 |
|
||||
|
||||
## 表与表设计
|
||||
|
||||
| 操作 | OpsxDB 状态 | 缺口与验收要求 |
|
||||
|---|---|---|
|
||||
| 查看数据、前 N 行、查看结构/DDL | 已有 | 右侧结构已统一字段及三组目录;P1:点击树中索引定位对应详情,并以真库验证权限、方言差异与刷新行为 |
|
||||
| 新建表 | 设计器 v1 已落地(2026-10-14):库右键「新建表…」/表右键「设计表…」,字段网格 + 方言化 CREATE 预览 + 应用 | P0:真库验收新建→改字段→改主键全流程;表选项(引擎/字符集)后置 |
|
||||
| 新增/修改/删除字段 | 设计器 v1 支持列级 diff ALTER(MySQL 族 ADD/DROP/MODIFY/CHANGE、PG 族 TYPE/NOT NULL/DEFAULT/RENAME;SQLite 仅 ADD) | P0:真库各方言验收;结构漂移重校验(执行前被外部修改)后置 |
|
||||
| 主键管理 | 设计器 v1 支持主键组变更(ADD/DROP PRIMARY KEY) | P0:复合主键真库验收;不把普通索引当主键 |
|
||||
| 创建/修改/删除索引 | MySQL 系列设计器可编辑普通 BTREE/唯一及复合索引,实时预览 DROP/ADD;前缀、FULLTEXT、SPATIAL、降序等特殊索引只读。PG/SQLite 仍只读 | P0:MySQL 真库验证索引重建与外部结构漂移;PG 并发索引等高级项后置 |
|
||||
| 外键管理 | 仅查看 | P1:多列映射、引用表列、ON DELETE/UPDATE;依赖检查 |
|
||||
| 检查约束 | 未接入树/设计器 | P2:读取/创建/删除,按引擎版本裁剪 |
|
||||
| 触发器 | 主要是查看 | P2:源码查看/编辑与 DDL 预览;避免假定支持原地 ALTER |
|
||||
| 重命名表、修改表注释 | 缺少专用操作 | P1:方言转义、名称冲突、成功后刷新和旧标签提示 |
|
||||
| 克隆为新表 | 缺少 | P1:仅结构/结构+数据;明确索引、外键、触发器是否复制 |
|
||||
| 清空/截断、删除表 | 已有危险确认入口 | P1:区分 DELETE 与 TRUNCATE,事务/自增/外键语义及失败反馈 |
|
||||
| 生成 SQL | 表右键「生成 SQL」折叠组提供 SELECT/INSERT/UPDATE/DELETE/DDL;新开带库查询,更新/删除有主键时填 WHERE 占位,不自动执行 | P1:复合主键、生成列/自增列和各方言参数占位符真库校验 |
|
||||
| 表数据新增/修改/删除 | 部分内联修改、粘贴和删除 | P1:新增行、待提交变更、明确 NULL 编辑、多行部分失败反馈,避免并发回滚覆盖 |
|
||||
| 表关系图、结构比较、数据比较 | 缺少 | 结构比较 P1(只读差异,目标选择和过滤);数据比较 P2(主键、同构、分页/限量);关系图后置 |
|
||||
|
||||
设计器现状:字段、索引、外键、触发器、SQL 预览分区;大弹窗、紧凑密度、MySQL 表注释、普通索引编辑,外键/触发器只读。应用前展示 DDL 并确认,读取元数据失败或存在不支持的修改时禁止应用。未含:外键/触发器图形编辑、引擎/字符集选项、草稿保留(关闭即丢)、结构漂移重校验、SQLite 重建表流程;这些仍是后续项。
|
||||
|
||||
## 导出、导入、备份与恢复
|
||||
|
||||
| 能力 | OpsxDB 状态 | 必须补齐的闭环 |
|
||||
|---|---|---|
|
||||
| 当前结果 CSV/JSON/INSERT | 已有 | P1:范围、编码、NULL/换行/大整数、取消/保存失败回归 |
|
||||
| 整表 / 完整查询导出 | 表右键可导出 CSV/JSON,输入 1–500000 行上限(默认 100000);服务端流式取数,不受前端结果分页限制。右键还可转储 SQL 三态(仅结构/仅数据/结构和数据) | P1:上限命中时服务端给出明确截断标志、列与条件选择、进度/取消、大表内存验证;目前文件达到上限不能判定是否完整,不可当备份 |
|
||||
| 表结构 SQL 导出 | 表右键转储「仅结构/结构和数据」已可保存 .sql | P1:多表选择、对象依赖顺序;视图/过程/函数纳入 |
|
||||
| CSV 导入 | 缺少向导 | P0:文件预览、编码/分隔符、表头、字段映射、类型/NULL、批次、事务策略、错误行报告 |
|
||||
| SQL 文件执行/导入 | 缺少完整流程 | P1:大文件流式读取、方言分隔符、进度/取消、失败位置;不是简单按分号切开 |
|
||||
| JSON/Excel 导入导出 | JSON 结果导出已有,其他缺少 | P2:先 CSV;Excel 为可选扩展,不先堆格式 |
|
||||
| 单表 / 多表逻辑备份 | 缺少 | P1:结构+数据、索引/约束/触发器范围、快照一致性说明、产物清单 |
|
||||
| 整库逻辑备份 | 缺少 | P1:MySQL/PG 优先,评估原生 dump 工具依赖或自有导出;凭据不放命令行/日志 |
|
||||
| 备份恢复 | 缺少 | P1:目标库确认、冲突策略、对象顺序、失败报告,完成后实际验证可恢复性 |
|
||||
| 定时备份/保留策略/历史 | 缺少 | P2:手动备份恢复验收后再做;桌面退出时不承诺继续运行 |
|
||||
| 物理备份、PITR、binlog/WAL 归档 | 无 | 不纳入近期桌面客户端范围;逻辑 SQL 导出不能冒充灾备 |
|
||||
|
||||
## 三个参考项目取舍与证据
|
||||
|
||||
| 参考 | 静态证据 | 借鉴内容 |
|
||||
|---|---|---|
|
||||
| dbx | `docs/content/docs/table-structure.cn.mdx`;`crates/dbx-core/src/table_structure_sql/` 的 columns/indexes/foreign_keys/sqlite_rebuild/validation;结构编辑器并发与元数据重校验测试 | 字段/索引设计、能力裁剪、DDL 预览、草稿与结构漂移校验,作为表设计主要参考 |
|
||||
| dbx | `crates/dbx-web/src/routes/table_export.rs`(CSV/JSON/XLSX/SQL、进度、取消)、`docs/content/docs/database-backup.cn.mdx`、`crates/dbx-core/src/sql_file_import/table_restore.rs` | 借鉴导出任务反馈、立即备份与恢复;XLSX 按真实需求后置,不把有限行导出称为备份 |
|
||||
| navop | `crates/db_view/src/compare/`、`import_export/table_import_view.rs` | 比较目标、差异预览、失败状态与导入映射。优先只读结构差异,再做按主键的数据比较;同步执行需独立确认与回滚策略 |
|
||||
| AnotherRedisDesktopManager | `src/components/OperateItem.vue`、`MemoryAnalysis.vue`、`src/redisClient.js` | 搜索输入、取消/分批 SCAN 与集群节点处理;不引入会阻塞服务器的 KEYS 全量搜索 |
|
||||
| DBFlux | `crates/dbflux_ui_document/src/import_wizard/column_mapping.rs`、`export_wizard/`、`crates/dbflux_export/src/streaming.rs`、`dbflux_ui_sidebar/src/operations/export_tables.rs` | 导入映射、按对象直达导出、步骤层级与流式任务。不能仅凭 schema_alter policy 推断完整设计器已成熟 |
|
||||
| RustGrid | `README_zh.md`、`crates/rustgrid-backup/src/lib.rs`、`crates/rustgrid-app/src/app/backup.rs`、`crates/rustgrid-postgresql/src/backup.rs` | 中文导入导出向导、备份/还原成对入口;不优先复制专有 .rgbak 格式,先通用 SQL/CSV |
|
||||
|
||||
上述 dbx/navop/dbflux/rustgrid 路径相对 `/Users/logan/devops/demo/db-gui/`,Redis 参考项目位于 `/Users/logan/devops/demo/db-client/`。本文不因参考项目声明功能就宣称其全部驱动均通过验收。
|
||||
|
||||
Navicat 截图的数据库/表/视图与工具图标用于辨识和层级参考;OpsxDB 保留自有 SVG 图标与紧凑桌面工具栏,不复制其图形资产或将比较、备份按钮提前摆在主工具栏。结构比较 P1 先只读展示字段、索引、约束差异;数据比较 P2 要求同构表、明确主键、限量取样与差异统计,跨库同步和无主键全表比较后置。导入以 CSV 预览→字段映射→批量执行→错误报告为 P0;导出优先 CSV/JSON/SQL INSERT/结构 SQL,XLSX 为 P2,整库逻辑备份必须能恢复验证。
|
||||
|
||||
## 推荐开发顺序
|
||||
|
||||
1. **结构查看验收**:目录查询与错误/空态已复用;补树节点定位结构详情,并用 MySQL、PG、SQLite 真库核对索引、复合外键和触发器。
|
||||
2. **表设计器验收**:字段网格、MySQL 普通索引、结构只读页签与 DDL 确认已落地;MySQL 3306 旧版建表/转储验收不覆盖本轮索引改造。下一步真库验收索引重建与结构漂移重校验。
|
||||
3. **日常迁移**:CSV 导入 + 表右键导出 + SQL 文件执行;有进度、取消与错误报告。
|
||||
4. **备份恢复**:先手动单库逻辑备份并完成恢复演练,再多库/定时。
|
||||
5. **按需扩展**:外键/触发器编辑、克隆、关系图/比较,不把整个管理平台塞入默认右键菜单。
|
||||
|
||||
验收矩阵应覆盖:空表/大表/复合主键/无主键/权限不足/断连/取消/名称特殊字符/跨标签切换/结构被外部修改;每种方言单独记录。规划项未实现前不在产品中放置伪可用入口。
|
||||
|
||||
## 本地质量复核
|
||||
|
||||
- 前端构建/类型检查通过,60 项前端测试通过;Go 编译和 2 项无监听的 Redis 扫描预算测试通过,差异空白检查通过。homepage 未改动。
|
||||
- 复核修正:结构页不再把索引等目录查询报错显示为「无」,三组分别加载、报错重试;AI 异步生成 SQL 保留原标签与未保存标记,用户修改 SQL 或切库后不覆盖。
|
||||
- 2026-10-14 晚补充:设计器 v1(tableDdl 11 项单测,前端合计 75 项全绿)、`/api/db/dump` 三态转储、`⌘/` 注释快捷键修正(帮助改 `⌘⇧/`);MySQL 3306 真库端到端验证建表、插数与三种转储输出后已清理测试库。
|
||||
- 尚未完成:真实 MySQL/PG/SQLite 的结构目录校验、桌面视觉/右键/剪贴板验收、表设计与导入备份闭环。完整 Go 集成测试中的本地监听用例在当前受限环境不能运行;这不等于真实数据库验收通过。
|
||||
Reference in new issue
Block a user