# 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 路径