Files
qipai/docs/devlogs/2026-06-22-M06-C-协议适配与消息幂等.md
T

35 lines
1.7 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 协议适配器和消息幂等
- 日期:2026-06-22
- 起始 commit`c96045f`
- 工程 commit`e795cdb`
- ENGINEERING_DELTA=YES
- 子阶段状态:DONE(可独立工程范围);PDF 原件复核为外部阻塞
## 工程增量
- 实现 `MqttTransport``JilianControlBoxAdapter``JilianSub1GLockAdapter``JilianSmartSocketAdapter`
- 严格保留 `ConctolPower``Crldoor``CrlLED``PlayTTS``CtrlDevice` 等厂商拼写。
- Zod 校验控制箱读取/控电/门锁/TTS/LED/任务、Sub-1G 配对控制、插座读取/开关/本地任务。
- 建立 13 位命令 ID、命令持久化、发布状态、ACK/失败/超时状态推进。
- MQTT 消费校验 Topic、DeviceID 和 JSON;原始/标准化 payload 分开保存。
- QoS 1 重复消息只增加接收次数,不重复推进命令或设备状态。
- 非法 Topic、未知设备、非法 JSON/字段进入可去重死信表,消费循环不崩溃。
## 验证
- Windows `npm test``scripts/dev/windows/test-all.ps1`:退出码 0。
- WSL MySQL 8.4.9 原生临时副本:`up → verify → down → up → verify` 通过。
- 迁移语句:up 102、verify 74、down 96。
- 实测同一 ACK 投递两次:事件行 1 条、`receive_count=2`、命令只推进一次至 `ACKED`
- 非法 Topic 实测进入 `qipai_iot_dead_letters`
- 工程 commit 已 push`HEAD == origin/main == e795cdb6935568611a5d27d78991bf9e7ee2f7df`
## 资料边界
当前工作区与现有压缩包未找到 V5.4 点名的两份协议 PDF。实现依据为 V5.4 已固化的协议章节;PDF 页码级复核登记为 `ISSUE-013/BLOCKED_EXTERNAL`
## 后续
执行游标进入 M06-D:控制箱和门锁业务能力。