依据 Gitea v1.27.3 modules/charset/escape_stream.go 的判定规则 (analyzeDetectResults:仅当左右相邻字符都不是非 ASCII 时才标记, 且 _common 表恒定生效),把说明文档中会被标记的全角标点 (,:;?!() 等)改为半角,并保证成对括号宽度一致。 中文语境中的全角标点(左右均为中文)保持原样,不动代码与契约语义。 同时删除临时探针目录 _probe/(仅用于确认 Gitea 判定规则)。
50 lines
1.6 KiB
Markdown
50 lines
1.6 KiB
Markdown
# T-WEB-009 模型管理界面 + 来源展示
|
|
|
|
- **状态**: done
|
|
- **依赖**: T-WEB-005
|
|
|
|
## 目标
|
|
|
|
React 管理端的模型管理页面:列表、上传、**来源信息完整展示**、VRM 优先设置、
|
|
3D 预览。
|
|
|
|
## load
|
|
|
|
```
|
|
DSH.md
|
|
contracts/rest-api.yaml # 锚点:#/paths/~1api~1models
|
|
contracts/data-models.md # 锚点:4 Model、4.1 VRM 优先规则
|
|
web-server/admin/src/pages/ModelsPage.tsx
|
|
web-server/admin/src/components/VrmPreview.tsx
|
|
```
|
|
|
|
## 交付物
|
|
|
|
| 路径 | 说明 |
|
|
|--|--|
|
|
| `src/pages/ModelsPage.tsx` | 模型列表 + 上传表单 + 设为默认 |
|
|
| `src/components/VrmPreview.tsx` | three.js + @pixiv/three-vrm 的 3D 预览面板 |
|
|
|
|
## 页面能力
|
|
|
|
- 表格列:预览缩略图、名称、格式(VRM 高亮徽章)、VRM 版本、是否默认、
|
|
**来源五元组**、许可、状态、操作
|
|
- **来源展示(本任务验收重点)**:整行展示 `sourceType` + `sourceName` + `author`
|
|
+ `license`, `sourceUrl` 可点击外链跳转
|
|
- 上传:`POST /api/models`(multipart `file` + 名称 + `isPrimary` + 来源五元组 +
|
|
状态),客户端校验与歌曲页一致
|
|
- 「设为默认」-> `POST /api/models/:id/primary`,成功后刷新列表以反映互斥结果
|
|
- 3D 预览:`GLTFLoader` + `VRMLoaderPlugin` 加载 `fileUrl`,
|
|
支持鼠标拖拽旋转与滚轮缩放,正确处理 VRM 0.x / 1.0 元数据差异、
|
|
未选择模型、加载失败三种状态,卸载时释放资源
|
|
|
|
## 验收
|
|
|
|
```bash
|
|
cd web-server/admin
|
|
npm run build # 必须成功
|
|
```
|
|
|
|
另由 `npm run test:smoke`([4] 段落)验证后端确实在列表接口返回完整来源字段,
|
|
供本页面展示。
|