# 房务管家·配房状态升级为房务侧 6 态 + 最终确认强制回执 — 修改接口 — 管理后台 > 变更类型:✨ 功能增强(房务跟单状态 2→6 态 + stats 真计数 + primaryAction 6态)+ ⚠️ **破坏性变更**(最终确认前置强制上传回执) > 端类型:管理后台(房务管家 → 我的接单列表 + 最终确认) > 日期:2026-06-18 > 服务:hl-order-service-v3(house 模块) > PR:https://git.1814.love:8443/wx/HL/pulls/4016 (Closes #4013) --- ## ⚠️ 关键说明 配房状态此前房务列表只产出「配房中/已确认」2 态简化值、`stats` 部分计数恒为 0。本次落地**双层状态模型**:房务侧 6 态(房务操作视图)持久化并暴露,对外 4 态(requirement_status,给定制师/订单)不变。 **两处需前端配合:** 1. **`houseStatus` 现返房务侧 6 态中文**(待配房/配房中/询房中/待最终确认/已确认/异常),不再是旧 2 态;`stats` 四桶现为真计数(`pendingConfirm`/`exception` 不再恒 0);`primaryAction` 按 6 态推导。 2. **⚠️ 最终确认(finalize)现强制前置回执**:房务点「最终确认」前**必须先经新端点上传至少一张酒店回执**,否则 finalize 返 `808183` 拒绝。这是流程变更,前端需在最终确认前加回执上传步骤。 已部署测试服双实例 health UP,9443 实测:我的接单 200 + stats 结构、回执查询端点 200、Flyway 迁移(house_status 列 + 回执表)经成功查询坐实。 --- ## 1. 我的接单 `houseStatus` 升级 6 态 **`GET /v3/admin/order/grab-pool/my-claims/hotel`**(路径不变) `list[].houseStatus` 取值由 2 态 → **房务侧 6 态中文**: | houseStatus(中文) | 含义 | 对应 house_status 值 | |---|---|---| | 待配房 | 进队列待领(一般不出现在"我的接单",已领取才入列)| PENDING_CLAIM | | 配房中 | 已抢、配置中 | CLAIMING | | 询房中 | 已发询价等酒店回 | IN_INQUIRY | | 待最终确认 | 所有晚已确认、待回传 | PENDING_FINALIZE | | 已确认 | 已最终确认回传定制师 | CONFIRMED | | 异常 | 询房超时/酒店拒单 | EXCEPTION | `stats` 四桶现为真计数(按 6 态聚合):`inProgress`=配房中+询房中、`pendingConfirm`=待最终确认、`confirmed`=已确认、`exception`=异常。 `list[].primaryAction` 按 6 态推导(待配房→配房 / 配房中·询房中→继续配房 / 待最终确认→最终确认 / 已确认→查看 / 异常→处理)。 **状态筛选入参 `status`**(不变,4 值)映射到 6 态集合:`inProgress`→配房中+询房中、`pendingConfirm`→待最终确认、`confirmed`→已确认、`exception`→异常。 ### 🆕 `house_status` 数据字典(测试服已配) 前端可经 `GET /admin/dict/data/house_status`(或 `/admin/dict/all`)取 6 态 value→label 做筛选/翻译: | value | label | 样式 | |---|---|---| | PENDING_CLAIM | 待配房 | info | | CLAIMING | 配房中 | primary | | IN_INQUIRY | 询房中 | warning | | PENDING_FINALIZE | 待最终确认 | warning | | CONFIRMED | 已确认 | success | | EXCEPTION | 异常 | danger | > 注:这是房务**内部**跟单态字典,与对外的 `requirement_status` 字典(待房务配/配房中/已打回定制师/配房完成)并存、各司其职。 --- ## 2. ⚠️ 最终确认强制回执(流程变更) ### 2.1 🆕 上传回执(最终确认前置) **`POST /admin/house/assignments/requirements/{requirementId}/receipts`**(multipart) | 参数 | 说明 | |---|---| | requirementId(path) | 需求 ID | | file(form-data) | 回执文件(PDF/图片,≤50MB),字段名 `file` | 响应 `data`:`{ receiptId, requirementId, orderId, fileName, ossUrl, ossKey, fileSize, fileType, createTime }` ### 2.2 🆕 查询回执列表 **`GET /admin/house/assignments/requirements/{requirementId}/receipts`** → `data: [回执VO...]`(无则空数组) ### 2.3 最终确认闸口变更 **`POST /admin/house/assignments/requirements/{requirementId}/finalize`**(路径/入参不变) 新增前置校验:**该需求无任何回执 → 返 `808183`(REQUIREMENT_FINALIZE_NEED_RECEIPT)拒绝**。前端流程需调整为:上传回执(§2.1)→ 再调 finalize。 ```bash # 1. 先传回执 curl -k -X POST "https://api.test.1814.love:9443/admin/house/assignments/requirements/{id}/receipts" \ -H "Authorization: Bearer " -F "file=@回执.pdf" # 2. 再最终确认(无回执会 808183) curl -k -X POST "https://api.test.1814.love:9443/admin/house/assignments/requirements/{id}/finalize" \ -H "Authorization: Bearer " ``` 新错误码:`808183` 最终确认需先上传回执 / `808184` 回执上传失败。 --- ## 备注 - 对外 4 态 requirement_status 不变(已回写 order_main.room_control_status);房务 6 态 roll-up 到对外 4 态。 - 「已完成」态不在房务 6 态内(靠订单行程末日派生)。 - 团期(GROUP)配房先不做,本次仅散客/私人订制。 - 网关无需改:`/v3/admin/order/**` 与 `/admin/house/assignments/**` 路由已覆盖。