diff --git a/README.md b/README.md index eb8dcf7..0422d12 100644 --- a/README.md +++ b/README.md @@ -120,9 +120,9 @@ WSL 已验证:EMQX `5.8.9`、MQTTX CLI `1.13.0`、EMQX 服务 `active (running 项目已开发部分模块。具体完成度不得从 README 猜测,必须以现有代码、测试、数据库迁移、Git 历史以及 `docs/current-baseline.md`、`docs/module-status.md`、`docs/feature-status.md` 为准。 -- 当前执行游标:`M06-R-REGRESSION`(DOING);`M09-A-RECOVERY`、`M06-C-R1` 与 `M06-E-R1` 已完成,真实团购商家授权、微信和硬件现场验收保持 `BLOCKED_EXTERNAL`。 -- 最近工程提交:`aed36f0`(协议校正)+ `36b3b2f`(危险口令秘密扫描收口),真实 MySQL 8.4.10 已验证精确本地任务、十进制状态标准化、特殊断电告警、失败结果和敏感口令脱敏。 -- 下一工程目标:执行 M06-R-REGRESSION,全量验证控制箱、门锁与智慧插座协议 fixture,同时修复四个静态检查脚本的中文/空格路径处理。 +- 当前执行游标:`M08-D-R1`(DOING);`M09-A-RECOVERY`、`M06-C-R1`、`M06-E-R1` 与 `M06-R-REGRESSION` 已完成,真实团购商家授权、微信和硬件现场验收保持 `BLOCKED_EXTERNAL`。 +- 最近工程提交:`da5751f`,四个静态检查已使用 `fileURLToPath` 并通过中文/空格路径回归;Windows 后端全量与 WSL MySQL 8.4.10 的 144 up、124 verify、140 down 往返通过。 +- 下一工程目标:执行 M08-D-R1,在保留现有功能页面的前提下补 Vue Router、服务端权限菜单绑定、路由级懒加载、构建分包与三档响应式门禁。 ## 版本递进 diff --git a/docs/current-baseline.md b/docs/current-baseline.md index 0b1abf9..77ae42d 100644 --- a/docs/current-baseline.md +++ b/docs/current-baseline.md @@ -1,8 +1,8 @@ # 当前开发成果基线 > V5.0 首次核验日期:2026-06-16 -> audited_commit: `36b3b2f` -> next_engineering_target: 按 V5.6 固定队列执行 M06-R-REGRESSION,全量验证协议并修复四个检查脚本路径 +> audited_commit: `da5751f` +> next_engineering_target: 按 V5.6 固定队列执行 M08-D-R1,引入权限路由、领域懒加载并收口后台构建体积与三档响应式 > 事实源:当前工作区、Git 历史、状态文档、Windows/WSL 检查脚本。 ## 总体结论 @@ -11,8 +11,8 @@ |---|---|---|---| | 总纲版本 | V5.6 已成为当前权威总纲,V5.4 及更早版本仅作历史备份 | 根目录 `V5.6.md` 的第 29 章固定队列 | 必须按 V5.6 游标开发,不得回退到历史队列 | | Git 远端 | `origin=ssh://git@git.txyundm.cn:2222/panda/qipai.git`,分支 `main` | `git rev-list main...origin/main` 为 `0 0` | 本地与远端同步 | -| 正式后端 | 已完成 Fastify、迁移兼容、outbox/worker、多应用租户、微信与后台密码身份/可撤销会话、六角色 RBAC、门店范围,以及 M03-M08 业务 API;M09-A 已完成事务收口,M06-C/E-R1 已完成控制箱、门锁与插座协议纠偏 | `backend/src/**`、`database/migrations/**`、`backend/tests/**`、工程提交 `9b2f055`、`dabc656`、`aed36f0`、`36b3b2f` | M01-M04、M07 已完成;M05/M06/M08 可独立工程内容完成但外部联调保持 PARTIAL;当前进入 M06-R-REGRESSION | -| 后台管理端 | 已建立 Vue3 + Vite + TypeScript + Element Plus 工程,完成正式租户账号登录、短期访问令牌、轮换刷新令牌、当前会话、注销、401 自动续期/清理和服务端权限菜单,并覆盖 M08-D 计划内运营工作区;应用页按平台/租户权限分层,敏感审计 metadata 递归脱敏且不读写 AppSecret | `admin/src/App.vue`、`admin/src/components/AdminLoginPanel.vue`、`admin/src/api.ts`、`backend/src/routes/admin-auth.ts`、`backend/src/auth/admin-auth-repository.ts`、`scripts/check-admin-m08-d.mjs` | M08-D 可独立工程内容完成;真实外部联调仍使 M08 保持 PARTIAL,游标进入 M09-A | +| 正式后端 | 已完成 Fastify、迁移兼容、outbox/worker、多应用租户、微信与后台密码身份/可撤销会话、六角色 RBAC、门店范围,以及 M03-M08 业务 API;M09-A 已完成事务收口,M06-C/E-R1 已完成控制箱、门锁与插座协议纠偏并通过 M06-R 全量回归 | `backend/src/**`、`database/migrations/**`、`backend/tests/**`、工程提交 `9b2f055`、`dabc656`、`aed36f0`、`36b3b2f`、`da5751f` | M01-M04、M07 已完成;M05/M06/M08 可独立工程内容完成但外部联调保持 PARTIAL;当前进入 M08-D-R1 | +| 后台管理端 | 已建立 Vue3 + Vite + TypeScript + Element Plus 工程,完成正式租户账号登录、短期访问令牌、轮换刷新令牌、当前会话、注销、401 自动续期/清理和服务端权限菜单,并覆盖 M08-D 计划内运营工作区;应用页按平台/租户权限分层,敏感审计 metadata 递归脱敏且不读写 AppSecret | `admin/src/App.vue`、`admin/src/components/AdminLoginPanel.vue`、`admin/src/api.ts`、`backend/src/routes/admin-auth.ts`、`backend/src/auth/admin-auth-repository.ts`、`scripts/check-admin-m08-d.mjs` | 功能切片保留,M08-D-R1 正在补 Vue Router、路由级权限/懒加载、首屏分包和 375/768/1440 响应式门禁;当前构建的 Element chunk 923.28 KiB 是本阶段待消除问题 | | 微信小程序 | 已纳管微信原生模板,并完成顾客端订单、充值、权益明细、下单抵扣主体链路、保洁任务端照片上传/补做主体链路,以及管理员门店/房态/订单/代下单/验券/会员/员工/保洁/设备/经营统计 | `miniapp/pages/index`、`miniapp/pages/store/detail`、`miniapp/pages/room/detail`、`miniapp/pages/orders/*`、`miniapp/pages/recharge/*`、`miniapp/pages/profile/*`、`miniapp/pages/cleaner/*`、`miniapp/pages/manager/*`、`miniapp/utils/api.js`、`scripts/check-miniapp-m08-a.mjs`、`scripts/check-miniapp-m08-c.mjs` | M08-A/B/C/D 可独立工程内容完成,执行游标进入 M09-A;真实团购、微信和硬件现场验收保持外部阻塞,M08 维持 PARTIAL | | 数据库迁移 | 已形成 M01-B 至 M08-D 连续 up/down/verify 计划、最小脱敏 seed、旧库 fixture、执行 CLI、验证结果门禁和 MySQL 8 集成测试;M09-A 事务并发与 M06-C/E-R1 协议落库均纳入同一往返测试 | `database/migrations/**`、`database/seeds/2026061601_m01b_minimal_seed.sql`、`backend/src/db/migration-runner.ts`、`backend/tests/mysql-migration-roundtrip.test.mjs` | WSL MySQL 8.4.10 已完成 144 up、124 verify、140 down;另实测插座十进制 `workInfo`、三类失败结果、closeReason 3-7 告警、温度冲突死信和复位口令脱敏 | | M00 部署脚本 | 已有菜单、状态、HTTPS、Certbot、EMQX、备份检查模板 | `setup.sh`、`scripts/setup/`、`deploy/` | PARTIAL,生产未执行 | @@ -24,7 +24,7 @@ ## 状态校准 - `docs/module-status.md` 中 M00 仍为 `PARTIAL` 是正确的:生产 Ubuntu 初始化、部署与运维验收尚未执行;后端、后台和小程序源码已在后续模块建立。 -- M01-M04 与 M07 已具备模块工程验收;M05、M06、M08 因真实厂商/硬件/生产条件保持 `PARTIAL`;M09-A-RECOVERY 与 M06-C/E-R1 已完成,当前按 V5.6 执行 M06-R-REGRESSION,M10 尚未进入。 +- M01-M04 与 M07 已具备模块工程验收;M05、M06、M08 因真实厂商/硬件/生产条件保持 `PARTIAL`;M09-A-RECOVERY、M06-C/E-R1 与 M06-R-REGRESSION 已完成,当前按 V5.6 执行 M08-D-R1,M10 尚未进入。 - 任何“目录存在”只能证明骨架存在,不能证明模块完成。 ## Git 历史敏感信息核验 @@ -35,6 +35,6 @@ ## 下一步 -1. 执行 M06-R-REGRESSION:按 V5.6 指令完成后端、后台、小程序、迁移、MQTT fixture 与仓库全量门禁。 -2. 修复四个 `check-*.mjs` 的中文/空格路径处理,并统一关闭协议资料缺失的历史问题;完成后进入 M08-D-R1。 -3. M06-G 真实硬件联调仍等待生产 MQTT 账号/ACL、DeviceID 和现场实物配线;该外部阻塞不阻断内部 R1 队列。 +1. 执行 M08-D-R1:保留既有业务组件,引入 Vue Router、服务端 capability 绑定、路由守卫和领域懒加载。 +2. 消除当前 923.28 KiB Element 单块警告,补深链接、刷新恢复、401 单飞、懒加载失败及 375/768/1440 三档自动化检查。 +3. 完成 M08-D-R1 后进入 M09-B;M06-G 真实硬件联调仍等待生产 MQTT 账号/ACL、DeviceID 和现场实物配线,不阻断内部主队列。 diff --git a/docs/devlogs/2026-06-24-M06-E-智慧插座.md b/docs/devlogs/2026-06-24-M06-E-智慧插座.md index f736ecf..be3c3a5 100644 --- a/docs/devlogs/2026-06-24-M06-E-智慧插座.md +++ b/docs/devlogs/2026-06-24-M06-E-智慧插座.md @@ -38,3 +38,12 @@ ## 外部阻塞与后续 缺 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。 diff --git a/docs/external-dependencies.md b/docs/external-dependencies.md index 0a4d6f3..3251693 100644 --- a/docs/external-dependencies.md +++ b/docs/external-dependencies.md @@ -4,6 +4,6 @@ |---|---|---|---|---|---|---|---| | EXTDEP-001 | Gitea | SCM-001/OPS-002 | `ssh://git@git.txyundm.cn:2222/panda/qipai.git` 访问权限 | 已通过 push 与远端校验;后续持续复检 | 不适用 | 用户/Gitea | 每个模块提交后继续执行 `HEAD == origin/main` 校验。 | | EXTDEP-002 | Ubuntu 服务器 | OPS-001/OPS-004/TLS-001 | Ubuntu 24.04 x86-64、域名、Nginx、证书权限 | 待生产人工执行;当前 `api.txyundm.cn` 线上证书仍显示 `git.txyundm.cn` | 否 | 用户/服务器 | Codex 仅维护菜单脚本,不自动生产部署;需管理员安装 API 证书和 Nginx 站点。 | -| EXTDEP-003 | 硬件 | IOT-001 | EMQX 主机、控制箱、门锁、插座和厂商协议 | 待实机联调 | 否 | 用户/厂商 | 后续 M06 完成适配器和 Mock。 | +| EXTDEP-003 | 硬件 | IOT-001 | EMQX 主机、控制箱、门锁和插座实物;两份厂商协议原件已完成审计 | 协议 fixture 已通过,待实机联调 | 是 | 用户/厂商 | 提供生产 MQTT 账号/ACL、DeviceID、实物和配线后执行 M06-G 现场矩阵。 | | EXTDEP-005 | 本地 MQTT 账号 | IOT-001 | Dashboard 管理员账号与 MQTT 客户端最小权限账号需区分,口令不得入库 | 待配置/轮换确认;脚本入口已生成 | 否 | 用户/本地 WSL | 在 Git 忽略的 `scripts/dev/wsl/mqtt-smoke.env` 中配置,后续只记录“已配置/已轮换”,不记录明文口令。 | | EXTDEP-004 | 微信平台 | WXNET-001 | 小程序 AppID、合法域名、真机体验权限 | 待提供/验证 | 否 | 用户/微信公众平台 | M08/M10 验证真机链路。 | diff --git a/docs/feature-status.md b/docs/feature-status.md index 4f7ad1e..119b5ac 100644 --- a/docs/feature-status.md +++ b/docs/feature-status.md @@ -40,6 +40,8 @@ > 2026-08-10 M09-A-RECOVERY:工程提交 `9b2f055` 为 `CLN-002`、`CLN-005` 完成保洁任务事务与并发收口。claim/assign/submit/reject/complete 将状态、负责人/成员与事件纳入同一事务,事件冲突会整体回滚;重指派覆盖 WAITING/CLAIMED/REJECTED 并清理旧照片、驳回原因和过期时间字段;超时回收使用 MySQL `FOR UPDATE SKIP LOCKED`、只处理本批并保护已结算成员。Windows 后端全量测试和 WSL MySQL 8.4.10 的 144 up、124 verify、140 down 往返通过,实测并发 claim 单赢家、相同 trace 不重复事件、订单 FINISHED 唯一建任务。M09-A-RECOVERY 完成,按 V5.6 固定队列进入 M06-C-R1;CLN-002/CLN-005 因后续 M09 收口与外部现场验收仍保持 `PARTIAL`。 +> 2026-08-10 M06-R-REGRESSION:工程提交 `da5751f` 将四个静态检查统一改为 `fileURLToPath`,并增加真实中文/空格临时路径回归。控制箱、Sub-1G 与智慧插座协议 fixture、Windows 后端全量、Vue 构建、四项静态检查以及 WSL MySQL 8.4.10 的 144 up、124 verify、140 down 往返全部通过;`ISSUE-013` 关闭,实物联调仍由 `ISSUE-014` 保持 `BLOCKED_EXTERNAL`。游标进入 M08-D-R1。 + | ID | 功能 | 模块子阶段 | 状态 | 最近提交 | 测试/验收证据 | 阻塞原因 | 下一步 | |---|---|---|---|---|---|---|---| | ENV-001 | 固定 Windows 工作区 | M00-A/M00-B | DONE | 远端 HEAD | 已确认 `D:\qipai`,Git 根、main 分支、固定 origin 和 push 校验通过。 | - | 后续每模块继续复检。 | diff --git a/docs/module-status.md b/docs/module-status.md index 2d3025f..019a5e6 100644 --- a/docs/module-status.md +++ b/docs/module-status.md @@ -2,16 +2,16 @@ ```yaml execution_cursor: - current_module: M06 - current_stage: M06-R-REGRESSION + current_module: M08 + current_stage: M08-D-R1 stage_status: DOING - last_completed_stage: M06-E-R1 - next_stage: M08-D-R1 - last_engineering_commit: `36b3b2f` + last_completed_stage: M06-R-REGRESSION + next_stage: M09-B + last_engineering_commit: `da5751f` last_push_verified: true base_branch: main blocked_reason: "M08-A 真机合法域名、真实微信支付和实物开门验证缺微信后台/商户/硬件现场条件;M08-B 可独立工程内容已完成,真实商户凭据、微信后台配置、生产小额转账和实物硬件结果保持 BLOCKED_EXTERNAL;M08-C 可独立工程内容已完成,真实美团/抖音/快手商家授权与真机验券保持 BLOCKED_EXTERNAL,已按规则旁路进入 M08-D。M06-G 真实硬件联调仍缺生产 MQTT 账号/ACL、DeviceID、控制箱、门锁、插座和现场配线。" - updated_at: 2026-08-10T19:11:03+08:00 + updated_at: 2026-08-10T20:22:51+08:00 ``` | 模块 | 状态 | 最近提交 | 最近开发日志 | 备注 | @@ -22,9 +22,9 @@ execution_cursor: | M03 门店、房间、价格、营业时间 | DONE | `d563078` | docs/devlogs/2026-06-18-M03-D-场景码NFC与WiFi.md | M03-A/B/C/D 已完成门店房间、装修广告、媒体、地图选店、场景码/NFC 页面导航和受控 Wi-Fi;真实微信小程序码图片生成留待 M08 真机联调。 | | M04 订单、时段锁定、支付闭环 | DONE | `91801fe` | docs/devlogs/2026-06-20-M04-D-订单分享.md | M04-A/B/C/D 已完成可信定价、并发预占、订单状态机、续费取消换房、管理员调整、代下单和最小权限分享;Windows 全量回归与 WSL MySQL 8.4.9 模块回归通过。 | | M05 会员、余额、套餐、优惠券 | PARTIAL | `1680d73` | docs/devlogs/2026-06-22-M05-D-分账与收款配置.md | M05-A/B/C/D 工程闭环已完成:统一支付、微信支付退款、团购直订、门店收款账户、分账接收方、比例策略、授权门禁、幂等分账和对账查询均通过 Windows 与 WSL MySQL 回归;真实微信/团购/分账权限未提供,模块保持 PARTIAL/BLOCKED_EXTERNAL。 | -| M06 设备、MQTT 与真实硬件联动 | PARTIAL | `36b3b2f` | docs/devlogs/2026-06-24-M06-E-智慧插座.md | M06-C/E-R1 已按原件校正控制箱、Sub-1G 与智慧插座 Wire/事件/脱敏,并通过 Windows 全量、真实 MySQL 和仓库秘密扫描;当前进入 M06-R-REGRESSION。M06-G 仍缺生产 MQTT 账号/ACL、DeviceID 和实物配线,保持 BLOCKED_EXTERNAL。 | +| M06 设备、MQTT 与真实硬件联动 | PARTIAL | `da5751f` | docs/devlogs/2026-06-24-M06-E-智慧插座.md | M06-C/E-R1 已按原件校正控制箱、Sub-1G 与智慧插座 Wire/事件/脱敏;M06-R 已通过 Windows 后端全量、MQTT fixture、四项静态检查的中文/空格路径回归及 WSL MySQL 8.4.10 完整往返。M06-G 仍缺生产 MQTT 账号/ACL、DeviceID 和实物配线,保持 BLOCKED_EXTERNAL。 | | M07 会员、余额、充值、优惠券和套餐营销 | DONE | `ed0d455` | docs/devlogs/2026-06-24-M07-D-会员管理.md | M07-A 已完成现金/赠送双余额账本;M07-B 已完成充值优惠;M07-C 已完成优惠券/套餐权益底表和冻结、确认、退回的可靠补偿核销服务;M07-D 已完成会员画像、订单、消费、余额、充值、优惠券和套餐聚合查询。 | -| M08 微信原生小程序完整业务 | PARTIAL | `0511008` | docs/devlogs/2026-08-10-M08-D-Vue平台后台.md | M08-A/B/C/D 可独立工程内容已完成;Vue 后台已覆盖正式密码登录、短期访问令牌、轮换刷新令牌、401 清理、服务端权限菜单及计划内运营工作区。真实微信、团购和硬件现场验收按 BLOCKED_EXTERNAL 保持 PARTIAL,执行游标已旁路进入 M09-A。 | -| M09 保洁任务、结算、商品和库存 | DOING | `9b2f055` | docs/devlogs/2026-06-25-M08-B-保洁端.md | M09-A-RECOVERY 已完成:状态、负责人/成员和事件同事务;真实 MySQL 8.4.10 已验证 claim 单赢家、失败回滚、重指派清理、`SKIP LOCKED` 回收和订单唯一建任务。按 V5.6 固定队列暂返 M06-R1,完成后再进入 M08-D-R1/M09-B。 | +| M08 微信原生小程序完整业务 | PARTIAL | `0511008` | docs/devlogs/2026-08-10-M08-D-Vue平台后台.md | M08-A/B/C/D 功能切片已完成;当前执行 M08-D-R1,把既有 Vue 运营工作区迁入权限路由、领域懒加载和三档响应式架构。真实微信、团购和硬件现场验收按 BLOCKED_EXTERNAL 保持 PARTIAL。 | +| M09 保洁任务、结算、商品和库存 | DOING | `9b2f055` | docs/devlogs/2026-06-25-M08-B-保洁端.md | M09-A-RECOVERY 已完成:状态、负责人/成员和事件同事务;真实 MySQL 8.4.10 已验证 claim 单赢家、失败回滚、重指派清理、`SKIP LOCKED` 回收和订单唯一建任务。完成 M08-D-R1 后按 V5.6 固定队列进入 M09-B。 | | M10 部署、域名、验收和运维闭环 | TODO | - | - | - | diff --git a/docs/unresolved-issues.md b/docs/unresolved-issues.md index 0eb4b2c..7799047 100644 --- a/docs/unresolved-issues.md +++ b/docs/unresolved-issues.md @@ -14,5 +14,5 @@ | ISSUE-010 | 2026-06-22 | M05-C/GRP-001/GRP-002 | 美团/点评、抖音等团购核销与直订未完成真实平台联调。 | 高 | 已完成统一适配器、人工/Mock/API 核销、券码哈希、重复核销幂等、HMAC 回调、映射、人工队列和认领成单;后台配置与记录 API 已具备。 | 缺平台商家授权、Token、正式签名协议和回调测试环境。 | 获取授权后新增厂商专用适配器并执行验券、重复推送、取消和异常重试验收。 | BLOCKED_EXTERNAL | | ISSUE-011 | 2026-06-22 | M05-D/FRN-001 | 微信支付真实分账尚未联调。 | 高 | 已完成收款账户、接收方、比例策略、授权门禁、成功支付校验、API 请求签名、幂等批次、失败人工处理和查询;Mock 仅限非生产。 | 缺微信支付服务商/分账权限、已授权接收方和生产商户凭据。 | 取得权限后登记环境接收方映射,执行小额支付后多接收方分账、重复请求和失败对账验收。 | BLOCKED_EXTERNAL | | ISSUE-012 | 2026-06-22 | M06-A/IOT-001 | 生产 EMQX、正式 MQTT 客户端账号和 ACL 尚未现场验收。 | 高 | 已完成菜单 3 安装/更新、正式 Topic ACL、后端 MQTT 3.1/QoS 1、重连、订阅恢复、健康检查、消息限制和 Mock 客户端测试;WSL EMQX 服务级检查通过。 | Codex 不自动操作生产 Ubuntu,且尚无生产 MQTT 账号;WSL 本地最小权限账号也未配置。 | 管理员在 `101.42.38.246` 执行菜单 3 并建立账号/ACL;提供 Git 忽略的本地账号后执行错误密码、越权、TLS、遗嘱和三个 Topic 冒烟。 | BLOCKED_EXTERNAL | -| ISSUE-013 | 2026-06-22 | M06-C/协议资料 | V5.4 点名的控制箱与智慧插座协议 PDF 原件未在 `参考/`、现有压缩包或仓库其他路径找到。 | 中 | M06-C 严格按 V5.4 已固化的 Topic、命令拼写、字段约束和结果枚举实现,并用 Mock/MySQL 验证;未伪称 PDF 已阅读。 | 协议原件未随当前工作区提供。 | 用户补充两份 PDF 后按页码复核字段、范围和完整枚举;若有差异,以 PDF 和实机结果修正适配器并记录迁移。 | BLOCKED_EXTERNAL | +| ISSUE-013 | 2026-06-22 | M06-C/协议资料 | 控制箱与智慧插座协议 PDF 原件曾缺失,旧适配器因此存在字段、命令结果与事件语义偏差。 | 中 | V5.6 已固化两份原件审计;M06-C/E-R1 已校正 Wire schema、结果码、事件、脱敏与数据库标准化,M06-R 完成 fixture、Windows 全量和 MySQL 8.4.10 往返。 | 历史资料缺失已由用户补充的两份 PDF 解除。 | 保留 fixture 回归;实物差异统一归 ISSUE-014 现场联调处理。 | RESOLVED | | ISSUE-014 | 2026-06-24 | M06-G/真实硬件联调 | 控制箱、Sub-1G 门锁、4G 智慧插座和生产 MQTT 账号/ACL 未提供,无法执行真实 ACK、开锁、控电、插座保护和订单联动矩阵。 | 高 | 已完成后端 MQTT、设备拓扑、协议适配、命令状态机、订单联动和 `hardware-smoke-runner`;未配置 DeviceID 时安全 SKIP,未显式启用时 DRY_RUN。 | 真实设备、DeviceID、subID、生产账号、ACL 和现场配线属于外部条件。 | 提供实物和 Git 忽略的环境变量后运行 `node dist/devices/hardware-smoke-runner.js`,再补照片/视频/日志和故障场景报告。 | BLOCKED_EXTERNAL |