feat: add pocketbase sqlite exporter

This commit is contained in:
Codex
2026-06-30 09:30:00 +08:00
parent 959e612211
commit 2510d736a4
10 changed files with 841 additions and 11 deletions

View File

@@ -404,7 +404,26 @@ docs/refactor/production-launch-evidence.template.json
## PocketBase 迁移 Dry-Run
把旧 PocketBase 导出的集合 JSON 放到仓库根目录 `pb_export/` 后,先执行不写数据库的静态 dry-run
如果旧数据源是 SQLite先从旧 PocketBase 数据目录只读导出业务 collection。默认读取 `F:\project\参考\旧题库数据库文件`,输出到已被 `.gitignore` 覆盖的 `pb_export/`
```powershell
$env:PB_SQLITE_DIR="F:\project\参考\旧题库数据库文件"
$env:PB_EXPORT_DIR="F:\project\pb_export"
npm run pb:export:sqlite
```
导出会生成:
```text
pb_export/*.json 各 PocketBase collection 的普通业务 JSON
pb_export/sqlite-export-manifest.json
pb_export/storage-manifest.json
pb_export/pb_schema.sqlite.json
```
默认导出会移除 `password/token/secret/sessionKey/openid/unionid` 等敏感身份或密钥字段,只在 manifest 中记录脱敏字段数量;手机号等迁移必需字段会保留。不要把 `pb_export/`、manifest 或真实迁移报告提交到 Git。
把旧 PocketBase 导出的集合 JSON 放到仓库根目录 `pb_export/` 后,执行不写数据库的静态 dry-run
```bash
npm run pb:import:dry-run
@@ -420,6 +439,13 @@ dry-run 会检查导出目录、JSON 形态、核心集合缺失、重复/缺失
默认 dry-run 使用 `development` profile正式迁移、预生产验收和 CI 应使用 `production` profile。生产 profile 会额外输出 `migrationReadiness`,检查用户、题目、科目、分类、订单、套餐、激活码、单词和知识手册等必需集合,以及用户手机号、题目归属、订单套餐、激活码、单词和手册归属等关键字段覆盖率。`--profile` 只接受 `development``production`,拼写错误会按 blocker 失败。
当前真实 SQLite 基线已经跑通只读导出58 个业务 collection、248555 条记录、9 个 storage 原始资源文件。production dry-run 目前仍有 2 个真实数据 blocker30 个订单缺用户、22 个知识手册章节缺所属手册;还有 `user_answer_records``mock_exam_configs``referral_qrcodes``commission_settings` 等 mapper gap详见
```text
docs/refactor/pocketbase-real-data-migration-runbook.md
docs/refactor/next-development-todo.md
```
真实生产数据迁移不要只看命令是否能跑完,需要按迁移验收 runbook 执行 dry-run、正式导入演练、导入后校验、业务抽样、Taro 联调、冻结切换和回滚准备:
```text