feat: 扩展心跳消息支持电力与空调设备数组字段
新增 Kafka 消息中 electricity[] 和 air_conditioner[] 数组字段支持,用于存储电力与空调设备明细数据。数据库表新增对应数组列并创建 GIN 索引优化查询性能,processor 实现数组字段校验与聚合转换逻辑。 主要变更: - Kafka 消息规范新增 electricity 和 air_conditioner 数组字段定义 - 数据库 heartbeat_events 表新增 14 个数组列并创建 4 个 GIN 索引 - processor 实现数组字段解析、校验及聚合转换逻辑 - 更新相关文档与测试用例,确保端到端功能完整
This commit is contained in:
@@ -53,6 +53,32 @@ Kafka 心跳消息 MUST 包含数据库落库所需的必填字段,并采用 U
|
||||
- **THEN** 消息 value 应为 JSON(UTF-8)
|
||||
- **AND** 至少包含 ts_ms、hotel_id、room_id、device_id、ip、power_state、guest_type、cardless_state、service_mask、pms_state、carbon_state、device_count、comm_seq
|
||||
- **AND** 可选包含 extra(json object)
|
||||
- **AND** 可选包含 electricity(array of object)
|
||||
- **AND** 可选包含 air_conditioner(array of object)
|
||||
|
||||
#### Scenario: electricity 数组字段结构
|
||||
- **WHEN** 生产者在心跳消息中携带 electricity 字段时
|
||||
- **THEN** electricity MUST 为数组
|
||||
- **AND** 数组每个元素 MUST 为对象,包含:
|
||||
- address(string,设备地址)
|
||||
- voltage(double,电压)
|
||||
- ampere(double,电流)
|
||||
- power(double,功率)
|
||||
- phase(string,相位)
|
||||
- energy(double,能耗)
|
||||
- sum_energy(double,总能耗)
|
||||
|
||||
#### Scenario: air_conditioner 数组字段结构
|
||||
- **WHEN** 生产者在心跳消息中携带 air_conditioner 字段时
|
||||
- **THEN** air_conditioner MUST 为数组
|
||||
- **AND** 数组每个元素 MUST 为对象,包含:
|
||||
- address(string,设备地址)
|
||||
- state(int2,开关状态)
|
||||
- model(int2,运行模式)
|
||||
- speed(int2,风速设置)
|
||||
- set_temp(int2,设定温度)
|
||||
- now_temp(int2,当前温度)
|
||||
- solenoid_valve(int2,电磁阀门状态)
|
||||
|
||||
### Requirement: 分区键友好的 Kafka Key
|
||||
系统 MUST 支持使用 `hotel_id:device_id` 作为 Kafka message key 以获得更好的分区与有序性。
|
||||
|
||||
Reference in New Issue
Block a user