60 lines
2.9 KiB
Markdown
60 lines
2.9 KiB
Markdown
# 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` 漏斗数字。
|
||
- [ ] 生产变更另行授权;本交付未连接或修改生产数据库。
|