左栏商品名显示成光款号(如 PLTK016)的根因是双层解析不一致:api 写路径按 首括号对解析产出「童装…(DTG180) PLTK016」,admin 展示解析按末括号取品名 误显示成 PLTK016。 - admin parseLinkName 对齐 api 首括号对解析 + 无 SKU 段中文品名守卫, cleanLinkName 剥离 ASCII 型号限定词(中文括号内容保留) - api 新增 cleanGoodDisplayName/describePureSkuGoodName,接入 create/update/ batchCreate(batchCreate 补上缺失的 normalize);纯款号按 SDS 分类名补描述 - 新增幂等存量修复脚本 fix:good-names(默认 dry-run,--apply 写库) - 已执行:V2 栈 34 条限定词名、V1 栈 213 条原始链接名规范化,复跑幂等 0 Tests: api 22 suites/199 passed, admin 27 passed, tsc clean
84 lines
2.8 KiB
JSON
84 lines
2.8 KiB
JSON
{
|
|
"name": "@inkreach/api",
|
|
"private": true,
|
|
"version": "1.0.0",
|
|
"description": "NestJS backend for InkReach Product Center",
|
|
"main": "dist/main.js",
|
|
"scripts": {
|
|
"build": "nest build",
|
|
"format": "prettier --write \"src/**/*.ts\"",
|
|
"dev": "nest start --watch",
|
|
"start": "nest start",
|
|
"start:dev": "nest start --watch",
|
|
"start:debug": "nest start --debug --watch",
|
|
"start:prod": "node dist/main",
|
|
"lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
|
|
"test": "jest",
|
|
"test:watch": "jest --watch",
|
|
"test:cov": "jest --coverage",
|
|
"test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
|
|
"test:e2e": "jest --config ./test/jest-e2e.json",
|
|
"prisma:generate": "prisma generate",
|
|
"prisma:migrate": "prisma migrate dev",
|
|
"prisma:studio": "prisma studio",
|
|
"configure:product-center-icons": "ts-node prisma/configure-product-center-icons.ts",
|
|
"import:product-detail": "ts-node prisma/import-product-detail.ts",
|
|
"backfill:product-families": "ts-node prisma/backfill-product-families.ts",
|
|
"fix:good-names": "ts-node prisma/fix-pure-sku-good-names.ts",
|
|
"organize": "ts-node prisma/backfill-product-families.ts"
|
|
},
|
|
"dependencies": {
|
|
"@nestjs/axios": "^3.0.1",
|
|
"@nestjs/common": "^10.3.0",
|
|
"@nestjs/config": "^3.1.1",
|
|
"@nestjs/core": "^10.3.0",
|
|
"@nestjs/jwt": "^10.2.0",
|
|
"@nestjs/passport": "^10.0.3",
|
|
"@nestjs/platform-express": "^10.3.0",
|
|
"@nestjs/schedule": "^4.0.0",
|
|
"@nestjs/swagger": "^7.1.17",
|
|
"@nestjs/throttler": "^6.5.0",
|
|
"@prisma/client": "^5.8.0",
|
|
"@types/multer": "^2.2.0",
|
|
"axios": "^1.6.5",
|
|
"bcrypt": "^5.1.1",
|
|
"class-transformer": "^0.5.1",
|
|
"class-validator": "^0.14.0",
|
|
"cookie-parser": "^1.4.7",
|
|
"express": "^4.21.0",
|
|
"helmet": "^8.3.0",
|
|
"multer": "^2.2.0",
|
|
"passport": "^0.7.0",
|
|
"passport-jwt": "^4.0.1",
|
|
"reflect-metadata": "^0.2.1",
|
|
"rxjs": "^7.8.1"
|
|
},
|
|
"devDependencies": {
|
|
"@nestjs/cli": "^10.2.1",
|
|
"@nestjs/schematics": "^10.0.3",
|
|
"@nestjs/testing": "^10.3.0",
|
|
"@types/bcrypt": "^5.0.2",
|
|
"@types/cookie-parser": "^1.4.10",
|
|
"@types/express": "^4.17.21",
|
|
"@types/jest": "^29.5.11",
|
|
"@types/node": "^20.10.6",
|
|
"@types/passport-jwt": "^4.0.0",
|
|
"@types/supertest": "^6.0.2",
|
|
"@typescript-eslint/eslint-plugin": "^6.17.0",
|
|
"@typescript-eslint/parser": "^6.17.0",
|
|
"eslint": "^8.56.0",
|
|
"eslint-config-prettier": "^9.1.0",
|
|
"eslint-plugin-prettier": "^5.1.2",
|
|
"jest": "^29.7.0",
|
|
"prettier": "^3.1.1",
|
|
"prisma": "^5.8.0",
|
|
"source-map-support": "^0.5.21",
|
|
"supertest": "^6.3.3",
|
|
"ts-jest": "^29.1.1",
|
|
"ts-loader": "^9.5.1",
|
|
"ts-node": "^10.9.2",
|
|
"tsconfig-paths": "^4.2.0",
|
|
"typescript": "^5.3.3"
|
|
}
|
|
}
|