feat(models): 新增历史模型回填(reanalyze)并修复存储去重的悬挂文件问题
背景:升级到带 models.stats 的版本后,库里已有模型没有分析与缩略图,
审核界面会全部显示"未分析、无预览图"。E2E 验证时还发现一个真问题:
sha256 去重命中旧资产但文件不存在(换过 STORAGE_DIR、或只恢复数据库)时,
分析会静默产出"全 0 结果"。
- POST /api/models/:id/reanalyze:重新分析(面数/骨骼树/humanoid/可驱动性)
并重建缩略图,只改 stats 与 thumbnailAssetId;文件在存储中不存在时返回 409,
避免用空结果覆盖已有分析数据
- scripts/reanalyze-models.mjs:批量回填 CLI(--dry-run / --model-id / --force)
- StorageService.persistBuffer:去重命中但文件不存在时按原路径**自愈补写**
- 契约:rest-api 新增 /api/models/{id}/reanalyze(路由 29 → 30 条)
- 文档:README / tasks/005 / 发布说明补回填章节与升级步骤
实测:真实 21MB VRM(290 骨骼)回填出面数 53552 / 顶点 44662 / humanoid 7/22,
并重建 512×512 缩略图;文件缺失场景返回 409 且不覆盖既有数据。
测试 168 项通过;契约与 30 条路由一致。
This commit is contained in:
@@ -294,6 +294,14 @@ deploy/.env 初始化引导(deploy/init-env.sh)
|
||||
入库后**一律 status=pending(待审核)**:上传不再自动发布、不再自动设为默认,
|
||||
必须经审核通过(模型审核面板可勾选「同时设为全局默认模型」)才对客户端可见。
|
||||
|
||||
升级后回填已有模型(面数 / 骨骼 / 缩略图)
|
||||
升级到带 models.stats 的版本后,旧模型还没有分析与预览图。服务启动后执行一次:
|
||||
cd /opt/opendance/web-server
|
||||
node scripts/reanalyze-models.mjs --url http://127.0.0.1:3000
|
||||
# 只处理一个:--model-id 14 只列清单:--dry-run 全部重算:--force
|
||||
也可对单个模型调 POST /api/models/:id/reanalyze(只改 stats 与缩略图两个字段)。
|
||||
若模型文件在存储中已丢失,接口返回 409 并提示先恢复文件,不会用空结果覆盖已有数据。
|
||||
|
||||
模型压缩包(.zip)自动搜索与转换
|
||||
上传的 .zip 不再"只找 .pmx",而是**自动搜索包内可用模型**,走
|
||||
"解压 → 选主模型 → 直接导入或转换 → 回读校验 → 入库",而不是把压缩包当模型存下来。
|
||||
|
||||
Reference in New Issue
Block a user