Files
qipai/docs/db-changelog/2026-06-22-M06-C-iot-messages.md
T
2026-08-10 19:15:15 +08:00

33 lines
2.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# M06-C IoT 消息数据库变更
- 迁移版本:`2026062220`
- 名称:`m06c_iot_messages`
## 新增
- `qipai_iot_commands`:13 位命令 ID、状态、请求/回包、发布/ACK/超时和失败原因。
- `qipai_iot_device_events`:原始/标准化消息、Topic、事件类型、payload 哈希、接收次数。
- `qipai_iot_dead_letters`:非法 Topic、未知设备和解析失败消息。
## 幂等与回滚
- 设备事件按租户、设备、Topic 和 payload 哈希唯一;重复消息只增加计数。
- 死信按 Topic 和 payload 哈希唯一。
- down 迁移仅删除 M06-C 三张表,不影响设备资产和拓扑。
## M06-C-R1 语义收口(2026-08-10
- 本阶段不新增表或迁移版本;沿用既有 JSON 与状态列修正协议语义。
- 未知厂商结果的事件写 `processing_status=PROTOCOL_ERROR`,原结果保留在 `raw_payload`,标准化结果写 `UNKNOWN_VENDOR_RESULT`,相关命令写 `FAILED/UNKNOWN_VENDOR_RESULT`,并新增协议死信和开放告警。
- 门锁密码/卡号请求和 `record.content` 在写入 `request_payload/raw_payload/normalized_payload/response_payload` 前哈希与脱敏。
- `AddDevice` 首 ACK 保持命令 `PUBLISHED`,携带 `subtype/subID` 的最终 ACK 才转 `ACKED` 并创建 701C/701G 拓扑。
- WSL MySQL 8.4.10 一次性数据库已验证上述语义及裸 `devicewill=close` 离线落库;完整迁移往返仍为 144 up、124 verify、140 down。
## M06-E-R1 插座消息语义(2026-08-10
- 不新增迁移版本;`normalized_payload.payload` 新增 `switchOn/voltage/current/power/temperature/energy` 标准字段,计量值为规范十进制字符串。
- `raw_payload` 继续保存脱敏后的厂商原字段,不能再用它覆盖适配器生成的标准化 payload。
- `temp/temperature` 冲突写 `processing_status=PROTOCOL_ERROR`,同时写 `SOCKET_TEMPERATURE_CONFLICT` 告警和死信。
- `special.closeReason` 3-7 分别 upsert 五类保护告警;1-2 只落设备事件。
- `setReturnKey.old/new``returnFactory.password` 在命令持久化前哈希/脱敏,Wire 原值只存在下发内存中。