行程中今日页聚合接口扩展:DAY 导航 / 时间线 / 今晚住宿 / 明日预告 — 2026-04-21
服务 hl-mp-service(端口 8085)+ hl-order-service-v2(端口 8094)· 类型 feat · 关联 Issue #1120 / PR #1124
原型 Node IDs:aufKi / NTzWR / JZcMi / 1ne4B / oVfPB / OwsOd("行程中 · 当前行程"页)
依赖:PR #1123(TripDetailVO 强类型化)、PR #1121(Hotel WiFi 字段,WiFi 数据视其落地情况)
一、影响接口
GET /mp/trip/today-dashboard — 行程中今日页聚合
既有字段 today / leader / weather / sosContact 保持不变,新增 5 字段。
二、新增字段
| 字段 |
类型 |
说明 |
todayProgressPercent |
Integer |
今日进度(0~100;无行程中订单时 null) |
dayNav |
List<MpTripDayNavVO> |
DAY Tab 导航列表(原型 dayNavV2) |
todayTimeline |
MpTodayTimelineVO |
今日时间线(原型 timelineV2;无行程中订单时 null) |
todayHotel |
MpTripHotelArrangementVO |
今晚住宿(原型 hotelSection / hotelCard) |
tomorrow |
MpTomorrowPreviewVO |
明日预告(原型 tmr) |
MpTripDayNavVO
| 字段 |
类型 |
说明 |
dayNumber |
Integer |
第几天 |
date |
LocalDate |
日期 |
dayStatus |
String |
DONE / CURRENT / PENDING |
MpTodayTimelineVO
| 字段 |
类型 |
说明 |
completed |
List<MpTripItineraryNodeVO> |
已完成节点(灰色简版行) |
current |
MpTripItineraryNodeVO |
当前节点(今日全部完成则为 null) |
next |
MpTripItineraryNodeVO |
下一节点(今日全部完成则为 null) |
节点状态推导规则:按 plannedTime 升序排序,取第一个 plannedTime >= 当前时间 的节点为 current,前面为 completed,下一个为 next。
MpTripItineraryNodeVO(时间线节点精简版)
nodeSeq, nodeType, nodeTypeLabel, title, subtitle,
plannedTime(HH:mm), durationMinutes, distanceKm
MpTripHotelArrangementVO
| 字段 |
类型 |
说明 |
dayNumber / date / hotelId / hotelName |
— |
基本 |
checkInTime / checkOutTime |
String |
HH:mm |
longitude / latitude / address |
— |
导航坐标 |
photoUrls |
List<String> |
酒店照片 |
rooms |
List<MpTripHotelRoomVO> |
房型(roomType / quantity / areaSqm / amenities) |
wifi |
MpTripHotelWifiVO |
WiFi { ssid, password }(酒店未录入时为 null) |
changedFromYesterday |
Boolean |
与前一晚 hotelId 不同时为 true(前端据此展示"已换酒店·带好行李") |
MpTomorrowPreviewVO
| 字段 |
类型 |
说明 |
dayNumber |
Integer |
明日 DAY+1 |
routeSummary |
String |
"景点1 → 景点2 → 景点3"(仅取 SCENIC/ACTIVITY 节点) |
distanceKm |
Integer |
明日总里程 |
plannedDepartureTime |
String |
HH:mm |
reminderText |
String |
后端模板化 "明早 {plannedDepartureTime} 出发,请提前收拾行李" |
三、联系领队补字段
MpGuideInfoVO 新增
| 字段 |
类型 |
说明 |
plateNumber |
String |
领队随行车辆车牌号(取 order_vehicle_assignment 第一条;未分配为 null) |
影响接口:GET /mp/order/{orderId}/guide + GET /mp/trip/today-dashboard 里的 leader。
四、空态行为
| 场景 |
行为 |
| 无行程中订单 |
today / leader / todayTimeline / todayHotel / tomorrow 均为 null;dayNav = [];todayProgressPercent = null;sosContact 仍有客服电话 |
| 今天是最后一天 |
tomorrow = null |
| 今晚无住宿 |
todayHotel = null |
| 今日节点全部完成 |
todayTimeline.current / next 为 null,completed 为全部节点 |
| 酒店未录入 WiFi |
todayHotel.wifi = null(Issue #1121 落地后自动有值) |
五、响应示例(部分)
{
"code": 200,
"data": {
"today": { "...": "(保持不变)" },
"leader": {
"staffId": 9001, "name": "巴图",
"phone": "138****5678",
"plateNumber": "蒙E·8A66",
"assigned": true
},
"todayProgressPercent": 40,
"dayNav": [
{ "dayNumber": 1, "date": "2026-07-01", "dayStatus": "DONE" },
{ "dayNumber": 2, "date": "2026-07-02", "dayStatus": "CURRENT" },
{ "dayNumber": 3, "date": "2026-07-03", "dayStatus": "PENDING" }
],
"todayTimeline": {
"completed": [
{ "nodeSeq": 1, "nodeType": "SCENIC", "title": "海拉尔出发", "plannedTime": "08:00" }
],
"current": {
"nodeSeq": 2, "nodeType": "SCENIC", "title": "莫日格勒河",
"subtitle": "九曲十八弯", "plannedTime": "10:00",
"durationMinutes": 40, "distanceKm": 50
},
"next": { "nodeSeq": 3, "nodeType": "MEAL", "title": "蒙式午餐", "plannedTime": "12:00" }
},
"todayHotel": {
"dayNumber": 2, "date": "2026-07-02",
"hotelId": 500002, "hotelName": "额尔古纳大酒店",
"checkInTime": "14:00", "checkOutTime": "12:00",
"rooms": [{ "roomType": "大床房", "quantity": 1 }],
"wifi": null,
"changedFromYesterday": true
},
"tomorrow": {
"dayNumber": 3,
"routeSummary": "根河湿地 → 白桦林",
"distanceKm": 180,
"plannedDepartureTime": "08:00",
"reminderText": "明早 08:00 出发,请提前收拾行李"
}
}
}
六、关联
- Issue: wx/HL#1120
- PR: wx/HL#1124(已合并到 dev)
- 前置:
2026-04-21_order-v2_trip-detail-vo-typed.md
- 后续:
2026-04-21_resource_hotel-wifi-fields.md