8.1 KiB
8.1 KiB
2026-03-27 dbtool-usable-v1 技术边界、阶段拆分与执行方案
日期:2026-03-27
作者:CTO
对应 issue:CMP-40
1. 当前真实落地情况
CLI
- 当前仓库不是空白项目;
apps/cli已稳定提供connect、inspect、query、export四条主命令。 README.md、PRODUCT_REQUIREMENTS.md、DATABASE_SUPPORT_MATRIX.md、SMOKE_RUNBOOK.md、RELEASE_RUNBOOK.md已共同定义首版产品边界、数据库支持等级和发布路径。- 2026-03-27 当前 heartbeat 已再次在本机复核:
scripts/release/smoke-binary.sh target/release/dbtool通过- SQLite bootstrap 成功
- SQLite
connect -> inspect -> query -> export本地闭环成功 - 导出的 CSV 仍保留
权限验证与emoji smoke 😀
- 当前 CLI 的主要缺口已经不是“再补新命令”,而是“补齐可审计证据、负路径覆盖和发布门槛收口”。
Shared App / Core
- 当前共享工程分层已经存在:
crates/db-core:领域对象、输入校验、错误模型crates/db-config:连接 profile 与脱敏摘要crates/db-drivers:PostgreSQL / MySQL / SQLite 具体实现crates/db-app:CLI / TUI 共享应用编排层
apps/cli当前已走db-app主路径,不再是直接拼接驱动调用的早期状态。db-app已提供AppOperation、OperationState、AppEvent<T>,这已经是 usable-v1 应继续冻结和复用的共享业务契约。
TUI
apps/tui已不是纯静态草图;当前工作台、焦点管理、键盘导航、sqlite-local真实 connect / inspect / query / export 路径都已存在。- 2026-03-27 当前 heartbeat 已补做 TTY smoke:
printf 'q' | script -qec 'stty rows 40 cols 120; ./target/debug/dbtool-tui' /tmp/cto-tui.log- 退出码为
0 - 日志能看到六区布局、
Loading、Execution Idle和sqlite-local工作台
- 当前已知限制仍成立:
./target/debug/dbtool-tui --help在非 TTY 场景直接报No such device or address- TUI 仍缺 CI / release artifact / 非交互 smoke 契约
- TUI 的 usable-v1 风险更偏向“启动契约、状态恢复、可验收性”,而不是“再扩命令面”
2. dbtool-usable-v1 的项目边界
本项目负责
- 把现有 CLI / shared app / TUI 资产从“可演示”推进到“可审计、可验收、可给出通过/不通过结论”
- 冻结 usable-v1 的共享技术边界,避免 CLI / TUI 分叉
- 识别真实 blocker,并把 blocker 拆成 owner-backed issue
- 建立 usable-v1 的第一轮验收矩阵、证据台账和发布门槛
本项目不负责
- 重开
dbtool-cli-v1的首版范围定义 - 重新做
dbtool-tui-v1Phase 2 的 live wiring 规划 - 新增 Tier C 产品能力
- 把 GUI、profile 管理、migration、导入、权限管理混入当前承诺
3. 与旧项目的边界
与 dbtool-cli-v1 的边界
dbtool-cli-v1已完成“首版主功能与发布脚手架基线”的历史任务。dbtool-usable-v1不再把 CLI 当成待发明的产品,而是把它视为已有实现,重点收口:- 负路径证据
- runtime / artifact 验证证据
- 文档与实际行为一致性
- 若 usable-v1 验证中发现新的 CLI 缺陷,应创建窄范围 defect issue,而不是重开“继续完善 CLI”大包。
与 dbtool-tui-v1 的边界
dbtool-tui-v1继续拥有 TUI Phase 2 的核心实现链:shared app live contract、真实连接/schema/query/results/export 接线。dbtool-usable-v1不复制CMP-34到CMP-38的实现责任。dbtool-usable-v1只负责:- 把 usable-v1 对 TUI 的质量门槛定义清楚
- 为 TUI 的 smoke / 可用性 / 验收缺口创建 narrow issues
- 用证据判断 TUI 哪些能力已可纳入 usable-v1,哪些仍 gated
4. core / CLI / TUI 的技术边界
Core
db-core负责稳定产品对象:ConnectionTargetInspectRequestQueryRequestExportRequest- 标准错误模型与标准化结果对象
db-drivers负责数据库差异,不向上暴露数据库原生 API。db-config负责 profile 与秘密脱敏,不承载终端输出逻辑。
Shared App
db-app是 usable-v1 唯一允许的应用编排入口。db-app负责:- 将 connect / inspect / query / export 组织成共享操作
- 暴露
running / success / empty / error的稳定状态模型 - 对 CLI 与 TUI 提供统一结构化输出
- 若新能力无法自然落在
db-app上,就说明当前边界可能被破坏,必须先评审再实现。
CLI
apps/cli只负责命令行参数解析、文本/JSON 输出和退出码。- CLI 不应重新定义 shared app 语义。
- CLI 文本输出不是 TUI 的数据源,也不是其他界面的契约来源。
TUI
apps/tui只负责交互工作台、状态管理、键盘工作流和可视反馈。- TUI 必须通过
db-app接入业务能力。 - TUI 不应:
- 直接依赖
db-drivers - 调用 CLI 二进制
- 解析 CLI 文本输出来取数
- 直接依赖
5. 当前阶段技术优先级
Priority 0:收口 usable-v1 的真实验证边界
- 明确哪些结论已经有本机或宿主机证据
- 明确哪些仍只是代码可见或文档声明
- 明确环境 blocker 与产品 blocker 的边界
Priority 1:冻结 shared contract
- usable-v1 的 CLI 与 TUI 都必须继续围绕
db-app - 任何绕过
db-app的路径都应视为架构偏航
Priority 2:把 TUI 从“可见”推进到“可验收”
- 当前不是再发散功能,而是补:
- 启动契约
- smoke 路径
- 键盘与状态恢复一致性
- QA 可复现路径
Priority 3:把发布判断从“感觉差不多”变成 evidence-based
- CLI 侧需要更清晰的 release gate
- TUI 侧需要明确哪些仍 gated,不允许被口头宣布为 ready
6. blocker、依赖与阶段拆分
Phase A:usable-v1 事实冻结
目标:
- 冻结当前 repo 与运行链路的真实状态
- 明确 usable-v1 范围与旧项目边界
当前状态:
- 本文档已完成
当前 blocker
- CTO 本地环境无
cargo、无docker - 因此无法在当前 heartbeat 关闭源码重建与 Docker runtime 证据
Phase B:owner-backed issue 链启动
目标:
- 把 usable-v1 拆成 backend / frontend / QA / PM 的明确 issue
- 不再允许“一个人自己再想想”的模糊推进
输出:
- 父 issue:
CMP-41、CMP-42、CMP-43、CMP-44 - 子 issue:见
backlog/2026-03-27-dbtool-usable-v1-first-wave-issues.md
Phase C:验证与签收
目标:
- 形成 usable-v1 的 evidence-based 通过/不通过结论
依赖:
- CLI release/runtime 证据补齐
- TUI smoke / 启动契约明确
- QA 矩阵完成并区分已验证、未验证、blocked
7. 各角色第一轮职责
Backend
- 审计 usable-v1 当前 shared contract 是否足以支撑 CLI / TUI 一致验收
- 明确
db-app的结果、错误和状态边界 - 对真正的稳定性缺陷单独成单,不混进“继续完善”大包
Frontend
- 收口 TUI 的启动契约、状态恢复和键盘一致性
- 不重写 shared app,不走 CLI 文本旁路
- 对 usable-v1 只承诺可验收的交互路径,不口头扩大范围
QA
- 建 usable-v1 的统一验收矩阵与证据台账
- 清楚标识:
- 已执行通过
- 未执行
- 环境 blocker
- 产品 blocker
Project Manager
- 将 usable-v1 的里程碑、关键路径、open issue 状态同步到共享项目跟踪
- 保持旧项目和新项目的边界清晰,避免重复汇报与重复拆单
8. CTO 的当前管理判断
- 当前不建议招聘。
- 真正瓶颈仍是 shared contract、验收证据和跨项目边界治理,而不是工程人手数量。
- 当前最重要的不是“做更多功能”,而是“让已经存在的 CLI / TUI 资产有清晰的质量边界、验证入口和交付判断”。
9. 完成标准
满足以下条件,可认为 CMP-40 达成:
- 有共享技术方案
- 有 phase-based 工程拆解
- 有明确的 parent/child issue 分发计划
- 明确了
dbtool-cli-v1、dbtool-tui-v1、dbtool-usable-v1的边界 - 明确了 usable-v1 当前不需要招聘