225 lines
6.7 KiB
Markdown
225 lines
6.7 KiB
Markdown
# dbtool-usable-v1 Product Brief
|
||
|
||
日期:2026-03-27
|
||
作者:Product Manager
|
||
|
||
## 1. 文档目的
|
||
|
||
这份文档用于冻结 `dbtool-usable-v1` 的当前产品边界,回答四个问题:
|
||
|
||
- 现有 demo 已经具备什么能力
|
||
- 当前版本的真实用户是谁
|
||
- “usable-v1” 在本阶段到底意味着什么
|
||
- CLI demo 应如何演进到更完整的产品界面与产品流程
|
||
|
||
配套控制文档:
|
||
|
||
- `PRODUCT_REQUIREMENTS.md`
|
||
- `DATABASE_SUPPORT_MATRIX.md`
|
||
- `CTO_REQUIREMENTS_HANDOFF.md`
|
||
- `ACCEPTANCE_CHECKLIST.md`
|
||
|
||
## 2. 当前 demo 已有能力
|
||
|
||
截至 2026-03-27,仓库已经具备以下用户可见基线:
|
||
|
||
- `dbtool` CLI 已提供 `connect`、`inspect`、`query`、`export`
|
||
- PostgreSQL、MySQL、SQLite 都已有核心 happy path
|
||
- 支持 inline SQL、`.sql` 文件、参数化查询
|
||
- 支持导出 CSV / JSON
|
||
- 支持 `--password-env` 注入密码,输出保持脱敏
|
||
- 仓库已包含 demo fixtures、smoke runbook、release runbook 和 QA 清单
|
||
|
||
同时,仓库内已出现两类后续产品演进基础,但它们**不改变 usable-v1 当前交付面**:
|
||
|
||
- `crates/db-app`:CLI / TUI 可复用的共享应用层
|
||
- `apps/tui` 与 `gui/`:工作台形态与信息架构验证资产
|
||
|
||
结论:当前不是“从零定义产品”,而是“把已存在 demo 收敛成明确可交付边界”。
|
||
|
||
## 3. 目标用户
|
||
|
||
### 主用户
|
||
|
||
第一阶段主用户是熟悉终端的技术操作型用户:
|
||
|
||
- 后端工程师
|
||
- 数据工程师
|
||
- QA 工程师
|
||
- 支持 / 运维排障人员
|
||
|
||
### 不优先服务的用户
|
||
|
||
- 需要图形化数据库管理台的非终端用户
|
||
- 需要完整 DBA 能力的高级数据库管理员
|
||
- 需要团队共享工作台、权限编排或云端协作的组织型用户
|
||
|
||
## 4. 真实使用场景
|
||
|
||
### 场景 A:跨库排障
|
||
|
||
用户需要在 PostgreSQL 或 MySQL 中快速确认某个异常是否由数据导致:
|
||
|
||
1. 指向目标数据库
|
||
2. 验证能否连通
|
||
3. 查看 schema / table / column
|
||
4. 执行验证 SQL
|
||
5. 导出结果作为问题证据
|
||
|
||
### 场景 B:SQLite 本地验证
|
||
|
||
用户拿到一个 SQLite 文件,需要快速核对数据内容:
|
||
|
||
1. 指向本地文件
|
||
2. 查看可用对象
|
||
3. 运行查询
|
||
4. 导出结果给 QA 或研发
|
||
|
||
### 场景 C:统一心智替代多工具切换
|
||
|
||
用户不想在 `psql`、MySQL 工具链和 SQLite 工具之间切换,希望用一套统一命令完成最常见操作。
|
||
|
||
## 5. 最重要的产品流程
|
||
|
||
usable-v1 的核心流程固定为:
|
||
|
||
`choose target -> connect -> inspect -> query -> export`
|
||
|
||
如果这条路径不能在三种目标数据库上稳定成立,则当前阶段不能称为“真实可用”。
|
||
|
||
## 6. usable-v1 定义
|
||
|
||
本阶段“真实可用”不是指:
|
||
|
||
- 支持所有数据库
|
||
- 覆盖所有数据库管理能力
|
||
- 提供完整 GUI / IDE 体验
|
||
|
||
本阶段“真实可用”指:
|
||
|
||
- 用户能在本地 CLI 中稳定完成 `connect -> inspect -> query -> export`
|
||
- PostgreSQL、MySQL、SQLite 三库都达到同一核心闭环标准
|
||
- 失败路径可理解、可行动、且不会泄露密码
|
||
- README、帮助文案、QA 验收和实际行为一致
|
||
|
||
## 7. 当前阶段范围
|
||
|
||
### In Scope
|
||
|
||
- 本地 CLI 作为正式交付面
|
||
- PostgreSQL / MySQL / SQLite 三库核心闭环
|
||
- ad hoc 连接输入
|
||
- schema / table / column inspect
|
||
- inline SQL 与 `.sql` 文件执行
|
||
- 参数化查询
|
||
- 结果导出到 CSV / JSON
|
||
- 清晰的执行结果与错误反馈
|
||
|
||
### Non-Goals
|
||
|
||
- GUI 正式交付
|
||
- 新数据库扩容
|
||
- saved profile 用户工作流
|
||
- import、migration、schema editing
|
||
- transaction UX
|
||
- stored procedure / function 管理
|
||
- 权限 / 用户管理
|
||
- backup / restore
|
||
- dashboard、BI、AI 助手、复杂 IDE 能力
|
||
- 团队协作空间或云端同步
|
||
|
||
## 8. 数据库支持边界
|
||
|
||
当前数据库支持等级以 `DATABASE_SUPPORT_MATRIX.md` 为准,摘要如下:
|
||
|
||
| 数据库 | 当前等级 | usable-v1 必须做到 |
|
||
| --- | --- | --- |
|
||
| PostgreSQL | Tier A | connect、inspect、query、export 核心闭环可用 |
|
||
| MySQL | Tier A | connect、inspect、query、export 核心闭环可用 |
|
||
| SQLite | Tier A | connect、inspect、query、export 核心闭环可用 |
|
||
|
||
补充边界:
|
||
|
||
- Tier A 只代表核心闭环完整,不代表数据库管理全功能
|
||
- PostgreSQL / MySQL / SQLite 都是当前承诺,不是“先做一库,其他顺带”
|
||
- SQL Server、MariaDB、DuckDB 仅保留为后续候选
|
||
|
||
## 9. usable-v1 验收标准
|
||
|
||
### 全局标准
|
||
|
||
- 三库共享同一套产品心智:`connect`、`inspect`、`query`、`export`
|
||
- 所有失败都必须返回非成功退出并给出可行动提示
|
||
- 所有输出都不得泄露密码或明文秘密
|
||
- 数据库差异必须被文档化,但不能破坏主流程
|
||
|
||
### Connect
|
||
|
||
- 用户可显式提供目标数据库和连接输入
|
||
- 成功时能确认目标已连接
|
||
- 失败时能区分认证、网络、不可达目标和 SQLite 路径问题
|
||
|
||
### Inspect
|
||
|
||
- 用户可查看 schema 或等价顶层对象
|
||
- 用户可继续查看 table / view
|
||
- 用户可查看列名、类型、可空性与主键信号
|
||
- 空 scope 需给出清晰反馈
|
||
|
||
### Query
|
||
|
||
- 支持 inline SQL 与 `.sql` 文件
|
||
- 有结果集时输出可读表格或结构化结果
|
||
- 无结果集时提供执行摘要
|
||
- 空结果是成功,不是故障
|
||
- SQL / 权限 / 驱动错误要明确
|
||
|
||
### Export
|
||
|
||
- 只承诺结果集导出到 CSV / JSON
|
||
- 导出路径必须显式
|
||
- 不允许静默覆盖已有文件
|
||
- 导出成功与失败都必须可判断
|
||
|
||
## 10. CLI demo 如何演进为产品界面 / 产品流程
|
||
|
||
### 阶段 1:稳定 CLI 产品语义
|
||
|
||
- 固定 `connect / inspect / query / export` 的产品对象
|
||
- 固定 `ready / success / empty / error / exported` 等用户可感知状态
|
||
- 保证文档、帮助和行为一致
|
||
|
||
### 阶段 2:共享应用层复用
|
||
|
||
- 继续把编排逻辑收敛到 `crates/db-app`
|
||
- 让连接、inspect、query、export 输出成为跨界面复用对象
|
||
|
||
### 阶段 3:TUI 验证工作台流程
|
||
|
||
- 用 TUI 验证单连接工作台、schema browser、query editor、results、status
|
||
- TUI 是流程承载层,不是当前 CLI 范围扩张入口
|
||
|
||
### 阶段 4:未来 GUI 复用同一对象模型
|
||
|
||
- GUI 只是在更强承载层上复用既有产品语义
|
||
- 不应借 GUI 开发把范围扩张到 migration、管理面或 BI
|
||
|
||
## 11. 给 CTO 的交接边界
|
||
|
||
CTO 拆任务时应优先围绕:
|
||
|
||
- 三库核心闭环质量收口
|
||
- 错误反馈和失败路径可读性
|
||
- README / 帮助 / QA 验收一致性
|
||
- 共享应用层对象稳定化
|
||
|
||
CTO 不应在当前阶段混入:
|
||
|
||
- 新数据库扩容
|
||
- 高级数据库管理能力
|
||
- 为未来 GUI/TUI 预埋超出本期的产品承诺
|
||
|
||
## 12. 一句话定义
|
||
|
||
`dbtool-usable-v1` 的完成标准是:**PostgreSQL、MySQL、SQLite 三库都能以一致心智稳定跑通 `connect -> inspect -> query -> export`,且范围没有扩张到 GUI 正式交付或高级数据库管理能力。**
|