4.0 KiB
4.0 KiB
schema, ticket, title, consumer, author, change_type, backend_status, gateway_status, frontend_status, frontend_owner, frontend_ref, target_release, verified_at, status_note, updated_at, base, generated
| schema | ticket | title | consumer | author | change_type | backend_status | gateway_status | frontend_status | frontend_owner | frontend_ref | target_release | verified_at | status_note | updated_at | base | generated |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| hl-changelog/v2 | 6125 | 房务工作台订单详情抽屉透出终止未用标记+异常原因(字段补传) | admin | wx | 修改接口 | deployed | verified | verified | mmg | 8a2c26af | 2026-08-21 | #6111 的未用标记/异常原因/行级释放只落到了订单详情页(order-v2 RoomArrangeCard),房务实际工作页 /housekeeper/orders 抽屉走另一条接口 /admin/house/orders/{orderId},本次把同口径字段补到该接口。前端在 ItineraryPanel.vue 渲染即可,口径照抄 9172700f。 | 2026-08-21 | dev-v3 | 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):
{
"progress": { "houseStatus": "EXCEPTION", "exceptionReason": "#P1 行程中终止测试-客户身体原因" },
"itinerary": [{ "dayNumber": 1, "assignments": [{ "assignmentId": "2090093115967733761", "unusedForTerminate": true, "unusedLabel": "未用" }] }]
}
前端动作(房务工作台抽屉,ItineraryPanel.vue / OrderDetailModal.vue)
- 未用标记:行
unusedForTerminate === true时渲染unusedLabel标记(样式照抄 order-v2RoomArrangeCard.vue,commit9172700f)。 - 异常原因:
progress.houseStatus === "EXCEPTION"且exceptionReason非空时,在「异常」徽标旁展示原因文本。 - 行级释放按钮:未用行展示「资源释放」按钮,确认后调既有
DELETE /v3/admin/order/assignments/{assignmentId}(软删+恢复库存;orderV2.js已有deleteOrderAssignment,房务角色可调,本单已回归验证)。成功后刷新抽屉。 - 正常单上述区域一律不渲染(字段为 null)。
验证证据
- 单测:
HouseDetailAggregatorTest新增终止单/正常单用例,定向 176 例全绿;契约审查 additive-only 通过。 - 部署:hl-order-service-v3(8086/8186)已滚动部署 TEST(task 5410dada)。
- 网关实测(TEST 9443,房务 ROOM_MANAGER 角色 token):
- 终止单 26-9250 两行
unusedForTerminate=true/unusedLabel=未用、progress.exceptionReason有值 ✅ - 正常单字段全 null 无报错 ✅
- 行级释放回归:
DELETE /v3/admin/order/assignments/2090082479703498753→ 200,查库 deleted_at 软删生效,测试后已 DB 还原 ✅
- 终止单 26-9250 两行