- 在 HeartbeatProcessor 中新增异步同步逻辑,在历史表写入成功后尝试更新 room_status 表 - 实现 DatabaseManager.upsertRoomStatus 方法,支持批量更新和自动分区创建 - 添加批次内去重逻辑,避免 PostgreSQL ON CONFLICT 冲突 - 新增相关文档:同步方案、测试报告和提案说明
1021 B
1021 B
Proposal: Synchronize Heartbeat Data to Room Status Table
Background
The room_status.room_status_moment table is a shared table for real-time device status. The heartbeat service needs to synchronize relevant fields from Kafka messages to this table.
Changes
-
Database Schema:
- Add
bright_g(INT2) andagreement_ver(TEXT) columns toroom_status.room_status_moment. - Add a UNIQUE INDEX on
(hotel_id, room_id, device_id)to support efficient UPSERT operations.
- Add
-
Application Logic:
- Implement
upsertRoomStatusinDatabaseManager. - Call this method in
HeartbeatProcessorafter successful insertion into the history table. - Map
versiontoagreement_verandbright_gtobright_g.
- Implement
Tasks
- Update
docs/room_status_moment.sqlwith new columns and index. - Update
docs/plan-room-status-sync.mdwith new fields and finalized plan. - Implement
upsertRoomStatusinDatabaseManager. - Integrate into
HeartbeatProcessor.