test: add real migration business sampling

This commit is contained in:
Codex
2026-06-30 13:03:38 +08:00
parent d005f65fe7
commit 9fdb6cd28b
6 changed files with 1245 additions and 5 deletions

View File

@@ -329,6 +329,39 @@ Remove-Item Env:\FAIL_ON_WARNINGS
## 阶段 4抽样验收
结构校验通过后,先运行只读业务抽样脚本:
```bash
npm run pb:import:sample
```
它和 `pb:import:validate` 的边界不同:
- `pb:import:validate` 证明核心表关系、敏感字段和迁移隔离策略没有断。
- `pb:import:sample` 证明真实迁移数据能被新 SaaS 业务模型消费,覆盖题库入口、内容节点、合集、练习蓝图、题目当前版本、答题记录、错题、收藏、单词、知识手册、分数线、订单、支付、权益、激活码、内容资源、视频和敏感字段泄露。
- 脚本只读数据库不修复数据不生成测试数据FAIL 表示当前业务模型不能安全消费该部分迁移数据WARN 表示旧数据或上线配置需要人工复核。
常用参数:
```powershell
$env:DATABASE_URL="postgresql://postgres:postgres@127.0.0.1:54322/postgres"
$env:PB_SAMPLE_TENANT_SLUG="master"
npm run pb:import:sample
# 需要保存本地报告时开启;报告目录已被 .gitignore 忽略
$env:PB_SAMPLE_WRITE_REPORT="true"
npm run pb:import:sample
Remove-Item Env:\PB_SAMPLE_WRITE_REPORT
```
当前真实迁移库最近一次抽样结果:
```text
npm run pb:import:sample => 0 failures, 6 warnings, 1 skipped, 39 passed
```
其中 6 个 warning 分别对应:迁移待复核题目、部分旧答题记录引用已删除题、已支付缺用户订单、已使用但缺使用人的激活码、已知 critical import issues 人工复核项、最新导入 warning/error issue 留档项;`videos.not_present` 为 SKIP因为当前旧库没有题目视频记录。
每次演练都应至少抽样下面数据:
| 范围 | 抽样建议 | 验收点 |