diff --git a/changelogs/2026-04/2026-04-16_product-v2_route-overview-display.md b/changelogs/2026-04/2026-04-16_product-v2_route-overview-display.md new file mode 100644 index 0000000..88aaff5 --- /dev/null +++ b/changelogs/2026-04/2026-04-16_product-v2_route-overview-display.md @@ -0,0 +1,84 @@ +# 线路概览展示所需字段汇总 + +- **日期**: 2026-04-16 +- **服务**: hl-product-service-v2 +- **类型**: 前端适配说明 + +## 原型展示 + +``` +线 路 概 览 +草原环线体验 ← routeName +海拉尔起止·全程约1200公里·日均不超300公里 ← 前端拼接 +``` + +## 数据来源 + +| 展示内容 | 数据来源 | 接口字段 | +|---------|---------|---------| +| "草原环线体验" | 路线名称 | `routeName` (产品级) | +| "海拉尔起止" | 首天集合地 + 末天解散地 | `itinerary[0].gatherPlace.name` + `itinerary[last].dismissalPlace.name` | +| "全程约1200公里" | 总里程 | `totalMileage` (产品级) | +| "日均不超300公里" | 每日里程最大值 | `max(itinerary[].dailyMileage)` | + +### 每日行程展示 + +``` +DAY 2 +海拉尔 → 呼籁营地 → 莫日格勒河 → 额尔古纳 +290km · 约3.5小时 +``` + +| 展示内容 | 数据来源 | 接口字段 | +|---------|---------|---------| +| 途经路线 | 自动生成 | `itinerary[].routePoints[].name` 用 " → " 连接 | +| "290km" | 当日里程 | `itinerary[].dailyMileage` | +| "约3.5小时" | 当日驾车时长 | `itinerary[].dailyDuration`(分钟,前端格式化) | +| 集合地 | 当日 | `itinerary[].gatherPlace` (JSON: {name,adcode,center,level}) | +| 解散地 | 当日 | `itinerary[].dismissalPlace` (JSON: {name,adcode,center,level}) | + +### 时长格式化建议 + +`dailyDuration` 是分钟数,前端格式化示例: +- 151分钟 → "约2.5小时" +- 276分钟 → "约4.5小时" +- 30分钟以下 → "约30分钟" + +--- + +## 行程保障展示 + +原型中「行程保障」区块(无忧退改、5人专属团队、24小时客服等)的数据来源: + +| 接口 | 字段 | 说明 | +|------|------|------| +| `GET /mp/product/{id}` | `guaranteeItems` | 行程保障项数组,自动解析模板 | + +`guaranteeItems` 结构: +```json +[ + {"icon": "shield", "title": "无忧退改", "description": "出发前7天无条件全额退款..."}, + {"icon": "users", "title": "5人专属服务团队", "description": "定制师、房务管家..."}, + {"icon": "clock", "title": "24小时客服响应", "description": "行前、行中、行后..."}, + {"icon": "badge", "title": "旅行社责任险100万", "description": "正规旅行社资质..."}, + {"icon": "car", "title": "全程纯玩无购物", "description": "无强制消费..."} +] +``` + +### 前端操作流程 + +1. **管理端 Step5 补充信息**:选择行程保障模板(`guaranteeTemplateId`) +2. **小程序端**:从 `guaranteeItems` 直接渲染列表 + +### 模板管理 + +- 菜单:产品管理 → 行程保障 +- CRUD接口:`/admin/travel-guarantee-template/**`(详见Knife4j「产品服务-模板管理」分组) + +⚠️ 如果 `guaranteeItems` 为null,说明产品还没关联模板,需要在Step5中设置。 + +## 注意 + +- `gatherPlace`/`dismissalPlace` 需要重新保存行程(Step2)才有值 +- `dailyMileage`/`dailyDuration` 保存行程时自动计算 +- 所有数据在管理端详情和小程序端详情中均返回