feat: 扩展心跳消息支持电力与空调设备数组字段

新增 Kafka 消息中 electricity[] 和 air_conditioner[] 数组字段支持,用于存储电力与空调设备明细数据。数据库表新增对应数组列并创建 GIN 索引优化查询性能,processor 实现数组字段校验与聚合转换逻辑。

主要变更:
- Kafka 消息规范新增 electricity 和 air_conditioner 数组字段定义
- 数据库 heartbeat_events 表新增 14 个数组列并创建 4 个 GIN 索引
- processor 实现数组字段解析、校验及聚合转换逻辑
- 更新相关文档与测试用例,确保端到端功能完整
This commit is contained in:
2026-01-16 14:45:36 +08:00
parent 7d5b9c50ea
commit 455185ac5d
16 changed files with 693 additions and 8 deletions

View File

@@ -0,0 +1,14 @@
# Change: 扩展心跳消息与分区表以支持电力/空调数组v3
## Why
当前心跳数据仅落库基础字段与 extra无法按需查询与聚合“电力设备/空调设备”的细粒度状态;需要将数组结构拆列为数据库数组列,并对指定列提供数组元素索引。
## What Changes
- **Kafka**:新增可选字段 `electricity[]``air_conditioner[]` 以及元素字段定义
- **Processor**:新增数组字段类型校验与“按原始顺序聚合为列数组”的转换规则
- **DB**:在 `heartbeat.heartbeat_events` 新增数组列,并为 `elec_address/air_address/state/model` 建立 GIN 索引(数组元素查询)
- **Docs/Tests**:更新 producer 与 schema 文档;补充单元测试与冒烟验证
## Impact
- Affected specs: `openspec/specs/kafka`, `openspec/specs/processor`, `openspec/specs/db`
- Affected code: `src/processor/heartbeatProcessor.js`, `src/db/databaseManager.js`, `scripts/db/*.sql`, `docs/*`, `test/*`