Files
qipai/docs/devlogs/2026-06-24-M06-E-智慧插座.md
T

50 lines
3.9 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-E 智慧插座
- 日期:2026-06-24
- 起始 commit`4863860`
- 工程 commit`9144fa8`
- ENGINEERING_DELTA=YES
- 子阶段状态:M06-E-R1 DONEPROTOCOL_FIXTURE_PASS,缺插座实物仍为 M06-G BLOCKED_EXTERNAL
## 工程增量
- 新增智慧插座业务控制服务:`basicInfo/workInfo` 查询、`on/off` 开关、本地任务 `localtask``clearTask`
- 新增后台 API`/admin-api/device-control/socket/read``/socket/switch``/socket/task``/socket/task/clear`
- 插座命令复用设备命令状态机,先落库再发布 MQTT;返回 `PUBLISHED` 不伪造成设备执行成功。
- 插座控制复用租户、门店、房间和 `device.write` 范围校验;离线设备拒绝下发。
- 历史实现曾按协议不存在的 `powerW/overLoad` 和本地阈值推断告警;该结论已由 M06-E-R1 撤销并替换。
## M06-E-R1 协议纠偏(2026-08-10
- 工程 commit`aed36f0`
- 秘密扫描收口 commit`36b3b2f`(保持厂商 `password` Wire 字段,同时避免源码/测试值触发明文秘密门禁)。
- 新增本地任务单条/全部、MQTT 配置读取;领域 `mode/time/weekdays/action` 精确转换为 `cyctype/actiontime/weekdata/tasktype`,创建任务禁止 `taskNum=0`
- 新增 `reboot/emptyPower/returnFactory/setReturnKey/protectOff/parameter`;额定电流从设备 model/capabilities 识别 10A/16A/63A,保护上限不再统一写死。
- 清累计电量、恢复出厂、修改复位口令、重启和清空全部任务走平台管理员固定确认短语与审计;顾客与普通门店角色不可执行。
- `workInfo``onOff/vol/cur/pow/temp|temperature/energy` 标准化为布尔和精确十进制字符串;原始脱敏 payload 与标准化 payload 分开持久化。
- `special.closeReason` 3-7 写拔出、充满、超功率、超电流、超温告警,1-2 不制造保护故障;旧假字段只作为不告警的负向测试。
- `temp/temperature` 冲突保留 temp 并写 `PROTOCOL_ERROR`、协议告警与死信;插座 `update/paraerror/error` 均保存响应并推进 FAILED。
- Windows 后端全量 `npm test` 通过;WSL MySQL 8.4.10 原生副本完成 144 up、124 verify、140 down 往返并实测标准化、告警、冲突死信、失败结果和复位口令脱敏。
- 两个工程提交均已 push`HEAD == origin/main == 36b3b2fd252361cd01deafe0467d1c57ae3d8930`
## 验证
- Windows `npm run build`:退出码 0。
- Windows `node tests/iot-protocol.test.mjs`:退出码 0。
- Windows `node tests/device-control.test.mjs`:退出码 0。
- Windows `npm test`:退出码 0,M01-A 至 M06-E 全量后端回归通过。
- 工程 commit 已 push`HEAD == origin/main == 9144fa8`
## 外部阻塞与后续
缺 4G 智慧插座实物、DeviceID、生产 MQTT 账号/ACL 和现场负载,真实计量与保护断电仍保留 `BLOCKED_EXTERNAL`。资料和 fixture 已完成,游标进入 M06-R-REGRESSION。
## M06-R-REGRESSION 全量回归(2026-08-10
- 工程 commit`da5751f`;四个 M08 静态检查统一改用 `fileURLToPath`,新增带中文/空格临时仓库路径的真实执行回归。
- Windows `backend/npm test` 全量通过,控制箱、门锁、Sub-1G、智慧插座、MQTT Mock、订单联动和硬件 smoke runner 契约均通过。
- `admin/npm run build` 通过;923.28 KiB Element chunk 警告未隐藏,按固定队列移交 M08-D-R1 解决。
- WSL 原生临时副本使用 MySQL 8.4.10 完成 144 up、124 verify、140 down 的 `up → verify → down → up → verify`,协议原始 payload、标准化字段、告警、死信、命令状态和敏感值脱敏均实测通过。
- `PROTOCOL_DOCUMENT_REVIEW=PASS``PROTOCOL_FIXTURE=PASS``MQTT_MOCK=PASS``PATH_PORTABILITY=PASS``HARDWARE_REAL=BLOCKED_EXTERNAL`
- `ISSUE-013=RESOLVED`;真实设备、生产 MQTT 账号/ACL 与现场配线继续归 `ISSUE-014`,不阻断内部队列。下一游标为 M08-D-R1。