hl-api-changelog/changelogs/2026-04/2026-04-15_product-v2_design-revamp-8items.md
2026-04-16 09:30:25 +08:00

190 行
5.2 KiB
Markdown

此文件含有模棱两可的 Unicode 字符

此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。

# 产品设计页面改版8项改进
- **日期**: 2026-04-15
- **服务**: hl-product-service-v2, hl-gateway
- **PR**: #602
- **Issue**: #601
- **类型**: feat (新功能)
## 概述
产品设计页面Step2行程/Step3路线/Step5补充和小程序详情页的一组改进,涉及8项需求。
---
## 1. 行程节点名可自定义
保存行程时,`nodeName` 由前端自定义(用户可改),`resourceName` 由后端自动填充资源原名快照,互不影响。
**行为变更**
- `PUT /admin/product/item/{id}/itinerary` 保存时自动通过Feign查资源名填充 `resourceName`
- 前端传什么 `nodeName` 就存什么,改名不影响资源库
**响应字段**
| 字段 | 说明 |
|------|------|
| `nodeName` | 展示名称(可自定义) |
| `resourceName` | 资源原名快照(自动填充,不可改) |
---
## 2. 每日行程距离计算接口
### 新增接口
```
GET /admin/product/item/{productId}/daily-mileage
```
按天计算每日驾车距离含酒店坐标,调用高德驾车路线规划API。
**响应示例**
```json
{
"code": 200,
"data": [
{"dayNumber": 1, "mileage": 280.5},
{"dayNumber": 2, "mileage": 195.3},
{"dayNumber": 3, "mileage": 320.1}
]
}
```
---
## 3. 行程线路名称
### GET /mp/product/{id} 新增字段
| 字段 | 类型 | 说明 |
|------|------|------|
| `routeName` | String | 路线名称(如"草原环线体验" |
### PUT /admin/product/item/{id}/routeStep3保存新增字段
| 字段 | 类型 | 说明 |
|------|------|------|
| `routeName` | String | 路线名称 |
---
## 4. 集合地/出发地/解散地
### ⚠️ 保存位置Step2 行程编排不是Step3
| 字段 | 类型 | 说明 |
|------|------|------|
| `gatherPlace` | String | 集合地(高德行政区搜索到镇级) |
| `departurePlace` | String | 出发地(高德行政区搜索到镇级) |
| `dismissalPlace` | String | 解散地(高德行政区搜索到镇级) |
这3个字段在以下接口中可读写
- **`PUT /admin/product/item/{id}/itinerary`Step2保存,主入口** — 可单独传这3个字段不传days
- `PUT /admin/product/item/{id}/route`Step3保存,也可设置
- `GET /admin/product/item/{id}`管理端详情,在routeInfo中
- `GET /mp/product/{id}`(小程序详情)
---
## 5. 产品卖点改为选择节点
`quickUnderstand` 字段结构变更后端仍为JSON存取,无接口变化
**旧结构**`{text: "富文本", images: [...]}`
**新结构**
```json
[
{
"nodeId": 12345,
"nodeName": "白桦林景区",
"nodeType": "SCENIC",
"image": "https://...",
"description": "走进白桦林..."
}
]
```
前端在Step5选择行程中的景区/游玩项目节点,按新结构传即可。后端原样存取。
---
## 6. 行程保障模板全新CRUD
### 新增接口
| 方法 | URL | 说明 |
|------|-----|------|
| POST | `/admin/travel-guarantee-template` | 创建/更新模板 |
| DELETE | `/admin/travel-guarantee-template/{id}` | 删除模板 |
| GET | `/admin/travel-guarantee-template/list` | 全部模板列表(含禁用) |
| GET | `/admin/travel-guarantee-template/enabled` | 启用模板下拉Step5选择用 |
| GET | `/admin/travel-guarantee-template/{id}` | 模板详情 |
**创建/更新请求体**
```json
{
"templateId": null,
"name": "标准行程保障",
"items": [
{"icon": "shield", "title": "无忧退改", "description": "出发前7天全额退款"},
{"icon": "users", "title": "5人专属团队", "description": "定制+管家+摄影+领队+客服"},
{"icon": "clock", "title": "24小时客服", "description": "200位真实客服即时响应"},
{"icon": "badge", "title": "旅行社责任险100万", "description": "正规资质全程投保"},
{"icon": "heart", "title": "全程纯玩无购物", "description": "无强制消费无隐形购物点"}
],
"isDefault": false
}
```
**Step5补充信息保存** 新增字段:
| 字段 | 类型 | 说明 |
|------|------|------|
| `guaranteeTemplateId` | Long | 行程保障模板ID |
**小程序详情** 新增字段:
| 字段 | 类型 | 说明 |
|------|------|------|
| `guaranteeItems` | Array | 行程保障项(自动解析模板内容) |
---
## 7. 线路概览自动生成
保存行程Step2后,自动根据各天的景区/活动节点名称生成线路概览文本,写入 `routeDescription`
**生成格式示例**
```
Day1 海拉尔/额尔古纳 | Day2 呼籁营地/牧云山顶 | Day3 白桦林/恩和 | Day4-5 满洲里/返程
```
连续天节点相同时自动合并如Day4-5
---
## 8. 评价取真实数据
### GET /mp/product/{id} 新增字段
| 字段 | 类型 | 说明 |
|------|------|------|
| `reviewSummary` | Object | 评价摘要(从评价服务实时获取) |
`reviewSummary` 结构(由评价服务 `/internal/review/product-highlights` 返回):
```json
{
"avgScore": 4.9,
"totalCount": 296,
"topReview": {
"content": "超赞的行程!呼籁营地安静私密...",
"nickname": "小明同学",
"reviewTime": "2026-03"
},
"tags": ["安静私密", "孩子玩疯了", "管家贴心", "强烈推荐"]
}
```
评价服务不可用时该字段为null,不影响其他数据。