# 早鸟优惠文案: 产品详情阶梯 + 订单详情早鸟行体现「适用人群」

> **服务**: hl-order-service-v2 (8084) / hl-product-service-v2 (8083)
> **PR**: #3187
> **Issue**: #3182(承接 #3166 早鸟每方案可配适用人群)
> **日期**: 2026-05-28
> **影响范围**: 小程序「产品详情」早鸟阶梯 + 「订单详情」早鸟折扣行文案
> **测试服验证**: 已过(api.test.1814.love:9443)

---

## ⚠️ 关键变化

早鸟优惠每方案可配「适用人群」(#3166)后,C 端两处文案补上适用人群,避免"每人立减100元"但幼童实际不享受的歧义。沿用既有约定:**后端拼好中文文案,前端直接展示**。

### 1. 产品详情早鸟阶梯(`MpProductDetailRespVO.earlyBirdLadder` 的每项)新增 2 字段

| 字段 | 类型 | 说明 |
|------|------|------|
| applicableTravelerTypes | `string[]` | 适用人群编码(如 `["ADULT","CHILD","YOUNG_CHILD"]`),后端保证非空(默认成人+儿童+小童,排除幼童)|
| applicableTravelerTypesText | `string` | 适用人群中文文案(如 `成人/儿童/小童`),可直接展示 |

阶梯项现有 `peopleRangeText`("3-5 人")/`discountText`("每人立减 100 元")不变,前端在其旁展示 `applicableTravelerTypesText` 即可。

### 2. 订单详情早鸟折扣行

早鸟折扣行 `description`(=`order_discount.discount_name`)在创建订单时拼上适用人群后缀:`早鸟优惠:春季早鸟9折(适用人群:成人/儿童/小童)`。**仅新订单生效,老订单不变。** 同一文案也回显在 `earlyBirdPlanName` 字段(该字段原本就等于 discountName、含"早鸟优惠:"前缀,既有行为)。前端订单详情早鸟行直接展示 description,无需改动。

---

## 前端改动建议（mmg）

1. **产品详情早鸟阶梯**:每个阶梯项展示 `applicableTravelerTypesText`(如在 discountText 旁加"(适用人群:成人/儿童/小童)"或单独标签)。
2. **订单详情早鸟行**:description 已自带适用人群后缀,通常无需改;若之前对 discountName 做过裁剪/正则,注意新后缀。

## 测试服验证(已过)
建早鸟方案(适用人群=成人/儿童,挂某产品)→ `GET /mp/product/{id}` 的 `earlyBirdLadder` 返 `applicableTravelerTypesText=成人/儿童`、`discountText=每人立减 50 元`。订单详情后缀由后端创建时落库(单测覆盖,新订单生效)。
