feat(M10-B): 完成可复算经营报表与日汇总

This commit is contained in:
Codex
2026-08-11 09:50:05 +08:00
parent 5d70114bab
commit ee7b16c932
35 changed files with 1355 additions and 65 deletions
+6 -4
View File
@@ -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 checksumWorker 每小时幂等回算最近 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 目录和 manifestWSL 检查脚本通过,未在生产 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_EXTERNALM10-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 保洁转账预检仍提供商户资料与转账前阻断。 | 真实商户与服务商授权、微信后台场景报备和生产小额退款/分账仍需现场联调。 | 授权后完成生产退款、对账与分账验收。 |