# 小童/幼童定价模式扩展

**日期**: 2026-03-31
**PR**: #83
**类型**: feat（新功能）
**影响服务**: hl-product-service, hl-mp-service

---

## 变更说明

小童和幼童的定价方式从固定模式改为"百分比 / 固定价"二选一。

### 之前
- 小童：只能按儿童价百分比（`childDiscountPercent`）
- 幼童：只能用固定价（`babyPrice`）

### 现在
- 小童：**百分比**或**固定价**，由 `youngChildPriceMode` 控制
- 幼童：**百分比**或**固定价**，由 `babyPriceMode` 控制
- 百分比基数统一为**儿童售价**

---

## 新增字段（定价配置接口）

### POST/PUT `/api/product/internal/{productId}/pricing`

| 字段 | 类型 | 默认值 | 说明 |
|------|------|--------|------|
| `youngChildPriceMode` | String | `"PERCENT"` | 小童定价模式：`PERCENT`=按儿童价百分比, `FIXED`=固定价 |
| `youngChildFixedPrice` | BigDecimal | null | 小童固定价格（`FIXED`模式时使用） |
| `babyPriceMode` | String | `"FIXED"` | 幼童定价模式：`PERCENT`=按儿童价百分比, `FIXED`=固定价 |
| `babyDiscountPercent` | BigDecimal | null | 幼童折扣百分比（`PERCENT`模式时使用，如50=儿童价的50%） |

### GET `/api/product/internal/{productId}/pricing` 响应同步新增以上4个字段

---

## 前端适配要点

### 管理后台 - 定价配置页面

1. **小童定价**区域新增切换：
   - 百分比模式（默认）：显示 `childDiscountPercent` 输入框（已有）
   - 固定价模式：显示 `youngChildFixedPrice` 输入框（新增）

2. **幼童定价**区域新增切换：
   - 固定价模式（默认）：显示 `babyPrice` 输入框（已有）
   - 百分比模式：显示 `babyDiscountPercent` 输入框（新增）

### 小程序端

无需改动。价格日历返回的 `youngChildPrice` 和 `babyPrice` 已经是计算后的最终价格。

---

## 向后兼容

- 不传 `youngChildPriceMode`/`babyPriceMode` 时使用默认值，行为与改动前完全一致
- 已有产品数据无需迁移

## 部署注意

需要执行 SQL 迁移脚本：`sql/young_child_baby_price_mode.sql`
