feat(api): public good detail family block behind gray-release flag

This commit is contained in:
yeuimu
2026-08-28 13:40:19 +08:00
parent b4b9fbbe60
commit 6418aa7302
9 changed files with 324 additions and 6 deletions
+23
View File
@@ -101,8 +101,31 @@ pnpm --filter @inkreach/api backfill:product-families
# → [1/2] 解析全部链接名 [2/2] 自动建族 [3/3] 全量族重算(幂等,可随时重跑)
```
**公开读路径灰度(三期已上线,默认关闭)**:环境变量 `PUBLIC_DETAIL_FROM_FAMILY=true` 时,
`GET /public/goods/:goodId` 在既有响应上**增量**输出 `family` 块:
```jsonc
{
"family": {
"familyId": "12", "familyCode": "DG015", "familyName": "DG015 180G纯棉T恤",
"sizes": [...], "colors": [...], "crafts": ["单面印花", ...], "logistics": ["包邮", ...],
"sizeChart": { /* */ }, "packageSpecs": { /* */ },
"priceMatrix": { /* rows {sizeId, colorId, craft, logistics, price, manual, sources} */ },
"minPrice": "29.5"
}
}
```
实测(DG015 族):4 工艺 × 2 物流 × 8 尺码 × 12 颜色 = 653 格矩阵,族起价 ¥29.5
(主源单链接价为 ¥68.74——族视角展示了光板/单面的更低档价格)。前端本地按五维联动
`priceMatrix` 即可实时算价,无需新增查价端点(设计 D4)。
**边界声明**:商品列表/筛选/排序仍基于主源 `goodPrice`(SQL 层无法廉价解析族矩阵 JSON,
且避免展示价与筛选价不一致);`good_origin_goods` 转只读保留,观察期后另行删除。
**后台操作入口(二期已上线)**:商品中心新增「产品族」标签页(`/goods?tab=families`):
- 列表:关键词/分页、成员数、人工改价数、自动托管/锁定状态、`stale` 待处理标记;
- 「自动成族」:先预览候选分组(SDS 分类聚合),确认后应用并逐族重算;
- 详情抽屉:canonical 字段编辑(名称/编码/主图/主链接)、`autoManaged` 开关、手动重算、