fix(goods): 商品展示名统一「品名 SKU」——剥 ASCII 型号限定词、纯款号补描述
左栏商品名显示成光款号(如 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
This commit is contained in:
@@ -207,7 +207,23 @@ curl -X POST /product-families/organize -H "$AUTH" # 后台「整理
|
||||
**链接名称展示解析**:后台所有链接名展示位(左右树、族成员列表、配置/编辑弹窗、搜索候选)
|
||||
统一解析为「品名 型号」(如 `美国(包邮)180g纯棉T恤成人款-DG001-单面印花` →
|
||||
`180g纯棉T恤成人款 DG001`),悬停 tooltip 保留原始全名;搜索同时匹配原始名与解析名
|
||||
(`utils/origin-name.ts#cleanLinkName`)。
|
||||
(`utils/origin-name.ts#cleanLinkName`)。解析按**首括号对**取品名(与 api 端
|
||||
`origin-name.parser.ts#splitSegment1` 同构);无 SKU 段时仅当括号后品名含中文才视为
|
||||
链接名——防止已规范化的「品名(型号限定词) SKU」(如 `童装…(DTG180) PLTK016`)
|
||||
被误解析成光款号。
|
||||
|
||||
**商品展示名规范化与存量修复(2026-09)**:`goods.good_name` 统一存「品名 SKU」——
|
||||
|
||||
- 写路径(`goods.service.ts` create/update/batchCreate 经 `resolveGoodName`):
|
||||
结构完整的原始链接名规范化为「品名 SKU」,品名内的 **ASCII 型号限定词**
|
||||
(如 `(DTG180)`/`(JSA002)`,供应商或工艺型号)一律剥离(中文括号内容如
|
||||
`(女款)`保留);清洗后仍为**纯款号**(如 `PLTK016`,SDS 部分链接名只有款号)
|
||||
时按主链接 SDS 分类名补描述(`PLTK016 童装纯色插肩短袖T恤` →
|
||||
`童装纯色插肩短袖T恤 PLTK016`);batchCreate 同样走规范化;自定义商品
|
||||
(createCustom/updateCustomContent)的人工命名不受影响;
|
||||
- 存量修复脚本:`pnpm --filter @inkreach/api fix:good-names`(默认 dry-run 打印
|
||||
旧名→新名清单,`-- --apply` 写库,幂等可重跑;`origin_goods.good_name` 为 SDS
|
||||
纯镜像不动,只改 `goods.good_name`)。
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -47,7 +47,8 @@ apps/api/
|
||||
├── prisma/
|
||||
│ ├── schema.prisma # 数据模型(OriginGood/ProductFamily/FamilyPriceOverride/Country/Category/Tag/Position/Good/User/SyncLog)
|
||||
│ ├── migrations/ # Prisma migrate 历史
|
||||
│ └── backfill-product-families.ts # 产品族回填脚本(解析列→自动建族→全量重算,幂等)
|
||||
│ ├── backfill-product-families.ts # 产品族回填脚本(解析列→自动建族→全量重算,幂等)
|
||||
│ └── fix-pure-sku-good-names.ts # 商品名存量修复脚本(剥型号限定词/纯款号补描述,幂等,dry-run 默认)
|
||||
├── src/
|
||||
│ ├── main.ts # 入口:CORS、ValidationPipe、Swagger、BigInt JSON 序列化
|
||||
│ ├── app.module.ts # 根模块,聚合所有业务模块
|
||||
@@ -59,8 +60,13 @@ apps/api/
|
||||
│ ├── tag-groups/ # 标签分组 CRUD(受 JWT 保护,含批量排序)
|
||||
│ ├── positions/ # 坑位 CRUD(受 JWT 保护)
|
||||
│ ├── origin-goods/ # SDS 原始商品快照(只读分页 + 配置状态树 + 链接级标签人工接管)
|
||||
<<<<<<< HEAD
|
||||
│ ├── product-families/ # 产品族(SPU 层):CRUD / auto-group / 成员管理 / 自定义成员 / 价格覆盖 / 重算 / 按链接名称派生标签(auto-tag-rules)
|
||||
│ ├── goods/ # 商品 CRUD + 批量优先级 + 批量创建
|
||||
=======
|
||||
│ ├── product-families/ # 产品族(SPU 层):CRUD / auto-group(并入已有族优先,familyNameKey 族语义键)/ attachToMatchingFamily(单链接自动归族)/ consolidateFragments(碎片族合并)/ 成员管理 / 自定义成员 / 价格覆盖 / 重算 / 按链接名称派生标签(auto-tag-rules,含 热转印→烫画 别名)
|
||||
│ ├── goods/ # 商品 CRUD + 批量优先级 + 批量创建 + 展示名规范化(品名 SKU,剥 ASCII 型号限定词,纯款号按 SDS 分类名补描述)
|
||||
>>>>>>> c3be8ab (fix(goods): 商品展示名统一「品名 SKU」——剥 ASCII 型号限定词、纯款号补描述)
|
||||
│ ├── sync/ # SDS 同步:分类 / 商品 / 同步日志
|
||||
│ ├── public/ # 公开 API:分类树 / 国家 / 商品分页 / 商品详情
|
||||
│ └── common/ # 全局装饰器 / 过滤器 / 拦截器
|
||||
|
||||
Reference in New Issue
Block a user