docs: add admin client policy task
This commit is contained in:
@@ -114,6 +114,7 @@
|
||||
| T-633 | 存量用户批量授予过渡测试套餐 | T-632, T-626 | **已完成。** 新增默认只预演的 `grant_existing_users_plan`,通过明确 `plan_id`、非空原因、`--execute` 与预期人数双重确认,为启用的非后台账号批量授予套餐;已有同产品有效/宽限期权益会跳过。执行在单事务内复用 `grant_software_entitlement()` 生成权益快照、席位和授权事件,任一失败整批回滚。线上已备份 MySQL 后为 30 个存量用户授予“测试”套餐,反向预演待授予为 0;后台账号、API Key、点数、充值、软件订单和生成记录未由命令修改。详见 [`tasks/T-633.md`](tasks/T-633.md)。 | DONE |
|
||||
| T-634 | 过期会员允许购买其他套餐 | T-629, T-632 | **已完成。** 软件下单与支付入账统一按 `status=active + grace_expires_at > now` 识别当前可用权益;支付校验通过后在同一事务内把同产品自然到期但仍为 `active` 的历史权益收敛为 `expired`,并为目标套餐创建新权益。有效/宽限期内的跨套餐仍拒绝;同套餐有效权益续订、支付幂等、金额校验和点数账本隔离保持不变。新增 5 条缺陷回归,扩大非并发 licensing / 软件支付 API 回归 40 条通过;无迁移。详见 [`tasks/T-634.md`](tasks/T-634.md)。 | DONE |
|
||||
| T-635 | cmshopee 客户端启动订阅策略接口 | T-607, T-632 | **已完成。** 公开版本检查接口顶层新增 `client_policy`,有发布和 `release:null` 均返回,所有响应 `Cache-Control: no-store`;单一 `off|observe|enforce` 配置源输出双布尔字段,非 `off` 强制带时区更新时间。订阅状态新增不受运行模式影响的 `real_entitlement_allowed`,客户端不再把 `open` / `shadow` 的兼容 `allowed=true` 误判为真实会员。无迁移,不读用户、套餐或点数,不改生文、生图、支付、扣点和订阅订单。详见 [`tasks/T-635.md`](tasks/T-635.md)。 | DONE |
|
||||
| T-636 | 客户端订阅策略 django-admin 运营开关 | T-635, T-632 | 将新版客户端启动策略从“改 `.env` + 重启”扩展为 django-admin 可运营的单例配置。**数据源**:新增全局单例 `ClientSubscriptionPolicy`,取值仅 `off|observe|enforce`;公开版本检查接口优先读取该记录,记录尚不存在时才回退 T-635 环境变量,确保本次上线和回滚不改变既有 `off` 行为。**后台**:日常导航只增加一个“客户端订阅策略”入口;仅超级管理员可新增 / 修改,不允许删除,首次创建后只能编辑该唯一记录。保存必须填写变更原因,自动记录操作者、前后模式、时间和原因;审计只在详情页只读展示,不另增菜单入口。`CMSHOPEE_SUBSCRIPTION_MODE` 只读展示为服务端授权模式,不能被该页修改。**即时生效**:每次公开版本检查实时读取该全局配置,不做进程内缓存,admin 保存后无需重启 Web / Generate;不创建策略记录仍沿用 `.env`,紧急回退可在后台改回 `off`。**安全与兼容**:公开响应仍无账号上下文,不读取用户权益、套餐、点数、订单或 API Key;不改通用 / 专属生成、预扣 / 退点、支付、软件订单及服务端授权模式。**迁移与部署**:迁移只建空表,不预置记录;生产先备份并执行 migrate,验收公开接口仍为当前 `client_policy=off`,再由超级管理员按 `off -> observe -> enforce` 灰度。**测试**:覆盖 `.env` 回退、后台策略优先、三种映射、保存后下一次公开请求立即生效、唯一性、超级管理员限制、原因和审计留痕、审计不出现在 admin 导航、`no-store` 与既有发布字段回归;`makemigrations` / `migrate` / `check` / 目标测试 / `init` / `git diff --check` 通过,并同步 API、架构、环境、部署、当前状态、进度和 Obsidian 客户端契约。详见 [`tasks/T-636.md`](tasks/T-636.md)。 | TODO |
|
||||
|
||||
## 里程碑
|
||||
|
||||
@@ -139,6 +140,7 @@
|
||||
- M20:存量用户过渡测试套餐安全批量授予(T-633)。
|
||||
- M21:过期会员可自助购买新套餐(T-634)。
|
||||
- M22:cmshopee 客户端启动订阅策略接口(T-635)。
|
||||
- M23:客户端订阅策略 django-admin 运营开关(T-636)。
|
||||
|
||||
## 待办池(Backlog)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user