feat: 前后端联调 — 任务创建 + 账户信息 + 预估花费 (0.0.18)

- task: device_id 改为必填参数,API 层 Omit 封装 + getDeviceId() 自动注入
- pricing.ts: Python 后端 calculate_cost 完整移植,六种定价模式 + 6 个 Bug 修复
  (浮点冗余/维度匹配不一致/null 守卫/matrix 数据提取/unit_scale 等)
- ModelInputForm: 三层兜底预估消费展示 + React Hooks 顺序修复
- AccountInfo: VIP 等级列表匹配,套餐详情展示(说明/周期/席位/到期)
- 模型列表加密缓存 (safe-storage, stale-while-revalidate)
- VIP API 模块 (激活码/等级/订单/模拟支付)
- device_id 统一使用 UUID v4 持久化 (与 login/register 对齐)
This commit is contained in:
2026-06-10 19:38:26 +08:00
parent 848fdeca3d
commit 95019316b2
19 changed files with 1681 additions and 292 deletions

View File

@@ -13,6 +13,7 @@ python server.py --release-dir ../release --port 8000
```
启动后访问:
- API 文档Swagger`http://localhost:8000/docs`
- 健康检查:`http://localhost:8000/health`
@@ -28,11 +29,11 @@ python server.py --release-dir ../release --port 8000
**请求参数Query String**
| 参数 | 类型 | 必填 | 示例 | 说明 |
|------|------|:--:|------|------|
| `platform` | string | 是 | `win32` | `win32` / `darwin` / `linux` |
| `version` | string | 是 | `0.0.3` | 客户端当前版本号(三段式 semver |
| `edition` | string | 否 | `personal` | `personal` / `enterprise`,默认 `personal` |
| 参数 | 类型 | 必填 | 示例 | 说明 |
|------------|--------|:--:|------------|-----------------------------------------|
| `platform` | string | 是 | `win32` | `win32` / `darwin` / `linux` |
| `version` | string | 是 | `0.0.3` | 客户端当前版本号(三段式 semver |
| `edition` | string | 否 | `personal` | `personal` / `enterprise`,默认 `personal` |
**响应 — 有更新时:**
@@ -68,19 +69,20 @@ python server.py --release-dir ../release --port 8000
**字段说明:**
| 字段 | 类型 | 必填 | 说明 |
|------|------|:--:|------|
| `downloadUrl` | string | 是 | 安装包 HTTPS 直链 |
| `fileSize` | number | 是 | 安装包字节数 |
| `sha512` | string | 是 | 安装包 SHA512 Base64 |
| `blockMapUrl` | string | 否 | blockmap 文件 URL缺失时客户端全量下载 |
| `blockMapSize` | number | 否 | blockmap 文件字节数(`> 0` 时客户端启用增量下载) |
| `changelog` | string | 否 | Markdown 格式更新日志 |
| `releaseDate` | string | 否 | 发布日期YYYY-MM-DD |
| `forceUpdate` | boolean | 否 | 是否强制更新(`true` 时用户不可跳过) |
| `minimumVersion` | string | 否 | 最低兼容版本(低于此版本的客户端必须更新) |
| 字段 | 类型 | 必填 | 说明 |
|------------------|---------|:--:|----------------------------------|
| `downloadUrl` | string | 是 | 安装包 HTTPS 直链 |
| `fileSize` | number | 是 | 安装包字节数 |
| `sha512` | string | 是 | 安装包 SHA512 Base64 |
| `blockMapUrl` | string | 否 | blockmap 文件 URL缺失时客户端全量下载 |
| `blockMapSize` | number | 否 | blockmap 文件字节数(`> 0` 时客户端启用增量下载) |
| `changelog` | string | 否 | Markdown 格式更新日志 |
| `releaseDate` | string | 否 | 发布日期YYYY-MM-DD |
| `forceUpdate` | boolean | 否 | 是否强制更新(`true` 时用户不可跳过) |
| `minimumVersion` | string | 否 | 最低兼容版本(低于此版本的客户端必须更新) |
> **增量更新说明**`blockMapUrl` + `blockMapSize` 为可选字段。客户端检测到 `blockMapSize > 0` 时自动启用增量下载(仅下载变更区块,节省 30%-70% 流量)。不传或为 `null` 时客户端全量下载。
> **增量更新说明**`blockMapUrl` + `blockMapSize` 为可选字段。客户端检测到 `blockMapSize > 0` 时自动启用增量下载(仅下载变更区块,节省
> 30%-70% 流量)。不传或为 `null` 时客户端全量下载。
---
@@ -116,26 +118,27 @@ Content-Type: application/json
## 数据库表结构
```sql
CREATE TABLE releases (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
platform VARCHAR(10) NOT NULL COMMENT 'win32 / darwin / linux',
edition VARCHAR(10) NOT NULL COMMENT 'personal / enterprise',
version VARCHAR(20) NOT NULL COMMENT '三段式 semver',
file_url VARCHAR(500) NOT NULL COMMENT '安装包 OSS HTTPS 地址',
file_size BIGINT NOT NULL COMMENT '安装包字节数',
sha512 VARCHAR(128) NOT NULL COMMENT '安装包 SHA512 Base64',
blockmap_url VARCHAR(500) COMMENT 'blockmap OSS 地址(可为空)',
blockmap_size BIGINT COMMENT 'blockmap 文件字节数',
changelog TEXT COMMENT 'Markdown 格式更新日志',
force_update TINYINT(1) DEFAULT 0,
min_version VARCHAR(20) DEFAULT '',
release_date DATE NOT NULL,
status VARCHAR(10) DEFAULT 'draft' COMMENT 'draft / published / deprecated',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
CREATE TABLE releases
(
id BIGINT PRIMARY KEY AUTO_INCREMENT,
platform VARCHAR(10) NOT NULL COMMENT 'win32 / darwin / linux',
edition VARCHAR(10) NOT NULL COMMENT 'personal / enterprise',
version VARCHAR(20) NOT NULL COMMENT '三段式 semver',
file_url VARCHAR(500) NOT NULL COMMENT '安装包 OSS HTTPS 地址',
file_size BIGINT NOT NULL COMMENT '安装包字节数',
sha512 VARCHAR(128) NOT NULL COMMENT '安装包 SHA512 Base64',
blockmap_url VARCHAR(500) COMMENT 'blockmap OSS 地址(可为空)',
blockmap_size BIGINT COMMENT 'blockmap 文件字节数',
changelog TEXT COMMENT 'Markdown 格式更新日志',
force_update TINYINT(1) DEFAULT 0,
min_version VARCHAR(20) DEFAULT '',
release_date DATE NOT NULL,
status VARCHAR(10) DEFAULT 'draft' COMMENT 'draft / published / deprecated',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
UNIQUE KEY uk_platform_edition_version (platform, edition, version),
INDEX idx_platform_edition_status (platform, edition, status)
INDEX idx_platform_edition_status (platform, edition, status)
);
```