diff --git a/changelogs-v2/2026-06/17_选主题选产品_热门改手动标签+GROUP起价修复读班期-行为变更-管理后台.md b/changelogs-v2/2026-06/17_选主题选产品_热门改手动标签+GROUP起价修复读班期-行为变更-管理后台.md new file mode 100644 index 0000000..8d7baa6 --- /dev/null +++ b/changelogs-v2/2026-06/17_选主题选产品_热门改手动标签+GROUP起价修复读班期-行为变更-管理后台.md @@ -0,0 +1,47 @@ +# 【行为变更·管理后台】新建订单「选主题/选产品」:热门改手动标签口径 + 小蒙马(GROUP)起价修复读班期 + +> 页面:管理后台 → 新建订单(order-v2/new) 第1步「选主题」+ 第2步「选产品」 | 服务:hl-product-service-v2 | PR #3925 + #3927 | 已合并 dev-v3 + 部署测试服 + API 实测通过(2026-06-17) | 负责:mmg +> 触发:wx 在页面反馈①热门应按运营手动标签②「起价都不对」。审计定位 + 修复。 + +## ⚠️ 关键变更(3 项,前端需知) + +### 1. 第1步「选主题」热门口径:自动计算 → 手动标签 +- **变更前**:`hot` 由后端按「近90天下单量前30%」自动算。 +- **变更后**:`hot` = 该主题 `tags` 是否包含「热门」标签(运营在『产品线管理』手动打的 product_tag 字典标签,**所见即所得**)。 +- **前端**:「热」角标 + 「热门主题·直接进入」入口仍只看 `hot` 字段;入口 = 本地 `filter(hot==true)`,无独立接口。运营打了「热门」标签的主题才热。 + +### 2. 第1步「选主题」VO 新增返回 `tags` / `seasons` +`GET /admin/product/line/order-picker` 的 `OrderPickerThemeVO` 新增两字段: +| 字段 | 类型 | 含义 | +|---|---|---| +| `tags` | List\ | 主题标签(product_tag 字典:热门/新品/限定/硬核/治愈) | +| `seasons` | List\ | 适用季节(spring/summer/autumn/winter) | + +前端如需在主题卡展示标签/季节可直接用(此前精简 VO 不返回,需前端自渲染)。 + +### 3. 小蒙马(GROUP)起价修复:第1步 `fromPrice` + 第2步 `startPrice`/`tierPrices` +- **Bug**:GROUP(小蒙马)真实价在班期表 `group_tour_batch.adult_price`,但选主题/选产品接口此前只读价格日历 → **所有小蒙马起价恒为 null(页面显示空白/价待定)**。 +- **修复后**:GROUP 起价改读班期表未来最低成人价(CORE/CUSTOM 仍走价格日历,口径与产品编辑页 min-price 一致)。 +- **实测**(测试服,部署后): + +| 主题 | 类型 | 修复前 fromPrice | 修复后 fromPrice | +|---|---|---|---| +| 阿斯蒂芬撒点 | GROUP | null(空白) | **2925.00** | +| 测试小蒙马-yst | GROUP | null(空白) | **1635.00** | + + 第2步选产品:测试小蒙马 4 个产品 startPrice 均 = 1635.00,各档位 tierPrices 同价。 + +> 注:CORE/CUSTOM 主题若仍显示「价待定」,是该主题下产品**未设未来可售价格日历**(真·无价),非 bug,与本次无关。 + +## 金额字段口径(前端注意) +- `OrderPickerThemeVO.fromPrice`、`OrderPickerProductVO.startPrice`、`tierPrices[].startPrice` 均为**字符串**(@JsonSerialize ToString,防大数精度丢失),前端展示前 `parseFloat` + null 兜底。 +- ⚠️ 本次给 `TierPriceInfo.startPrice` 补了字符串序列化,**同时影响**产品详情/产品列表接口里的 `tierPrices[].startPrice`(由数字变字符串)。如这两个页面对该字段做了数字运算,请改 `parseFloat`。 + +## SKU 总数 / 产品数 口径澄清(顺带答疑) +- 主题卡「X 个 SKU」= **档位(tier/规格)总数** = 该主题下各已上架产品的档位数之和。 +- 第2步「X 个产品可选」= **产品(版本)数**。 +- 二者单位不同,不矛盾。例:测试小蒙马 4 个产品(多档2+多档2+单档1+单档1)= 6 个 SKU,故主题卡显示「6 个 SKU」、第2步显示「4 个产品可选」,均正确。 +- 头部「SKU 总数」= 各主题 skuCount 之和(前端派生,无独立接口)。 + +## 不变项 +- 第2步选产品的 `hot`(热销)**仍是计算口径**(近90天下单量),本次未改;但第2步 VO 已返回 `tags`,前端如需也可按「热门」标签渲染。