Files
dbtool-cli-v1/plans/2026-04-02-cmp-66-tui-connection-management-plan.md
Paperclip CTO d5f69462b0
Some checks failed
release-smoke / macos-13 / x86_64-apple-darwin (push) Has been cancelled
release-smoke / ubuntu-latest / x86_64-unknown-linux-gnu (push) Has been cancelled
release-smoke / windows-latest / x86_64-pc-windows-msvc (push) Has been cancelled
feat(usable): integrate current dbtool implementation snapshot
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-02 08:26:18 +00:00

3.8 KiB
Raw Blame History

2026-04-02 CMP-66 TUI 连接管理与交互式配置拆解方案

日期2026-04-02
作者CTO
对应 issueCMP-66

当前真实状态

  • apps/tui/src/main.rs 当前仅内置 sqlite-localreporting-postgresorders-mysql 三个 profilePostgreSQL / MySQL 仍通过 DBTOOL_TUI_POSTGRES_HOSTDBTOOL_TUI_POSTGRES_PORTDBTOOL_TUI_MYSQL_HOSTDBTOOL_TUI_MYSQL_PORT 等环境变量注入。
  • apps/tui/README.md 当前仍明确写着“不能自定义输入数据库连接”,说明仓库事实与本次需求之间存在清晰 gap。
  • crates/db-config/src/lib.rs 当前只有内存内 ConnectionProfile 结构与脱敏摘要,没有持久化 profile store、激活态、CRUD 或 secret 存储抽象。
  • crates/db-app/src/lib.rs 当前提供 connect / inspect / query / export 共享业务入口,适合作为连接测试与激活后的统一数据平面,但尚未提供连接管理编排层。

CTO 边界判断

  • 这项工作应继续以 db-app 为唯一业务入口TUI 不能直接绕过 shared app / driver 层。
  • usable-v1 第一轮不引入云同步、多用户或 GUI 扩张。
  • usable-v1 第一轮不默认持久化明文密码;优先落地:
    • 非 secret 连接信息持久化
    • 当前会话内 secret 缓存
    • 环境变量作为高级回退路径,而不是主路径
  • “保存并立即切换进入查询工作流”通过会话内复用刚输入的 secret 达成;跨重启长期 secret 管理单独 gated不并入本轮主交付。

第一轮拆解

Backend / Shared Contract

目标:

  • 定义统一连接 profile 持久化模型
  • 定义 active profile 与测试连接契约
  • 定义 secret 的 session-only 策略与脱敏边界

范围:

  • db-config 补 profile store / 序列化模型 / 激活态
  • db-app 补连接测试、加载、保存、切换所需共享编排
  • 保证 CLI / TUI 共用同一连接模型,不分叉

验收:

  • SQLite / PostgreSQL / MySQL 使用同一 profile 模型
  • secret 不进入日志、summary、文档示例或非受控持久化路径
  • TUI 可通过共享层完成 test/save/activate 所需后端动作

Frontend / TUI Workflow

目标:

  • 在 TUI 内提供可键盘完成的连接管理主路径
  • 将“内置 demo profile”升级为“用户可新增/编辑/删除/切换的 profile 列表”

范围:

  • 连接列表与当前连接展示
  • 分步式新增 / 编辑流程
  • 删除确认
  • 测试连接、保存并激活
  • 错误内联修正与状态反馈

验收:

  • 用户无需预先 export 环境变量即可完成 happy path
  • 新连接测试通过后可保存并立即进入查询工作流
  • 键盘路径一致、可文档化、可在真实 TTY 复核

QA / 验收与文档

目标:

  • 为新连接管理能力建立真实 TTY 验收路径与文档闭环

范围:

  • 更新 apps/tui/README.mdTUI_ACCEPTANCE_CHECKLIST.mdTUI_SMOKE_RUNBOOK.md、相关 usable 文档
  • 补 SQLite / PostgreSQL / MySQL 三类连接配置的 happy path / failure path 验收步骤
  • 明确哪些为 runner 内验证,哪些仍需 GUI host 复核

验收:

  • QA 可按文档从零配置连接并复核新增、编辑、删除、测试、切换
  • 文档不再把环境变量准备描述为普通用户主路径
  • blocker、partial 与 pass 口径保持一致

依赖顺序

  1. Backend 先冻结 profile store、active profile、session secret contract。
  2. Frontend 再接入 TUI 向导式配置、列表管理与错误修正。
  3. QA 最后按真实 TTY 路径补 smoke、回归、验收文档。

组织与节奏

  • 本轮不建议招聘;当前瓶颈是连接模型与 secret 边界,不是人手。
  • PM 不新增独立子单,直接在既有 CMP-41 里吸收里程碑与依赖更新。
  • CMP-66 作为此次连接管理拆解入口,交付拆成 backend / frontend / QA 三张 owner-backed 子单执行。