# 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 重新定义结果结构 #### 阶段 3:TUI 作为流程承载层验证工作台形态 当前 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 或高级数据库管理能力带偏范围。**