docs(house): 配房行程标记终止未用房晚+异常原因透传(#6111 后端能力)
所有检测均成功
changelog-filename-gate / validate (push) Successful in 2s

Co-Authored-By: Claude <noreply@anthropic.com>
这个提交包含在:
API Changelog Bot 2026-08-20 10:09:34 +00:00
父节点 afef353fc2
当前提交 9b09336538

查看文件

@ -0,0 +1,91 @@
---
schema: "hl-changelog/v2"
ticket: "6111"
title: "配房行程标记终止未用房晚+异常原因透传"
consumer: "admin"
author: "wx"
change_type: "修改接口"
backend_status: "deployed"
gateway_status: "verified"
frontend_status: "not_required"
frontend_owner: ""
frontend_ref: ""
target_release: ""
verified_at: ""
status_note: "后端完成PR #6116 已合并 dev-v3squash 3dd65f62d并部署 TESThl-order-service-v3 双实例 8086/8186,2026-08-20 17:49 重启)。行程接口响应 hotelGroup 新增异常原因 2 字段、配房行新增未用标记 2 字段(均可选只读,正常单为 null/不影响既有字段),前端按需取读即可。"
updated_at: "2026-08-20"
base: "dev-v3"
generated: "2026-08-20T17:55:00+08:00"
---
# 配房行程标记终止未用房晚+异常原因透传(#6111
## 背景
订单中止行程后,房务「配房行程」详情页看不到:(1) 哪几晚被运营在终止时勾选为「未用房晚」;(2) 异常桶旁的异常原因文案。本变更为房务侧补上这两个只读字段(纯新增,不影响既有字段)。
## 变更接口
| 接口 | 变更 |
| --- | --- |
| `GET /v3/admin/order/{id}/itinerary`(订单详情-行程安排) | **响应新增字段**(均可选只读,正常单为 null/false,不影响既有任何字段`hotelGroup.exceptionReason`String,异常原因,仅 houseStatus=EXCEPTION 时有值)、`hotelGroup.exceptionReasonLabel`String,同 exceptionReason 中文展示)、`hotelGroup.assignments[].unusedForTerminate`Boolean,该晚是否终止勾选未用`hotelGroup.assignments[].unusedLabel`String,未用标记文案「未用」,未标记为 null |
## 响应示例
`GET /v3/admin/order/{id}/itinerary` 返回(仅列本次新增字段,其余字段省略):
```json
{
"code": 200,
"data": {
"hotelGroup": {
"houseStatus": "EXCEPTION",
"exceptionReason": "客户中止",
"exceptionReasonLabel": "客户中止",
"assignments": [
{
"assignmentId": "2090093115967733761",
"dayNumber": 1,
"hotelName": "呼伦贝尔香格里拉大酒店",
"unusedForTerminate": true,
"unusedLabel": "未用"
},
{
"assignmentId": "2090093115976122369",
"dayNumber": 2,
"hotelName": "呼伦贝尔香格里拉大酒店",
"unusedForTerminate": true,
"unusedLabel": "未用"
}
]
}
}
}
```
说明:该单已终止且运营勾选两晚均未用,故两行 `unusedForTerminate=true``unusedLabel="未用"``houseStatus=EXCEPTION``exceptionReason` 透出终止原因。正常单(非终止)`exceptionReason/Label` 为 null、`unusedForTerminate=false``unusedLabel` 为 null。
## 行为口径
- 4 个字段均为**只读、可选**:正常单(未终止)`exceptionReason/Label` 为 null、`unusedForTerminate=false``unusedLabel` 为 null,接口不报错。
- `unusedForTerminate=true` 的行即终止时运营勾选的「未用房晚」,前端可渲染「未用」标记 + 行级「资源释放」按钮。
- **行级资源释放**复用现有 `DELETE /v3/admin/order/assignments/{id}`(软删+恢复库存,CONFIRMED 行自动解冻),前端按该行 `assignmentId` 调即可,**无新端点**
- `exceptionReason` 来源为终止行程原因,仅异常桶houseStatus=EXCEPTION有值。
## 前端动作
无必须动作。需要展示「未用」标记时读 `assignments[].unusedForTerminate/unusedLabel`;需要显示异常原因时读 `hotelGroup.exceptionReason(Label)`;需要行级释放按钮时对该行调 `DELETE /v3/admin/order/assignments/{assignmentId}`
## 验证证据
- 单测OrderDetailConverterTest 44 / TerminateRefundServiceTest 8 / OrderDetailServiceTest 88 全绿(新增 7 例覆盖命中/未命中/未终止/null 边界)。
- 架构门禁:*ArchTest 44 全绿(跨子聚合走 Service 契约,零违规)。
- 部署PR #6116 squash 合并 dev-v3merge commit `3dd65f62d`);测试服 hl-order-service-v3 双实例 8086/8186 于 2026-08-20 17:49 滚动重启健康。
- 网关实测TEST,admin token终止单 `GET /v3/admin/order/2090093100083904514/itinerary` 返 200,`hotelGroup.exceptionReason="客户中止"`,两行配房 `unusedForTerminate=true`/`unusedLabel="未用"`;正常单CUSTOMIZING`exceptionReason=null`,符合「异常有值/正常 null」口径。
## 关联 / 联系人
- Issuehttps://git.1814.love:8443/wx/HL/issues/6111
- PRhttps://git.1814.love:8443/wx/HL/pulls/6116
- Commitmergehttps://git.1814.love:8443/wx/HL/commit/3dd65f62d
- 后端负责人wx