docs(changelog-v2): 价格日历设置价格弹窗 协议价回显(前端)+库存可空=不限(前后端就位)

协议价回显=前端bug(getPriceCalendar已返protocolPrice);库存null=不限后端已就位+硬扣开关已开,前端放开必填+null显示不限。
这个提交包含在:
API Changelog Bot 2026-06-25 11:56:16 +08:00
父节点 1d4ffe4ad3
当前提交 f01e19f62c

查看文件

@ -0,0 +1,39 @@
# 酒店价格日历「设置价格」弹窗(① 协议价回显·前端 ② 库存可空=不限·前后端就位)
> 变更类型:① 📖 前端 bug后端已返协议价② 📖 前端 + ⚙️ 后端已就位(库存硬扣已开)
> 端类型:管理后台(资源·酒店·房型价格日历「设置价格」弹窗)
> 日期2026-06-25 工单/PR前端 UX/配置,走 changelog 服务hl-resource-service
> 关联:配房硬扣库存验收时发现。本日已开启 `hotel.stock.enabled=true`(测试服),配房真实扣减/释放已生效。
---
## ① 协议价没回显(前端 bug,后端已返
**现象**:点已有价格的日期打开「设置价格」弹窗,协议价框是空的「请输入」,没带出该日已存在的协议价。
**根因API 实证)**`GET /admin/hotel/room-type/{roomTypeId}/prices?year&month` **已返回每日协议价**。实测 海拉尔海棠·精品标间 2026-06-26 返回 `protocolPrice = 330.00``stock=10``stockUsed=0``status=AVAILABLE`、顶层 `stockEnabled=true`。是前端没把已查到的值预填进弹窗。
**前端动作**:打开「设置价格」弹窗时,从已加载的日历数据 `prices[]` 里取该日期那条 `PriceCalendarDayVO`,用其 `protocolPrice` 预填「协议价」输入框(同样可预填 `stock`/`status`/`remark`)。
## ② 库存可留空 = 不限制库存(后端已就位,前端放开必填 + null 展示)
**诉求**库存字段允许留空null,语义 = 该房型该日**不限库存**(不卡上限,永远可配)。
**后端现状(已就位,无需改)**
- 表 `room_price_calendar.stock` 本就 `DEFAULT NULL COMMENT 'NULL=unlimited'`;请求 DTO `PriceCalendarSetRequest.stock``@NotNull`(只 `@Min(0)`,允许 null
- 扣减 SQL `(stock IS NULL OR stock - stock_used >= ?)` —— stock=null 时跳过上限校验只累加 `stock_used``isAvailable` 在 stock=null 时直接返可用。
- 库存硬扣总开关 `hotel.stock.enabled` 已于本日设为 **true**(原默认 false=不扣),配房真实扣减/释放已生效(实测配 1 间 available 20→19、删配房 19→20 还原)。
**前端动作**
- 「库存」输入框设为**可选/可留空**(去掉必填)。
- 留空提交时**不传 stock 字段或传 null**= 该日不限库存)。
- 回显时若 `stock=null`,显示为「不限制」或留空(别显示 0
- 可用顶层 `stockEnabled` 决定是否展示库存相关交互false 时库存管控关闭)。
**后端一个小缺口(待定,看是否需要)**`batchSetPrices` 对**已有记录**传 `stock=null` 是「保留原值不覆盖」,即**没法把一条已有库存的日期改回「不限」**(只对新建日期生效)。若房务需要把已设库存的日期切回不限,需后端单独支持「显式 null 即清空」——是否要做请告知,单独小改一张单。
---
## 说明
- ① 后端无改动GET 早返协议价),纯前端预填。
- ② 后端扣减/约束/schema 已就位 + 硬扣开关已开;前端放开库存必填 + null 展示「不限」即可;「已有记录切回不限」是唯一待定后端小缺口。