- 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>
dbtool-tui Shell
apps/tui 提供 dbtool-tui-v1 的终端工作台实现。
当前范围
当前实现包含:
- 独立
dbtool-tui应用入口 - 稳定的六区工作台布局
- 顶部视图切换与底部快捷键提示
- 连接管理列表、当前连接上下文和失败连接可视化区分
- 键盘驱动的连接切换工作流,以及连接
loading / success / failure可视状态 sqlite-local的真实 connect / inspect 路径,schema browser 可展示 live schema / table / columnsqlite-local的真实 query / results / export 工作流,直接复用crates/db-app- 查询草稿切换、基础键入编辑、执行触发与执行状态反馈
- 成功 / 空结果 / 错误三类查询结果展示,以及宽表列分页提示
- 当前结果集导出到
/tmp的 CSV / JSON 反馈 - 面板焦点管理
- 列表选择与基础键盘导航
Ready/Loading/Error三种基础界面状态- 终端尺寸过小的显式降级提示
当前不包含:
- 真实网络数据库连接激活
- 多连接并发会话
- 自定义新增 / 编辑连接表单
- 完整 SQL 编辑器能力
运行方式
在项目根目录执行:
cargo run -p dbtool-tui
当前默认 live 路径是 sqlite-local,底层使用 examples/tmp/dbtool-demo.sqlite。
启动后会自动对 sqlite-local 执行 connect + inspect;切换连接时会重新触发 live activation。
如果当前 runner 缺少 Rust 工具链,可先使用已有产物:
./target/debug/dbtool-tui
键盘交互
Tab/Shift+Tab:切换焦点面板←/→或1/2/3:切换顶部视图↑/↓:移动连接、schema/object 或结果行选择Enter:在Connections焦点下激活所选连接;在Schema Browser焦点下展开 / 折叠 schema 或确认对象;在Query Editor焦点下执行当前查询i:在Query Editor中进入基础插入模式x:将当前结果集导出为 CSV 到/tmpj:将当前结果集导出为 JSON 到/tmp[/]:在Query Editor中切换查询草稿;在Results中横向翻页宽表列r:清空当前 query / export 反馈,回到ReadyEsc:回到默认工作台q:退出
快速测试路径
如果你只是想快速走通一遍当前可见工作流,推荐按下面步骤操作:
- 启动
cargo run -p dbtool-tui - 等待默认连接
sqlite-local从Loading变成可用状态 - 按
Tab把焦点切到Schema Browser - 用
↑/↓选择main.accounts或main.tickets - 按
Tab切到Query Editor - 先不要按
i,直接按[/]切换草稿 - 选中
account_ticket_summary.sql后按Enter,确认成功结果 - 切到
empty_recent_tickets.sql后按Enter,确认空结果 - 切到
bad_syntax.sql后按Enter,确认错误结果持续留在工作区 - 切到
ticket_export_preview.sql后按Enter,成功后按x或j,确认导出反馈和/tmp路径
常见困惑
Inserted a newline. Press Esc, then Enter to run.:表示你已经按了i进入编辑模式,然后按了Enter;这时Enter不会执行查询,而是插入换行。按Esc退出编辑模式后,再按Enter才是执行查询。- 当前不能自定义输入数据库连接:这是当前范围外能力。当前 TUI 只提供内置的
sqlite-local、Postgres、MySQL 示例连接,用于验证工作台流程和状态反馈。 - 如果觉得界面文字偏多:本轮已先做一轮 Help / Status / Connections 文案收敛;当前版本仍偏向 QA / 契约验证界面,后续再继续收敛文案。
界面验收
QA 可按以下步骤复核:
- 启动后能看到
Connections、Schema Browser、Query Editor、Results、Inspector、Status & Activity六个区域 - 默认活动连接应为
sqlite-local,且Connections列表中能区分当前连接、可选连接和失败连接 - 使用
2进入Connections视图后,可用↑/↓移动连接选择 - 在
Connections焦点下按Enter激活失败连接时,Status & Activity与Inspector会持续显示可读错误,而不是只给瞬时提示 - 启动后或回到
sqlite-local后,连接状态会先进入Loading,随后在Schema Browser焦点下可浏览main.accounts和main.tickets - 选中对象后,
Results会展示列定义,Inspector会展示当前 schema / object / column 上下文 - 在
Query Editor焦点下可用[/]切换查询草稿,i进入基础输入模式,Enter触发执行 account_ticket_summary.sql应返回真实结果行,empty_recent_tickets.sql应显示空结果,bad_syntax.sql应显示结构化错误ticket_export_preview.sql执行成功后,按x或j应在工作区内看到导出成功反馈和/tmp输出路径- 成功结果在
Results中以表格方式展示,宽表会给出列分页提示,长结果仍可用↑/↓浏览 - 错误状态会保留可读错误信息,不退化成空白或瞬时提示
- 使用
Tab/Shift+Tab时,当前焦点区域边框高亮会移动 - 使用
←/→或1/2/3时,中间内容区会随视图切换 - 使用
r时,query / export 反馈会清空并回到Ready - 将终端缩小到低于
100x28时,会出现尺寸不足提示而不是错乱布局 - 使用
Esc可恢复默认工作台,使用q可稳定退出
当前限制
sqlite-local是当前唯一可在本地 runner 直接完成 live connect / inspect / query / export 的路径- Postgres / MySQL 连接仍以可读失败态保留,用于验证多目标上下文和错误持续可见性
- 当前 runner 若缺少
cargo,需要使用已有二进制做交互 smoke;源码重建与测试需在具备 Rust 工具链的环境完成
共享 QA 文档:
TUI_ACCEPTANCE_CHECKLIST.mdTUI_TEST_STRATEGY.mdTUI_REGRESSION_CHECKLIST.md