init
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m3s

This commit is contained in:
Break
2026-06-16 15:15:50 +08:00
parent 84ab3bad99
commit 1f634eb465
21 changed files with 2776 additions and 41 deletions

View File

@@ -0,0 +1,122 @@
# 奇成迁移映射配置(由 scan_legacy.py 生成/增量补全)
#
# 使用方式:
# 1. cards.csv 必填;devices.csv 可选。没有 devices.csv 时就是纯卡迁移。
# 2. legacy_* 字段来自奇成扫描,一般不要手工修改。
# 3. target_* 字段需要人工填写,否则生成 SQL 时会写入 errors.csv 并阻断对应资产。
# 4. 资产归属先看 overrides,再看 ownership_rules;只有显式 legacy_agent 模式才读取 agents。
# ============== 全局配置 ==============
# 迁移操作者账号 ID,写入 creator/updater/operator_id。线上建议使用后台超级管理员 ID。
migration_user_id: 0
# 本次迁移批次号。每批线上迁移保持唯一,方便收尾、验收和回滚定位。
migration_batch_no: "MIGRATION-QICHENG-20260615"
# ============== 资产归属与槽位规则 ==============
# default_shop 模式下的批量目标店铺编码;mode=legacy_agent/none 时可保持 null。
ownership_rules:
default_target_shop_code: KWTX
# 设备规则只在存在 resources/devices.csv 时生效。
device:
# default_shop=默认店铺;legacy_agent=按默认/行级旧套餐读取槽位绑定卡的奇成 agent_id 映射店铺;none=平台库存。
mode: "legacy_agent"
# 默认当前卡槽。devices.csv 未填 current_slot 时使用这里;写入 tb_device_sim_binding.is_current。
current_slot: null
# 默认旧套餐读取卡槽。devices.csv 未填 package_source_slot 时使用这里;新系统套餐仍挂设备;不填则回退 current_slot。
package_source_slot: null
standalone_card:
# default_shop=默认店铺;legacy_agent=按奇成 agent_id 映射店铺;none=平台库存。
mode: "legacy_agent"
# ============== 套餐迁移规则 ==============
package_rules:
# active=当前生效正式套餐;pending=未生效待生效正式套餐。
migrate_statuses:
- "active"
- "pending"
# ============== 少量资产级覆盖 ==============
# 覆盖优先级:devices.csv 行级槽位 > overrides.devices 槽位 > ownership_rules.device 默认槽位。
overrides:
# 设备级特殊处理。virtual_no 对应 devices.csv 的 virtual_no/imei 兜底值。
devices: []
# 独立卡特殊处理。iccid 可填 19 位或 20 位。
cards: []
# ============== 运营商映射 ==============
# scan_legacy 按奇成 tbl_card.account_id/account_name 分组写入;只需要人工填写 target_*。
# target_carrier_type 只能填 CMCC / CUCC / CTCC / CBN。
carriers:
- legacy_account_id: "64E0F6057D6749ABB211E11D51C3F1AA"
legacy_account_name: "新移动15-1"
legacy_category: 126
legacy_category_name: "GS移动"
target_carrier_id: 2
target_carrier_type: CMCC
target_carrier_name: 移动15-BE20030985258
- legacy_account_id: "811CA4BF74E24CD7AAEC3C54EF1BAE63"
legacy_account_name: "新移动15-2"
legacy_category: 126
legacy_category_name: "GS移动"
target_carrier_id: 2
target_carrier_type: CMCC
target_carrier_name: 移动15-BE20030985258
- legacy_account_id: "6A6D70450525448780AD4C3CCE6D4B29"
legacy_account_name: "电信10-1"
legacy_category: 124
legacy_category_name: "GS电信"
target_carrier_id: 7
target_carrier_type: CTCC
target_carrier_name: 电信10-qiangukeji
- legacy_account_id: "B0C93CB44C184DFDA230DF0E574A395F"
legacy_account_name: "电信9"
legacy_category: 124
legacy_category_name: "GS电信"
target_carrier_id: 4
target_carrier_type: CTCC
target_carrier_name: 电信5-junhong004
- legacy_account_id: "ED12247823374841934283AAD40CCA9D"
legacy_account_name: "联通15-1(3T)"
legacy_category: 125
legacy_category_name: "GS联通"
target_carrier_id: 3
target_carrier_type: CUCC
target_carrier_name: 联通31-710WLW17915117
- legacy_account_id: "648D3C383B904D9686EC8650D5F20A7C"
legacy_account_name: "联通38"
legacy_category: 125
legacy_category_name: "GS联通"
target_carrier_id: 3
target_carrier_type: CUCC
target_carrier_name: 联通31-710WLW17915117
# ============== 套餐映射 ==============
# scan_legacy 按奇成 tbl_card_life.meal_id 分组写入;target_package_id 必须指向新库正式套餐。
packages:
- legacy_meal_id: "D6695908379395072"
legacy_meal_name: "特惠畅享月卡套餐30G/月1个月"
target_package_id: 40
- legacy_meal_id: "D6695911346816000"
legacy_meal_name: "特惠畅享月卡套餐100G/月1个月"
target_package_id: 39
- legacy_meal_id: "D6695913990718464"
legacy_meal_name: "特惠畅享月卡套餐1000G/月1个月"
target_package_id: 37
- legacy_meal_id: "D6695917828850688"
legacy_meal_name: "特惠畅享年卡套餐3000G/月12个月"
target_package_id: 34
# ============== 套餐系列快照(可选) ==============
# 资产 series_id 优先从 target_package_id 对应的 tb_package.series_id 反查;target_series_id 可作无套餐时的兜底。
series:
- legacy_series_id: "61721B92E3FF4F53834AC16F4214667C"
legacy_series_name: "2026新春特惠套餐"
target_series_id: 5
# ============== 代理-店铺映射(legacy_agent 归属 + 代理钱包) ==============
# standalone_card/device mode=legacy_agent 时,资产按这里的 target_shop_code 分配。
# 不使用 legacy_agent 时,这里只影响 migrate_runtime.py 的代理钱包初始化。
agents:
- legacy_agent_id: "0072250EBB88422C88A573AB06870D17"
legacy_agent_name: "酷蛙通讯"
target_shop_code: KWTX