2.9 KiB
2.9 KiB
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 |
PASS:175 tests,0 failures,0 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 |
PASS;verify-mp-app-json OK |
| Release shell syntax | PASS:release-preflight.sh、production-smoke.sh |
| Ontology validate | PASS:242 条目、引用完整 |
| Ontology drift | PASS:57/57 HTTP endpoints,13/13 JPA entities,0 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漏斗数字。 - 生产变更另行授权;本交付未连接或修改生产数据库。