dbx/apps/desktop/src/lib
AiLi 2f9ca313cb
fix(rocketmq): 优化消费组加载/连接并修复积压、FIFO 与 Docker remap
* feat(rocketmq): 优化 RocketMQ 消费者组管理和性能监控

- 添加并行订阅组配置收集功能,支持超时控制和并发限制
- 实现消费者滞后监控功能,支持按主题过滤的滞后统计
- 重构消费滞后结果构建逻辑,添加 Broker 客户端映射功能
- 优化 Admin 客户端构建,确保请求超时参数正确传递
- 为 RabbitMQ 面板组件添加 MQ 写入保护确认机制
- 统一 MQ 面板样式表引入,清理重复按钮样式定义
- 增强连接对话框中的生产环境保护逻辑,支持 MQ 类型范围
- 更新测试用例以验证新的消费者滞后计算和客户端映射功能
- 为 RocketMQ 订阅面板添加过滤计数功能和测试覆盖

* feat(rocketmq): 优化 RocketMQ 客户端连接和消费者组管理

- 移除硬编码的 5 秒收集超时,改用连接配置的请求超时
- 添加从第一个可用主节点收集消费者组配置的方法以提高速度
- 重构内部方法访问客户端 API 实现和超时配置
- 在主题过滤模式下保留一个主节点转储以恢复 FIFO 类型准确性
- 改进消费延迟计算,失败时不设置总延迟而是保持未定义
- 为消费者运行信息获取添加 Docker 地址映射支持
- 更新命名服务器探测逻辑以更好地处理高可用配置
- 增加消息队列保活机制的查询超时支持
- 在前端界面中显示部分积压加载失败的错误信息
- 添加卸载主题前的操作确认保护
- 改进空结果集的用户界面提示信息

* fix(rocketmq): 解决消费组延迟统计失败时显示为健康零延迟的问题

- 在 examineConsumeStatsRemapped 中添加成功计数和最后错误记录
- 添加 ensureConsumeStatsProbeSucceeded 方法确保没有主节点响应时抛出异常
- 修改 TopicConsumeDetail 接口使 delay 字段可选以表示探针失败
- 更新 UI 显示逻辑在延迟不可用时显示破折号而不是零
- 添加测试用例验证所有代理失败时的异常处理
- 在 Rust 代码中检查 totalLag 是否存在以避免将缺失值视为零
- 添加消息队列适配器的标识检查防止过期的保活连接被错误清理

* fix(rocketmq): 修复RocketMQ消费组详情加载和统计查询问题

- 为examineConsumeStats调用添加超时参数以支持Docker地址映射
- 更新ensureConsumeStatsProbeSucceeded方法以处理部分失败情况下的空合并结果
- 在消费者组对话框中添加序列号防止陈旧详情/配置响应覆盖新数据
- 修复消费延迟显示逻辑,将null延迟值显示为"-"
- 改进错误处理,确保仅在所有代理成功时才接受空偏移表作为有效结果

* fix(rocketmq): 修复消费者组配置收集和消息积压显示问题

- 修改 collectConsumerGroupConfigsForTopicFilter 方法以合并多个主节点的订阅配置
- 优化 Topic-filtered 列表的配置收集逻辑,确保 FIFO 组类型准确性
- 添加 totalLagFailed 标志以正确处理消息积压探测失败情况
- 更新前端组件以在探测失败时显示 "-" 而非 0
- 修复 Docker 环境下多代理地址映射冲突问题
- 添加 RFC1918 私有 IP 验证方法并改进主机可达性判断
- 为积压不可用状态添加数据模型支持

* fix(rocketmq): 修复RocketMQ消费者组配置收集中的FIFO组识别问题

- 重构订阅组配置合并逻辑,确保FIFO组不会被误识别为NORMAL组
- 添加mergeSubscriptionGroupConfigs方法处理重复和冲突的订阅组配置
- 修改collectConsumerGroupConfigsForTopicFilter方法使用新的合并策略
- 添加测试用例验证FIFO组优先级和后续组保持功能
- 修复中间代理返回重复转储时丢失FIFO-only组的问题

* refactor(rocketmq): 优化消费组统计和名称服务器连接逻辑

- 引入 MasterBrokerAddrPlan 类来管理重映射和冲突回退地址
- 将 examineConsumeStatsRemapped 重构为 examineConsumeStatsOnMasters 方法
- 实现对 Docker 环境中重映射地址的更好支持和故障转移处理
- 在连接前预先探测 NameServer 可达性以避免 JVM 启动超时
- 优化消费者组在线成员数显示,未知状态时显示为 '-'
- 添加相关单元测试验证地址解析和冲突处理逻辑

