changelog-filename-gate / validate (push) Failing after 1s
88caa74 房务接口审计批次:#8385 订房计划守卫/#8386 住宿驳回加门+删车务口/#8387 旧房间分配三口下线/#8388 回执认领校验+读门/#8389 家庭维度写口下线/#8390 16 读端点补门+菜单撤授。前端按钮后端字段驱动+错误码拦截器透 message+被删端点零调用/入口仅房务角色页,6 条均 not_required;#8387/#8389 后端已标,余 4 条翻 not_required,owner/ref 留空,status_note 引号内追充实证。
347 行
11 KiB
Markdown
347 行
11 KiB
Markdown
---
|
||
schema: "hl-changelog/v2"
|
||
ticket: "8387"
|
||
title: "订单房间分配:下线旧版三接口 GET/POST/PUT /v3/admin/order/{id}/room"
|
||
consumer: "admin"
|
||
author: "wx(GIT)"
|
||
change_type: "删除接口"
|
||
backend_status: "deployed"
|
||
gateway_status: "verified"
|
||
frontend_status: "not_required"
|
||
frontend_owner: ""
|
||
frontend_ref: ""
|
||
target_release: ""
|
||
verified_at: ""
|
||
status_note: "订单侧旧版房间分配三个端点(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 复核确认。"
|
||
updated_at: "2026-09-26"
|
||
base: "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。
|
||
|
||
#### 使用场景
|
||
|
||
该接口已删除。
|
||
|
||
#### 入参字段表
|
||
|
||
| 字段 | 位置 | 类型 | 必填 | 约束 | 说明 |
|
||
|------|------|------|------|------|------|
|
||
| — | — | — | — | — | 已删除 |
|
||
|
||
#### 出参字段表
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| — | — | 已删除 |
|
||
|
||
#### 请求示例
|
||
|
||
```http
|
||
GET /v3/admin/order/770145/room HTTP/1.1
|
||
Host: api.test.1814.love:9443
|
||
Authorization: Bearer <admin token>
|
||
```
|
||
|
||
#### 响应示例
|
||
|
||
HTTP 状态码 **200**(非 404),业务错误码 404:
|
||
|
||
```json
|
||
{
|
||
"code": 404,
|
||
"message": "接口不存在: GET /v3/admin/order/770145/room",
|
||
"success": false,
|
||
"data": null
|
||
}
|
||
```
|
||
|
||
#### 空数据 / 降级响应
|
||
|
||
不适用。前端应只判 `code`,不依赖 HTTP 状态码。
|
||
|
||
#### 错误响应
|
||
|
||
```json
|
||
{
|
||
"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。
|
||
|
||
#### 使用场景
|
||
|
||
该接口已删除。
|
||
|
||
#### 入参字段表
|
||
|
||
| 字段 | 位置 | 类型 | 必填 | 约束 | 说明 |
|
||
|------|------|------|------|------|------|
|
||
| — | — | — | — | — | 已删除 |
|
||
|
||
#### 出参字段表
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| — | — | 已删除 |
|
||
|
||
#### 请求示例
|
||
|
||
```http
|
||
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:
|
||
|
||
```json
|
||
{
|
||
"code": 404,
|
||
"message": "接口不存在: POST /v3/admin/order/770145/room",
|
||
"success": false,
|
||
"data": null
|
||
}
|
||
```
|
||
|
||
#### 空数据 / 降级响应
|
||
|
||
不适用。前端应只判 `code`,不依赖 HTTP 状态码。
|
||
|
||
#### 错误响应
|
||
|
||
```json
|
||
{
|
||
"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。
|
||
|
||
#### 使用场景
|
||
|
||
该接口已删除。
|
||
|
||
#### 入参字段表
|
||
|
||
| 字段 | 位置 | 类型 | 必填 | 约束 | 说明 |
|
||
|------|------|------|------|------|------|
|
||
| — | — | — | — | — | 已删除 |
|
||
|
||
#### 出参字段表
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| — | — | 已删除 |
|
||
|
||
#### 请求示例
|
||
|
||
```http
|
||
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:
|
||
|
||
```json
|
||
{
|
||
"code": 404,
|
||
"message": "接口不存在: PUT /v3/admin/order/770145/room/123456",
|
||
"success": false,
|
||
"data": null
|
||
}
|
||
```
|
||
|
||
#### 空数据 / 降级响应
|
||
|
||
不适用。前端应只判 `code`,不依赖 HTTP 状态码。
|
||
|
||
#### 错误响应
|
||
|
||
```json
|
||
{
|
||
"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:https://git.1814.love/wx/HL/issues/8387
|
||
- PR:https://git.1814.love/wx/HL/pulls/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
|