Files
dbtool-cli-v1/CTO_REQUIREMENTS_HANDOFF.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

252 lines
7.3 KiB
Markdown
Raw 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-cli-v1 CTO 需求交接说明
日期2026-03-26
作者Product Manager
## 1. 目的
这份文档是当前阶段给 CTO 的执行型交接说明,用来回答三件事:
- 当前 demo 到底已经有什么
- V1 到底要交付什么、不交付什么
- CLI demo 应如何演进为更完整的产品流程,而不发生范围失控
如需查看完整背景,请同时参考:
- `PRODUCT_REQUIREMENTS.md`
- `DATABASE_SUPPORT_MATRIX.md`
- `apps/tui/README.md`
- `gui/desktop-foundation.md`
## 2. 当前 demo 能力盘点
截至 2026-03-26仓库已经不是“空白项目”而是一个可运行的跨数据库 demo
- `apps/cli` 已提供 `connect``inspect``query``export` 四条主命令
- 当前支持 PostgreSQL、MySQL、SQLite
- 已支持 inline SQL 与 `.sql` 文件执行
- 已支持参数化查询
- 已支持导出 CSV / JSON
- 已支持 `--password-env` 注入密码,输出保持脱敏
- 仓库内已有 smoke / release / QA 相关 runbook 和检查清单
同时,仓库已经出现两类“未来产品面”基础,但它们**不改变 CLI V1 首发范围**
- `crates/db-app`:共享应用编排层基础,说明产品对象已开始从 CLI 适配层抽离
- `apps/tui`:终端工作台 shell baseline当前只验证布局、焦点、状态和键盘路径
结论:当前阶段不是“发散功能想法”,而是“冻结首版产品边界,稳住三库共同主流程,并给后续界面演进留下统一对象模型”。
## 3. 目标用户
### 主用户
具备终端操作能力、但不想在不同数据库工具之间来回切换的技术操作型用户:
- 后端工程师
- 数据工程师
- QA / 支持工程师
### 核心需求
用户需要一套一致的本地工具,在 PostgreSQL、MySQL、SQLite 之间稳定完成:
1. 验证连接
2. 查看结构
3. 执行 SQL
4. 导出结果
当前产品卖点是**一致性与低切换成本**,不是“替代所有数据库管理工具”。
## 4. 最重要的用户场景
### 场景 A线上/测试环境数据排查
后端或支持工程师要确认某个异常是不是数据问题:
1. 指向 PostgreSQL 或 MySQL 目标
2. 验证连接成功
3. inspect schema / table / column
4. 执行针对性 SQL
5. 导出 JSON / CSV 作为问题证据
### 场景 B本地 SQLite 文件验证
QA 拿到一个 SQLite 文件,需要快速确认内容:
1. 指向本地文件
2. 查看可用表
3. 运行验证 SQL
4. 导出记录用于测试结论
如果以上场景不顺V1 就不算完成。
## 5. V1 核心流程
当前必须围绕这条产品主路径定义与验收:
`choose target -> connect -> inspect -> query -> export`
细化为:
1. 选择一个受支持的数据库目标
2. 明确知道是否连通成功
3. 定位 schema / table / column
4. 执行 inline SQL 或 `.sql` 文件
5. 读取结果或执行摘要
6. 在需要时导出为 CSV / JSON
这条流程是 CLI、未来 TUI、未来 GUI 共享的产品骨架。
## 6. 当前阶段范围
### In Scope
- 本地 CLI 首发面
- PostgreSQL / MySQL / SQLite 三库 Tier A 核心闭环
- 每次显式传入连接目标
- schema / table / column inspect
- inline SQL 与 `.sql` 文件执行
- 参数化查询
- 结果导出到 CSV / JSON
- 清晰、可行动、且不泄露秘密的错误反馈
### 当前阶段产品边界
- “完整支持”指核心闭环完整,不指 DBA 全家桶完整
- CLI 是当前正式交付面TUI 和 GUI 只允许做后续演进准备
- 优先保证一致性、正确性和失败路径,而不是追求快捷功能堆叠
## 7. 非目标
以下内容明确不进入当前 V1
- Desktop GUI 或 Web GUI 正式交付
- 新数据库扩容到 PostgreSQL / MySQL / SQLite 之外
- 用户可见的 saved profile 管理
- import
- migration / schema editing 工作流
- 事务控制 UX
- 存储过程 / function 管理 UX
- 权限 / 用户管理
- 备份 / 恢复
- 图表、dashboard、BI 视图
- AI 助手、自动补全、Explain 可视化、复杂 query history
- 多连接并发会话与团队协作空间
## 8. 验收标准
### 全局
- 三库必须共享同一套操作心智:`connect``inspect``query``export`
- 失败必须返回非成功退出并给出可行动提示
- 输出不得泄露密码
- 数据库差异必须有记录,但不能破坏主流程
### Connect
- 用户能提供目标类型与连接输入并得到明确成功/失败反馈
- 认证错误、网络错误、不可达目标、SQLite 路径错误要可区分
- 成功信息要能确认目标,但不泄露秘密
### Inspect
- 用户能先看到 schema 或等价顶层对象
- 用户能继续看到 table / view
- 用户能查看列名、类型、可空性以及主键信号
- 空库或空 scope 必须有清晰反馈,而不是堆栈信息
### Query
- 支持 inline SQL 与 `.sql` 文件
- 有结果集时可读地输出列与行
- 无结果集时给出执行摘要与影响行数
- SQL 错误、权限失败、执行失败要有明确反馈
- 空结果是成功,不是工具故障
### Export
- 仅承诺导出结果集到 CSV / JSON
- 导出路径必须显式
- 不允许静默覆盖已有文件
- 导出结果的行数必须和查询结果一致
- UTF-8 文本与多语言内容应保持稳定
## 9. CLI demo 如何向产品界面 / 产品流程演进
### 演进原则
- 不另造一套产品语言
- 不借界面开发偷偷扩 scope
- 先稳定共享对象,再增加交互层
### 建议演进顺序
#### 阶段 1稳住 CLI 产品语义
目标:
- 固定 `connect / inspect / query / export` 的产品对象
- 固定空结果、失败、导出成功等标准状态
- 保证 README、帮助文案、QA 验收与实际行为一致
#### 阶段 2以共享应用层承接跨界面复用
目标:
- 继续把 CLI adapter 中的编排职责收敛到 `crates/db-app`
- 让连接摘要、inspect payload、query result、export result 变成可复用对象
- 避免未来 TUI / GUI 重新定义结果结构
#### 阶段 3TUI 作为流程承载层验证工作台形态
当前 TUI 只应承接:
- 单连接工作台
- schema browser
- query editor 容器
- results / inspector / status
它是产品流程验证层,不是 V1 CLI 发布阻塞项,也不是新功能扩张入口。
#### 阶段 4未来桌面 GUI 复用同一对象模型
未来 GUI 应直接映射以下稳定对象:
- `connect` -> Connection Manager / Test Connection
- `inspect` -> Schema Browser / Object Inspector
- `query` -> Query Editor / Run Action
- `export` -> Export Flow / Export Feedback
GUI 的职责是提升承载方式,不是改写产品流程。
## 10. 对 CTO 的拆解要求
CTO 拆任务时,请围绕以下边界:
### 必须优先拆的
- 三库核心闭环质量收口
- 失败路径与错误可读性收口
- 文档 / 帮助 / QA 验收一致性
- `db-app` 共享对象与执行结果的稳定化
### 不应混入当前阶段的
- 新数据库接入
- 管理面能力扩张
- 为 GUI/TUI 预埋超出 V1 的高级功能
- 把原始 SQL 执行误扩成 migration / admin 产品
### CTO 仍可自主决定的实现项
- 命令命名与 flag 细节
- crate 边界与内部结构
- 连接配置落地方式
- 输出渲染方式
- 打包与发布实现
## 11. 一句话交付定义
`dbtool-cli-v1` 首发完成的标准是:**PostgreSQL、MySQL、SQLite 三库都能稳定完成 `connect -> inspect -> query -> export` 核心闭环,且没有被 GUI/TUI 或高级数据库管理能力带偏范围。**