feat(M04-A): 完成定价快照与并发时段预占

This commit is contained in:
Codex
2026-06-18 16:07:00 +08:00
parent 6be7fa79c5
commit af7a45d878
19 changed files with 824 additions and 22 deletions
@@ -0,0 +1,7 @@
# M04-A 定价与时段预占 API
- `POST /app-api/pricing/quote`:按房间配置、节假日和定价模式返回服务端报价。
- `POST /app-api/orders/reserve`:事务内锁定房间、检查重叠并创建待支付订单、价格快照和限时预占。
- `POST /admin-api/reservations/release-expired`:租户管理员释放已过期待支付预占。
客户端提交的最终金额、折扣或套餐抵扣字段会被忽略。优惠和套餐抵扣只允许后续 M05 的可信服务端权益模块传入定价引擎。
@@ -0,0 +1,10 @@
# M04-A 定价与预占数据库变更
- 迁移版本:`2026061811`
- 房间新增包场价和最低消费。
- 订单新增预占过期时间。
- `qipai_holiday_calendar`:租户节假日日历。
- `qipai_order_price_snapshots`:不可变订单价格快照。
- `qipai_room_reservations`:房间时段预占、过期和释放状态。
并发控制使用事务锁定房间行,再检查重叠预占;不引入 Redis。
@@ -0,0 +1,27 @@
# M04-A 定价引擎和可用性
- 日期:2026-06-18
- 起始 commit`6be7fa7`
- 工程 commit:本阶段工程提交
- ENGINEERING_DELTA=YES
- 子阶段状态:待 push 与远端校验
## 工程增量
- 统一小时、工作日、节假日、通宵和包场定价。
- 支持最低消费、押金及可信服务端优惠/套餐抵扣。
- 创建订单时保存独立价格快照。
- 房间行锁串行化并发预占,事务内检查重叠。
- 待支付预占带过期时间,报价、预占和管理入口均可释放过期占位。
- 客户端最终金额、优惠和套餐字段不进入定价输入。
## 验证
- Windows 后端全量测试通过。
- WSL MySQL 8.4.9 往返迁移通过。
- 迁移语句:up 56、verify 37、down 53。
- 实测节假日/最低消费定价、历史快照不变、同房同时段并发仅一个成功、过期释放后可重新预占。
## 后续
M04-B 建立完整订单状态机、状态迁移历史和来源/原因审计。