文件
hl-api-changelog/changelogs-v2/2026-08/21_6125_房务工作台详情透出终止未用标记与异常原因-修改接口-管理后台.md
T
Mimingguang d16f03e052
changelog-filename-gate / validate (push) Failing after 2s
docs(changelog): #6125 前端 verified(mmg, ref 8a2c26af)
2026-08-21 17:16:21 +08:00

71 行
4.0 KiB
Markdown
原始文件 Blame 文件历史

此文件含有模棱两可的 Unicode 字符
此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。
---
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`