## MODIFIED Requirements ### Requirement: 套餐状态流转 系统 SHALL 按当前套餐和套餐使用状态控制上架、订购、激活、失效与到期处理。主套餐到期时,系统 MUST 先确定同一载体是否存在待生效的后续主套餐:存在时,后续套餐激活与停复机重新评估 MUST 由同一条顺序流程完成;系统 MUST NOT 依据后续套餐激活前的无套餐快照发起停机。后续套餐成功生效后,系统 MUST 依据最新套餐、流量和实名事实重新判断卡网络状态,且不得遗留 `no_package` 停机。不存在后续套餐或后续套餐经业务校验不能生效时,系统 SHALL 按现有停机规则评估卡状态。后续套餐激活结果未知或任务投递失败不得被当作无后续套餐处理并据此停机,系统 SHALL 保留既有激活恢复与轮询兜底路径。 #### Scenario: 套餐状态流转 - **GIVEN** 套餐或使用记录处于允许的前置状态 - **WHEN** 执行状态操作 - **THEN** 仅发生一次允许的状态变化;不满足前置状态时返回业务错误 #### Scenario: 到期主套餐接续后续套餐 - **GIVEN** 某载体的当前主套餐到期,且存在满足激活条件的待生效后续主套餐 - **WHEN** 系统处理该主套餐到期 - **THEN** 系统先完成后续套餐激活并按最新权益事实重新评估停复机,且不得因到期前的无套餐快照对该载体发起 `no_package` 停机 #### Scenario: 到期主套餐无后续可生效套餐 - **GIVEN** 某载体的当前主套餐到期,且不存在后续主套餐或队首后续主套餐不满足激活条件 - **WHEN** 系统完成该套餐到期处理 - **THEN** 系统按当前套餐、流量和实名事实执行既有停机评估 #### Scenario: 后续套餐激活结果未知 - **GIVEN** 某载体的当前主套餐到期,存在待生效后续主套餐,但激活任务投递或执行结果暂时未知 - **WHEN** 系统处理该套餐到期 - **THEN** 系统不得将该未知结果视为不存在后续套餐而依据旧快照发起停机,并保留既有激活恢复与套餐轮询兜底 #### Scenario: 卡状态轮询发现缺失的套餐任务 - **GIVEN** 启用轮询的卡匹配套餐检查配置,且其 `polling:package` 分片队列项因异常缺失 - **WHEN** 卡状态轮询成功完成且未命中风险停机 - **THEN** 系统基于最新卡状态仅补入缺失的套餐任务,不改写已存在套餐任务的执行时间;后续套餐任务仍按既有停复机条件评估该卡