library-picturebook-activity/backend/package.json
aid 418aa57ea8 Day4: 超管端设计优化 + UGC绘本创作社区P0实现
一、超管端设计优化
- 文档管理SOP体系建立,docs目录重组
- 统一用户管理:跨租户全局视角,合并用户管理+公众用户
- 活动监管全模块重构:全部活动(统计卡片+阶段筛选+SuperDetail详情页)、报名数据/作品数据/评审进度(两层合一扁平列表)、成果发布(去Tab+统计+隐藏写操作)
- 菜单精简:移除评委管理/评审规则/通知管理
- Bug修复:租户编辑丢失隐藏菜单、pageSize限制、主色统一

二、UGC绘本创作社区P0
- 数据库:10张新表(user_works/user_work_pages/work_tags等)
- 子女账号独立化:Child升级为独立User,家长切换+独立登录
- 用户作品库:CRUD+发布审核,8个API
- AI创作流程:提交→生成→保存到作品库,4个API
- 作品广场:首页改造为推荐流,标签+搜索+排序
- 内容审核(超管端):作品审核+作品管理+标签管理
- 活动联动:WorkSelector作品选择器
- 布局改造:底部5Tab(发现/创作/活动/作品库/我的)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 22:20:25 +08:00

123 lines
5.0 KiB
JSON

{
"name": "competition-management-backend",
"version": "1.0.0",
"description": "活动管理系统后端",
"author": "",
"private": true,
"license": "MIT",
"scripts": {
"build": "nest build",
"format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
"start": "nest start",
"start:dev": "set NODE_ENV=development&&nest start --watch",
"start:debug": "NODE_ENV=development nest start --debug --watch",
"start:prod": "NODE_ENV=production node dist/main",
"start:pm2:test": "pm2 start ecosystem.config.js --env test --only competition-api-test",
"start:pm2:prod": "pm2 start ecosystem.config.js --env production --only competition-api",
"stop:pm2:test": "pm2 stop competition-api-test",
"stop:pm2:prod": "pm2 stop competition-api",
"lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
"test": "NODE_ENV=test jest",
"test:watch": "NODE_ENV=test jest --watch",
"test:cov": "NODE_ENV=test jest --coverage",
"test:debug": "NODE_ENV=test node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
"test:e2e": "NODE_ENV=test jest --config ./test/jest-e2e.json",
"prisma:status:dev": "dotenv -e .env.development -- prisma migrate status",
"prisma:generate": "prisma generate",
"prisma:generate:dev": "dotenv -e .env.development -- prisma generate",
"prisma:migrate": "prisma migrate dev",
"prisma:migrate:dev": "dotenv -e .env.development -- prisma migrate dev --create-only --name add_contest_module",
"prisma:migrate:deploy": "NODE_ENV=production prisma migrate deploy",
"prisma:studio": "prisma studio",
"prisma:studio:dev": "NODE_ENV=development prisma studio",
"prisma:studio:prod": "NODE_ENV=production prisma studio",
"init:admin": "ts-node scripts/init-admin.ts",
"init:admin:permissions": "ts-node scripts/init-admin-permissions.ts",
"init:menus": "ts-node scripts/init-menus.ts",
"init:super-tenant": "ts-node scripts/init-super-tenant.ts",
"init:linksea-tenant": "ts-node scripts/init-linksea-tenant.ts",
"init:tenant-admin": "ts-node scripts/init-tenant-admin.ts",
"init:tenant-admin:permissions": "ts-node scripts/init-tenant-admin.ts --permissions-only",
"init:tenant-permissions": "ts-node scripts/init-tenant-permissions.ts",
"init:tenant-menu-permissions": "ts-node scripts/init-tenant-menu-permissions.ts",
"update:password": "ts-node scripts/update-password.ts",
"fix:invalid-datetime": "ts-node scripts/fix-invalid-datetime.ts",
"cleanup:tenant-permissions": "ts-node scripts/cleanup-tenant-permissions.ts",
"init:roles:super": "ts-node scripts/init-roles-permissions.ts --super",
"init:roles": "ts-node scripts/init-roles-permissions.ts",
"init:roles:all": "ts-node scripts/init-roles-permissions.ts --all",
"init:tenant": "ts-node scripts/init-tenant.ts",
"compress:tgz:prod:win": "node -p \"require('./package.json').version\" | xargs -I {} bash scripts/compress.sh --env production --version {}",
"compress:tgz:test:win": "node -p \"require('./package.json').version\" | xargs -I {} bash scripts/compress.sh --env test --version {}"
},
"dependencies": {
"@nestjs/common": "^10.3.3",
"@nestjs/config": "^3.1.1",
"@nestjs/core": "^10.3.3",
"@nestjs/jwt": "^10.2.0",
"@nestjs/mapped-types": "^2.1.0",
"@nestjs/passport": "^10.0.3",
"@nestjs/platform-express": "^10.3.3",
"@prisma/client": "^6.19.0",
"adm-zip": "^0.5.16",
"axios": "^1.6.7",
"bcrypt": "^6.0.0",
"class-transformer": "^0.5.1",
"class-validator": "^0.14.1",
"cos-nodejs-sdk-v5": "^2.15.4",
"passport": "^0.7.0",
"passport-jwt": "^4.0.1",
"passport-local": "^1.0.0",
"reflect-metadata": "^0.2.1",
"rxjs": "^7.8.1",
"uuid": "^8.3.2"
},
"devDependencies": {
"@nestjs/cli": "^10.3.2",
"@nestjs/schematics": "^10.1.0",
"@nestjs/testing": "^10.3.3",
"@types/adm-zip": "^0.5.5",
"@types/bcrypt": "^5.0.2",
"@types/express": "^4.17.21",
"@types/jest": "^29.5.11",
"@types/multer": "^2.0.0",
"@types/node": "^20.11.5",
"@types/passport-jwt": "^4.0.1",
"@types/passport-local": "^1.0.36",
"@types/uuid": "^10.0.0",
"@typescript-eslint/eslint-plugin": "^6.19.1",
"@typescript-eslint/parser": "^6.19.1",
"dotenv": "^17.2.3",
"dotenv-cli": "^11.0.0",
"eslint": "^8.56.0",
"eslint-config-prettier": "^9.1.0",
"eslint-plugin-prettier": "^5.1.3",
"jest": "^29.7.0",
"prettier": "^3.2.4",
"prisma": "^6.19.0",
"source-map-support": "^0.5.21",
"ts-jest": "^29.1.2",
"ts-loader": "^9.5.1",
"ts-node": "^10.9.2",
"tsconfig-paths": "^4.2.0",
"typescript": "^5.3.3"
},
"jest": {
"moduleFileExtensions": [
"js",
"json",
"ts"
],
"rootDir": "src",
"testRegex": ".*\\.spec\\.ts$",
"transform": {
"^.+\\.(t|j)s$": "ts-jest"
},
"collectCoverageFrom": [
"**/*.(t|j)s"
],
"coverageDirectory": "../coverage",
"testEnvironment": "node"
}
}