feat: add client latest release api
This commit is contained in:
+46
@@ -12,6 +12,7 @@
|
||||
- 未携带有效 API Key 调用生成/余额接口:返回 `401`。
|
||||
- 用户或 Key 被禁用/吊销(disabled/revoked):返回 `403`。
|
||||
- **对外 API 只接受 API Key 认证,不接受 Web session**(浏览器带 cookie 也不能调 API,防绕过计费归属)。
|
||||
- 例外:客户端下载版本检查接口只返回公开发布元数据,设计为匿名只读接口,不需要 API Key,不读取用户、不扣点。
|
||||
- 图片生成为**同步**接口,可能耗时较长,调用方与网关需设置足够超时(≥ 300s)。
|
||||
- 用户端注册使用同一个 `User` 账本主体;注册邮箱**必填且唯一**(`ACCOUNT_EMAIL_VERIFICATION="none"`,**不做邮箱验证**、注册即可用),唯一约束避免同邮箱对应多个点数账户。
|
||||
- API Key 库内只存 `key_hash`(SHA-256)与 `key_prefix`,明文只在创建时返回一次,不在 admin、日志或调用记录中回显。
|
||||
@@ -43,6 +44,8 @@ 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` 的公开发布元数据。
|
||||
|
||||
通用错误响应:
|
||||
|
||||
```json
|
||||
@@ -79,6 +82,49 @@ T-606 已实现公开首页与客户端下载入口:`GET /` 匿名返回 200
|
||||
|
||||
> **重要约定**:`model` 字段传的是**能力别名**(如 `title-standard` / `image-hd`),不是具体供应商模型名。后台把别名映射到当前的具体模型,换供应商时调用方零改动。供应商特有参数放 `parameters`,但只允许 Provider 白名单内的安全参数透传;`model`、`n`、`size`、`resolution`、`messages`、`image*` 等核心/计费字段由服务端固定,调用方传入时忽略。
|
||||
|
||||
### `GET /api/v1/client/releases/latest`
|
||||
|
||||
桌面端检查最新客户端版本。该接口为公开只读接口,不需要 API Key,不关联用户账本。
|
||||
|
||||
请求:
|
||||
|
||||
```http
|
||||
GET /api/v1/client/releases/latest?platform=windows
|
||||
```
|
||||
|
||||
参数:
|
||||
|
||||
| 参数 | 必填 | 说明 |
|
||||
| --- | --- | --- |
|
||||
| `platform` | 否 | `windows` / `macos` / `linux`;缺省按 `windows`。非法值返回 `400 bad_request` |
|
||||
|
||||
有当前版本时响应:
|
||||
|
||||
```json
|
||||
{
|
||||
"platform": "windows",
|
||||
"release": {
|
||||
"version": "1.0.0",
|
||||
"download_url": "https://cm.833729.com/media/downloads/cmhub-desktop-1.0.0.exe",
|
||||
"sha256": "64位sha256",
|
||||
"release_notes": "本次更新说明",
|
||||
"published_at": "2026-07-06T18:00:00+08:00"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
无当前版本或当前版本没有下载地址时响应:
|
||||
|
||||
```json
|
||||
{
|
||||
"platform": "windows",
|
||||
"release": null,
|
||||
"message": "暂未发布"
|
||||
}
|
||||
```
|
||||
|
||||
要点:接口只查 `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`。
|
||||
|
||||
### `POST /api/v1/generate/title`
|
||||
|
||||
生成标题。请求:
|
||||
|
||||
Reference in New Issue
Block a user