Files
junhong_cmp_fiber/scripts/migration/config/mapping.yaml.example
2026-06-15 10:53:47 +08:00

89 lines
4.3 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 奇成迁移映射配置(单文件)
# 复制为 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=该代理资产进平台库存