feat: 扩展心跳消息支持电力与空调设备数组字段
新增 Kafka 消息中 electricity[] 和 air_conditioner[] 数组字段支持,用于存储电力与空调设备明细数据。数据库表新增对应数组列并创建 GIN 索引优化查询性能,processor 实现数组字段校验与聚合转换逻辑。 主要变更: - Kafka 消息规范新增 electricity 和 air_conditioner 数组字段定义 - 数据库 heartbeat_events 表新增 14 个数组列并创建 4 个 GIN 索引 - processor 实现数组字段解析、校验及聚合转换逻辑 - 更新相关文档与测试用例,确保端到端功能完整
This commit is contained in:
@@ -55,6 +55,29 @@
|
||||
- **WHEN** 心跳数据缺失必填字段时
|
||||
- **THEN** 系统应判定为无效数据并丢弃
|
||||
|
||||
### Requirement: 数组字段聚合转换
|
||||
系统 MUST 支持将 electricity[] 与 air_conditioner[] 的对象数组聚合为数据库的“列数组”,并保持原始顺序一致性。
|
||||
|
||||
#### Scenario: electricity 数组聚合为列数组
|
||||
- **WHEN** 心跳数据包含 electricity(对象数组)时
|
||||
- **THEN** 系统应按输入数组原始顺序提取并聚合为:
|
||||
- elec_address[]、voltage[]、ampere[]、power[]、phase[]、energy[]、sum_energy[]
|
||||
- **AND** 同一条心跳记录内,上述各数组下标必须与输入 electricity 的下标一一对应
|
||||
|
||||
#### Scenario: air_conditioner 数组聚合为列数组
|
||||
- **WHEN** 心跳数据包含 air_conditioner(对象数组)时
|
||||
- **THEN** 系统应按输入数组原始顺序提取并聚合为:
|
||||
- air_address[]、state[]、model[]、speed[]、set_temp[]、now_temp[]、solenoid_valve[]
|
||||
- **AND** 同一条心跳记录内,上述各数组下标必须与输入 air_conditioner 的下标一一对应
|
||||
|
||||
#### Scenario: 数组字段缺失与类型校验
|
||||
- **WHEN** electricity 或 air_conditioner 字段存在但类型不为数组时
|
||||
- **THEN** 系统应判定该条消息为无效并丢弃
|
||||
- **AND** 记录错误日志
|
||||
- **WHEN** 数组元素字段缺失或类型不匹配但消息其余必填字段有效时
|
||||
- **THEN** 系统应保持数组长度对齐,并对无法转换的单元写入 null
|
||||
- **AND** 不应破坏其余字段的写入
|
||||
|
||||
### Requirement: 批量处理支持
|
||||
系统 MUST 支持批量处理心跳数据,提高处理效率。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user