feat: add client release force update flag

This commit is contained in:
QiuSW
2026-07-08 15:38:59 +08:00
parent 30d9df34eb
commit 6646c64a76
14 changed files with 130 additions and 29 deletions
+8 -5
View File
@@ -45,7 +45,7 @@ T-504/T-505 已实现用户端充值页基线:`/recharge` 走 Django session +
T-606 已实现公开首页与客户端下载入口:`GET /` 匿名返回 200,不再重定向到 `/dashboard`;匿名用户看到注册 / 登录 / 下载入口,登录用户看到「进入控制台」。下载区读取 `DownloadRelease(platform=windows, is_current=True)`,展示版本、下载按钮、SHA256 和发布说明;`external_url` 优先于后台上传文件的 `file.url`。`DownloadRelease` 不新增对外 JSON API,只由 SSR 首页和 django-admin 使用;生产本地安装包由 Nginx 直接服务 `MEDIA_ROOT/downloads/`,避免大文件占用 Gunicorn worker。
T-607 已实现 `GET /api/v1/client/releases/latest?platform=windows`,给桌面端自动检查更新使用。该接口公开匿名可访问,不需要 API Key,不读取用户、不扣点、不占用生成接口限流;只返回 `DownloadRelease` 的公开发布元数据。
T-607/T-609 已实现 `GET /api/v1/client/releases/latest?platform=windows`,给桌面端自动检查更新使用。该接口公开匿名可访问,不需要 API Key,不读取用户、不扣点、不占用生成接口限流;只返回 `DownloadRelease` 的公开发布元数据。T-609 起响应的 `release.force_update` 表示该版本是否必须升级,来源于后台 `DownloadRelease.force_update`,默认 `false`。
通用错误响应:
@@ -107,10 +107,11 @@ GET /api/v1/client/releases/latest?platform=windows
{
"platform": "windows",
"release": {
"version": "1.0.0",
"download_url": "https://cm.833729.com/media/downloads/cmhub-desktop-1.0.0.exe",
"version": "0.1.1",
"download_url": "https://cm.833729.com/media/downloads/cmhub-desktop-0.1.1.zip",
"sha256": "64位sha256",
"release_notes": "本次更新说明",
"release_notes": "优化了ai模块的生图的功能",
"force_update": true,
"published_at": "2026-07-06T18:00:00+08:00"
}
}
@@ -126,7 +127,9 @@ GET /api/v1/client/releases/latest?platform=windows
}
```
要点:接口只查 `DownloadRelease(platform, is_current=True)`;`download_url` 优先使用 `external_url`,否则用 `file.url` 生成绝对 HTTPS URL;`published_at` MVP 可使用 `DownloadRelease.updated_at`。响应不得包含本地 `MEDIA_ROOT`、文件系统路径、后台 ID、`is_current`、用户信息、API Key、模型配置或任何密钥字段。成功和“暂未发布”均返回 HTTP 200,方便桌面端静默检查;非法平台返回 `400 bad_request`。
字段说明:`force_update` 为布尔值,表示桌面端是否必须升级到该版本;未勾选时返回 `false`。客户端可先做版本号比较,再按 `force_update=true` 阻止继续使用旧版本或进入强制升级流程。
要点:接口只查 `DownloadRelease(platform, is_current=True)`;`download_url` 优先使用 `external_url`,否则用 `file.url` 生成绝对 HTTPS URL;`published_at` MVP 可使用 `DownloadRelease.updated_at`;`force_update` 使用后台发布版本上的布尔配置,默认 `false`。响应不得包含本地 `MEDIA_ROOT`、文件系统路径、后台 ID、`is_current`、用户信息、API Key、模型配置或任何密钥字段。成功和“暂未发布”均返回 HTTP 200,方便桌面端静默检查;非法平台返回 `400 bad_request`。无当前版本或当前版本没有下载地址时返回 `release:null`,不返回独立的 `force_update` 顶层字段。
### `POST /api/v1/generate/title`