feat: add admin client policy control
This commit is contained in:
+22
@@ -2237,3 +2237,25 @@
|
||||
66 个 `cmhub-image-worker` 未重启且均 active,failed units 为 0。公网版本接口返回
|
||||
HTTP 200、`Cache-Control: no-store` 和 `client_policy` 的两个 false 布尔值;线上
|
||||
`.deploy_revision=1c100c5`。
|
||||
|
||||
## 2026-07-28 实施中:T-636 客户端订阅策略 django-admin 运营开关
|
||||
|
||||
- 数据与来源:新增 `ClientSubscriptionPolicy(singleton_id=1)` 和只读
|
||||
`ClientSubscriptionPolicyAudit`,迁移 `licensing.0006_client_subscription_policy`
|
||||
只创建空表;固定主键与数据库 CHECK 约束防止第二个策略记录。公开版本检查接口每次
|
||||
优先读取该全局策略,未创建记录才回退 T-635 的 `.env` 配置,因此上线后保持现有
|
||||
`off` 行为,后台保存后无需重启即在下一次请求生效。
|
||||
- 后台:新增仅超级管理员可见的“客户端订阅策略”入口。首次创建和后续变更都必须填写
|
||||
原因;服务层事务内写策略和前后模式审计,拒绝相同模式伪变更。审计只在详情页只读
|
||||
inline 展示;`CMSHOPEE_SUBSCRIPTION_MODE` 仅展示为服务端授权模式,不能由此页修改。
|
||||
- 边界:未改用户权益、套餐、点数、支付、软件订单、通用 / 专属生成、图片 worker 或
|
||||
服务端订阅授权。版本检查接口仍匿名、`Cache-Control: no-store`,不读用户、真实权益、
|
||||
套餐、订单、API Key 或点数。
|
||||
- 验证:隔离 SQLite 已应用全量迁移(含 `licensing.0006`);
|
||||
`ClientLatestReleaseApiTests`、`ClientSubscriptionPolicyServiceTests`、
|
||||
`SoftwareEntitlementAdminTests` 共 25 tests OK,覆盖 `.env` 兜底、后台优先、即时
|
||||
发布、三种映射、单例约束、原因 / 审计、策略导航和 superuser 限制。`py_compile`、
|
||||
`manage.py check`、`./init.ps1` 与 `git diff --check` 通过。
|
||||
- 迁移一致性:`makemigrations --check --dry-run` 显示 No changes detected;旧本机
|
||||
MySQL `43.128.3.240` 拒绝连接,仅产生迁移历史检查 warning。待提交后按部署文档备份、
|
||||
`migrate` 并保持线上 `.env` 兜底为 `off`。
|
||||
|
||||
Reference in New Issue
Block a user