88caa74 房务接口审计批次:#8385 订房计划守卫/#8386 住宿驳回加门+删车务口/#8387 旧房间分配三口下线/#8388 回执认领校验+读门/#8389 家庭维度写口下线/#8390 16 读端点补门+菜单撤授。前端按钮后端字段驱动+错误码拦截器透 message+被删端点零调用/入口仅房务角色页,6 条均 not_required;#8387/#8389 后端已标,余 4 条翻 not_required,owner/ref 留空,status_note 引号内追充实证。
11 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
| 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 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| hl-changelog/v2 | 8387 | 订单房间分配:下线旧版三接口 GET/POST/PUT /v3/admin/order/{id}/room | admin | wx(GIT) | 删除接口 | deployed | verified | not_required | 订单侧旧版房间分配三个端点(GET list、POST add、PUT edit)已下线。API-SPEC 已标旧版,房务配房走 house 域 §2.5 接口。hl-ui 零调用。前端实证(mmg 2026-09-27):被删三口零调用(仅 /order/{id}/room-info/check-diff 不同路径),not_required 复核确认。 | 2026-09-26 | dev-v3 |
order-v3:下线订单房间分配旧版接口(管理后台)
服务: hl-order-service-v3
PR: #8398
Issue: #8387
⚠️ 关键变化
三个接口已删除,路由不存在:
GET /v3/admin/order/{id}/room:查询订单房间分配列表(旧版)POST /v3/admin/order/{id}/room:新增房间分配(旧版)PUT /v3/admin/order/{id}/room/{roomAssignmentId}:编辑房间分配(旧版)
调用返回 HTTP 200 + code: 404(不是 HTTP 404)。房务配房改用 house 域接口:新增/清空配房走 POST/DELETE /v3/admin/order/hotel-requirements/{requirementId}/assignments 等 API-SPEC-HOUSE §2.2~§2.4c 写口;查询订单房间用 GET /v3/admin/order/orders/{orderId}/rooms(§2.5)。
一、背景
订单侧房间分配(order_room_assignment 表)是房务配房的补充记录,实现早于 house 域统一接口。API-SPEC §8 已标为"旧版",注释指向 house 域 §2.5 为正式接口。
hl-ui 全部远程 ref 无调用;房务页面已改用 house 域配房端点。后台读写入口全删,仅保留 internal bundle 读——house 域 RoomAssignmentVO 与 hl-mp-service 的 C 端聚合仍需 order_room_assignment 表数据,故表与内部读逻辑保留,仅删对外读写接口。
二、变更接口清单
| # | 接口 | 方法 | 路径 | 变更类型 | 说明 |
|---|---|---|---|---|---|
| 1 | 查询房间分配列表(旧) | GET | /v3/admin/order/{id}/room |
删除 | 路由已删,任何调用返回 404 |
| 2 | 新增房间分配(旧) | POST | /v3/admin/order/{id}/room |
删除 | 路由已删,返回 404 |
| 3 | 编辑房间分配(旧) | PUT | /v3/admin/order/{id}/room/{roomAssignmentId} |
删除 | 路由已删,返回 404 |
房务配房改用 house 域接口(API-SPEC-HOUSE):提交配房 POST /v3/admin/order/hotel-requirements/{requirementId}/assignments(§2.2)、清空配房 DELETE .../assignments(§2.4b/§2.4c)、按天确认 POST .../assignments/days/{dayNumber}/confirm(§2.3)、调整入住 PUT .../assignments/{id}/placement(§2.3b);查询订单房间用 GET /v3/admin/order/orders/{orderId}/rooms(§2.5)。
三、接口详情
1. 房间分配查询 GET /v3/admin/order/{id}/room
VO: 已删除
状态:已删除。路由不存在,返回 404。
使用场景
该接口已删除。
入参字段表
| 字段 | 位置 | 类型 | 必填 | 约束 | 说明 |
|---|---|---|---|---|---|
| — | — | — | — | — | 已删除 |
出参字段表
| 字段 | 类型 | 说明 |
|---|---|---|
| — | — | 已删除 |
请求示例
GET /v3/admin/order/770145/room HTTP/1.1
Host: api.test.1814.love:9443
Authorization: Bearer <admin token>
响应示例
HTTP 状态码 200(非 404),业务错误码 404:
{
"code": 404,
"message": "接口不存在: GET /v3/admin/order/770145/room",
"success": false,
"data": null
}
空数据 / 降级响应
不适用。前端应只判 code,不依赖 HTTP 状态码。
错误响应
{
"code": 404,
"message": "接口不存在: GET /v3/admin/order/770145/room",
"success": false,
"data": null
}
业务边界
- 接口已删除,路由不存在;调用返回 HTTP 200 +
code: 404。 - 阳性对照:同 Controller 下
GET /v3/admin/order/{id}正常返回 200,证明是该路由本身被删,不是订单不存在。 order_room_assignment表数据仍可由服务内部通过internal/order/orders/{orderId}/assignments读取(该 internal 端点经网关直接拒绝「接口不可访问」,只服务间可达,不对前端暴露)。
2. 房间分配新增 POST /v3/admin/order/{id}/room
VO: 已删除
状态:已删除。路由不存在,返回 404。
使用场景
该接口已删除。
入参字段表
| 字段 | 位置 | 类型 | 必填 | 约束 | 说明 |
|---|---|---|---|---|---|
| — | — | — | — | — | 已删除 |
出参字段表
| 字段 | 类型 | 说明 |
|---|---|---|
| — | — | 已删除 |
请求示例
POST /v3/admin/order/770145/room HTTP/1.1
Host: api.test.1814.love:9443
Authorization: Bearer <admin token>
Content-Type: application/json
{}
响应示例
HTTP 状态码 200(非 404),业务错误码 404:
{
"code": 404,
"message": "接口不存在: POST /v3/admin/order/770145/room",
"success": false,
"data": null
}
空数据 / 降级响应
不适用。前端应只判 code,不依赖 HTTP 状态码。
错误响应
{
"code": 404,
"message": "接口不存在: POST /v3/admin/order/770145/room",
"success": false,
"data": null
}
业务边界
- 路由已删除;调用返回 HTTP 200 +
code: 404。 - 新增房间分配改走 house 域
POST /v3/admin/order/hotel-requirements/{requirementId}/assignments(API-SPEC-HOUSE §2.2)。
3. 房间分配编辑 PUT /v3/admin/order/{id}/room/{roomAssignmentId}
VO: 已删除
状态:已删除。路由不存在,返回 404。
使用场景
该接口已删除。
入参字段表
| 字段 | 位置 | 类型 | 必填 | 约束 | 说明 |
|---|---|---|---|---|---|
| — | — | — | — | — | 已删除 |
出参字段表
| 字段 | 类型 | 说明 |
|---|---|---|
| — | — | 已删除 |
请求示例
PUT /v3/admin/order/770145/room/123456 HTTP/1.1
Host: api.test.1814.love:9443
Authorization: Bearer <admin token>
Content-Type: application/json
{}
响应示例
HTTP 状态码 200(非 404),业务错误码 404:
{
"code": 404,
"message": "接口不存在: PUT /v3/admin/order/770145/room/123456",
"success": false,
"data": null
}
空数据 / 降级响应
不适用。前端应只判 code,不依赖 HTTP 状态码。
错误响应
{
"code": 404,
"message": "接口不存在: PUT /v3/admin/order/770145/room/123456",
"success": false,
"data": null
}
业务边界
- 路由已删除;调用返回 HTTP 200 +
code: 404。 - 编辑房间分配改走 house 域
PUT /v3/admin/order/hotel-requirements/{requirementId}/assignments/{id}/placement(API-SPEC-HOUSE §2.3b)。
四、契约约束与正确调用方式
| 场景 | 改前 | 改后 |
|---|---|---|
| 查看订单的房间 | GET /v3/admin/order/{orderId}/room |
调用返回 HTTP 200 + code 404;改用 GET /v3/admin/order/orders/{orderId}/rooms(API-SPEC-HOUSE §2.5) |
| 新增房间 | POST /v3/admin/order/{orderId}/room |
路由已删,不可用;改用 POST /v3/admin/order/hotel-requirements/{requirementId}/assignments(§2.2) |
| 修改房间 | PUT /v3/admin/order/{orderId}/room/{id} |
路由已删,不可用;改用 PUT /v3/admin/order/hotel-requirements/{requirementId}/assignments/{id}/placement(§2.3b) |
C 端房型统计(GET /mp/order/{orderId}/hotels)的 roomTypeStats 仍从 order_room_assignment 表经 internal bundle(hl-mp-service MpServiceDetailAggregationService)汇聚,对外无变化。internal 端点仅服务间可达,网关对前端直接拒绝「接口不可访问」。
五、数据库行为
无变更、无 Flyway。表 order_room_assignment 保留;存量数据由 internal bundle 继续读取。
六、边界行为
| 场景 | 行为 |
|---|---|
| 调用 GET /order/{id}/room | 返回 HTTP 200 + code 404 |
| 调用 POST /order/{id}/room | 返回 HTTP 200 + code 404 |
| 调用 PUT /order/{id}/room/{roomAssignmentId} | 返回 HTTP 200 + code 404 |
前端经网关调用 GET /v3/internal/order/orders/{orderId}/assignments |
网关直接拒绝,返回「接口不可访问」(设计如此,非前端可用入口) |
调用 GET /mp/order/{orderId}/hotels |
返回 200,roomTypeStats 从 order_room_assignment 经 internal bundle 读 |
六.6、修改前后对比
| 维度 | 改前 | 改后 |
|---|---|---|
| 房间分配 GET | 路由存在,可查询 | 路由删除,返回 HTTP 200 + code 404 |
| 房间分配 POST | 路由存在,可新增 | 路由删除,返回 HTTP 200 + code 404 |
| 房间分配 PUT | 路由存在,可编辑 | 路由删除,返回 HTTP 200 + code 404 |
六.7、影响评估
- 兼容性:hl-ui 零调用这三个端点,无迁移负担。C 端房型统计无变化(经 internal bundle)。
- 数据影响:零;表与 API 读逻辑保留。
- 其它服务:hl-mp-service 无直接调用;fleet 无影响。
七、不影响范围
- House 域房间分配接口(§2.5 GET/POST/DELETE):无改动。
- Internal bundle (
GET /v3/internal/order/orders/{orderId}/assignments):保留,继续供 hl-mp-service 读。 order_room_assignment表:保留;级联软删仍在各写口生效。RoomAssignmentVO与toRoomVO:保留(bundle 在用)。- 网关配置:无改动。
八、测试环境已验证
部署:测试环境 order-v3 1f65d7894(含 e2313790b)。网关 api.test.1814.love:9443。
| # | 场景 | 实测结果 |
|---|---|---|
| 1 | GET /v3/admin/order/{id}/room |
HTTP 200 + code 404「接口不存在: …」 |
| 2 | POST /v3/admin/order/{id}/room |
HTTP 200 + code 404「接口不存在: …」 |
| 3 | PUT /v3/admin/order/{id}/room/{roomAssignmentId} |
HTTP 200 + code 404「接口不存在: …」 |
| 4 | 阳性对照:同 Controller GET /v3/admin/order/{id} |
200(证明是路由被删,不是订单不存在) |
| 5 | 服务内部端口直连读 order_room_assignment(internal bundle) |
读数与只读 SQL 一致(经网关 internal 不可达,这是设计) |
调用来源:测试网关 nginx 日志窗口内旧 room 三路径共 71 次,全部是脚本(Python-urllib / curl / 空 UA),零浏览器 UA。
十、相关文档
- Issue:wx/HL#8387
- PR:wx/HL#8398
- 替代接口:写房间分配走 API-SPEC-HOUSE §2.5 的配房接口(
POST /v3/admin/order/hotel-requirements/{requirementId}/assignments等);读订单房间用GET /v3/admin/order/orders/{orderId}/rooms - API-SPEC:§8「房间分配」与 §11 错误码表已标下线
关联 / 联系人
联系人
- 后端负责人: @wx