71 行
4.0 KiB
Markdown
71 行
4.0 KiB
Markdown
---
|
||
schema: "hl-changelog/v2"
|
||
ticket: "6125"
|
||
title: "房务工作台订单详情抽屉透出终止未用标记+异常原因(字段补传)"
|
||
consumer: "admin"
|
||
author: "wx"
|
||
change_type: "修改接口"
|
||
backend_status: "deployed"
|
||
gateway_status: "verified"
|
||
frontend_status: "verified"
|
||
frontend_owner: "mmg"
|
||
frontend_ref: "8a2c26af"
|
||
target_release: ""
|
||
verified_at: "2026-08-21"
|
||
status_note: "#6111 的未用标记/异常原因/行级释放只落到了订单详情页(order-v2 RoomArrangeCard),房务实际工作页 /housekeeper/orders 抽屉走另一条接口 /admin/house/orders/{orderId},本次把同口径字段补到该接口。前端在 ItineraryPanel.vue 渲染即可,口径照抄 9172700f。"
|
||
updated_at: "2026-08-21"
|
||
base: "dev-v3"
|
||
generated: "2026-08-21T15:45:00+08:00"
|
||
---
|
||
|
||
# 房务工作台订单详情抽屉透出终止未用标记+异常原因(#6125)
|
||
|
||
## 背景
|
||
|
||
#6111 的「未用房晚标记 + 异常原因 + 行级释放」只覆盖订单详情页(`/v3/admin/order/{id}/itinerary` → `RoomArrangeCard.vue`)。房务实际工作页是**房务工作台 `/housekeeper/orders` 的订单详情抽屉**,它走 `GET /admin/house/orders/{orderId}`,此前无这些字段。本次后端补齐,前端渲染后即可在房务工作台看到。
|
||
|
||
## 变更接口
|
||
|
||
| 接口 | 变更 |
|
||
| --- | --- |
|
||
| `GET /admin/house/orders/{orderId}` | **响应新增可选字段**:① `itinerary[].assignments[].unusedForTerminate`(Boolean)/ `unusedLabel`(String,「未用」);② `progress.exceptionReason` / `exceptionReasonLabel`(String) |
|
||
|
||
## 取值说明(TEST 实测)
|
||
|
||
- 终止/异常单(`progress.houseStatus === "EXCEPTION"`):
|
||
- `progress.exceptionReason` / `exceptionReasonLabel` = 终止原因(如「#P1 行程中终止测试-客户身体原因」)
|
||
- 被勾选未用的房晚行:`assignments[].unusedForTerminate === true`、`unusedLabel === "未用"`;未命中行 `unusedForTerminate === false`
|
||
- 正常单:`exceptionReason` 为 `null`,各行 `unusedForTerminate`/`unusedLabel` 为 `null`
|
||
|
||
实测样例(终止单 26-9250 / `2090093100083904514`):
|
||
|
||
```json
|
||
{
|
||
"progress": { "houseStatus": "EXCEPTION", "exceptionReason": "#P1 行程中终止测试-客户身体原因" },
|
||
"itinerary": [{ "dayNumber": 1, "assignments": [{ "assignmentId": "2090093115967733761", "unusedForTerminate": true, "unusedLabel": "未用" }] }]
|
||
}
|
||
```
|
||
|
||
## 前端动作(房务工作台抽屉,ItineraryPanel.vue / OrderDetailModal.vue)
|
||
|
||
1. **未用标记**:行 `unusedForTerminate === true` 时渲染 `unusedLabel` 标记(样式照抄 order-v2 `RoomArrangeCard.vue`,commit `9172700f`)。
|
||
2. **异常原因**:`progress.houseStatus === "EXCEPTION"` 且 `exceptionReason` 非空时,在「异常」徽标旁展示原因文本。
|
||
3. **行级释放按钮**:未用行展示「资源释放」按钮,确认后调既有 `DELETE /v3/admin/order/assignments/{assignmentId}`(软删+恢复库存;`orderV2.js` 已有 `deleteOrderAssignment`,房务角色可调,本单已回归验证)。成功后刷新抽屉。
|
||
4. 正常单上述区域一律不渲染(字段为 null)。
|
||
|
||
## 验证证据
|
||
|
||
- 单测:`HouseDetailAggregatorTest` 新增终止单/正常单用例,定向 176 例全绿;契约审查 additive-only 通过。
|
||
- 部署:hl-order-service-v3(8086/8186)已滚动部署 TEST(task 5410dada)。
|
||
- 网关实测(TEST 9443,房务 ROOM_MANAGER 角色 token):
|
||
1. 终止单 26-9250 两行 `unusedForTerminate=true`/`unusedLabel=未用`、`progress.exceptionReason` 有值 ✅
|
||
2. 正常单字段全 null 无报错 ✅
|
||
3. 行级释放回归:`DELETE /v3/admin/order/assignments/2090082479703498753` → 200,查库 deleted_at 软删生效,测试后已 DB 还原 ✅
|
||
|
||
## 关联
|
||
|
||
- Issue: [#6125](https://git.1814.love:8443/wx/HL/issues/6125)
|
||
- PR: [#6131](https://git.1814.love:8443/wx/HL/pulls/6131)
|
||
- Merge commit: [77be1f27a](https://git.1814.love:8443/wx/HL/commit/77be1f27a)
|
||
- 前序:#6111 / PR #6116(订单详情页侧);前端参照实现 `hl-ui@9172700f`
|