## Why 奇成 `tbl_card_life` 的少量卡会同时存在多条 `status=1`、未来到期且缺少生效时间的正式套餐记录。迁移脚本无法安全判断当前套餐,因而阻断这些资产的套餐迁移;直接以到期时间做全局裁决会误判其他历史数据。 ## What Changes - 在奇成迁移配置中增加按 ICCID 和旧套餐生命周期记录 ID 指定 `active`、`pending`、`skipped` 状态的覆盖能力。 - 在检测多个当前生效正式套餐前应用覆盖;覆盖外继续维持现有严格阻断行为。 - 对覆盖的完整性和引用的生命周期记录进行校验,并在审核产物中保留实际裁决结果。 ## Capabilities ### New Capabilities - `qicheng-migration-package-lifecycle-overrides`: 为异常旧套餐生命周期提供可审计、逐卡的迁移状态覆盖。 ### Modified Capabilities - 无。 ## Impact - `scripts/migration/config/mapping.yaml` - `scripts/migration/lib/mapping_loader.py` - `scripts/migration/lib/sql_builder.py` - 奇成迁移 step2 生成的 SQL 与审核 CSV;不写入或修改奇成老库。