修复一些问题,主要是生效套餐
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m16s
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m16s
This commit is contained in:
90
scripts/legacy_device_export/README.md
Normal file
90
scripts/legacy_device_export/README.md
Normal file
@@ -0,0 +1,90 @@
|
||||
# 老系统设备迁移快照导出脚本
|
||||
|
||||
这个工具只负责从老系统 `legacy_mysql` 导出设备迁移所需的业务快照,不写入新系统数据库,也不生成新系统导入 SQL。
|
||||
|
||||
## 导出范围
|
||||
|
||||
- 设备号/IMEI:从你提供的输入 CSV 读取;不提供 ICCID 时,脚本会按老库 `tbl_card.vcode`/`tbl_card.imei` 反查主卡,并通过 `tbl_card_relate` 展开关联副卡。
|
||||
- 卡当前快照:从 `tbl_card` 读取当前卡状态、老套餐字段、当前已用量等。
|
||||
- 套餐快照:从 `tbl_card_life` 和 `tbl_next_month_card_life` 读取当前/次月套餐事实。
|
||||
- 卡钱包快照:从 `tbl_card_wallet` 读取余额和自动续费字段。
|
||||
- 佣金账户快照:按卡所属老代理,从 `tbl_agent_commission_account` 读取账户累计金额。
|
||||
- 日流量记录:不导出,只保留当前已用量和剩余量建议值。
|
||||
|
||||
## 输入 CSV
|
||||
|
||||
脚本会自动识别常见表头。最省事的输入只需要设备号/IMEI,不需要提供 SN 和 ICCID。SN 只是随导出结果透传,可不填。
|
||||
|
||||
支持的常见表头:
|
||||
|
||||
```csv
|
||||
imei
|
||||
862639076004532
|
||||
```
|
||||
|
||||
如果业务给的是设备号字段,也可以写成:
|
||||
|
||||
```csv
|
||||
device_virtual_no
|
||||
862639076004532
|
||||
```
|
||||
|
||||
如果业务后续能直接给 ICCID,脚本也仍然支持单卡或多卡槽 ICCID 输入。
|
||||
|
||||
可识别字段包括:
|
||||
|
||||
- 设备号:`device_virtual_no`、`device_no`、`virtual_no`、`mchno`、`设备号`、`设备虚拟号`、`机器码`
|
||||
- IMEI:`imei`、`device_imei`、`mchno`、`设备imei`、`机器码`
|
||||
- SN:`sn`、`设备sn`
|
||||
- 单卡:`iccid`、`卡号`、`主卡`、`main_iccid`
|
||||
- 多卡槽:`iccid1`、`iccid_1`、`slot1_iccid`、`card1`、`sim1`、`卡1`,最多识别到 4 个卡槽
|
||||
|
||||
## 使用方式
|
||||
|
||||
```bash
|
||||
export LEGACY_MYSQL_DSN='user:password@tcp(host:3306)/kyhl'
|
||||
|
||||
go run ./scripts/legacy_device_export \
|
||||
-input ./devices.csv \
|
||||
-out ./legacy_device_export_output
|
||||
```
|
||||
|
||||
也可以通过参数指定库名:
|
||||
|
||||
```bash
|
||||
go run ./scripts/legacy_device_export \
|
||||
-dsn 'user:password@tcp(host:3306)/kyhl' \
|
||||
-schema kyhl \
|
||||
-input ./devices.csv \
|
||||
-out ./legacy_device_export_output
|
||||
```
|
||||
|
||||
默认不会导出佣金明细。如需按输入 ICCID 额外导出 `tbl_agent_commission_detail` 明细,可加:
|
||||
|
||||
```bash
|
||||
-include-commission-details
|
||||
```
|
||||
|
||||
## 输出文件
|
||||
|
||||
- `input_assets.csv`:标准化后的输入设备/卡关系。
|
||||
- `unresolved_inputs.csv`:无法通过输入 ICCID 或设备号/IMEI 解析出老库 ICCID 的行。
|
||||
- `card_snapshot.csv`:老卡本体快照和当前已用量,并给出 `tb_iot_card.data_usage_mb`、`current_month_usage_mb`、`last_gateway_reading_mb` 的导入建议值;状态/类型/运营商分类会同时输出中文 `*_name` 列,也会保留老卡 `expire_time`。
|
||||
- `package_usage_snapshot.csv`:老套餐快照,以及按当前已用量分摊出来的 `allocated_used_mb`、`remaining_mb` 建议值;老套餐状态、新系统建议状态会同时输出中文 `*_name` 列。时间字段同时输出老库原始 `start_at`/`expires_at` 和迁移参考 `effective_start_at`/`effective_expires_at`,具体来源看 `date_source_note`。
|
||||
- `wallet_snapshot.csv`:老卡钱包余额和自动续费信息,自动续费状态会同时输出中文 `*_name` 列。
|
||||
- `commission_account_snapshot.csv`:老代理佣金账户快照,预留 `suggested_new_shop_id` 供后续导入时映射新系统店铺。
|
||||
- `missing_cards.csv`:输入 ICCID 在老库 `tbl_card` 中未命中的清单。
|
||||
- `summary.txt`:本次导出摘要。
|
||||
- `field_dictionary.csv`:所有输出字段的中文说明。
|
||||
- `enum_dictionary.csv`:状态码、类型码、来源表等枚举值说明。
|
||||
- `README_zh.md`:随本次导出生成的阅读入口和口径提醒。
|
||||
- `commission_detail_snapshot.csv`:仅在传入 `-include-commission-details` 时生成。
|
||||
|
||||
## 注意事项
|
||||
|
||||
- `package_usage_snapshot.csv` 的已用量分摊是迁移建议值,后续生成新系统导入 SQL 前仍需要结合新系统套餐系列、套餐和供应商映射复核。
|
||||
- 输入 CSV 可以不提供 SN 和 ICCID;不提供 ICCID 时会先按老库 `tbl_card.vcode`,再兼容 `tbl_card.imei` 反查 ICCID,并通过 `tbl_card_relate` 展开关联卡。
|
||||
- CSV 表头保留英文是为了后续脚本稳定读取;人工查看时优先看同表的 `*_name` 中文列、`field_dictionary.csv` 和 `enum_dictionary.csv`。
|
||||
- 老库部分 `tbl_card_life.start_date` 为空,但 `expire_date` 和 `create_time` 有值;脚本会保留原始空值,并在 `effective_start_at` 用 `create_time` 兜底,避免误以为没有导出。
|
||||
- 新系统轮询流量会根据网关当前读数和 `last_gateway_reading_mb` 计算增量,后续导入脚本应优先使用 `card_snapshot.csv` 中的 `suggested_tb_iot_card_last_gateway_reading_mb` 避免首轮重复扣量。
|
||||
- 这个脚本不会修改老系统或新系统数据。
|
||||
352
scripts/legacy_device_export/devices.csv
Normal file
352
scripts/legacy_device_export/devices.csv
Normal file
@@ -0,0 +1,352 @@
|
||||
imei
|
||||
862639075986135
|
||||
862639075972853
|
||||
862639076004532
|
||||
862639076024787
|
||||
862639076035379
|
||||
862639076007840
|
||||
862639075987521
|
||||
862639075981524
|
||||
862639076008442
|
||||
862639076022815
|
||||
862639076016668
|
||||
862639075990475
|
||||
862639076036872
|
||||
862639076037805
|
||||
862639076030503
|
||||
862639076004870
|
||||
862639076020678
|
||||
862639076023888
|
||||
862639075998429
|
||||
862639075989949
|
||||
862639076016726
|
||||
862639076022922
|
||||
862639076004284
|
||||
862639075982696
|
||||
862639076026915
|
||||
862639076031998
|
||||
862639075979866
|
||||
862639076010695
|
||||
862639075977365
|
||||
862639076028531
|
||||
862639075979502
|
||||
862639076015843
|
||||
862639075974404
|
||||
862639076016171
|
||||
862639076037201
|
||||
862639075984924
|
||||
862639075981144
|
||||
862639076009861
|
||||
862639075991663
|
||||
862639076017195
|
||||
862639075973158
|
||||
862639076002122
|
||||
862639076005844
|
||||
862639076015421
|
||||
862639076015462
|
||||
862639075980880
|
||||
862639076008434
|
||||
862639076016932
|
||||
862639075971343
|
||||
862639076032764
|
||||
862639075972119
|
||||
862639076017609
|
||||
862639076025933
|
||||
862639075972887
|
||||
862639075978769
|
||||
862639076030594
|
||||
862639076000373
|
||||
862639076018862
|
||||
862639075979213
|
||||
862639076039637
|
||||
862639076026485
|
||||
862639076000480
|
||||
862639076006040
|
||||
862639076034802
|
||||
862639076001504
|
||||
862639076021890
|
||||
862639075987182
|
||||
862639076032012
|
||||
862639076024902
|
||||
862639075994386
|
||||
862639075972770
|
||||
862639076026840
|
||||
862639075985533
|
||||
862639075991515
|
||||
862639075974115
|
||||
862639075979155
|
||||
862639075991853
|
||||
862639076030073
|
||||
862639076015876
|
||||
862639076037821
|
||||
862639076002403
|
||||
862639075974560
|
||||
862639075980245
|
||||
862639075973539
|
||||
862639076030537
|
||||
862639075993883
|
||||
862639076020249
|
||||
862639075987778
|
||||
862639075994683
|
||||
862639076032251
|
||||
862639075984882
|
||||
862639075993693
|
||||
862639076017427
|
||||
862639076033853
|
||||
862639075994998
|
||||
862639075987331
|
||||
862639075970535
|
||||
862639076039165
|
||||
862639076001363
|
||||
862639076022450
|
||||
862639076019886
|
||||
862639076039686
|
||||
862639076015082
|
||||
862639075980781
|
||||
862639075996506
|
||||
862639075993313
|
||||
862639076030479
|
||||
862639076029760
|
||||
862639076022591
|
||||
862639076011024
|
||||
862639075971079
|
||||
862639076023672
|
||||
862639076022716
|
||||
862639075989683
|
||||
862639075980211
|
||||
862639076002395
|
||||
862639076002221
|
||||
862639076009085
|
||||
862639076010448
|
||||
862639076003500
|
||||
862639076009036
|
||||
862639076015579
|
||||
862639075984262
|
||||
862639075977233
|
||||
862639075999187
|
||||
862639075978546
|
||||
862639075976300
|
||||
862639075999732
|
||||
862639076028481
|
||||
862639076029810
|
||||
862639076028697
|
||||
862639075980492
|
||||
862639076002064
|
||||
862639076000209
|
||||
862639075987422
|
||||
862639076013905
|
||||
862639076030099
|
||||
862639075995953
|
||||
862639076036781
|
||||
862639076037177
|
||||
862639076030784
|
||||
862639076017500
|
||||
862639076014754
|
||||
862639076004219
|
||||
862639075979247
|
||||
862639075993354
|
||||
862639075998460
|
||||
862639076024969
|
||||
862639075994923
|
||||
862639076021833
|
||||
862639076007337
|
||||
862639075971327
|
||||
862639076003203
|
||||
862639076008897
|
||||
862639075975641
|
||||
862639075993701
|
||||
862639075975625
|
||||
862639076016353
|
||||
862639076018425
|
||||
862639076012089
|
||||
862639075983595
|
||||
862639075998254
|
||||
862639075999369
|
||||
862639075970543
|
||||
862639076029968
|
||||
862639076015769
|
||||
862639075987448
|
||||
862639075987505
|
||||
862639075993164
|
||||
862639075993289
|
||||
862639076035692
|
||||
862639075982175
|
||||
862639075992166
|
||||
862639075996118
|
||||
862639076023557
|
||||
862639076033168
|
||||
862639075976730
|
||||
862639075996324
|
||||
862639075974677
|
||||
862639076019241
|
||||
862639076032731
|
||||
862639076023607
|
||||
862639075997702
|
||||
862639076007014
|
||||
862639076001231
|
||||
862639075972507
|
||||
862639075993230
|
||||
862639075976490
|
||||
862639075995862
|
||||
862639076002353
|
||||
862639076026741
|
||||
862639075975500
|
||||
862639076029281
|
||||
862639076030180
|
||||
862639075979510
|
||||
862639075975245
|
||||
862639075996928
|
||||
862639075979270
|
||||
862639076022658
|
||||
862639076023474
|
||||
862639076001629
|
||||
862639076000282
|
||||
862639075996159
|
||||
862639075980310
|
||||
862639075980070
|
||||
862639076003633
|
||||
862639075980047
|
||||
862639075975765
|
||||
862639076028655
|
||||
862639076017971
|
||||
862639076032327
|
||||
862639076002841
|
||||
862639076021478
|
||||
862639075973430
|
||||
862639075996589
|
||||
862639075976888
|
||||
862639076003815
|
||||
862639076016429
|
||||
862639076010315
|
||||
862639076010901
|
||||
862639076004391
|
||||
862639075988305
|
||||
862639076031949
|
||||
862639075970949
|
||||
862639076003898
|
||||
862639075978587
|
||||
862639075984007
|
||||
862639075970220
|
||||
862639075970816
|
||||
862639076014580
|
||||
862639076026725
|
||||
862639076015074
|
||||
862639076018961
|
||||
862639075991499
|
||||
862639075974834
|
||||
862639076022302
|
||||
862639075996423
|
||||
862639075983371
|
||||
862639075995441
|
||||
862639075977829
|
||||
862639075972267
|
||||
862639076020447
|
||||
862639075987398
|
||||
862639076015231
|
||||
862639075978314
|
||||
862639076027897
|
||||
862639076023045
|
||||
862639076033846
|
||||
862639076003104
|
||||
862639075986663
|
||||
862639076035890
|
||||
862639076010067
|
||||
862639076031071
|
||||
862639075990061
|
||||
862639075983462
|
||||
862639075982480
|
||||
862639075987497
|
||||
862639076022955
|
||||
862639076017997
|
||||
862639075975922
|
||||
862639076022484
|
||||
862639076019340
|
||||
862639075997066
|
||||
862639076030214
|
||||
862639075980344
|
||||
862639076037359
|
||||
862639075985558
|
||||
862639076028986
|
||||
862639076038134
|
||||
862639076023896
|
||||
862639076002635
|
||||
862639075976458
|
||||
862639076006529
|
||||
862639076022252
|
||||
862639075985954
|
||||
862639076019894
|
||||
862639075980864
|
||||
862639076017179
|
||||
862639076026279
|
||||
862639076018607
|
||||
862639075988354
|
||||
862639076030966
|
||||
862639076001736
|
||||
862639075972259
|
||||
862639076001611
|
||||
862639075973927
|
||||
862639075974909
|
||||
862639076003872
|
||||
862639076028465
|
||||
862639076012642
|
||||
862639076023078
|
||||
862639076019290
|
||||
862639076029596
|
||||
862639075973950
|
||||
862639075970808
|
||||
862639076028275
|
||||
862639076011669
|
||||
862639076027061
|
||||
862639075993321
|
||||
862639075975732
|
||||
862639076030982
|
||||
862639076031881
|
||||
862639076026675
|
||||
862639076002551
|
||||
862639076017716
|
||||
862639076039264
|
||||
862639075970832
|
||||
862639076011321
|
||||
862639075983132
|
||||
862639075998270
|
||||
862639075999302
|
||||
862639076006727
|
||||
862639075973307
|
||||
862639076014721
|
||||
862639076020991
|
||||
862639075985897
|
||||
862639075978462
|
||||
862639075993222
|
||||
862639076007832
|
||||
862639076011339
|
||||
862639075994378
|
||||
862639075977597
|
||||
862639075988271
|
||||
862639076026709
|
||||
862639075998072
|
||||
862639076035940
|
||||
862639076033895
|
||||
862639076012659
|
||||
862639075980534
|
||||
862639075986614
|
||||
862639076036435
|
||||
862639075970725
|
||||
862639075998296
|
||||
862639076018953
|
||||
862639075978843
|
||||
862639075999609
|
||||
862639076032640
|
||||
862639076003674
|
||||
862639076038704
|
||||
862639075990657
|
||||
862639076003930
|
||||
862639075992315
|
||||
862639075981029
|
||||
862639076020603
|
||||
862639075999385
|
||||
862639076024183
|
||||
862639076035932
|
||||
862639076017823
|
||||
862639075971855
|
||||
862639076021668
|
||||
862639076026600
|
||||
|
2050
scripts/legacy_device_export/main.go
Normal file
2050
scripts/legacy_device_export/main.go
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user