chore(contracts): 同步契约到 rest-api/data-models/model-formats 0.3.0、database 0.2.0(模型压缩包转换与默认模型规则)
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
# contracts/data-models.md — 数据模型契约 v0.2.0
|
||||
# contracts/data-models.md — 数据模型契约 v0.3.0
|
||||
|
||||
Web 服务端是唯一权威定义,本文件是另两端消费的**稳定视图**。
|
||||
字段名在 JSON 中统一 `camelCase`;数据库列名 `snake_case`(见 `database.md`)。
|
||||
@@ -102,22 +102,29 @@ rejected 已驳回
|
||||
| `fileUrl` | string | 读 | |
|
||||
| `fileSize` | number | 读 | |
|
||||
| `thumbnailUrl` | string\|null | 读 | |
|
||||
| `conversionNote` | string\|null | 读 | 由压缩包转换而来时的说明(`Hatsune Miku.pmx → GLB,已内嵌 2 张贴图`);直传模型为 null |
|
||||
| `fileSha256` | string\|null | 读 | 模型文件(转换产物)的 sha256,用于换库后定位默认模型 |
|
||||
| `source*` | | ✅ | 来源五元组 |
|
||||
| `status` | `PublishStatus` | | |
|
||||
| `createdAt` / `updatedAt` | string | 读 | |
|
||||
|
||||
### 4.1 VRM 优先规则(冻结)
|
||||
### 4.1 默认模型选择规则(冻结)
|
||||
|
||||
客户端选择默认模型的顺序:
|
||||
服务端 `GET /api/catalog/export` 的 `defaultModelId` 按以下顺序解析:
|
||||
|
||||
```
|
||||
1. 显式指定 modelId(曲目动作绑定)
|
||||
0. 环境变量 DEFAULT_MODEL_ID 指定,且该模型存在且已发布
|
||||
1. 源码内写死的默认模型种子(web-server/src/config/default-model.ts 的
|
||||
DEFAULT_MODEL_SEED):按转换产物 sha256 匹配已发布模型 —— 换库/重建库后仍然有效
|
||||
2. models 中 format = 'vrm' 且 status = 'published' 且 is_primary = 1
|
||||
3. models 中 format = 'vrm' 且 status = 'published',按 id 升序取第一个
|
||||
4. models 中 status = 'published',按 (format='vrm' DESC, id ASC) 取第一个
|
||||
5. 无可用模型 → 客户端使用内置占位模型
|
||||
```
|
||||
|
||||
第 0/1 步是 v0.3.0 新增:上传 MMD 模型压缩包并转换成功后,服务端会把该模型
|
||||
`is_primary=1` + `status=published`,并把身份写进源码,使它成为开箱默认模型。
|
||||
|
||||
`isPrimary` 通过 `POST /api/models/:id/primary` 设置,服务端保证互斥(同一事务内先清零)。
|
||||
|
||||
## 5. `ReviewRecord`(审核流水)
|
||||
|
||||
Reference in New Issue
Block a user