Files
junhong_cmp_fiber/openspec/changes/refactor-migration-ownership-package-flow/tasks.md
Break 1f634eb465
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m3s
init
2026-06-16 15:15:50 +08:00

4.1 KiB
Raw Blame History

1. 配置与文档

  • 1.1 更新 scripts/migration/config/mapping.yaml.example,新增 ownership_rulespackage_rulesoverrides 示例
  • 1.2 更新 scripts/migration/resources/README.md,说明 current_slotpackage_source_slot、批量默认槽位和覆盖优先级
  • 1.3 更新 scripts/migration/README.md,说明新执行流程、审核 CSV、错误阻断规则和手动验证方法
  • 1.4 更新 docs/脚本/奇成数据迁移方案.md,将范围改为当前生效 + 未生效待生效套餐,并说明 mapping.yaml 是决策源

2. 配置加载与输入解析

  • 2.1 扩展 lib/mapping_loader.py,新增归属规则、套餐规则、覆盖规则的数据结构
  • 2.2 在 mapping_loader 中实现配置校验:店铺码格式、槽位范围、套餐规则、覆盖项唯一性
  • 2.3 扩展 lib/csv_loader.py,支持读取设备行级 current_slotpackage_source_slot
  • 2.4 实现设备槽位解析优先级:设备行配置 > overrides.devices > ownership_rules.device 默认值
  • 2.5 保留或显式拒绝旧配置结构,输出中文错误提示和升级指引

3. 奇成套餐生命周期查询

  • 3.1 在 lib/legacy_query.py 新增正式套餐生命周期查询函数,读取当前生效和未生效待生效套餐所需字段
  • 3.2 查询结果保留 legacy 套餐 ID、套餐名、类型、状态、开始时间、到期时间和稳定排序键
  • 3.3 排除加油包和已过期套餐,并在审核产物中记录跳过原因
  • 3.4 处理同一资产多个 active 主套餐的冲突:无法唯一裁决时写入错误并阻断该资产套餐生成

4. 归属决策与资产 SQL

  • 4.1 新增归属解析模块或函数,统一输出资产目标店铺、决策来源和错误
  • 4.2 修改卡资产生成逻辑:独立卡按 ownership_rules.standalone_card 和覆盖项确定店铺
  • 4.3 修改设备资产生成逻辑:设备按 ownership_rules.device、槽位配置和覆盖项确定店铺
  • 4.4 修改设备绑定逻辑:is_current 使用解析后的 current_slot,不再固定默认 slot1
  • 4.5 修改分配记录生成逻辑:只按归属解析结果生成,不再依赖奇成 agent_id

5. 套餐队列 SQL

  • 5.1 拆分独立卡套餐生成路径,生成 single_card 订单和套餐使用记录
  • 5.2 拆分设备套餐生成路径,按 package_source_slot 生成 device 订单和套餐使用记录
  • 5.3 为 active 套餐写入 status=1、生效/到期时间和用量快照
  • 5.4 为 pending 套餐写入 status=0、稳定 priority、到期时间和 0 用量
  • 5.5 设备和卡的 series_id 从目标套餐 tb_package.series_id 回填,并覆盖已有资产漏写场景
  • 5.6 目标套餐不存在、已删除或不是 formal 时生成 SQL 前置校验或错误阻断

6. 审核产物与错误输出

  • 6.1 生成 output/ownership_resolution.csv
  • 6.2 生成 output/package_resolution.csv
  • 6.3 更新 output/summary.txt展示分配数、active/pending 套餐数、跳过数和错误数
  • 6.4 更新 errors.csv / warnings.csv 结构或内容,覆盖店铺缺失、槽位缺失、套餐映射缺失、目标套餐无效等关键错误
  • 6.5 确保关键错误阻断对应资产或套餐 SQL不再静默进入平台库存

7. 手动验证

  • 7.1 使用当前 120 台设备样例生成 SQL确认 ownership_resolution.csv 显示 120 台设备归属到预期店铺
  • 7.2 使用包含 current + pending 套餐的小样例生成 SQL确认 package_resolution.csv 显示 active 和 pending 队列
  • 7.3 检查 step2_02_package_usages.sql,确认 active 写 status=1pending 写 status=0 且 priority 稳定递增
  • 7.4 检查设备套餐 SQL确认只为 package_source_slot 生成 device 级套餐,非来源槽位不重复生成主套餐
  • 7.5 在测试库手动执行生成 SQL查询 tb_device.shop_idtb_iot_card.shop_idtb_package_usage.statustb_package_usage.priority 和资产 series_id
  • 7.6 记录未验证项和已知限制,不新增自动化测试或 _test.go