Files
break 48c85a4916
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m35s
docs(归档): 归档已用完套餐展示与支付购包即时复机两个变更
- fix-depleted-package-display → archive/2026-09-14-fix-depleted-package-display;
  补记验证:`GetCurrentMainPackage`(package_usage_store.go:63-66)按 status IN (1,2) 读取主套餐,
  资产信息 `fillPackageInfo`(service/asset/service.go:348-349)复用该读取,
  已用完主套餐返回名称、使用记录、时间与流量指标,待生效/已过期/已失效仍不作为当前套餐;
  实现提交 ff25586,4 项任务全部完成。
- fix-immediate-package-payment-resume → archive/2026-09-14-fix-immediate-package-payment-resume;
  补记八月迭代同步验证:定点同步提交 b38b2b3 已是 Iteration/8-11 的 HEAD 祖先,
  在途支付商户装配保留(98c145f);services.go:277 `orderService.SetResumeCallback(stopResumeService)`
  在位,`go build ./cmd/api ./cmd/worker` 通过;2.1/2.2 据此勾选。
- 主 Spec 同步:personal-customer 新增「资产信息展示当前可用或已用完主套餐」;
  package-lifecycle 修改为支付成功后已生效主套餐触发一次即时自动复机检查。

openspec validate --all 为 38 passed / 0 failed;doctor healthy。
2026-09-14 09:49:03 +08:00

4.1 KiB

MODIFIED Requirements

Requirement: 套餐状态流转

系统 SHALL 按当前套餐和套餐使用状态控制上架、订购、激活、失效与到期处理。主套餐到期时,系统 MUST 先确定同一载体是否存在待生效的后续主套餐:存在时,后续套餐激活与停复机重新评估 MUST 由同一条顺序流程完成;系统 MUST NOT 依据后续套餐激活前的无套餐快照发起停机。后续套餐成功生效后,系统 MUST 依据最新套餐、流量和实名事实重新判断卡网络状态,且不得遗留 no_package 停机。不存在后续套餐或后续套餐经业务校验不能生效时,系统 SHALL 按现有停机规则评估卡状态。后续套餐激活结果未知或任务投递失败不得被当作无后续套餐处理并据此停机,系统 SHALL 保留既有激活恢复与轮询兜底路径。

套餐订单支付成功时,系统 MUST 在支付和套餐权益事务提交后,检查本订单是否存在已生效且未挂靠其他主套餐的主套餐权益。存在时,系统 MUST 基于已提交的套餐、流量、实名和停机原因事实异步尝试自动复机;支付回调不得等待上游复机结果。主套餐权益处于待生效、待实名生效或其他非生效状态时,系统 MUST NOT 因本次支付发起自动复机。自动复机失败 SHALL 保留既有失败记录与轮询兜底机制。

Scenario: 支付后已生效主套餐触发自动复机

  • GIVEN 套餐订单支付成功后,本订单存在已生效且未挂靠其他主套餐的主套餐权益,载体因可自动恢复的原因处于停机状态
  • WHEN 支付和套餐权益事务提交成功
  • THEN 系统异步按最新套餐、流量、实名和停机原因事实检查载体,并在全部复机条件满足时调用既有上游复机流程;支付回调不等待该调用结束

Scenario: 支付后主套餐未生效不触发自动复机

  • GIVEN 套餐订单支付成功后,本订单主套餐权益仍处于待生效、待实名生效或其他非生效状态
  • WHEN 支付和套餐权益事务提交成功
  • THEN 系统不因本次支付发起自动复机,并保留后续套餐激活和轮询处理

Scenario: 支付后复机条件不满足

  • GIVEN 套餐订单支付成功后,本订单存在已生效主套餐权益
  • WHEN 载体为手动停机、无有效套餐、流量已耗尽或不满足实名策略
  • THEN 系统不调用上游复机流程,保留当前网络状态与既有停复机处理路径

Scenario: 套餐状态流转

  • GIVEN 套餐或使用记录处于允许的前置状态
  • WHEN 执行状态操作
  • THEN 仅发生一次允许的状态变化;不满足前置状态时返回业务错误

Scenario: 到期主套餐接续后续套餐

  • GIVEN 某载体的当前主套餐到期,且存在满足激活条件的待生效后续主套餐
  • WHEN 系统处理该主套餐到期
  • THEN 系统先完成后续套餐激活并按最新权益事实重新评估停复机,且不得因到期前的无套餐快照对该载体发起 no_package 停机

Scenario: 到期主套餐无后续可生效套餐

  • GIVEN 某载体的当前主套餐到期,且不存在后续主套餐或队首后续套餐不满足激活条件
  • WHEN 系统完成该套餐到期处理
  • THEN 系统按当前套餐、流量和实名事实执行既有停机评估

Scenario: 后续套餐激活结果未知

  • GIVEN 某载体的当前主套餐到期,存在待生效后续主套餐,但激活任务投递或执行结果暂时未知
  • WHEN 系统处理该套餐到期
  • THEN 系统不得将该未知结果视为不存在后续套餐而依据旧快照发起停机,并保留既有激活恢复与套餐轮询兜底

Scenario: 卡状态轮询发现缺失的套餐任务

  • GIVEN 启用轮询的卡匹配套餐检查配置,且其 polling:package 分片队列项因异常缺失
  • WHEN 卡状态轮询成功完成且未命中风险停机
  • THEN 系统基于最新卡状态仅补入缺失的套餐任务,不改写已存在套餐任务的执行时间;后续套餐任务仍按既有停复机条件评估该卡