Files
dbtool-cli-v1/TUI_PRODUCT_REQUIREMENTS.md
Paperclip CTO a28dab4cd9
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): package gui-host validation snapshot
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-31 10:21:36 +00:00

285 lines
8.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# dbtool-tui-v1 Product Requirements
日期2026-03-26
作者Product Manager
对应 issue`CMP-24`
## 1. 文档目的
这份文档定义 `dbtool-tui-v1` 的首版产品范围、用户流程、最小功能清单和验收标准,用于:
- 让 CTO 可以继续拆工程 issue
- 让 Frontend / Backend 对 TUI 边界保持一致
- 让 QA 能建立独立于 CLI 的验收路径
## 2. 当前真实状态
截至 2026-03-26仓库已经具备
- `apps/tui` 终端工作台 shell baseline
- `crates/db-app` 作为 CLI / TUI 共享应用编排层
- `TUI_BACKEND_CONTRACT.md``TUI_ACCEPTANCE_CHECKLIST.md``TUI_TEST_STRATEGY.md` 等配套文档
当前 shell baseline 已验证:
- 六区布局
- 键盘焦点切换
- 顶部视图切换
- `Ready` / `Loading` / `Error` 基础状态
- 小终端降级提示
当前 shell baseline **尚不等于 TUI V1 完成**。它只是终端工作台壳层,不包含真实数据库工作流闭环。
## 3. 目标用户
### 主用户
已经熟悉命令行、但希望在一个终端会话里连续完成 inspect / query / result 浏览的技术操作者:
- 后端工程师
- 数据工程师
- QA 工程师
- 技术支持 / 排障工程师
### 与 CLI 用户的关系
CLI 更适合:
- 一次性命令执行
- shell automation
- CI / smoke / 脚本调用
TUI 更适合:
- 在同一终端会话中反复查看 schema、改 SQL、跑查询、读结果
- 降低重复输入命令的成本
- 提高排障和验证过程中的上下文连续性
## 4. 产品问题定义
CLI 已经验证了 `connect -> inspect -> query -> export` 的产品语义,但在高频排障场景下,操作者仍要不断重复:
- 重输命令
- 来回切换 schema / table 上下文
- 重新打开 SQL 文件或复制 SQL
- 在输出滚动中回看错误和结果
`dbtool-tui-v1` 要解决的问题不是“替代桌面 GUI”而是把已成立的 CLI 核心流程,升级成一个**键盘优先、上下文连续、仍然运行在终端里的单会话工作台**。
## 5. 最重要的用户场景
### 场景 A排障查询
后端或支持工程师需要在一个终端会话内快速定位异常数据:
1. 选择一个已有连接目标
2. 验证并激活当前连接
3. 浏览 schema / table / column
4. 把目标对象上下文带入 query editor
5. 运行 SQL
6. 在结果区和 inspector 中查看结果、空结果或错误
7. 需要时导出结果
### 场景 B测试验证
QA 工程师需要在终端里连续验证多个数据点:
1. 切换到目标连接
2. 通过 schema browser 定位对象
3. 多次调整 SQL
4. 查看结果是否符合预期
5. 导出一份结果作为证据
如果这些场景仍然要求用户频繁退回 CLI 重新拼命令TUI V1 就没有成立。
## 6. 核心用户流程
`dbtool-tui-v1` 的首版主流程应是:
`select target -> activate connection -> inspect objects -> edit query -> run query -> review result/error -> export`
拆成界面动作:
1.`Connections` 中看到当前可切换目标
2. 选择并激活一个连接目标
3.`Schema Browser` 中逐层浏览 schema / table / column
4.`Query Editor` 中编写或修改 SQL
5. 触发执行
6.`Results` 中读取结果,在 `Inspector` / `Status & Activity` 中读取状态与错误
7. 对当前结果集触发导出
## 7. 首版范围
### In Scope
- 终端中的单会话数据库工作台
- 单一活动连接上下文
- 键盘驱动的连接选择与激活
- live schema / table / column 浏览
- 最小可用 query editor
- live query 执行
- 结果表格浏览
- 空结果、执行中、执行失败、执行成功的明确反馈
- 对当前结果集发起 export
- 基于 `db-app` 的共享结果对象和错误对象
### 最小功能范围清单
- `Connections`
- 展示当前会话内可切换目标
- 明确当前激活目标
- 明确失败目标或不可用目标
- `Schema Browser`
- 浏览 schema / table / column
- 反映当前激活连接上下文
- `Query Editor`
- 至少支持查看、输入、编辑和再次执行 SQL
- 不要求完整 IDE 能力
- `Results`
- 展示列头、结果行、空结果状态
- 对较长结果保持基本可读和可滚动
- `Inspector / Status & Activity`
- 展示连接摘要
- 展示执行状态
- 展示错误摘要和恢复提示
- `Export`
- 对当前结果集触发导出
- 明确格式、路径、成功或失败反馈
## 8. 非目标
以下内容不进入 `dbtool-tui-v1`
- Desktop GUI / Web GUI
- 多连接并发在线工作区
- 用户可见的持久化 profile 管理
- 新建复杂连接配置中心
- 多 query tab
- query history 持久化
- SQL autocomplete / formatter / explain plan
- migration / schema editing
- import
- 权限 / 用户管理
- backup / restore
- dashboard、图表、BI 分析面板
- AI 助手
## 9. CLI、TUI、后续版本的边界
### 应保留在共享 `db-app` / core 的
- 连接测试
- inspect 结构
- query 请求与结果
- export 请求与结果
- 错误分类
- 脱敏规则
### 应保留在 CLI 的
- 一次性脚本执行
- shell automation
- 原始 flags / file path 输入
- 机器可组合的命令式入口
### 应进入 TUI V1 的
- 单会话连接切换
- 面板化 inspect / query / result 浏览
- 错误与状态的持续可见反馈
- 对当前结果的交互式导出动作
### 留到后续版本的
- 持久化连接管理
- 多标签页工作流
- 高级 SQL 编辑器能力
- 更复杂的历史、搜索和协作能力
## 10. 验收标准
### 全局验收
- TUI V1 必须仍然复用 CLI 已验证的产品语义,而不是重造一套数据库行为
- TUI V1 必须是键盘优先的完整终端路径,不依赖鼠标
- TUI V1 必须有独立于 CLI 的验收和回归路径
- TUI V1 不能被误写成桌面 GUI 或完整数据库管理平台
### 连接工作流验收
当以下条件成立时,连接流程可接受:
- 用户可以看到当前会话中可选的连接目标
- 用户可以激活一个目标并得到明确成功 / 失败状态
- 当前激活连接在 `Connections``Inspector``Status & Activity` 中保持一致
- 失败连接不会只闪现一次错误,而是持续显示可读问题
### Schema Browser 验收
当以下条件成立时schema 浏览流程可接受:
- 激活连接后,用户可以浏览 schema 或等价顶层对象
- 用户可以进一步浏览 table / view 和 column
- 当前浏览结果与激活连接上下文一致
- 空 schema / 空表路径给出明确反馈,而不是空白区域
### Query 验收
当以下条件成立时query 流程可接受:
- 用户可以在 editor 中编写或修改 SQL
- 用户可以触发执行并看到执行中状态
- 成功、有结果、空结果、失败这四类结果可以一眼区分
- 失败时错误摘要在 `Inspector``Status & Activity` 保持可见
- TUI 不要求首版拥有高级编辑器能力,但必须保证基本输入和重复执行顺畅
### Results 验收
当以下条件成立时,结果浏览可接受:
- 结果区域能展示列头和结果行
- 空结果不会被误判成执行失败
- 结果较长时仍有基本浏览能力
- 当前结果与最近一次成功执行保持一致
### Export 验收
当以下条件成立时,导出流程可接受:
- 用户可以从当前结果集触发导出
- 用户能明确知道导出格式和输出路径
- 导出成功和失败有清晰反馈
- 导出失败不会伪装成成功
## 11. 成功标准
`dbtool-tui-v1` 在产品上可以视为首版成立,当且仅当:
- 用户能在一个终端会话里完成连接切换、schema 浏览、query 执行、结果查看和导出
- Frontend、Backend、QA 对 TUI 范围没有歧义
- TUI 明确复用 `db-app` 契约,而不是解析 CLI 文本
- CLI、TUI、GUI 的边界没有被混淆
- QA 可以独立建立 TUI 验收矩阵,而不是借用 CLI 通过来替代 TUI 通过
## 12. 给 CTO 的交接说明
当前 PM 决策是:
- `dbtool-tui-v1` 的目标不是 shell baseline 本身,而是“单会话终端数据库工作台”
- 当前必须优先围绕真实连接、schema、query、results、export 五段流程收口
- 不应把持久化连接管理、多标签页和高级编辑器能力塞进首版
- `db-app` 是 TUI 的唯一共享执行入口,不应绕过
CTO 后续拆解应围绕:
- 连接激活路径
- schema browser 接入
- query / results / export 接入
- 错误与状态一致性
- QA 回归闭环