feat: 添加 G5 room_status 写入的冲突键排序与去重功能,并实现死锁自动重试机制
This commit is contained in:
@@ -71,4 +71,15 @@
|
||||
- **WHEN** 系统收到任意一包属于同一 `(hotel_id, room_id)` 的 G5 room_status 数据
|
||||
- **THEN** 即使业务字段与现存记录完全一致,也应执行一次 `ON CONFLICT DO UPDATE`
|
||||
- **AND** 不应在 G5 room_status 的冲突更新路径上使用“字段无变化则跳过 UPDATE”的 WHERE 条件
|
||||
- **AND** 应依赖数据库触发器自动刷新 `ts_ms`
|
||||
- **AND** 应依赖数据库触发器自动刷新 `ts_ms`
|
||||
|
||||
#### Scenario: G5 room_status 写入前按冲突键排序并去重
|
||||
- **WHEN** 一批 G5 room_status 数据进入写入阶段
|
||||
- **THEN** 系统应先按 `(hotel_id, room_id)` 排序
|
||||
- **AND** 对同一 `(hotel_id, room_id)` 仅保留 `ts_ms` 最大的一条记录
|
||||
- **AND** 去重后的结果再进入 `INSERT ... ON CONFLICT DO UPDATE`
|
||||
|
||||
#### Scenario: G5 room_status 死锁自动重试
|
||||
- **WHEN** G5 room_status 的 upsert 遇到 PostgreSQL 死锁错误 `40P01`
|
||||
- **THEN** 系统应进行短暂退避后自动重试
|
||||
- **AND** 重试应仅作用于 G5 room_status 路径
|
||||
Reference in New Issue
Block a user