# 报价逻辑修复 + 档位描述字段

- **日期**: 2026-04-16
- **服务**: hl-product-service-v2
- **PR**: #638, #661
- **类型**: fix + feat

## 1. 报价逻辑修复（⚠️ 重要）

### 问题

报价接口把价格日历的每日价格逐天累加，导致总价 = 单价 × 人数 × 行程天数（错误）。

### 修复

取**出发日期当天的一口价** × 人数（和旧版一致）。

### 响应变更

`POST /admin/product/item/{id}/quote` 和 `POST /mp/product/{id}/quote`

**新增字段**：

| 字段 | 类型 | 说明 |
|------|------|------|
| `adultUnitPrice` | BigDecimal | 成人单价（出发日一口价） |
| `childUnitPrice` | BigDecimal | 儿童单价（出发日一口价） |

**删除字段**：

| 字段 | 说明 |
|------|------|
| `dailyDetails` | 不再返回每日明细（一口价不需要） |

**响应示例**：
```json
{
  "adultUnitPrice": 4999.0,
  "childUnitPrice": 3499.0,
  "totalAdultPrice": 9998.0,
  "totalChildPrice": 3499.0,
  "grandTotal": 13497.0
}
```

计算公式：`totalAdultPrice = adultUnitPrice × adultCount`

## 2. 档位描述字段

产品的 `tiers` JSON结构新增 `tierDescription` 字段。

**旧结构**：
```json
[{"tierSeq": 1, "tierName": "轻奢"}, {"tierSeq": 2, "tierName": "高端"}]
```

**新结构**：
```json
[
  {"tierSeq": 1, "tierName": "轻奢", "tierDescription": "精选三星酒店，舒适出行"},
  {"tierSeq": 2, "tierName": "高端", "tierDescription": "五星酒店+专车接送，尊享体验"}
]
```

后端纯JSON存取，无需改代码。前端在Step1基础信息的规格列表中，每个档位加一个描述输入框即可。

## 3. routeSummary 线路概览摘要

新增字段 `routeSummary`，保存行程(Step2)时自动生成。

格式：`{首天集合地}起止·全程约{总里程}公里·日均不超{日均最大里程取整百}公里`

示例：`海拉尔起止·全程约1200公里·日均不超400公里`

- 管理端详情：`routeInfo.routeSummary`
- 小程序详情：`routeSummary`
- `routeDescription`（线路描述）不再自动覆盖，完全由用户手动填写

## 4. guaranteeTemplateId 修复

Step5补充信息保存接口现在正确支持 `guaranteeTemplateId` 字段，详情也正确返回。
