按《DSH 开发文档 v1.6》4.9 与第十一章实现,Web 端第一步:
1. 契约先行(先改 contracts/ 再同步三端):
* model-formats.md -> 0.5.0:模型主力格式改为 VRM,所有上传模型一律转 VRM
(.pmx/.fbx: assimp -> GLB -> VRM;glb/gltf: 包装为 VRM);
新增 humanoid 硬门槛与"不达标回退 GLB + usable=false"的交付表;
* data-models.md -> 0.5.0:Model 新增 usable / unusableReason,明确
usable=false 不进入 catalog/export;format 说明改为主力 vrm;
* VERSION 与 contract-versions.ts 同步(三端契约文件逐字节一致)。
2. 实现:
* MODEL_CONVERT_FORMAT 默认改为 vrm(deploy/.env.example 同步);
* 新增 isUsableModel()/unusableReason():usable 等价于"已产出 VRM",
原因从 stats 里带出 humanoid 覆盖度;
* catalog/export 与 catalog/version 指纹都只统计 format=vrm 的已发布模型,
resolveDefaultModelId 同样只在可用模型中选;
* 管理端:模型列表与审核面板显示「不可用」及原因;
* 管理端左下角展示当前版本号(构建期从 web-server/package.json 注入
__APP_VERSION__,与 GET /health 同源),并去掉写死的"契约 rest-api 0.1.0"。
3. 测试:新增 test/model-usability.spec.ts 5 项;规模 16 文件 / 225 项。
4. 版本 0.3.0。
54 lines
1.7 KiB
JSON
54 lines
1.7 KiB
JSON
{
|
|
"name": "opendance-web-server",
|
|
"version": "0.3.0",
|
|
"description": "OpenDance Studio Web 管理服务端(NestJS + TypeORM + 现有 MySQL 实例)",
|
|
"license": "MIT",
|
|
"private": true,
|
|
"engines": {
|
|
"node": ">=22.0.0"
|
|
},
|
|
"scripts": {
|
|
"build": "nest build",
|
|
"start": "nest start",
|
|
"start:dev": "nest start --watch",
|
|
"start:prod": "node dist/main.js",
|
|
"typecheck": "tsc --noEmit",
|
|
"test": "vitest run",
|
|
"test:watch": "vitest",
|
|
"test:smoke": "node test/smoke.mjs",
|
|
"contracts:check": "node scripts/check-contracts.mjs && node scripts/check-routes.mjs",
|
|
"verify": "npm run contracts:check && npm run typecheck && npm run test && npm run build",
|
|
"typeorm": "node scripts/migrate.mjs",
|
|
"migration:generate": "node scripts/migrate.mjs generate",
|
|
"migration:run": "node scripts/migrate.mjs run",
|
|
"migration:revert": "node scripts/migrate.mjs revert",
|
|
"migration:show": "node scripts/migrate.mjs show"
|
|
},
|
|
"dependencies": {
|
|
"@nestjs/common": "^11.0.12",
|
|
"@nestjs/config": "^4.0.2",
|
|
"@nestjs/core": "^11.0.12",
|
|
"@nestjs/platform-express": "^11.0.12",
|
|
"@nestjs/typeorm": "^11.0.0",
|
|
"class-transformer": "^0.5.1",
|
|
"class-validator": "^0.14.1",
|
|
"dotenv": "^16.4.7",
|
|
"mysql2": "^3.12.0",
|
|
"reflect-metadata": "^0.2.2",
|
|
"rxjs": "^7.8.2",
|
|
"typeorm": "^0.3.21"
|
|
},
|
|
"devDependencies": {
|
|
"@nestjs/cli": "^11.0.5",
|
|
"@nestjs/schematics": "^11.0.2",
|
|
"@types/express": "^5.0.0",
|
|
"@types/multer": "^1.4.12",
|
|
"@types/node": "^22.13.10",
|
|
"source-map-support": "^0.5.21",
|
|
"ts-node": "^10.9.2",
|
|
"tsconfig-paths": "^4.2.0",
|
|
"typescript": "^5.7.3",
|
|
"vitest": "^3.0.8"
|
|
}
|
|
}
|