diff --git a/README.md b/README.md index 0422d12..871c984 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` 为准。 -- 当前执行游标:`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、服务端权限菜单绑定、路由级懒加载、构建分包与三档响应式门禁。 +- 当前执行游标:`M09-B`(DOING);`M09-A-RECOVERY`、`M06-C-R1`、`M06-E-R1`、`M06-R-REGRESSION` 与 `M08-D-R1` 已完成,真实团购商家授权、微信和硬件现场验收保持 `BLOCKED_EXTERNAL`。 +- 最近工程提交:`3faf868`,后台 12 个业务入口已迁入 Vue Router 权限路由和按路由懒加载;最大 JS 分块 217,195 B,375/768/1440 响应式与全仓门禁通过。 +- 下一工程目标:执行 M09-B,复用既有清洁任务、照片、验收、驳回与免清洁链路,按 V5.6 收口图片规则、权限、失败恢复和缺口测试。 ## 版本递进 diff --git a/docs/current-baseline.md b/docs/current-baseline.md index 77ae42d..fe4fb94 100644 --- a/docs/current-baseline.md +++ b/docs/current-baseline.md @@ -1,8 +1,8 @@ # 当前开发成果基线 > V5.0 首次核验日期:2026-06-16 -> audited_commit: `da5751f` -> next_engineering_target: 按 V5.6 固定队列执行 M08-D-R1,引入权限路由、领域懒加载并收口后台构建体积与三档响应式 +> audited_commit: `3faf868` +> next_engineering_target: 按 V5.6 固定队列执行 M09-B,复用既有保洁业务链路收口图片、验收、驳回和清洁规则 > 事实源:当前工作区、Git 历史、状态文档、Windows/WSL 检查脚本。 ## 总体结论 @@ -12,7 +12,7 @@ | 总纲版本 | 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 已完成控制箱、门锁与插座协议纠偏并通过 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 是本阶段待消除问题 | +| 后台管理端 | 已建立 Vue3 + Vite + TypeScript + Element Plus 工程,完成正式租户账号登录、短期访问令牌、轮换刷新令牌、当前会话、注销、401 单航班续期/清理和服务端权限菜单;12 个业务入口均为 Vue Router 深链接,菜单与 capability 双重门禁,业务页按路由懒加载,失败可重载恢复 | `admin/src/App.vue`、`admin/src/router.ts`、`admin/src/navigation.mjs`、`admin/src/session.ts`、`scripts/check-admin-m08-d-r1.mjs`、工程提交 `3faf868` | M08-D-R1 已完成;最大 JS 分块由 923.28 KiB 降至 217,195 B,入口 gzip 74.94 KiB,375/768/1440 无横向溢出,进入 M09-B | | 微信小程序 | 已纳管微信原生模板,并完成顾客端订单、充值、权益明细、下单抵扣主体链路、保洁任务端照片上传/补做主体链路,以及管理员门店/房态/订单/代下单/验券/会员/员工/保洁/设备/经营统计 | `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 与 M06-R-REGRESSION 已完成,当前按 V5.6 执行 M08-D-R1,M10 尚未进入。 +- M01-M04 与 M07 已具备模块工程验收;M05、M06、M08 因真实厂商/硬件/生产条件保持 `PARTIAL`;M09-A-RECOVERY、M06-C/E-R1、M06-R-REGRESSION 与 M08-D-R1 已完成,当前按 V5.6 执行 M09-B,M10 尚未进入。 - 任何“目录存在”只能证明骨架存在,不能证明模块完成。 ## Git 历史敏感信息核验 @@ -35,6 +35,6 @@ ## 下一步 -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 和现场实物配线,不阻断内部主队列。 +1. 执行 M09-B:审计并复用既有照片上传、提交验收、驳回补做和免清洁链路,不建立第二套领域实现。 +2. 对照 V5.6 补齐图片数量/格式/大小、任务状态与权限、失败恢复、重复提交和回归测试缺口。 +3. M09-B 完成后进入 M09-C;M06-G 真实硬件联调仍等待生产 MQTT 账号/ACL、DeviceID 和现场实物配线,不阻断内部主队列。 diff --git a/docs/devlogs/2026-08-10-M08-D-Vue平台后台.md b/docs/devlogs/2026-08-10-M08-D-Vue平台后台.md index 029fb9e..569ea74 100644 --- a/docs/devlogs/2026-08-10-M08-D-Vue平台后台.md +++ b/docs/devlogs/2026-08-10-M08-D-Vue平台后台.md @@ -308,3 +308,25 @@ M08-D 保持 `DOING`。审计日志与系统配置增量完成;下一工程增 ### 状态 M08-D 可独立工程内容完成。M08 真实微信、团购和硬件现场验收继续保持 `PARTIAL/BLOCKED_EXTERNAL`,执行游标按规则进入 M09-A 保洁任务状态机复核与补齐。 + +## 2026-08-10 M08-D-R1 后台架构与性能返工 + +- `ENGINEERING_DELTA=YES` +- 保留既有 12 个业务功能页,将 `App.vue` 收口为登录、会话恢复、权限布局和 `RouterView`;业务页通过 `/overview`、`/stores`、`/orders`、`/payments`、`/third-party`、`/people`、`/cleaning`、`/devices`、`/apps`、`/content`、`/franchise`、`/system` 独立深链接访问。 +- 路由同时校验服务端 `menus` 和 capability/平台角色,未授权深链接确定回落到首个可访问入口;刷新通过 `/auth/me` 恢复身份,401 继续复用单航班令牌轮换,懒加载失败展示可重载恢复界面。 +- 清洁工作台从 `App.vue` 原样抽入 `CleaningWorkspace.vue`;旧 M08-B/D 静态门禁同步兼容新结构,未重写第二套业务流程。 +- Element Plus 改为组件按需解析,12 个业务页均生成独立异步块;最大 JS 分块为 217,195 B,入口 gzip 74.94 KiB,原 923.28 KiB 单块警告消除。总门禁新增原生命令失败退出检查,避免子命令失败被后续命令掩盖。 + +### 测试证据 + +- `admin/npm run verify:r1`:类型检查、Vite 生产构建、深链接/菜单/capability/刷新回落测试、源码架构检查和产物分块检查通过;`npm audit --omit=dev` 为 0 个漏洞。 +- in-app Browser 生产预览:1440×900、768×900、375×812 三档均无横向溢出;375 下卡片边界为 18–357.33 px,输入框和按钮全部位于视口内;控制台 warning/error 为 0。 +- Windows `scripts/dev/windows/test-all.ps1`:69.1 秒退出码 0;包含后端全测、迁移契约、M08-B/C/D 兼容门禁、M08-D-R1 源码/产物门禁、Vue 类型检查/生产构建、敏感信息和仓库完整性检查。 +- 构建仅保留 `@vueuse/core` 的第三方 PURE 注释位置提示,不隐藏 warning;所有 JS 分块均低于 Vite 500 KiB 阈值。 + +### 变更影响与状态 + +- 数据库/API:无迁移、无接口语义变更;继续复用既有后台会话与权限响应。 +- 后台:新增 Vue Router、按需组件解析、路由会话状态和三档响应式收口;未自动部署生产。 +- 工程提交:`3faf868`,已推送并验证 `HEAD == origin/main`。 +- M08-D-R1 完成;M08 因真实微信、团购和硬件现场条件继续保持 `PARTIAL/BLOCKED_EXTERNAL`。执行游标进入 M09-B。 diff --git a/docs/feature-status.md b/docs/feature-status.md index 119b5ac..0406883 100644 --- a/docs/feature-status.md +++ b/docs/feature-status.md @@ -42,6 +42,8 @@ > 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。 +> 2026-08-10 M08-D-R1:工程提交 `3faf868` 保留全部既有后台功能页,并将 12 个入口迁入 Vue Router 深链接、服务端菜单与 capability 双重守卫和路由级懒加载;401 单航班续期、刷新恢复和懒加载失败均有确定恢复边界。Element Plus 政策改为按需解析,最大 JS 分块从 923.28 KiB 降至 217,195 B,入口 gzip 74.94 KiB;375/768/1440 响应式实测、全仓回归、敏感信息与仓库完整性门禁通过。游标进入 M09-B。 + | 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 019a5e6..e3ecb42 100644 --- a/docs/module-status.md +++ b/docs/module-status.md @@ -3,15 +3,15 @@ ```yaml execution_cursor: current_module: M08 - current_stage: M08-D-R1 + current_stage: M09-B stage_status: DOING - last_completed_stage: M06-R-REGRESSION - next_stage: M09-B - last_engineering_commit: `da5751f` + last_completed_stage: M08-D-R1 + next_stage: M09-C + last_engineering_commit: `3faf868` 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-10T20:22:51+08:00 + updated_at: 2026-08-10T20:58:40+08:00 ``` | 模块 | 状态 | 最近提交 | 最近开发日志 | 备注 | @@ -24,7 +24,7 @@ execution_cursor: | 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 | `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 功能切片已完成;当前执行 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。 | +| M08 微信原生小程序完整业务 | PARTIAL | `3faf868` | docs/devlogs/2026-08-10-M08-D-Vue平台后台.md | M08-A/B/C/D 功能切片与 M08-D-R1 架构返工已完成;12 个权限路由按领域懒加载,最大 JS 分块 217,195 B,三档响应式门禁通过。真实微信、团购和硬件现场验收按 BLOCKED_EXTERNAL 保持 PARTIAL。 | +| M09 保洁任务、结算、商品和库存 | DOING | `9b2f055` | docs/devlogs/2026-06-25-M08-B-保洁端.md | M09-A-RECOVERY 已完成事务与并发收口;当前执行 M09-B,复用既有任务照片、验收、驳回、免清洁和清洁规则链路做领域收口与缺口测试。 | | M10 部署、域名、验收和运维闭环 | TODO | - | - | - |