petstore-docs/qa-reports/phase0-report-send-status-2026-08-02.md

2.9 KiB
Raw Blame History

Phase 0 报告显式确认发送:交付与验收记录

日期2026-08-02
状态Code Complete / Ready for Release生产迁移与真实环境 smoke 待执行)

角色与范围

字段
Owner Report Media Backend / Store Miniapp FE / Store Admin FE
Paired QA Report Share QA
Data Model Review Yes
Architecture Review Yes
Access / Privacy Review Yes
范围 Report 发送字段与迁移、确认 API、BusinessEvent、工作台、漏斗、小程序分享弹层、Admin 报告列表、本体与发布文档
明确排除 微信投递回执、自动发送、历史发送猜测、再次预约归因、生产数据库变更

冻结口径

  • 复制链接、复制话术、二维码、预览或打开报告都不自动计为发送。
  • 历史报告迁移为 unknown;迁移后新报告默认 unsent
  • 仅本店 boss/staff 可选择 wechat|qr|other 显式确认为 sent
  • 首次回执不可覆盖;重复确认幂等成功,不重复写 report_sent
  • 工作台只提醒 unsent,不把历史 unknown 冒充未发送。
  • 公开 token 响应不返回发送状态、回执或确认员工。

自动验收结果

检查 结果
Backend mvn test PASS175 tests0 failures0 errors
Backend mvn -DskipTests package PASS
迁移 H2 MySQL mode PASS历史 unknown、新记录默认 unsent、回执一致性
Admin npm run build PASS
Frontend npm run build:h5 PASS
Frontend npm run build:mp-weixin PASSverify-mp-app-json OK
Release shell syntax PASSrelease-preflight.shproduction-smoke.sh
Ontology validate PASS242 条目、引用完整
Ontology drift PASS57/57 HTTP endpoints13/13 JPA entities0 drift
git diff --check PASS四仓

关键自动化覆盖

  • 新报告强制 unsent,忽略请求体伪造的发送字段。
  • 首次确认写 sentAt/sentByUserId/sendChannel 和低敏 report_sent
  • 重复确认保留首次回执且不重复保存/发事件。
  • customer、跨店员工、非法渠道与非法筛选状态均拒绝。
  • 发送确认不改写 Report.updateTime,避免重置成片处理超时计时。
  • Admin 工作台新增 unsent_report,准确总数、低敏预览和服务端发送状态筛选均覆盖。
  • 公开报告响应继续隐藏内部身份、token 和发送回执。

发布前仍需人工完成

  • 备份并在隔离库恢复验证。
  • 按固定顺序执行第五个迁移 20260801_create_report_send_status.sql,三项验证均为 0。
  • 以最终生产配置运行 JPA validate + 18 项只读不变量预检。
  • boss/staff/customer 三角色 smoke复制不变更、三渠道确认、重复确认、跨店拒绝、公开页裁剪。
  • 核对工作台 unsent_report 与当日 report_sent 漏斗数字。
  • 生产变更另行授权;本交付未连接或修改生产数据库。