* fix(rocketmq): 修复Docker重映射碰撞和消费者组配置问题

- 修复订阅组配置查找逻辑,支持FIFO合并避免顺序消息被隐藏
- 添加超时参数到订阅组查询方法
- 实现Docker重映射碰撞检测和失败关闭机制
- 添加测试验证碰撞空合并失败关闭逻辑
- 修复RocketMQ跟踪详情对话框加载序列控制问题
- 更新消费延迟标签为积压(backlog)
- 添加连接缺失和只读写拒绝的国际化消息提示
- 修复CSS样式中按钮主题颜色应用问题
- 优化NameServer探测预算计算逻辑

* fix(rocketmq): 修复消费者组类型分类和成员计数显示问题

- 当订阅配置缺失时返回 UNKNOWN 类型而不是默认 NORMAL
- 在删除和更新消费者组时对所有主节点执行操作确保一致性
- 成员计数查询失败时保持字段为空避免显示错误的离线状态
- 添加 UNKNOWN 类型的国际化支持和UI样式适配
- 修改测试用例验证缺失配置时的类型分类逻辑

* style(mq): 移除MQ面板中的主按钮样式覆盖

- 删除了 .mq-btn-primary 和 .btn-primary 的填充颜色样式定义
- 保留了悬停效果样式以维持用户体验一致性
- 更新注释说明MQ Chrome在浅色主题中保持页面表面样式
- 避免与工具栏和表格操作按钮产生视觉冲突

* test(composables): 为 useMqMutationGuard 添加测试并更新实现

- 添加了测试用例验证MQ面板使用的getter连接ID解析
- 将 unref 替换为 toValue 以正确处理getter参数
- 更新类型导入使用 MaybeRefOrGetter 替代 MaybeRef
- 添加注释说明使用 toValue 的原因

* fix(rocketmq): 修复消费者连接检查和订阅组变更的容错机制

- 重构 examineConsumerConnectionInfoRemapped 方法以正确处理无主节点响应的情况
- 添加 requireConsumerConnectionProbeResult 方法确保连接探针结果的准确性
- 修改 mutateSubscriptionGroupOnMasters 方法实现全地址覆盖要求防止部分更新
- 新增 ensureSubscriptionGroupMutationSucceeded 和 shouldFailClosedOnCollisionPartialMutation
  方法增强订阅组变更的错误处理
- 更新 rocketmq_subscription_from_group 函数默认类型为 UNKNOWN 而非 NORMAL
- 添加多个单元测试验证连接探针和订阅组变更的各种异常场景

* test(rocketmq): 为消费者连接探测测试方法添加异常声明

- 在requireConsumerConnectionProbeResultFailsClosedWhenNoMasterAnswers测试方法中添加throws Exception声明
- 确保测试方法能够正确处理可能抛出的异常情况

* fix(i18n): MQ 生产确认 source 本地化并清理 fieldStatus 死键

---------

