Files
inkreach-official-website/plans/fix/category-name-parens-fix.md
T
yeuimu 37353470e7 fix(categories): 分类名去括号——同步入库整段删除括号段
左侧分类树/官网分类名的括号段(型号限定词(JSA002)与内容性括号
(黑+卡其)/(短裤 & 长裤))整段删除。分类名每小时被 SDS 同步覆盖,
清洗落在 syncCategories 入库路径(cleanCategoryDisplayName,款号 token
保留,剥空守卫),另附幂等存量脚本 fix:category-names。

已执行:V1/V2 各 33 条分类名去括号,复跑幂等 0。注意 api 容器重建
部署前旧镜像的下一轮同步会把名称写回原文,部署后自动恢复干净。

Tests: api 23 suites/206 passed(含新增 category-name.spec 7 例),tsc clean
2026-09-03 01:27:38 +08:00

61 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 分类名去括号(DG001 180G纯棉T恤(JSA002 → DG001 180G纯棉T恤)
- 分支:`bugfix/category-name-parens-yeuimu`(自 `develop`
- 日期:2026-09-03
- 类型:Bug 修复 / 数据修复
- 前置:`pure-sku-good-name-fix.md`(商品名已统一「品名 SKU」,goods 表已无括号)
## 问题
后台左侧分类树(admin 左栏 + 官网分类树/商品卡共用)部分分类名带括号,两栈各
33 条,分两类:
- 型号限定词:`DG001 180G纯棉T恤 JSA002`
- 内容性括号:`YSM02 全棉斜纹拼色帽子(黑+卡其)``下装(短裤 & 长裤)`
用户要求:括号段**整段删除**。
## 关键约束
`categories.category_name` 是每小时 cron`syncCategories`)从 SDS 分类树**强制覆盖**
的镜像(update 分支无条件写 `node.name`)——只改库会被下一轮同步冲回。清洗必须
落在**同步入库路径**才能持久;镜像其余字段(icon/树结构)行为不变。
## 实现
### 1. 同步入库清洗(apps/api/src/sync/sync.service.ts
- [x] 导出纯函数 `cleanCategoryDisplayName(name)`:删除所有 `(…)`/`(…)`
括号段(含半角),折叠多余空白;剥空(名称仅剩括号段)时原样返回。
- [x] `syncCategories` upsert 的 create/update 分支均写清洗后的名称
(SDS 原文不再落库;款号 token `DG001` 保留,codeFromCategoryName 不受影响)。
### 2. 存量回填脚本
- [x] `apps/api/prisma/fix-category-parens.ts` + npm script `fix:category-names`
(默认 dry-run 打印 旧名 → 新名,`-- --apply` 写库,幂等;覆盖 SDS 与人工
建的分类)。
### 3. 测试(TDD
- [x] `src/sync/category-name.spec.ts`:型号限定词/内容性括号/多括号段/半角/
剥空守卫/无括号原样/空白折叠。
- [x] 全量 api 测试零回归(一次性 docker postgres)。
## 落库(2026-09-03 执行)
- [x] V1/V2 各 33 条分类名去括号,复跑 dry-run 0 条。
- 注意:**api 容器重建部署前**,旧镜像的每小时同步会把名称写回带括号原文;
部署带清洗逻辑的新镜像后,下一轮同步自动恢复干净(无需再跑脚本)。
## 已知影响
- `下装(短裤 & 长裤)` 两行同名分类清洗后均为 `下装`(清洗前已是同文重复,
树中原即并列两行,视觉不变差)。
- `configure:product-center-icons` 脚本按中文名幂等更新图标:其词表若含带括号
名称将匹配不到已清洗行,需要时更新词表(本次核查无带括号配置项受影响)。
## 权限评估
无新增端点/操作;CLI 脚本为运维通道 —— 无需新增权限项。