docs(plan): add heat-transfer craft tag feature plan
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
# Feature:印刷工艺新增"热转印"选项
|
||||
|
||||
日期:2026-09-02
|
||||
类型:新功能(feature)
|
||||
影响面:`apps/api/src/product-families/family-recompute.service.ts`(两处词表常量)+ 测试 + `tags` 表新增一行
|
||||
|
||||
## 背景
|
||||
|
||||
业务需要新增印刷工艺"热转印"。标签由 `tags` 表驱动(`GET /tags` 全量返回,管理端打标用),但价格矩阵的维度词表在后端硬编码,需同步放开准入。
|
||||
|
||||
## 现状(2026-09-02 分析确认)
|
||||
|
||||
- `tags` 表:印刷工艺组(tag_group_id=3)现有 烫画(1)/直喷(2)/不打印(3),有 `POST /tags` 接口(JwtAuthGuard,重名 409)
|
||||
- 矩阵维度词表 [DIM_VALUES.craft](file:///opt/inkreach-v2/apps/api/src/product-families/family-recompute.service.ts) = `['烫画','直喷','不打印']` 硬编码,`memberMatrixCombos` 按它过滤链接标签——词表外的标签会导致链接不进矩阵
|
||||
- 展示序词表 `OPTION_DISPLAY_ORDER.craft` 同样硬编码,词表外沉底
|
||||
- 名称自动派生规则(`auto-tag-rules.ts` / admin `origin-name.ts`)**本次不改**:SDS 链接不会自动派生热转印,只能人工打标
|
||||
|
||||
## 方案
|
||||
|
||||
1. `DIM_VALUES.craft` 追加 `'热转印'`(末尾)——矩阵认可该工艺标签,SDS/CUSTOM 链接人工打标后均可进矩阵
|
||||
2. `OPTION_DISPLAY_ORDER.craft` 追加 `'热转印'`(末尾)——按钮组显示在 不打印 之后(业务确认排序表先不改,放最后)
|
||||
3. `POST /tags { tagName: '热转印', tagGroupId: '3', sortOrder: 4 }` 创建标签行(管理端标签栏立即可见/可选)
|
||||
4. **不给任何存量链接打标**——纯增量能力,存量族矩阵零变化
|
||||
|
||||
## 明确不做
|
||||
|
||||
- 不改自动派生规则(名称含"热转印"仍派生默认烫画,如需后续再议)
|
||||
- 不给存量链接打标、不重算存量族
|
||||
- 不动 自建商品 craftLabel 维度填错的历史数据
|
||||
|
||||
## 测试计划(TDD)
|
||||
|
||||
测试文件:`family-recompute.service.spec.ts`(memberMatrixCombos / derivePriceMatrix 纯函数)
|
||||
|
||||
1. `memberMatrixCombos`:链接标签 [单面印花, 热转印, 包邮] → 产出 `{ printCount:'单面印花', craft:'热转印', logistics:'包邮' }`(修复前被词表过滤 → combos 为空,RED)
|
||||
2. `derivePriceMatrix`:crafts 输出 `烫画→直喷→不打印→热转印`(热转印作为词表内值参与排序,不再沉底)
|
||||
3. 既有"未知自由文本沉底"用例(丝印/水洗)仍应沉底——热转印是词表内,丝印/水洗仍是词表外
|
||||
4. 全量 jest + tsc 通过
|
||||
|
||||
## 线上验证
|
||||
|
||||
1. `GET /tags` 返回 热转印(tagGroupId=3, sortOrder=4)
|
||||
2. 抽查存量族 priceMatrix.crafts 与改动前一致(无新增值)
|
||||
3. 无链接打标 → 公开详情 crafts 不含 热转印
|
||||
|
||||
## 回滚
|
||||
|
||||
- 代码:revert 两行常量(未打标状态零影响)
|
||||
- 标签:无引用可直接删(`origin_good_tags` 无该行)
|
||||
Reference in New Issue
Block a user