feat: add admin client policy control

This commit is contained in:
QiuSW
2026-07-28 15:42:23 +08:00
parent 9544aaf4cc
commit 2171968780
17 changed files with 558 additions and 21 deletions
+22
View File
@@ -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`。