130 lines
6.2 KiB
Markdown
130 lines
6.2 KiB
Markdown
# dbtool-cli-v1 验收检查表(初版)
|
||
|
||
## 当前结论
|
||
|
||
- 当前环境中,项目配置声明的主工作区路径为 `/workspace/repo/dbtool-cli-v1`。
|
||
- QA 首次盘点时,该路径原本不存在;当前已经补齐 Rust workspace、CLI、demo seed 资产、smoke runbook 和 release-smoke workflow 基线。
|
||
- 2026-03-26 本地 Linux 已执行:CLI `--help`、`--version`、SQLite `connect` / `inspect` / `query` / `export`、SQLite seed 重放、Linux artifact checksum 与 artifact smoke。
|
||
- 2026-03-26 当前 QA runner 再次确认:`node v24.14.0` 可用,`docker` 与 `cargo` 均不存在;因此本机只能继续复核预编译二进制与 SQLite 路径,不能在此处完成 PostgreSQL / MySQL 的 Docker-backed smoke。
|
||
- 当前检查表仍不能直接宣布通过,因为 PostgreSQL / MySQL 的 Docker-backed smoke 与 GitHub 的 macOS / Windows release runner 还未在本 agent 环境实测。
|
||
|
||
## 与 PM / CTO 的当前对齐依据
|
||
|
||
- PM 对齐来源:项目说明与任务描述中定义的范围和完成标准。
|
||
- CTO 对齐来源:项目说明中的工程边界与跨平台目标。
|
||
- 待补强项:来自产品说明任务和架构任务的正式共享文档落地后,需要回填到本检查表。
|
||
|
||
## 发布门槛
|
||
|
||
- [x] 项目仓库已落地到可访问工作区,路径可重复获取
|
||
- [x] 安装、启动、demo、seed、smoke、Docker 路径存在且写入文档
|
||
- [ ] PostgreSQL、MySQL、SQLite 三类数据库均有可执行验证步骤
|
||
- [x] macOS、Linux、Windows 的期望行为已记录
|
||
- [x] 失败路径可复现、可记录、可区分严重级别
|
||
- [ ] 验收证据可由非开发者重复执行
|
||
|
||
## 基础可运行性
|
||
|
||
- [x] 仓库可拉起或可构建
|
||
- [x] CLI 二进制或运行命令已定义
|
||
- [x] `--help` 输出稳定
|
||
- [x] 版本信息可读取
|
||
- [ ] 缺失依赖时返回可理解错误
|
||
|
||
## 启动 / Demo / Seed / Smoke / Docker
|
||
|
||
- [x] 启动说明存在且从零可执行
|
||
- [x] demo 数据准备步骤存在
|
||
- [x] seed 步骤存在且幂等
|
||
- [x] smoke 脚本存在且可一键执行
|
||
- [ ] Dockerfile 或 compose 路径存在并可运行
|
||
- [x] 上述路径都有预期输出与失败输出说明
|
||
|
||
## 连接验证
|
||
|
||
### PostgreSQL
|
||
|
||
- [ ] 有效连接参数可成功连接
|
||
- [ ] 无效 host / port / database / user / password 会失败
|
||
- [ ] 网络不可达时返回清晰错误
|
||
- [ ] 权限不足时返回清晰错误
|
||
|
||
### MySQL
|
||
|
||
- [ ] 有效连接参数可成功连接
|
||
- [ ] 无效 host / port / database / user / password 会失败
|
||
- [ ] 网络不可达时返回清晰错误
|
||
- [ ] 权限不足时返回清晰错误
|
||
|
||
### SQLite
|
||
|
||
- [x] 有效文件路径可成功连接
|
||
- [x] 文件不存在时返回清晰错误
|
||
- [x] 路径无权限时返回清晰错误
|
||
- [x] 非数据库文件时返回清晰错误
|
||
|
||
## Schema Introspection
|
||
|
||
- [ ] 可列出 schema(适用时)
|
||
- [x] 可列出 table / view
|
||
- [x] 可查看列定义
|
||
- [ ] 空 schema / 空数据库表现明确
|
||
- [ ] 不支持对象类型时提示明确
|
||
|
||
## 查询执行
|
||
|
||
- [x] 可执行基础查询
|
||
- [x] 可执行带条件查询
|
||
- [x] 空结果集表现正确
|
||
- [x] 语法错误会失败且可定位
|
||
- [ ] 超时 / 长查询路径可观测
|
||
- [x] 参数化查询行为明确
|
||
|
||
## 导出流程
|
||
|
||
- [x] 导出命令存在
|
||
- [x] 输出路径规则明确
|
||
- [x] 目标文件已存在时行为明确
|
||
- [ ] 空结果导出行为明确
|
||
- [x] 编码、换行、分隔符规则明确
|
||
- [x] 导出失败时无静默成功
|
||
|
||
## 边界与回归关注
|
||
|
||
- [ ] 大结果集不会直接崩溃
|
||
- [x] 特殊字符 / Unicode 结果可处理
|
||
- [ ] NULL 值处理一致
|
||
- [ ] 时区 / 日期时间输出规则明确
|
||
- [x] 数据库间差异有记录
|
||
- [ ] 回归验证步骤可重复执行
|
||
|
||
## 2026-03-26 执行证据
|
||
|
||
- 本地 Linux:`target/release/dbtool --help`、`target/release/dbtool --version`
|
||
- SQLite happy path:`connect`、`inspect --schema main`、`inspect --schema main --table tickets`、`query`、`export --format csv|json`
|
||
- SQLite failure path:missing file、permission denied、missing table、multi statement blocked、export overwrite blocked
|
||
- SQLite `connect` failure path:non-db file 现在返回非零退出码,并输出 `connection failed: file is not a database`
|
||
- SQLite seed:`examples/scripts/bootstrap-sqlite.sh` 使用 Node fallback 成功重放
|
||
- Linux artifact:`dist/dbtool-0.1.0-x86_64-unknown-linux-gnu.tar.gz` checksum 通过,解包后二进制 `--help` / `--version` 通过
|
||
- 当前 runner 能力盘点:`node v24.14.0` 存在;`sqlite3`、`python3`、`docker`、`cargo` 不存在
|
||
- 当前 runner 复核:`examples/scripts/bootstrap-sqlite.sh`、`target/release/dbtool connect --driver sqlite ...`、`inspect --schema main`、`query --file examples/sql/sqlite/happy_path_query.sql` 再次通过
|
||
- 当前 runner 导出复核:已有文件时 `export` 明确拒绝覆盖;改用 `examples/tmp/qa-export-2.csv` 后导出 `4` 行成功,内容与 `EXPECTED_RESULTS.md` 一致
|
||
|
||
## 平台矩阵
|
||
|
||
| 场景 | Linux | macOS | Windows | 备注 |
|
||
| --- | --- | --- | --- | --- |
|
||
| 安装 / 构建 | 本地 Linux 已验证 | 待验证 | 待验证 | GitHub workflow 已配置,macOS / Windows runner 未在当前环境执行 |
|
||
| CLI 启动 | 本地 Linux 已验证 | 待验证 | 待验证 | `--help` / `--version` 已纳入 release-smoke workflow |
|
||
| PostgreSQL | 待验证 | 待验证 | 待验证 | 需 Docker 环境完成真实 smoke |
|
||
| MySQL | 待验证 | 待验证 | 待验证 | 需 Docker 环境完成真实 smoke |
|
||
| SQLite | 本地 Linux 已验证 | 待验证 | 待验证 | 本地 query / export happy path 已验证 |
|
||
| 导出流程 | 本地 Linux 已验证 | 待验证 | 待验证 | CSV / JSON 本地已验证,跨平台产物仍待 CI 实测 |
|
||
|
||
## 当前阻塞
|
||
|
||
- 阻塞 1:当前 agent 环境没有 `docker` 可执行文件,因此无法在此处实测 PostgreSQL / MySQL 的 `connect` / `inspect` / `query` / `export` smoke。
|
||
- 阻塞 2:当前 agent 环境无法执行 GitHub 的 macOS / Windows runner,因此 release artifact matrix 还缺跨平台实测证据。
|
||
- 阻塞 3:当前 agent 环境也没有 `cargo`,因此即使迁入宿主机方案,仍需预编译二进制或额外准备 Rust toolchain。
|
||
- 阻塞 4:发布 workflow 已落地,但仍需真实 CI 运行记录与 QA 证据来关闭发布前验收风险。
|