-
released this
2026-09-17 03:52:34 +08:00 | 5 commits to main since this releaseOpenDance Studio -- Web 管理服务端 v0.7.4
场景功能的真正根因修复:
Scene实体没有被注册进ENTITIES
(v0.7.3 的降级修复 + 本版的实体注册修复,两者缺一不可)。契约无变更(
rest-api 0.5.0/websocket-keypoints 0.2.0/data-models 0.7.0/
skeleton-topology 0.2.0/model-formats 0.5.0/database 0.4.0)。根因:
No metadata for "Scene" was found.部署 v0.7.3 后,
/health的scenes.error给出了决定性线索:"scenes": { "available": false, "error": "No metadata for \"Scene\" was found." }src/entities/index.ts一直是:export const ENTITIES = [Asset, Song, Motion, CharacterModel, ReviewRecord]; // ← 少了 SceneTypeORM 的 DataSource 只按
ENTITIES注册 metadata。漏注册的后果非常隐蔽:环节 表现 启动 完全正常(DI 图可解析、 /health正常、migrationsPending 0)迁移 正常 —— AddScenes已执行,scenes表其实是建好的第一次查该实体 抛 No metadata for "Scene" was found.连带影响 /api/scenes、/api/catalog/export、/api/catalog/version、/api/reviews?status=pending全部 500 → 客户端拉不到任何目录、管理端待审列表打不开也就是说:此前"数据库缺 scenes 表"的判断是错的(那是我的误判)。
v0.7.3 的降级修复与诊断脚本因此仍然必要 —— 它们把"场景坏了"限制成"场景不可用",
而不是让整站不可用(部署 v0.7.3 后catalog/export与待审列表已恢复 200)。修复
ENTITIES加入Scene并导出。新增静态防线:
test/entities-registry.spec.ts(4 项)- 扫描
src/entities/*.entity.ts里所有@Entity()类,逐一与ENTITIES对账
(漏一个即失败;已做反向验证:把Scene从ENTITIES移除,测试立刻失败); - 检查
ENTITIES无重复、无多余项; - 核对
AddScenes迁移文件确实存在(迁移文件缺失时showMigrations()仍会显示
"0 个待执行",这是另一个隐蔽的静默不一致)。
这类"漏注册"既过得了
tsc,也过得了启动冒烟(应用能启动),只能靠静态核对兜住。校验
npm run verify通过:contracts:check(六项一致 + 35 条路由一致 + 版本一致)、
tsc --noEmit、23 文件 / 285 项测试、nest build、启动冒烟;- 发布产物解压后
npm ci --omit=dev+node dist/main.js实测打印「应用版本 v0.7.4」。
部署与部署后自检
curl -fLO https://gitea.kasugano.cn/zijunchiang/opendance-web/releases/download/v0.7.4/opendance-web-v0.7.4.tar.gz curl -fLO https://gitea.kasugano.cn/zijunchiang/opendance-web/releases/download/v0.7.4/SHA256SUMS sha256sum -c SHA256SUMS tar -xzf opendance-web-v0.7.4.tar.gz && cd opendance-web-v0.7.4 sudo bash deploy/install.sh # 1) 版本可核对 curl -s http://<服务器地址>:3000/health | grep -o '"version":"[^"]*"' # 期望 0.7.4 # 2) 场景子系统应恢复可用(不再有 No metadata) curl -s http://<服务器地址>:3000/health | python3 -m json.tool | grep -A3 '"scenes"' # 期望 available: true # 3) 场景接口不再 500 curl -s -o /dev/null -w '%{http_code}\n' http://<服务器地址>:3000/api/scenes # 期望 200 # 4) 表/列实际状态(默认只读) cd <APP_DIR>/web-server && set -a && . ../deploy/.env && set +a node scripts/diagnose-scenes.mjs # 5) 数据库端到端验收(歌曲 → 动作 → 预处理 → 模型 → 审核 → 场景 → 目录导出) API_BASE=http://<服务器地址>:3000 node web-server/test/smoke.mjs<服务器地址>是你们自己部署的服务端地址(部署方决定),不是被脱敏的域名。交付物校验和(可核对)
e03e28f3ab483291c4b030a428ace9100bddcd1ab5d40010ab29a4a9500d1987 opendance-web-v0.7.4.tar.gz下载后:
curl -fLO https://gitea.kasugano.cn/zijunchiang/opendance-web/releases/download/v0.7.4/SHA256SUMS curl -fLO https://gitea.kasugano.cn/zijunchiang/opendance-web/releases/download/v0.7.4/opendance-web-v0.7.4.tar.gz sha256sum -c SHA256SUMS # 期望 OKDownloads
- 扫描