feat: add staged subscription rollout mode

This commit is contained in:
QiuSW
2026-07-22 15:13:28 +08:00
parent e3b90ccea5
commit 2604a59d67
17 changed files with 551 additions and 87 deletions
+8
View File
@@ -2138,3 +2138,11 @@
- 方案:新增 `CMSHOPEE_SUBSCRIPTION_MODE=open|shadow|enforce`。开发测试使用 `open`,不批量创建虚假权益;正式前使用 `shadow` 统计真实权益覆盖率;最终使用 `enforce` 强制账号订阅。状态接口补齐桌面端账号、套餐、顶层有效期、会员中心、通知版本和真实权益状态字段。
- 运营:admin 首页只保留“会员套餐”和“用户会员”,其余模型继续注册并保留直接管理地址、权限和历史数据,不删除表。
- 边界:不改 API Key、点数、充值、软件订单、通用生成接口或已接受异步任务;任务详见 `docs/tasks/T-632.md`。
## 2026-07-22 完成:T-632 会员订阅三阶段启用与简化运营
- 配置与授权:新增严格校验的 `CMSHOPEE_SUBSCRIPTION_MODE=open|shadow|enforce`,新配置缺失时兼容旧布尔开关。授权服务分别计算真实权益状态和最终访问结果;`open` / `shadow` 不创建或修改权益,`enforce` 才在产品专属 submit 预扣前拒绝。
- API:订阅状态接口新增 `account`、稳定套餐代码/显示名、顶层有效期、`manage_url`、`notice_id`、`access_source`、`entitlement_status`,并保留 T-630 的 `plan.name` 及套餐内有效期字段。授权日志同时保留真实拒绝指标和最终放行结果。
- admin:软件授权应用索引只显示“会员套餐”和“用户会员”;软件订单、事件、设备观测及历史授权模型继续注册、保留直接管理地址和历史数据。`licensing.0005` 只修改两个模型的显示名称。
- 验证:5 条不依赖数据库的模式/合约/宽限期/admin 单元测试通过;`manage.py check`、迁移一致性、编译与 `git diff --check` 通过;非法模式按预期阻止启动。数据库 API/admin 定向测试已尝试,但旧远程 MySQL `43.128.3.240` 拒绝连接,本机 MySQL 又不接受项目账号,因此未取得数据库集成测试结果。
- 发布约束:当前部署保持 `open`;切 `shadow` / `enforce` 前必须在可用 MySQL 测试库补跑 T-632 数据库集成回归,并核对桌面端状态页。