feat(M10-B): 完成可复算经营报表与日汇总
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
# M10-B 经营报表指标口径
|
||||
|
||||
本文件固定 `M10-B-v1` 的统计口径。页面、CSV 导出、日汇总任务和明细复算均使用 `BusinessReportService`,不得分别实现不同算法。
|
||||
|
||||
## 时间与范围
|
||||
|
||||
- 请求使用闭区间本地日期 `from`、`to`,最长 93 天;“今日”和“近 7 日”只是该范围的快捷入口。
|
||||
- 每家门店按 `qipai_stores.timezone` 的 IANA 时区独立换算本地零点,数据库时间仍为 UTC `DATETIME(3)`。
|
||||
- 全门店报表只包含调用人获授权的门店;租户管理员和平台管理员可读取当前租户全部门店。
|
||||
- 夏令时自然日可能是 23 或 25 小时,因此利用率分母按相邻两个门店本地零点的真实分钟差计算,不固定写死 1440 分钟。
|
||||
|
||||
## 金额指标
|
||||
|
||||
所有金额单位均为整数分。
|
||||
|
||||
| 指标 | 明细来源与公式 |
|
||||
|---|---|
|
||||
| 房费实收 | `qipai_payments` 中成功、部分退款或全额退款状态的原支付,按 `paid_at` 归属日期;退款后的状态变化不能抹掉原始实收 |
|
||||
| 房费退款 | `qipai_refunds` 中成功退款,按 `completed_at` 归属日期 |
|
||||
| 房费净收入 | 房费实收减房费退款 |
|
||||
| 商品实收 | `qipai_product_payments` 中成功或已全额退款的原支付,按 `paid_at` 归属日期 |
|
||||
| 商品退款 | `qipai_product_refunds` 中成功退款,按 `completed_at` 归属日期 |
|
||||
| 商品净收入 | 商品实收减商品退款 |
|
||||
| 总净收入 | 房费净收入加商品净收入 |
|
||||
| 保洁成本 | 已付款结算明细按结算 `paid_at` 计正数;冲正明细按 `reversed_at` 计负数 |
|
||||
| 贡献额 | 总净收入减保洁成本;不是会计利润,不包含租金、水电、渠道手续费和税费 |
|
||||
|
||||
支付渠道读取支付单的 `channel`,统一映射为微信、余额、套餐、团购平台和其他;退款按原支付渠道反向扣减。各渠道净额之和必须等于总净收入。
|
||||
|
||||
## 订单、人数和房间利用率
|
||||
|
||||
- 订单数按房间订单 `created_at` 归属日期统计,不包含商品订单。
|
||||
- 下单人数按请求范围内房间订单 OWNER 用户去重;逐日行按当日去重,范围汇总不会把同一用户跨日重复计算。
|
||||
- 实际使用开始时间优先取订单状态历史首次进入 `IN_PROGRESS` 的时间,结束时间优先取首次进入 `FINISHED` 的时间。
|
||||
- 历史迁移订单缺状态时间时,只有 `IN_PROGRESS/FINISHED/CLOSED` 才回退到预订起止时间;其他状态不计实际使用。
|
||||
- 跨日使用按每个门店自然日边界切分;进行中订单最多计算到查询时刻。
|
||||
- 可用分钟 = 当日未删除房间数 × 当日真实分钟数;利用率基点 = `实际使用分钟 × 10000 ÷ 可用分钟`,页面用百分比展示。
|
||||
- 为避免异常重叠历史造成超过 100%,逐店逐日实际分钟最多取可用分钟;原始异常仍应通过订单/房间对账修复。
|
||||
|
||||
## 日汇总与复算
|
||||
|
||||
- `qipai_business_daily_summaries` 以 `(tenant_id, store_id, business_date)` 唯一保存逐店逐日结果和 `source_checksum`。
|
||||
- Worker 每 5 分钟检查一次任务,每小时幂等安排最近 7 个门店自然日;管理员可对最多 93 天范围人工重算。
|
||||
- 查询和 CSV 始终从业务明细实时复算,不把可能陈旧的日汇总当作资金事实源。
|
||||
- 实时结果与日汇总 checksum 全部相同时返回 `MATCHED`;没有汇总返回 `NOT_AGGREGATED`;缺行或内容不同返回 `MISMATCH`。
|
||||
- 退款、冲正或订单完成时间变化后,汇总允许被同一明细结果覆盖更新;不累计旧汇总,避免重复计账。
|
||||
|
||||
## 权限与导出
|
||||
|
||||
- `report.read`:读取授权门店报表。
|
||||
- `report.export`:导出与页面同源的 UTF-8 CSV。
|
||||
- `report.manage`:加入日汇总重算任务,仅租户管理员和平台管理员默认拥有。
|
||||
- 所有接口仍执行租户、门店范围和服务端日期边界校验;前端筛选不构成权限边界。
|
||||
+10
-10
@@ -1,10 +1,10 @@
|
||||
# 当前开发成果基线
|
||||
|
||||
> V5.0 首次核验日期:2026-06-16
|
||||
> audited_commit: `41b9cf7`
|
||||
> audited_worktree: M10-A 已完成工程(随本次中文工程提交固化)
|
||||
> audited_at: `2026-08-11T09:08:00+08:00`
|
||||
> next_engineering_target: 按 V5.7 固定队列执行 M10-B,完成可由明细复算的统计报表
|
||||
> audited_commit: `5d70114`
|
||||
> audited_worktree: M10-B 已完成工程(随本次中文工程提交固化)
|
||||
> audited_at: `2026-08-11T09:41:58+08:00`
|
||||
> next_engineering_target: 按 V5.7 固定队列执行 M10-C,完成多应用、加盟开通与扩展边界
|
||||
> 事实源:当前工作区、Git 历史、状态文档、Windows/WSL 检查脚本。
|
||||
|
||||
## 总体结论
|
||||
@@ -13,10 +13,10 @@
|
||||
|---|---|---|---|
|
||||
| 总纲版本 | V5.7 已成为当前权威总纲,V5.6 及更早版本仅作历史基线 | 根目录 `V5.7.md` 的增量控制层与第 30 章固定队列 | 必须按 V5.7 游标开发,不得回退到历史队列 |
|
||||
| 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-M09 业务 API;M10-A 新增统一通知模板、路由、接收人解析、顾客订阅授权/站内信、HTTPS 渠道、幂等投递、有限重试、失败人工补发、门店时区静默与递归脱敏,并将房间订单、支付退款、保洁、设备、商品订单和寄存事件接入 outbox | `backend/src/notifications/notification-service.ts`、`backend/src/routes/notifications.ts`、`backend/src/tasks/worker.ts`、`database/migrations/2026081110_m10a_notification_center.*.sql` | Windows 全量 76.7 秒通过;MySQL 8.4.10 完成 229 up、165 verify、209 down 往返和清理探针,进入 M10-B |
|
||||
| 后台管理端 | 已建立 Vue3 + Vite + TypeScript + Element Plus 权限路由工程;14 个业务入口按路由懒加载;通知中心支持按门店查看模板、事件路由和投递状态,筛选渠道/失败原因并对终态失败记录人工补发 | `admin/src/router.ts`、`admin/src/components/NotificationCenterPanel.vue`、`admin/src/api.ts`、`backend/src/routes/admin-auth.ts` | 生产构建和导航测试通过;通知中心分块约 6.4 KiB gzip,桌面/平板/手机响应式样式纳入静态门禁 |
|
||||
| 正式后端 | 已完成 Fastify、迁移兼容、outbox/worker、多应用租户、身份/RBAC/门店范围及 M03-M09 业务 API;M10-A 完成统一通知中心,M10-B 新增经营报表服务,按门店 IANA 时区从房费/商品支付退款、订单状态历史和保洁结算冲正明细复算,提供日汇总 checksum、Worker 重算、全店/单店查询与服务端 CSV | `backend/src/operations/business-report-service.ts`、`backend/src/routes/business-statistics.ts`、`backend/src/tasks/worker.ts`、`docs/business-report-metrics.md` | Windows 全量 77.6 秒通过;MySQL 8.4.10 完成 233 up、171 verify、213 down 往返和清理探针,进入 M10-C |
|
||||
| 后台管理端 | 已建立 Vue3 + Vite + TypeScript + Element Plus 权限路由工程;15 个业务入口按路由懒加载;通知中心可追踪投递,经营报表支持全部授权门店/单店、今日/近 7 日/自定义范围、渠道与成本拆分、逐日明细、汇总复核、CSV 和授权重算 | `admin/src/router.ts`、`admin/src/components/BusinessReportsPanel.vue`、`admin/src/api.ts`、`backend/src/routes/admin-auth.ts` | 生产构建和导航测试通过;经营报表独立分块约 3.5 KiB gzip,最大 JS 分块 223,111 B,桌面/平板/手机响应式样式纳入门禁 |
|
||||
| 微信小程序 | 已纳管微信原生模板,并完成顾客端房间订单、充值、权益、保洁等主体链路;M09-D4 新增门店商品选购、购物车、商品订单取消、整单寄存、部分取出、换码与取消寄存页面 | `miniapp/pages/goods/*`、`miniapp/pages/store/detail`、`miniapp/pages/profile/*`、`miniapp/utils/api.js`、`scripts/check-m09-d4-product-experience.mjs` | 商品领取码只保留页面内存并可复制后隐藏,不调用本地持久化;生产商品支付入口仍沿用服务端后续真实微信支付接线边界 |
|
||||
| 数据库迁移 | 已形成 M01-B 至 M10-A 连续 up/down/verify 计划;M10-A 新增模板、路由、订阅、投递、不可变尝试 5 张表,使用生成作用域键保证 `NULL` 门店下的全局配置唯一,并在 M09-D1 崩溃重试前按依赖撤销 | `database/migrations/2026081110_m10a_notification_center.{up,down,verify}.sql`、`backend/src/db/migration-runner.ts`、`backend/tests/mysql-migration-roundtrip.test.mjs` | WSL MySQL 8.4.10 已完成 229 up、165 verify、209 down 的 up/verify/down/up/verify;订阅拦截、脱敏、幂等扇出、失败重试、人工审计和不可变尝试通过 |
|
||||
| 数据库迁移 | 已形成 M01-B 至 M10-B 连续 up/down/verify 计划;M10-B 新增逐店逐日日汇总表和 `report.read/export/manage` 权限,保存可由明细重建的指标与 source checksum,并在 M09-D1 崩溃重试前按依赖撤销 | `database/migrations/2026081111_m10b_business_reports.{up,down,verify}.sql`、`backend/src/db/migration-runner.ts`、`backend/tests/mysql-migration-roundtrip.test.mjs` | WSL MySQL 8.4.10 已完成 233 up、171 verify、213 down 的 up/verify/down/up/verify;时区边界、退款净额、实际时长、汇总重算和 checksum 对账通过 |
|
||||
| M00 部署脚本 | 已有菜单、状态、HTTPS、Certbot、EMQX、备份检查模板 | `setup.sh`、`scripts/setup/`、`deploy/` | PARTIAL,生产未执行 |
|
||||
| 发布清单 dry-run | 可基于当前 HEAD 输出 `deployed=false` 的 release manifest,记录后端/后台/迁移尚未生成而跳过 | `scripts/setup/deploy-business.sh --dry-run .`、`scripts/dev/windows/check-release-manifest.ps1` | 可在 M00 验证结构;真实构建与生产发布待 M01/M09 后接入 |
|
||||
| 参考资料 | 已有清单、脱敏日志、页面/接口/表结构摘要 | `docs/reference-*`、`docs/db-schema-inventory.md` | PARTIAL,仍需按模块迁移正式实现 |
|
||||
@@ -26,7 +26,7 @@
|
||||
## 状态校准
|
||||
|
||||
- `docs/module-status.md` 中 M00 仍为 `PARTIAL` 是正确的:生产 Ubuntu 初始化、部署与运维验收尚未执行;后端、后台和小程序源码已在后续模块建立。
|
||||
- M01-M04、M07、M09 已具备模块工程验收;M05、M06、M08 因真实厂商/硬件/生产条件保持 `PARTIAL`;M10-A 内部工程已完成,真实渠道凭据保持外部阻塞,当前进入 M10-B。
|
||||
- M01-M04、M07、M09 已具备模块工程验收;M05、M06、M08 因真实厂商/硬件/生产条件保持 `PARTIAL`;M10-A/M10-B 内部工程已完成,真实通知渠道凭据保持外部阻塞,当前进入 M10-C。
|
||||
- 任何“目录存在”只能证明骨架存在,不能证明模块完成。
|
||||
|
||||
## Git 历史敏感信息核验
|
||||
@@ -37,6 +37,6 @@
|
||||
|
||||
## 下一步
|
||||
|
||||
1. 完成 M10-A 中文提交、push、远端标题与 SHA 校验。
|
||||
2. 执行 M10-B,统一报表口径、门店时区边界、明细复算、筛选和导出。
|
||||
1. 完成 M10-B 中文提交、push、远端标题与 SHA 校验。
|
||||
2. 执行 M10-C,多 AppID/租户隔离回归、加盟开通工作流、抽奖合规边界和 KTV 白名单适配器骨架。
|
||||
3. 真实通知网关、M06-G 硬件、微信与团购联调继续等待外部条件,不阻断内部主队列。
|
||||
|
||||
@@ -60,6 +60,8 @@
|
||||
|
||||
> 2026-08-11 M10-A:当前伴随工程完成统一通知中心。5 张新表覆盖模板、事件路由、微信订阅授权、投递快照和不可变尝试;房间订单/支付退款、保洁任务、设备告警、商品订单和寄存事件统一写 outbox。worker 执行幂等扇出、门店时区静默、递归脱敏、有限指数退避和终态失败人工补发,人工尝试保留操作人;顾客可管理订阅授权、读取/已读站内信。站内信、门店 HTTPS Webhook 与按环境启用的微信订阅/企微/云喇叭网关适配器已接线,未配置渠道明确失败。Vue 后台第 14 个懒加载入口可维护模板/路由并追踪投递。Windows 全量 76.7 秒与 MySQL 8.4.10 的 229 up、165 verify、209 down 往返及清理探针通过,游标进入 M10-B。
|
||||
|
||||
> 2026-08-11 M10-B:当前伴随工程完成统一经营报表。服务端按每家门店 IANA 时区切分自然日,从房费与商品支付/退款、订单状态历史、保洁结算和冲正明细实时复算;覆盖全授权门店/单店、今日/近 7 日/自定义范围、订单/下单人数、实际使用分钟/利用率、渠道净额和贡献额。逐店逐日日汇总保存 source checksum,Worker 每小时幂等回算最近 7 日,管理员可重算最多 93 天;页面、UTF-8 CSV 和 checksum 复核共用同一服务。指标口径已固定在 `docs/business-report-metrics.md`。Windows 全量 77.6 秒与 MySQL 8.4.10 的 233 up、171 verify、213 down 往返及清理探针通过,游标进入 M10-C。
|
||||
|
||||
| ID | 功能 | 模块子阶段 | 状态 | 最近提交 | 测试/验收证据 | 阻塞原因 | 下一步 |
|
||||
|---|---|---|---|---|---|---|---|
|
||||
| ENV-001 | 固定 Windows 工作区 | M00-A/M00-B | DONE | 远端 HEAD | 已确认 `D:\qipai`,Git 根、main 分支、固定 origin 和 push 校验通过。 | - | 后续每模块继续复检。 |
|
||||
@@ -68,7 +70,7 @@
|
||||
| WSL-001 | WSL 隔离辅助验证 | M00-C | PARTIAL | `a690e85` | WSL 基础脚本已执行通过;本地 MQTT 服务级核验通过;认证/ACL 冒烟脚本入口、配置自检、可选 TLS/遗嘱/重复消息探测入口已生成;V5.0 点名的 WSL EMQX 检查/启动/停止入口已补齐。 | 正式后端/后台尚未生成,无法执行完整 Linux 构建;MQTT 本地账号未配置,认证/ACL/TLS/遗嘱/幂等未验收;生产 EMQX 不由 WSL 脚本管理。 | M01/M09 生成项目后在 WSL 原生临时副本执行完整构建;配置本地 MQTT 最小权限账号后执行冒烟和可选探测。 |
|
||||
| API-001 | 固定 HTTPS API 域名 | M00-E/M01/M08/M10 | PARTIAL | `1192dcb` | 已新增 Windows 检查脚本、Ubuntu 菜单检查和固定域名 Nginx 模板;M01-A 健康接口、编译和本地 HTTP 检查通过;M01-B 的连接池、迁移 CLI、旧表兼容读取、整数分转换已通过契约测试,并在 WSL MySQL 8.4.9 的空库和脱敏旧库副本完成 `up/verify/down/up/verify`,异常退出清理后临时库与账号均为 0。 | DNS/HTTPS 生产验证、Ubuntu 24.04 生产运行时、业务接口和鉴权未验收。 | 进入 M02 身份与权限;后续在 M10 接入生产域名、证书和 Nginx 真实验收。 |
|
||||
| ASYNC-001 | MySQL outbox 与轻量任务 worker | M01-C | DONE | `2b90d1f` | outbox/任务迁移、幂等键、`FOR UPDATE SKIP LOCKED` 领取、租约恢复、指数退避、人工补偿状态和 PM2 worker 已实现;Windows 契约测试与 WSL MySQL 8.4.9 往返迁移、重复入队、重启后领取验证通过。 | 具体通知、订单、设备、退款和统计 handler 在对应业务模块接入。 | M02 起按业务事务写入 outbox/任务并注册真实 handler。 |
|
||||
| NTF-001 | 全场景通知提醒 | M10-A | PARTIAL | M10-A 当前工程 | 模板/路由、角色/用户/顾客/Webhook 接收人、订阅授权、站内信、HTTPS 渠道、投递快照、幂等、有限重试、失败人工补发、门店时区静默、递归脱敏和不可变尝试已完成;订单、支付退款、保洁、设备、商品与寄存事件接入统一 outbox,后台可维护和追踪。 | 真实微信订阅、企微和云喇叭网关凭据及生产回执为 `BLOCKED_EXTERNAL`。 | 取得渠道条件后执行小流量真实投递与回执对账;内部队列继续 M10-B。 |
|
||||
| NTF-001 | 全场景通知提醒 | M10-A | PARTIAL | `5d70114` | 模板/路由、角色/用户/顾客/Webhook 接收人、订阅授权、站内信、HTTPS 渠道、投递快照、幂等、有限重试、失败人工补发、门店时区静默、递归脱敏和不可变尝试已完成;订单、支付退款、保洁、设备、商品与寄存事件接入统一 outbox,后台可维护和追踪。 | 真实微信订阅、企微和云喇叭网关凭据及生产回执为 `BLOCKED_EXTERNAL`。 | 取得渠道条件后执行小流量真实投递与回执对账。 |
|
||||
| TLS-001 | Nginx 与证书自动化 | M00-E/M10 | PARTIAL | `4cb3ab6` | 已生成 Nginx 模板、Certbot 命令说明和菜单第 4 项检查,可检查模板、站点启用、TLS、健康端点、证书文件、续期配置和 `certbot.timer`。 | 证书申请/续期 dry-run、80/443 生产验证未执行。 | 在生产 Ubuntu 执行证书签发、续期 dry-run 和 Nginx 安装记录。 |
|
||||
| WXNET-001 | 微信合法域名与真机验证 | M00-E/M08/M10 | PARTIAL | `4ac2c96` | 小程序配置继续固定 `https://api.txyundm.cn/app-api`,`scripts/check-miniapp-m08-a.mjs` 已检查不存在 localhost、127.0.0.1 和 HTTP API。 | 微信后台合法域名和真机体验版未验证。 | M08-A 后续补真机登录、上传/下载、下单和设备接口冒烟;M10 做生产验收。 |
|
||||
| OPS-001 | 固定 `/opt/apps` 目录 | M00-D/M10 | PARTIAL | `292ab7f` | `scripts/setup/init-layout.sh` 已生成目录布局、uploads 目录和 manifest;WSL 检查脚本通过,未在生产 Ubuntu 执行。 | 生产操作未执行。 | 由管理员在 Ubuntu 菜单执行并记录结果。 |
|
||||
@@ -88,8 +90,8 @@
|
||||
| CLN-005 | 保洁驳回/免清洁 | M08-B/M09 | PARTIAL | `eb838f5` | 已支持管理侧驳回、批量驳回和保洁员驳回补做;已新增 `POST /admin-api/cleaning/tasks/:taskId/exempt`,后台任务列表提供免清洁按钮、批量免清洁和 `EXEMPT` 筛选,仓储将可处理任务置为 `EXEMPT`、奖励归零并移除未结算协作者;待结算候选继续只取 `COMPLETED` 且未结算任务,免清洁任务不进入结算;管理统计 summary、门店明细、每日趋势和统计导出均新增免清洁数量,便于核对不结算口径。 | 真实商户现场执行仍待继续。 | 继续 M08-B/M09,补现场验收记录和更完整运营管理界面。 |
|
||||
| PRD-001 | 商品目录与门店售卖 | M09-D1/M09-D4 | DONE | `93af128`、`e91b979` | 分类、商品、SKU、门店上架、履约方式、销售开关/人工暂停及最多 8 段每周营业时段已实现;M09-D4 新增登录态顾客门店目录,小程序与运营后台复用同一商品主数据。 | - | M10 按通知和统计需求复用商品主数据。 |
|
||||
| INV-001 | 库存策略与不可变流水 | M09-D1/M09-D2 | DONE | `93af128`、`1a3ea7b` | TRACKED/UNLIMITED 策略、入库、调整、盘点、损耗、批量锁定/释放/扣减已实现;M09-D2 已把订单创建、支付、取消、超时和退款接入稳定业务号与同事务库存变更。请求指纹、版本 CAS、数量边界和不可变流水保证并发回调只扣一次、重复释放/返库幂等且不出现负库存。 | - | M09-D3 寄存数量已使用独立账本,不回写已完成订单项快照。 |
|
||||
| GOODS-102 | 商品订单与支付库存闭环 | M09-D2/M09-D4 | DONE | `1a3ea7b`、`e91b979`、`41b9cf7` + M10-A 当前工程 | 商品订单与支付单分离,订单项与状态事件不可变;小程序与 Vue 运营端已接入完整状态处置,逐单对账覆盖金额、成功支付/退款、库存占用/销售余额并显示原始流水;状态、支付和退款事件已进入统一通知 outbox。 | 真实微信商品支付入口仍缺生产商户条件。 | M10-B 复用明细完成商品收入与退款报表;真实支付纳入 BLOCKED_EXTERNAL。 |
|
||||
| GOODS-104 | 商品寄存与安全取出 | M09-D3/M09-D4 | DONE | `60264cb`、`e91b979`、`41b9cf7` + M10-A 当前工程 | 寄存状态、商品快照、一次性哈希领取码、部分取出自动轮换、并发防超领、审计与 outbox 已完成;逐单对账验证订单来源寄存总量、剩余量与明细聚合一致,M10-A worker 已消费寄存事件并按路由投递。 | - | M10-B 保持寄存数量与商品订单收入分离。 |
|
||||
| GOODS-102 | 商品订单与支付库存闭环 | M09-D2/M09-D4 | DONE | `1a3ea7b`、`e91b979`、`41b9cf7`、`5d70114` + M10-B 当前工程 | 商品订单与支付单分离,订单项与状态事件不可变;小程序与 Vue 运营端已接入完整状态处置,逐单对账覆盖金额、成功支付/退款、库存占用/销售余额并显示原始流水;状态、支付和退款事件进入通知 outbox,M10-B 已从支付/退款明细复算商品净收入与渠道。 | 真实微信商品支付入口仍缺生产商户条件。 | 真实支付纳入 BLOCKED_EXTERNAL;M10-C 不改变既有商品账本。 |
|
||||
| GOODS-104 | 商品寄存与安全取出 | M09-D3/M09-D4 | DONE | `60264cb`、`e91b979`、`41b9cf7`、`5d70114` | 寄存状态、商品快照、一次性哈希领取码、部分取出自动轮换、并发防超领、审计与 outbox 已完成;逐单对账验证订单来源寄存总量、剩余量与明细聚合一致,M10-A worker 已消费寄存事件并按路由投递;M10-B 保持寄存数量不计入商品收入。 | - | M10-C 不改变既有寄存账本。 |
|
||||
| STAFF-001 | 员工账号 | M02-D/M08 | PARTIAL | `93f06d2` | 已实现创建员工、分配角色/门店、禁用、备注、重置会话和审计;管理员小程序已展示员工概况,Vue 后台可按角色/状态搜索并完成完整生命周期管理,权限变化即时撤销活动会话。 | 真实员工微信绑定和生产账号生命周期验收待补。 | M10 以真实员工账号验证绑定、门店切换、禁用和重新登录。 |
|
||||
| BKG-002 | 后台用户管理 | M02-D/M08 | PARTIAL | `0511008` | 已实现分页筛选、注册/登录时间、状态、角色、门店范围、手机号/IP 脱敏及会员/STAFF 分栏;租户管理员可为同租户有效 STAFF 设置唯一登录名和强密码,更新凭据会撤销其活动会话且不返回密码哈希。 | 尚缺平台级跨租户用户视图和真实生产数据验收。 | M10 以生产平台/租户账号复验跨租户用户视图、凭据重置和审计。 |
|
||||
| TEN-001 | 多门店支持 | M02/M03 | PARTIAL | `15139b3` | 门店 CRUD 与门店管理员数据范围已实现;跨门店写操作在 Windows 和 WSL MySQL 实测被拒绝。 | 地图选店、前端切换与完整订单数据范围待后续阶段。 | M03-C 接入地图选店,M04 起业务资源继承门店范围。 |
|
||||
@@ -111,7 +113,7 @@
|
||||
| GRP-002 | 美团直订 | M05-C | PARTIAL | `7b97808` | 已实现 HMAC 回调、事件幂等、外部门店/房间映射、未映射人工队列、顾客认领和团购支付订单生成;映射成功订单可进入 PAID。Vue 后台可按平台/门店/状态查看直订队列、维护同租户资源映射,并以安全读取接口查看过滤后的配置。 | 缺美团开放平台授权和真实回调协议确认。 | 取得授权后按厂商协议实现专用签名适配并联调。 |
|
||||
| GRP-003 | 管理员验券 | M05-C/M08 | PARTIAL | `7b97808` | 已提供管理员小程序与 Vue 后台扫码/手输券码、在线核销、显式人工确认、待支付订单选择和脱敏核销记录;金额由服务端订单未付金额推导,写权限叠加授权门店,记录保留操作人/门店/平台结果,券码仅存 SHA-256 和掩码;后台凭据只接受环境引用,敏感设置键不从读取接口返回。 | 缺美团/抖音/快手真实商家 API 授权,未执行厂商真实核销。 | 取得授权后配置 API 模式并执行真实验券。 |
|
||||
| ADM-001 | 管理员小程序模式 | M08/M06 | PARTIAL | `ce52f07` | 已完成角色入口、授权门店概况/房态、订单处置与代下单、会员/员工概况、保洁验收、设备状态、临时开门/电控、管理员验券和门店经营统计;按钮按 capability 展示,服务端重复校验租户、门店与写权限,关键写操作保留实际操作人审计。 | 真实团购商家、微信和硬件现场验收条件未提供。 | M08-D 继续平台后台;具备外部条件后补真机与现场验收。 |
|
||||
| REP-001 | 数据统计报表 | M10/M08 | PARTIAL | `65f2e7c` | 门店 7/30/90 日经营统计已同时接入管理员小程序与 Vue 后台,返回订单总量/状态/预订额、OWNER 下单会员、成功支付实收与渠道、每日收入、当前房态、验券成功/失败;最长查询 93 天,租户与门店范围由服务端校验,后台支持授权门店切换、趋势条和明确口径提示,MySQL 实测 `GROUP_BUY` 渠道与成功支付口径。 | 尚缺全门店汇总、自定义导出、使用率/使用时长和生产数据复算验收。 | M08-D/M10 扩展平台统计、导出和指标口径文档。 |
|
||||
| REP-001 | 数据统计报表 | M10-B/M08 | DONE | `65f2e7c` + M10-B 当前工程 | 全授权门店/单店、今日/近 7 日/最长 93 天自定义范围已统一;按门店时区从房费和商品成功支付/退款、订单状态历史、保洁结算/冲正明细复算总净收入、渠道净额、订单、范围去重人数、实际使用时长、DST 感知利用率、保洁成本与贡献额。页面、服务端 UTF-8 CSV、逐店逐日日汇总和 source checksum 同源;自动/人工重算及 `MATCHED/NOT_AGGREGATED/MISMATCH` 可直接定位差异。Windows 全量和 MySQL 8.4.10 真库往返通过,指标口径见 `docs/business-report-metrics.md`。 | - | M10-C 继续使用租户/门店权限,不分叉统计口径。 |
|
||||
| FRN-001 | 加盟商与自动分账 | M05-D/M10/M08 | PARTIAL | `aa4a6bd` | 已实现加盟意向幂等提交、租户隔离跟进、负责人分派、受控状态流转,以及收款账户、环境凭据引用、分账授权、脱敏接收方、比例校验、幂等分账和明细查询;Vue 后台覆盖线索与资金运营。 | 真实租户开通、门店创建、微信服务商分账权限和生产对账仍属于 M10-C/外部联调。 | M10-C 接入签约后的租户开通编排;取得权限后执行真实分账。 |
|
||||
| BKG-008 | 后台加盟信息管理 | M08/M10 | PARTIAL | `aa4a6bd` | 小程序可提交城市、联系人、电话和留言;后台支持分页筛选、详情、同租户员工分派、电话/微信/面谈/备注跟进、下次跟进、状态机和完整操作历史。 | 尚缺签约后的租户开通编排、附件与生产隐私合规验收。 | M10-C 衔接租户/门店/支付配置开通流程。 |
|
||||
| BKG-007 | 后台微信支付配置 | M05-D/M08 | PARTIAL | `4eac99d` | 已提供收款账户、分账接收方、门店/全局比例策略和授权状态 API;Vue 后台支持环境引用配置、授权状态、脱敏接收方、比例策略、分账记录、微信退款、对账单请求和分账执行;私钥/APIv3 Key 不读取或回显。M08-B 保洁转账预检仍提供商户资料与转账前阻断。 | 真实商户与服务商授权、微信后台场景报备和生产小额退款/分账仍需现场联调。 | 授权后完成生产退款、对账与分账验收。 |
|
||||
|
||||
@@ -3,16 +3,16 @@
|
||||
```yaml
|
||||
execution_cursor:
|
||||
current_module: M10
|
||||
current_stage: M10-B
|
||||
current_stage: M10-C
|
||||
stage_status: TODO
|
||||
last_completed_stage: M10-A
|
||||
next_stage: M10-C
|
||||
last_engineering_commit: `41b9cf7`
|
||||
pending_engineering_commit: "M10-A 已完成工程(随本次中文工程提交固化)"
|
||||
last_completed_stage: M10-B
|
||||
next_stage: M10-D
|
||||
last_engineering_commit: `5d70114`
|
||||
pending_engineering_commit: "M10-B 已完成工程(随本次中文工程提交固化)"
|
||||
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-11T09:08:00+08:00
|
||||
updated_at: 2026-08-11T09:41:58+08:00
|
||||
```
|
||||
|
||||
| 模块 | 状态 | 最近提交 | 最近开发日志 | 备注 |
|
||||
@@ -27,5 +27,5 @@ execution_cursor:
|
||||
| M07 会员、余额、充值、优惠券和套餐营销 | DONE | `ed0d455` | docs/devlogs/2026-06-24-M07-D-会员管理.md | M07-A 已完成现金/赠送双余额账本;M07-B 已完成充值优惠;M07-C 已完成优惠券/套餐权益底表和冻结、确认、退回的可靠补偿核销服务;M07-D 已完成会员画像、订单、消费、余额、充值、优惠券和套餐聚合查询。 |
|
||||
| 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 保洁任务、结算、商品和库存 | DONE | `41b9cf7` | docs/devlogs/2026-08-11-M09-REGRESSION-商品全链路对账.md | M09-A/B/C 与 M09-D1/D2/D3/D4 及模块回归均已完成并推送;逐单金额、支付退款、库存、寄存和权限闭环通过。 |
|
||||
| M10 部署、域名、验收和运维闭环 | PARTIAL | M10-A 当前工程 | V5.7.md | M10-A 已完成统一通知事件、模板/路由、接收人解析、订阅授权、站内信、HTTPS 渠道适配器、幂等投递、有限重试、失败人工补发、静默时段、脱敏和后台追踪;Windows 全量 76.7 秒与 MySQL 8.4.10 的 229 up、165 verify、209 down 往返通过。下一步执行 M10-B 统计报表。 |
|
||||
| M10 部署、域名、验收和运维闭环 | PARTIAL | M10-B 当前工程 | V5.7.md | M10-A 已完成统一通知中心;M10-B 完成全店/单店、今日/7 日/自定义经营报表,按门店时区复算房费与商品实收减退款、实际使用时长/利用率、保洁成本和渠道净额,日汇总 checksum、重算任务与 UTF-8 CSV 同源。Windows 全量 77.6 秒与 MySQL 8.4.10 的 233 up、171 verify、213 down 往返通过。下一步执行 M10-C。 |
|
||||
|
||||
|
||||
Reference in New Issue
Block a user