feat: add dbtool tui live query workspace
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

- add shared db-app layer for connect/inspect/query/export events
- add dbtool-tui workspace with sqlite-local live flow and QA docs
- include host-validated acceptance updates for CMP-36

Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
Paperclip CTO
2026-03-27 17:17:20 +00:00
parent 7424491944
commit 19aeb7784b
12 changed files with 5006 additions and 4 deletions

View File

@@ -0,0 +1,80 @@
# dbtool-tui-v1 验收检查表(阶段 2 分层版)
## 当前结论
- 当前仍不能把 `dbtool-tui-v1` 整体判定为阶段 2 live integration 已全部通过;但 `CMP-36``sqlite-local` 真实 query / results / export 路径已经完成宿主机侧重建与验收回填。
- Product / PM 对齐依据:`[CMP-33](/CMP/issues/CMP-33)``[CMP-37](/CMP/issues/CMP-37)``plans/2026-03-27-dbtool-tui-v1-phase-2-scope.md`
- CTO 优先级对齐依据:第二阶段关键路径仍是 `[CMP-34](/CMP/issues/CMP-34)``[CMP-35](/CMP/issues/CMP-35)``[CMP-36](/CMP/issues/CMP-36)`QA 不应越过 shared app 契约提前宣告 live 通过。
- 2026-03-27 当前 runner 已回填 shell baseline 证据:`./target/debug/dbtool-tui``120x40``90x20` TTY 路径都可复现,退出码均为 `0`
- 当前 runner 不能把“源码可重建”记为通过:系统无 `cargo` / `rustc` / `rustfmt`,无法执行 `cargo check``cargo test -p dbtool-tui` 或重新生成二进制。
- `dbtool-tui` 是 TTY 程序;`./target/debug/dbtool-tui --help` 在无 TTY 场景下返回 `No such device or address`,这必须被记录为非交互限制,而不是被误记为 smoke 失败或帮助能力已通过。
## 验收分层
### A. Shell baseline当前可验
- [x] 预构建二进制 `target/debug/dbtool-tui` 存在
- [x] `printf 'q' | script -qec 'stty rows 40 cols 120; ./target/debug/dbtool-tui' /tmp/tui-normal.log` 可稳定启动并退出
- [x] 正常尺寸下可见六区布局:`Connections``Schema Browser``Query Editor``Results``Inspector``Status & Activity`
- [x] 正常尺寸下默认状态包含 `Ready``Execution Idle``Workspace`
- [x] 当前 shell 会展示静态连接 / schema / query / results 上下文,但这些仍是本地示例状态,不是 live shared app 数据
- [x] `printf 'q' | script -qec 'stty rows 20 cols 90; ./target/debug/dbtool-tui' /tmp/tui-small.log` 可稳定启动并退出
- [x] 小终端路径会显示 `Terminal Too Small`
- [x] 小终端路径会显示 `Resize the terminal`
- [x] shell baseline 与 live integration 的验收边界已在本文档中显式分层
- [ ] 当前 runner 上源码重建通过
- [ ] 当前 runner 上源码测试通过
- [ ] `dbtool-tui` 独立 release artifact smoke 已建立
### B. 第二阶段 live integration当前必须保持未通过
- [ ] `[CMP-34](/CMP/issues/CMP-34)` 已冻结 TUI live integration 契约
- [ ] `[CMP-35](/CMP/issues/CMP-35)``sqlite-local` 真实 connect / inspect 路径已完成源码重建并回填运行证据
- [x] `[CMP-36](/CMP/issues/CMP-36)``sqlite-local` 真实 query / results / export 路径已完成源码重建并回填运行证据
- [ ] 真实连接激活可区分 `loading` / `success` / `failure`
- [ ] 真实连接失败后,错误能在 `Inspector``Status & Activity` 中持续可见
- [ ] 真实 schema browser 可展示 schema / object / column 层级
- [ ] empty schema 与 restricted schema 在 live 数据下仍有明确文案
- [ ] `Query Editor` 可针对真实活动连接执行查询
- [x] 真实查询可区分 `running` / `success` / `empty` / `error`
- [ ] 真实结果区在常见终端尺寸下仍可浏览
- [x] export 结果会给出明确成功 / 失败反馈
- [ ] 全路径复用 `crates/db-app`,不通过 CLI 文本解析旁路取数
### C. 非交互 / 发布前路径(当前必须显式保留限制)
- [x] QA 已确认 `dbtool-tui` 需要 TTY不能用 `--help` 替代交互 smoke
- [ ] GitHub Actions 已覆盖 `dbtool-tui` smoke
- [ ] 非开发者可按 runbook 从 packaged binary 复现 TUI 验收
- [ ] TUI 专属 demo / seed / Docker 路径已建立
- [ ] release artifact / packaged binary 在目标平台有真实执行证据
## 当前 blocker
- [ ] `[CMP-34](/CMP/issues/CMP-34)` 仍在 `in_progress`
- [ ] `[CMP-35](/CMP/issues/CMP-35)` 仍在 `in_progress`,且当前 runner 缺少 Rust 工具链,无法回填重建证据
- [x] `[CMP-36](/CMP/issues/CMP-36)` 已完成宿主机侧构建与验收回填;当前 agent runner 仍缺 Rust 工具链,但不再阻塞该 issue 关闭
- [ ] `.github/workflows/release-smoke.yml` 当前只覆盖 `dbtool`
- [ ] 仓库仍无 TUI 专属 demo / seed / Docker live 验证路径
- [ ] 当前 runner 缺 `cargo` / `rustc` / `rustfmt`,无法执行源码重建、测试与格式化
## 2026-03-27 已回填证据
- 正常尺寸 shell smoke`printf 'q' | script -qec 'stty rows 40 cols 120; ./target/debug/dbtool-tui' /tmp/tui-normal.log`
- 正常尺寸 shell 结果:退出码 `0`;日志包含六区布局、`Ready``Execution Idle`、静态 connections/schema/results 文案
- 小终端 shell smoke`printf 'q' | script -qec 'stty rows 20 cols 90; ./target/debug/dbtool-tui' /tmp/tui-small.log`
- 小终端 shell 结果:退出码 `0`;日志包含 `Terminal Too Small``Resize the terminal`
- 非交互限制:`./target/debug/dbtool-tui --help` 返回 `Error: Os { code: 6, kind: Uncategorized, message: "No such device or address" }`
- 源码状态盘点:`apps/tui/src/main.rs` 已引入 `sqlite-local` 的真实 connect / inspect / query / results / export worker 接线,以及内联测试覆盖
- 源码验证限制:当前 runner 无 `cargo` / `rustc`,因此无法在本次回合执行 `cargo check``cargo test -p dbtool-tui` 或重新生成 `target/debug/dbtool-tui`
## 当前不应误判为已通过的能力
- [ ] 真实 shared app 连接切换
- [ ] 真实 inspect / schema browser
- [ ] 真实 query 执行
- [ ] 真实 empty / error 结果处理
- [ ] 真实 export 反馈
- [ ] TUI CI smoke
- [ ] TUI release artifact smoke
- [ ] TUI demo / seed / Docker 路径