---
schema: "hl-changelog/v2"
ticket: "6016"
title: "终止行程后房侧资源释放标记——订单已终止落异常桶+REFUND待办+按terminateDate释放未确认候选"
consumer: "admin"
author: "wx"
change_type: "修改接口"
backend_status: "deployed"
gateway_status: "verified"
frontend_status: "pending"
frontend_owner: "mmg"
frontend_ref: ""
target_release: ""
verified_at: "2026-08-18"
status_note: "后端完成：PR #6020 已合并 dev-v3（1690be35cc）并部署 TEST（hl-order-service-v3 双实例 12:20 重启、jar 12:20 新编译，SSH 核实）。房侧新增终止行程监听 onOrderTerminated→handleOrderTerminated；house 包 922 + ArchTest 54 全绿。端到端 TRAVELLING 终止实测待补（测试库无现成出行中订单）。"
updated_at: "2026-08-18"
base: "dev-v3"
generated: "2026-08-18T12:30:00+08:00"
---

# 终止行程后房侧资源释放标记（#6016）

## 背景

「终止行程」（terminateTrip，出行中 TRAVELLING→COMPLETED）的资源释放此前**车侧已闭环（#5518 TERMINATE_TRUNCATE）、房侧缺失**——房侧没有任何对终止行程的监听，已配好的房（`house_hotel_assignment` + 已扣酒店库存）滞留，房务不知道该来释放。

## 变更接口

无新增 admin 端点。房侧新增对 `OrderTransitionedEvent(eventCode=TERMINATE)` 的进程内监听，改变的是**终止行程后房务侧数据/待办的可视结果**：

| 房务侧入口 | 终止行程后的新行为 |
| --- | --- |
| 房务「异常桶」（需求 `house_status=EXCEPTION`） | 已配房的终止订单需求会落进来，作为「订单已终止」标记 |
| 房务待办（REFUND 类型） | 已配房产「客人终止行程 · 请处理酒店退订」待办（复用 REFUND 同桶，退款完成自动闭环） |
| 抢单池/我的接单 | 未配房的终止订单需求被软删除，不再残留 |

## 行为口径（wx 拍定三决策）

- **只标记 + 引导手动释放**，不自动清配房、不自动退酒店（对齐取消订单 #3208 房侧语义）。
- **① 释放边界 = 按 terminateDate 切分**：terminateDate = 出发日 + (endDayNumber - 1)。已入住/已消费晚数（terminateDate 之前）的配房与库存**原样保留**；只自动释放 dayNumber ≥ endDayNumber 的「未确认（INQUIRING）候选」占的库存。CONFIRMED 行与已过晚数一律不动，由房务在异常桶按边界**手动取消未入住部分**（走现成删配房流，软删 + 释放已扣库存）再标完成。
- **② 待办类型 = 复用 REFUND**：取消订单与终止行程产同一种 REFUND 待办，同桶呈现；owner 取抢单人（无则广播 owner=NULL），dedupKey 复用不重复产。
- **③ 未配房分支 = 软删需求**：终止行程且无 active 配房时，软删该订单 active 用房需求（移出抢单池/视图），级联软删孤儿询房配房行，不产 REFUND。
- **幂等**（终止事件可重投）：状态机 EXCEPTION→EXCEPTION 自循环不抛、REFUND dedupKey 复用、软删 0 行幂等。
- 与车侧 #5518 TERMINATE_TRUNCATE 独立，互不影响。

## 前端动作

- 房务「异常桶」会新出现终止行程的需求（标「订单已终止」），引导房务按 terminateDate 边界处理：保留已入住晚数、手动取消未入住的配房释放库存，再标完成。
- REFUND 待办照常渲染（标题区分「客人终止行程」），退款完成后自动 RESOLVE。

## 验证证据

- 单测：HouseTodoServiceTest 4 用例（已配房带抢单人/无抢单人广播+endDay 兜底/REFUND 复用幂等/未配房软删）、HouseTodoEventListenerTest 4 用例（TERMINATE 透传/非 TERMINATE 忽略/null 忽略/异常降级）、HouseAssignmentServiceTest 3 用例（dayNumber 切分/边界前返 0/null 返 0）、OrderEventPublisherTest 1 用例（双路发布）、OrderServiceTest 断言 endDayNumber 透传。**house 包 922 + ArchTest 54 全绿**。
- 部署：PR #6020 squash 合并 dev-v3（merge commit 1690be35cc），Deploy Panel task 29a0c139 success，SSH 核实 jar 12:20:17 更新 + 双实例 12:20 重启生效。
- 端到端（造出行中订单→terminateTrip→验房侧落异常桶+产 REFUND）待补：测试库当前无现成 TRAVELLING 订单，按需补测。

## 关联 / 联系人

- Issue：https://git.1814.love:8443/wx/HL/issues/6016
- PR：https://git.1814.love:8443/wx/HL/pulls/6020
- Commit（merge）：https://git.1814.love:8443/wx/HL/commit/1690be35cc
- 后端负责人：wx
