feat(usable): integrate current dbtool implementation snapshot
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

Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
Paperclip CTO
2026-04-02 08:26:18 +00:00
parent a28dab4cd9
commit d5f69462b0
73 changed files with 5895 additions and 322 deletions

View File

@@ -0,0 +1,95 @@
# 2026-04-02 CMP-66 TUI 连接管理与交互式配置拆解方案
日期2026-04-02
作者CTO
对应 issue`CMP-66`
## 当前真实状态
- `apps/tui/src/main.rs` 当前仅内置 `sqlite-local``reporting-postgres``orders-mysql` 三个 profilePostgreSQL / MySQL 仍通过 `DBTOOL_TUI_POSTGRES_HOST``DBTOOL_TUI_POSTGRES_PORT``DBTOOL_TUI_MYSQL_HOST``DBTOOL_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.md``TUI_ACCEPTANCE_CHECKLIST.md``TUI_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 子单执行。