feat: normalize legacy migration learning data

This commit is contained in:
Codex
2026-06-30 10:04:48 +08:00
parent 2510d736a4
commit 3303426806
7 changed files with 584 additions and 22 deletions

View File

@@ -136,18 +136,29 @@ storage-manifest: 9 个原始资源文件
auxiliary.db: _logs 121715 条,仅摘要
```
最近一次 production dry-run 仍有 2 个 blocker需要在正式导入前处理:
最近一次 production dry-run 仍有 2 个真实数据 blocker需要在正式切换前处理:
- `orders.userId` 覆盖率 95.3%30 个订单缺用户,其中 7 个为已支付订单。处理策略应优先从支付通知、手机号、订单号或人工售后记录找回用户;找不回的已支付订单必须进入人工异常台账,不允许静默开权益。
- `handbook_chapters.subjectId` 覆盖率 94.4%22 个章节缺所属手册。处理策略应按章节标题和条目归属归并到正确 `handbook_subjects`,无法归并的放入迁移隔离手册并标记待人工复核。
production dry-run 还有这些 warning属于后续 mapper 或运营处理项
当前导入器已经补齐下面 4 个旧集合的标准化 mapper
- `user_answer_records` 85442 条会导入到 `answer_records`,并按错误记录重建 `wrong_questions`
- `mock_exam_configs` 48 条会导入到 `practice_blueprints(mode='mock_exam', assembly_type='filters')`
- `referral_qrcodes` 79 条会导入到 `referral_qrcodes`,并同步补 `referral_codes`
- `commission_settings` 1 条会导入到 `tenant_commission_settings`
导入器对两个真实 blocker 采用“隔离 + 审计”策略,不会静默丢数据:
- 缺用户订单仍导入 `orders/payments/order_items``raw_payload.migration.reviewRequired=true``entitlementBlocked=true`,并写入 `pb_import_issues`。缺用户订单不会自动开通权益。
-`subjectId` 的手册章节会挂到 `handbook_subjects.legacy_id='__migration_orphan_handbook_subject__'` 的“迁移待复核手册”,章节 `metadata.reviewRequired=true`,并写入 `pb_import_issues`
production dry-run 还有这些 warning属于运营处理项
- `user_answer_records` 85442 条尚未规范化到新练习历史/答题记录模型。
- `mock_exam_configs` 48 条尚未规范化到 `practice_blueprints`
- `referral_qrcodes` 79 条尚未规范化到新推广码/小程序码模型。
- `commission_settings` 1 条需要迁移到新分佣设置。
- `dashboard_cache`、空 `customer_messages/smscodes/tenant_config` 可不作为正式数据源,必要时只保留审计摘要。
- `recent_practices` 和少量 `user_answer_records` 有旧用户引用断裂,需要在导入后复核 `pb_import_issues`
性能注意:真实 `pb:import:json` 试跑已经证明 248555 条真实记录会超过 10 分钟。正式迁移前需要继续优化 importer 的批量写入和分批事务,重点是 `pb_raw_records``questions/question_versions``user_answer_records`。迁移演练必须记录总耗时、每阶段耗时和失败恢复策略。
## 阶段 1静态 Dry-Run