# 房务「待办 + 日历」模块逻辑修复 + 不限库存读路径修复 — 前端需重新对接

> 变更类型：🐛 逻辑修复（后端，**房务管家前端需对照重新对接待办/日历/库存展示**）
> 端类型：管理后台（房务管家·待办看板 / 日历视图 / 配房候选）
> 日期：2026-06-25 ｜ 工单：#4411 + #4413 ｜ PR：#4412 + #4414 ｜ 服务：hl-order-service-v3 + hl-resource-service（双实例已部署 health UP，**测试服 API+DB 实测通过**）

---

## 背景
34-agent 深度逻辑审计 + 17-agent 跨 PR 集成检验，确认并修复房务待办、日历、库存读路径一批逻辑 bug。前端需对照以下变更重新对接。

---

## 一、待办看板（GET /v3/admin/order/todos）

### 1. 排序已修正（后端自动，前端无需改但行为变）
- 修复前：列表按 urgency 字符串降序，导致 **danger（最紧急：换酒店/退订/加急）排在最底**、warn 反而置顶（字典序 bug）。
- 修复后：后端按权重 **danger > warn > normal**（同级按创建时间倒序）排序，最紧急的恒置顶。前端直接按返回顺序渲染即可。

### 2. stats 分类计数 key 改为枚举常量（**前端必改**）
- stats 各类计数的 JSON key 由 camelCase（`swapHotel`）改为**枚举常量**（`SWAP_HOTEL`/`REFUND`/`INQUIRY_TIMEOUT`/`INQUIRY_ESCALATED`/`INVENTORY_CHECK_OVERDUE`），与 list 行的 `todoType`、筛选入参口径统一。前端读 stats 的 key 要改。

### 3. stats 随筛选收窄（行为变）
- stats 现**跟随 scope（mine/others）与结构性筛选收窄**：切「我的」只数你负责的、切「同事」数同事的。（不随 Tab 选择/urgency/keyword 收窄，避免切 Tab 把其余红点打 0。）

### 4. urgency 三层智能升级（后端推导，前端展示颜色）
- urgency 现由后端三层推导：基线 + **待办挂久自动升级**（挂满 2h→warn、4h→danger）+ **临近出行升红**（距出行 ≤24h→danger、≤7天→warn）。前端按返回的 urgency 渲染红/黄/灰即可。

### 5. UNDELIVERED「未送达」类型下线
- 该类型无生产者、恒 0，已从 stats/异常集合移除。前端**别再展示「未送达」分类**。

---

## 二、日历视图（GET /admin/house/calendar?month=yyyy-MM）

### 6. 已配房按「每个入住晚」落点 + 下钻传 stayDate（**前端必改**）
- 多晚订单现在月历上**每个入住晚都有一个点**（住 3 晚 → 3 天各一点）。
- 点某天下钻列表时，**请带上该天的 `stayDate` 参数**（下钻接口 `GET /v3/admin/order/grab-pool/my-claims/hotel` 已支持 `stayDate` 可选过滤）——否则多晚订单点中间晚会跳转出空列表（这是本次修的 bug）。

### 7. 「询房中」桶补显示已抢未配的订单
- 已抢单、还没配房、但已发了询房（PENDING）的订单，现在也会出现在日历「询房中」桶（之前完全不显示）。

### 8. 异常桶口径对齐
- 日历异常桶现并入 `house_status=EXCEPTION`，与「我的接单」异常计数口径一致。

---

## 三、不限库存展示（配房候选 / 库存日历，**前端必改**）

### 9. 不限库存房型新增 `unlimited` 字段
- 房务把某房型某日设为「不限库存」（stock=NULL）后，配房候选 `GET /v3/admin/hotel-candidates` 的 `roomTypes[]` 与库存日历，该房型现返回 **`unlimited=true`（此时 `available=null`、`inventoryStatus=AVAILABLE`）**。
- 修复前：不限库存被错当成 `available=0/FULL`，房务在候选弹窗看到「满房/不可选」——明明永远可订却选不出来。现已修正。
- **前端识别 `unlimited=true` 时展示「不限」**（而非数字 0 或 null）。
- 酒店卡级 `matchedRoomTypeAvailable` 在 matched 房型不限时为占位值 `99`（仅排序用），前端展示**以 room 项的 `unlimited` 为准**。

---

## 四、后端行为（前端知悉即可，无需对接）
- 待办 RESOLVE 闭环补全（退订/换酒店/异常处置完成/重发询房自动解，列表不再积压幽灵待办）；转单/释放后待办归属自动迁移给新房务。
- 配房「同步协议价」开关新增 roomTypeId 归属校验（防越权改别家酒店协议价）；CONFIRMED/EXCEPTION 需求不再被 submit 误改/误翻态。

---

## 测试服实测（已通过）
- 不限库存：嘉世豪豪华大床房 stock=NULL → `unlimited=true/available=null/AVAILABLE`，对照 stock=20 房型正常。
- 越权：配房同步协议价传别家酒店房型 → 808112 拒。
- 待办/日历接口 200 渲染正常；Flyway 迁移 success=1。
