89 lines
4.3 KiB
Plaintext
89 lines
4.3 KiB
Plaintext
# 奇成迁移映射配置(单文件)
|
||
# 复制为 mapping.yaml 后使用,会被 scan_legacy.py 自动增量补全
|
||
#
|
||
# 工作流:
|
||
# 1. 业务方提供 resources/cards.csv(只需 iccid 列)
|
||
# 2. python3 scan_legacy.py → 自动从奇成扫描元数据,把发现的 carrier/package/agent 补到本文件
|
||
# 3. 人工填写所有 target_* 字段
|
||
# 4. python3 migrate_assets.py / migrate_runtime.py 正常出 SQL
|
||
|
||
# ============== 全局配置 ==============
|
||
# 迁移操作者(creator/updater/operator_id),通常是后台超级管理员账号 ID
|
||
# 上线前确认: SELECT id FROM tb_account WHERE login_account = 'admin' LIMIT 1;
|
||
migration_user_id: 0
|
||
|
||
# 本次迁移批次号。线上每次迁移必须使用独立批次,用于导入后收尾、验收和回滚定位。
|
||
migration_batch_no: "MIGRATION-QICHENG-YYYYMMDD"
|
||
|
||
# ============== 资产归属与槽位规则 ==============
|
||
# mapping.yaml 是迁移决策源。奇成 agent_id 不会默认参与归属;只有显式 legacy_agent 模式才读取 agents。
|
||
ownership_rules:
|
||
# default_shop 模式的批量目标店铺。legacy_agent/none 模式可保持 null。
|
||
default_target_shop_code: KWTX
|
||
device:
|
||
# default_shop=默认店铺;legacy_agent=按默认/行级旧套餐读取槽位的绑定卡 agent_id 分店铺;none=进平台库存
|
||
mode: default_shop
|
||
# 默认当前卡槽。devices.csv 未填 current_slot 时使用这里;用于 tb_device_sim_binding.is_current
|
||
current_slot: 2
|
||
# 默认旧套餐读取卡槽。devices.csv 未填 package_source_slot 时使用这里;新系统套餐仍挂设备;不填则回退 current_slot
|
||
package_source_slot: 2
|
||
standalone_card:
|
||
# default_shop=默认店铺;legacy_agent=按卡 agent_id 分店铺;none=进平台库存
|
||
mode: legacy_agent
|
||
|
||
# ============== 套餐迁移规则 ==============
|
||
package_rules:
|
||
# active=当前生效正式套餐,pending=未生效待生效正式套餐
|
||
migrate_statuses:
|
||
- active
|
||
- pending
|
||
# 可选:也可把套餐映射写在这里;scan_legacy 仍会增量维护顶层 packages。
|
||
packages: []
|
||
|
||
# ============== 少量资产级覆盖 ==============
|
||
# 覆盖优先级:devices.csv 行级槽位 > overrides.devices 槽位 > ownership_rules.device 默认槽位。
|
||
overrides:
|
||
devices:
|
||
- virtual_no: "862639073940258"
|
||
target_shop_code: OTHER
|
||
current_slot: 1
|
||
package_source_slot: 1
|
||
cards:
|
||
- iccid: "89861590172420360956"
|
||
target_shop_code: OTHER
|
||
|
||
# ============== 运营商映射 ==============
|
||
# scan_legacy 会按"奇成 tbl_card.account_id/account_name"分组写入,你只需填 target_*
|
||
# legacy_category 只是奇成运营商大类,用于人工判断 target_carrier_type,不要把它当具体运营商。
|
||
carriers:
|
||
- legacy_account_id: "72493DB64A2A4F01B5E59E49D58A2A34"
|
||
legacy_account_name: "联通10-1"
|
||
legacy_category: 9
|
||
legacy_category_name: "中国联通"
|
||
target_carrier_id: null # 必填:新库 tb_carrier.id
|
||
target_carrier_type: null # 必填:CMCC / CUCC / CTCC / CBN
|
||
target_carrier_name: null # 必填:新库 carrier_name 快照
|
||
|
||
# ============== 套餐映射 ==============
|
||
# scan_legacy 会按"奇成 tbl_card_life.meal_id"分组写入
|
||
packages:
|
||
- legacy_meal_id: "D6554244711498752"
|
||
legacy_meal_name: "三网充电宝全国畅玩年卡套餐1000G/月(12个月)"
|
||
target_package_id: null # 必填:新库 tb_package.id
|
||
|
||
# ============== 套餐系列快照(可选) ==============
|
||
# 资产 series_id 优先从 target_package_id 对应的 tb_package.series_id 反查;target_series_id 可作无套餐时的兜底
|
||
series:
|
||
- legacy_series_id: "95A038B9D3014F9DA1539EC092D9DBAA"
|
||
legacy_series_name: "国内卡 无预存30天"
|
||
target_series_id: null # 可选:新库套餐系列 ID;无当前套餐时可作为资产系列兜底
|
||
|
||
# ============== 代理-店铺映射(legacy_agent 归属 + 代理钱包) ==============
|
||
# scan_legacy 会按"奇成 tbl_card.agent_id"分组写入。
|
||
# standalone_card/device mode=legacy_agent 时,资产按这里的 target_shop_code 分配。
|
||
# 不使用 legacy_agent 时,这里只影响 migrate_runtime.py 的代理钱包初始化。
|
||
agents:
|
||
- legacy_agent_id: "D15EC779767B412A82B8448AC2324F04"
|
||
legacy_agent_name: "叶发伟"
|
||
target_shop_code: null # 新库 tb_shop.shop_code;legacy_agent 模式下 null=该代理资产进平台库存
|