Co-authored-by: AiLi <aili@aili.com>
Co-authored-by: t8y2 <t8y2@users.noreply.github.com>
Co-authored-by: skyler <1156263951@qq.com>
2026-08-06 01:12:31 +08:00
..
__tests__ feat(editor): 支持 SELECT * 展开为字段列表 2026-08-06 00:55:36 +08:00
ai feat(agent): add timezone-aware current time tool 2026-08-05 11:15:35 +08:00
app
backend fix(rocketmq): 优化消费组加载/连接并修复积压、FIFO 与 Docker remap 2026-08-06 01:12:31 +08:00
backup feat(backup): improve progress history and PostgreSQL exports 2026-08-02 19:35:44 +08:00
common feat(completion): support pinyin matching for Chinese identifiers 2026-08-05 02:03:09 +08:00
connection feat(sidebar): expose visible object filter 2026-08-05 23:58:22 +08:00
dataGrid feat(db): 支持 VictoriaMetrics 数据库 2026-08-05 23:58:11 +08:00
database feat(db): 支持 VictoriaMetrics 数据库 2026-08-05 23:58:11 +08:00
diagnostics
diagram feat(diagram): enhance ER diagram editing and exports 2026-08-03 16:05:57 +08:00
document fix(mongo): stabilize estimated-total pagination 2026-07-31 14:51:25 +08:00
driverStore
editor feat(editor): 支持 SELECT * 展开为字段列表 2026-08-06 00:55:36 +08:00
elasticsearch
etcd feat(etcd): add cluster operations and access control 2026-07-31 01:06:02 +08:00
export perf(export): optimize SQL export performance 2026-08-05 14:57:06 +08:00
hbase
history
imports fix(import): decrypt Navicat passwords over HTTP 2026-08-01 20:28:36 +08:00
kv feat(etcd): add cluster operations and access control 2026-07-31 01:06:02 +08:00
mcp feat(mcp): add update notification badge 2026-08-05 15:52:20 +08:00
metadata fix(informix): resolve metadata owners correctly 2026-08-02 09:04:30 +08:00
mongo fix(mongodb): support collation for find queries 2026-08-04 00:37:13 +08:00
mq fix(rocketmq): 优化消费组加载/连接并修复积压、FIFO 与 Docker remap 2026-08-06 01:12:31 +08:00
mqtt feat(mqtt): add MQTT broker connection support 2026-08-04 19:05:05 +08:00
nacos
query fix(query): preserve structured backend errors 2026-08-02 16:37:46 +08:00
redis feat(redis): add decompressed view for compressed values 2026-08-03 20:59:39 +08:00
savedSql fix(saved-sql): 修复 SQL 库连接关联丢失与历史文件不可见 2026-08-05 23:58:32 +08:00
schema
settings feat(mcp): add update notification badge 2026-08-05 15:52:20 +08:00
sidebar fix(sidebar): 修复搜索筛选树分组折叠在 scope-only 过滤下空操作 2026-08-06 00:55:24 +08:00
sql feat(editor): 支持 SELECT * 展开为字段列表 2026-08-06 00:55:36 +08:00
sqlFile
startup fix(frontend): guard startup and loading shortcuts 2026-08-03 16:57:26 +08:00
table feat(db): 支持 VictoriaMetrics 数据库 2026-08-05 23:58:11 +08:00
tabs feat(tabs): add configurable data tab reuse modes 2026-08-05 13:05:26 +08:00
webdav
zookeeper feat(zookeeper): support cluster authentication setup 2026-08-03 16:58:47 +08:00
README.md
fieldMappingPresets.ts

README.md

Desktop Library Layout

src/lib is organized by product/runtime domain. Keep implementation modules inside a domain folder instead of adding new files at the root.

  • backend: Tauri, HTTP, platform, storage, and transport bridges.
  • common: generic helpers with no DBX feature ownership.
  • app, tabs, sidebar, connection: shell, navigation, and connection UI state helpers.
  • database, metadata, schema, table: relational database metadata, capabilities, DDL, and table-object helpers.
  • sql, sql/semantic, editor, query, history, savedSql: SQL editing, execution, diagnostics, history, and saved SQL behavior. Keep fixed SQL completion statements and their database-specific variants in sql/sqlSnippetTemplates.ts; cross-check row-limiting families against crates/dbx-core/src/sql_dialect/capabilities.rs and authoritative dialect documentation, and never replace a user-customized built-in body with a generated default.
  • dataGrid: result/grid rendering, editing, previews, pagination, and export helpers tied to the grid.
  • ai, mcp: AI assistant and MCP configuration helpers.
  • redis, mongo, elasticsearch, etcd, kv, mq, nacos, zookeeper, webdav: non-relational or service-specific helpers.
  • diagram, document, export, imports: feature-specific utilities that are shared by more than one component.

Tests under src/lib/__tests__ mirror the same domain folders. When moving a module, update both runtime imports and colocated tests so stale root-level aliases do not return.

Schema Diff Metadata Guardrails

Schema comparison must filter disabled object types before loading metadata. Tables load columns and the relational metadata enabled by the compare options; views load DDL only.

Do not call column, index, foreign-key, or trigger metadata APIs for views. MySQL 5.7 can validate a SQL SECURITY DEFINER view during column discovery and return error 1143 when its definer account no longer exists, even though SHOW CREATE VIEW still succeeds. Keep view detection centralized in schema/schemaDiffTableFilter.ts and preserve the DDL-only plan in schema/schemaDiffMetadataLoad.ts.

Regression coverage belongs in:

  • src/lib/__tests__/schema/schemaDiffTableFilter.spec.ts
  • src/lib/__tests__/schema/schemaDiffMetadataLoad.spec.ts