迁移脚本的一些问题修复

This commit is contained in:
Break
2026-05-28 17:22:52 +08:00
parent 1550ef3cb1
commit 872769e69e
13 changed files with 328 additions and 114 deletions

View File

@@ -7,16 +7,19 @@
## cards.csv 卡资产清单
每张要迁移的卡一行。**必须同时提供 iccid_19iccid_20**(因为奇成历史数据
长度不可信,业务方提供两列作为权威值)
每张要迁移的卡一行。`iccid_19` / `iccid_20` 至少填一个。只有 20 位完整 ICCID
时可只填 `iccid_20`,脚本会自动派生前 19 位作为内部稳定 ID
只填 `iccid_20` 的卡,脚本查询奇成主表时只按 20 位精确匹配;只有同时显式填写
`iccid_19``iccid_20` 时,才允许 20 位未命中后退回 19 位查询。
| 列名 | 必填 | 说明 |
|------|------|------|
| `iccid_19` | | ICCID 前 19 位(所有卡都有,作为跨文件稳定 ID;必须 19 位纯数字) |
| `iccid_19` | 条件必填 | ICCID 前 19 位(内部稳定 ID;必须 19 位;允许奇成历史字母位)。`iccid_20` 已填时可留空 |
| `iccid_20` | 视运营商 | 完整 20 位 ICCID;CMCC/CUCC/CBN(20 位运营商) **必填**,CTCC(19 位)**必须留空**;非空时前 19 位必须等于 `iccid_19` |
| `is_industry` | 否 | 是否行业卡,留空 = `false`(普通卡) |
运营商类型从奇成 `tbl_card.category` 自动推断,在查完奇成后会做一致性校验:
具体运营商从奇成 `tbl_card.account_id/account_name` 扫描后写入 `mapping.yaml.carriers`;
`tbl_card.category` 只是奇成大类,仅辅助人工填写 `target_carrier_type`。填完映射后会做一致性校验:
- CTCC 卡填了 `iccid_20``errors.csv: carrier_length_conflict` 阻断
- 非 CTCC 卡 `iccid_20` 留空 → 同上阻断
- `iccid_19` 在奇成 `tbl_card` 命中多条记录 → `errors.csv: legacy_duplicate` 阻断,请业务方人工确认

View File

@@ -1,4 +0,0 @@
iccid_19,iccid_20,is_industry
8985200026333877243,89852000263338772439,
8986062300000000001,,true
8986006654000000000,89860066540000000002,

View File

@@ -1,4 +0,0 @@
imei,virtual_no,sim_iccid_1,sim_iccid_2,sim_iccid_3,sim_iccid_4
860000000000001,DEV-202604-0001,89852000263338772439,8986062300000000001,,
,DEV-202604-0002,89860066540000000002,,,
860000000000003,,89860000000000004,,,