Files
邹进 2ead341f2f fix: 换货迁移按套餐是否已开始与新资产占位决定主套餐状态
- 未开始的主套餐(无生效、到期时间且无用量)迁移为待生效,新资产不满足实名条件(行业卡/已实名/无需实名)时标记等实名激活
- 已开始的主套餐在新资产无当前主套餐时原样迁移;新资产已有当前主套餐时改为待生效排队、清空周期与用量
- 迁移后重排新资产主套餐优先级,保证同一载体只有一个当前主套餐
- 换货审计记录套餐状态、优先级、用量的前后值

OpenSpec: fix-exchange-migration-package-state

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-04 23:14:19 +09:00

5.9 KiB
Raw Blame History

ADDED Requirements

Requirement: 换货迁移后的主套餐状态

选择业务数据迁移的换货完成时,系统 SHALL 逐条决定旧资产主套餐使用记录(master_usage_id 为空,状态为待生效、生效中或已用完)迁移到新资产后的状态,保证新资产同一时刻最多一个生效中或已用完的未到期主套餐。

  • 已开始:主套餐有生效时间、或有到期时间、或已用量大于 0、或存在日流量记录、或状态为已用完,视为已开始;否则视为未开始。
  • 实名条件:新资产为卡时,卡为行业卡、或已实名、或其适用实名策略(已绑定设备时取设备策略,否则取卡策略)为无需实名,视为满足;新资产为设备时,设备实名策略为无需实名、或任一已绑定卡为行业卡或已实名,视为满足。
  • 当前主套餐:载体上状态为生效中或已用完、且未到期(到期时间为空或晚于当前时间)的主套餐。

规则:

  1. 未开始的主套餐 MUST 以待生效迁移,生效时间、到期时间、上次重置时间、下次重置时间 MUST 清空;新资产不满足实名条件时 MUST 标记为等实名激活,满足时 MUST NOT 标记。
  2. 已开始的主套餐,若新资产迁移前没有当前主套餐,且它是旧资产按优先级、创建时间、标识排序的第一条已开始的当前主套餐,SHALL 原样迁移,状态、用量、有效期与重置时间不变。
  3. 其余已开始的主套餐 MUST 以待生效迁移,生效时间、到期时间、上次重置时间、下次重置时间 MUST 清空,已用量 MUST 清零,MUST NOT 标记为等实名激活;日流量记录 MUST 保留为历史。
  4. 迁移完成后,新资产全部待生效、生效中、已用完的主套餐 SHALL 按"当前主套餐 → 新资产原有待生效主套餐(保持原顺序)→ 旧资产迁入的待生效主套餐(保持原顺序)"重新编排优先级为 1 起连续整数。
  5. 旧资产上已到期但尚未被到期任务处理的主套餐 SHALL 原样迁移,不参与排队与优先级编排。
  6. 加油包 SHALL 原样迁移并保持与原主套餐的关联。
  7. 换货 MUST NOT 因新资产已有钱包余额或套餐而被拒绝;换货事务内 MUST NOT 激活待生效主套餐。
  8. 因本规则改变状态、优先级或用量的每条套餐使用记录 SHALL 写入审计,包含变更前后值与换货单号。

Scenario: 新资产无套餐,迁入在用主套餐

  • GIVEN 旧资产有一条生效中、已用量大于 0 的主套餐和一条挂在其下的加油包,新资产没有任何套餐
  • WHEN 换货选择业务数据迁移并确认完成
  • THEN 主套餐在新资产上仍为生效中,用量、到期时间与重置时间不变,优先级为 1;加油包原样迁移

Scenario: 新资产已有生效主套餐,迁入在用主套餐

  • GIVEN 新资产有一条生效中的主套餐,旧资产有一条生效中、已用量大于 0 的主套餐
  • WHEN 换货选择业务数据迁移并确认完成
  • THEN 新资产原主套餐保持生效、优先级为 1;迁入主套餐变为待生效、优先级为 2,生效时间、到期时间与重置时间为空,已用量为 0,未标记等实名激活,原日流量记录保留

Scenario: 新资产已用完但未到期

  • GIVEN 新资产主套餐为已用完且到期时间晚于当前时间,旧资产有生效中的已开始主套餐
  • WHEN 换货选择业务数据迁移并确认完成
  • THEN 迁入主套餐变为待生效并排在新资产主套餐之后

Scenario: 新资产主套餐已过期但未被处理

  • GIVEN 新资产主套餐状态为生效中但到期时间早于当前时间,旧资产有生效中的已开始主套餐
  • WHEN 换货选择业务数据迁移并确认完成
  • THEN 新资产视为没有当前主套餐,迁入主套餐保持生效中

Scenario: 未开始的主套餐迁到未实名普通卡

  • GIVEN 旧资产主套餐为待生效,没有生效时间、到期时间,已用量为 0、没有日流量记录;新资产为未实名普通卡,实名策略为购买后实名
  • WHEN 换货选择业务数据迁移并确认完成
  • THEN 迁入主套餐变为待生效并标记等实名激活,生效时间、到期时间与重置时间为空,换货事务内不激活

Scenario: 老系统迁移的固定到期日套餐

  • GIVEN 旧资产主套餐状态为生效中,没有生效时间、已用量为 0,但有固定到期时间;新资产没有任何套餐
  • WHEN 换货选择业务数据迁移并确认完成
  • THEN 该主套餐视为已开始,在新资产上原样保持生效中,到期时间不变

Scenario: 未开始的主套餐迁到行业卡

  • GIVEN 旧资产主套餐未开始,新资产为未实名的行业卡且没有当前主套餐
  • WHEN 换货选择业务数据迁移并确认完成
  • THEN 迁入主套餐变为待生效且不标记等实名激活,之后由孤儿套餐扫描接续激活,有效期从激活当天起算

Scenario: 新资产只有待生效主套餐

  • GIVEN 新资产只有一条优先级为 1 的待生效主套餐,旧资产有一条生效中的已开始主套餐
  • WHEN 换货选择业务数据迁移并确认完成
  • THEN 迁入主套餐保持生效中、优先级为 1,新资产原待生效主套餐优先级变为 2,不出现优先级重复

Scenario: 旧资产有多条主套餐

  • GIVEN 新资产有一条生效中的主套餐,旧资产有一条生效中的已开始主套餐和一条待生效主套餐
  • WHEN 换货选择业务数据迁移并确认完成
  • THEN 两条迁入主套餐均为待生效,按旧资产原顺序依次排在新资产主套餐之后,优先级分别为 2、3

Scenario: 迁移后预计到期时间可计算

  • WHEN 任一上述场景换货完成后查询新资产预计到期时间
  • THEN 系统返回推算结果,不返回数据异常