# mp 产品详情新增 depositAmount 自动计算（含档位级）

**日期**: 2026-04-20
**服务**: hl-product-service-v2
**PR**: #996

## 背景
`GET /mp/product/{id}` 在 `paymentType=DEPOSIT, depositRatio=10` 时返回 `depositAmount=null`。因为管理端的 ratio/amount 互斥（配比例会清空固定金额），mp 端此前直接透传 null，小程序需要定金的具体金额来展示"定金 ¥xxx"和点亮预订按钮。

## 后端新行为

### 产品级 `depositAmount`
- `paymentType=DEPOSIT` 且 `depositAmount=null` 且 `depositRatio ∈ [1,100]` 时：
  `depositAmount = startPrice × depositRatio / 100`（2 位小数，HALF_UP）
- `paymentType=FULL` → `depositAmount` 始终 null
- 管理端配了固定 `depositAmount` 时直接使用，不重算

### 档位级 `tierPrices[].depositAmount`（新字段）
`MpProductDetailRespVO.TierPriceInfo` 新增：
```json
{
  "tierSeq": 1,
  "tierName": "轻奢",
  "tierDescription": "自由之旅",
  "startPrice": 4105,
  "depositAmount": 410.5      // 新增
}
```
各档按本档 `startPrice × ratio / 100` 独立计算；管理端配固定金额时各档统一取该金额。

## 验证（测试环境产品 2045345825172639746）
```
paymentType: DEPOSIT
depositRatio: 10
depositAmount: 410.5           (= 4105 × 10%)
startPrice: 4105
tierPrices:
  - tierSeq=1 startPrice=4105 depositAmount=410.5
  - tierSeq=2 startPrice=4865 depositAmount=486.5
```

## 前端建议
- 展示产品总体定金：直接用 `data.depositAmount`
- 选中某档位时：用 `tierPrices[i].depositAmount`
- 判断定金模式：`data.paymentType === 'DEPOSIT' && data.depositAmount != null`

## 兼容
- 非定金产品（FULL）：depositAmount 仍为 null
- GROUP 类型（小蒙马）：无 tierPrices，depositAmount 直接按 startPrice 计算
- 管理端固定金额模式：不受影响
