# 奇成迁移映射配置(单文件)
# 复制为 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=该代理资产进平台库存
