docs: add expired subscription repurchase task
This commit is contained in:
@@ -2164,3 +2164,11 @@
|
||||
- 线上结果:30 个不同普通用户获得“测试”权益,产生 30 条授予事件和 3030 条套餐席位快照;后台账号为 0,目标用户缺失为 0,重复有效权益为 0。反向预演为 `skipped_existing=30`、`grant_count=0`。
|
||||
- API 抽样:订阅状态返回 `active`、`access_source=entitlement`、`entitlement_status=active` 和套餐“测试”,抽样账号点数保持 148。
|
||||
- 并发说明:执行前后有 4 个生图任务运行,点数聚合从 22221 变为 22219、流水从 10180 变为 10181;最新流水为关联调用的 `consume -2`,属于并发生图业务,不是 T-633 授权命令写账。
|
||||
|
||||
## 2026-07-23 规划:T-634 过期会员允许购买其他套餐
|
||||
|
||||
- 线上复现:`dev` 的“测试”权益已经超过宽限截止时间,但数据库状态仍为 `active`;购买另一套餐“99元/月”时,`create_software_order()` 只按状态查到旧权益,并返回 `plan_change_not_supported`,请求在创建新订单前结束。
|
||||
- 根因:订阅授权按 `status + grace_expires_at` 判断真实有效性,软件下单与支付发放只按 `status=active` 判断当前套餐,两条链路口径不一致。
|
||||
- 方案:下单和支付都只把仍在有效期或宽限期内的权益视为当前权益;支付发放时在同一事务内把同产品自然到期但仍标记为 `active` 的历史权益收敛为 `expired`,再创建目标套餐新权益。
|
||||
- 兼容边界:有效/宽限期内的跨套餐仍拒绝;同套餐有效权益继续续订;不实现升级、降级、差价或退款,不改支付验签、点数账本、API 契约或数据库结构。
|
||||
- 基线:执行 `./init.ps1` 通过,Python 3.12.3,依赖已满足,`manage.py check` 0 issues。本阶段只登记任务,尚未修改代码。
|
||||
|
||||
Reference in New Issue
Block a user