# 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。