1.6 KiB
1.6 KiB
DELIVERY_SERVICE_DESIGN
最后更新: 2026-06-14
1. 目标
将“报告生成完成”与“已交付给用户”明确区分,避免把 delivered 误当成只是一条后台状态修改。
2. 设计原则
- 交付是独立业务对象,不等于报告文件存在
- 用户可见状态必须基于真实交付物
- 通知触发点应尽量靠近稳定主链,而不是只挂在单一路由
- 至少一种 MVP 交付方式先闭环
3. MVP 交付方式
当前优先:
- 站内查看 HTML 报告
- 站内下载 PDF
后续可扩展:
- 邮件投递
- 微信/渠道通知
4. 建议对象
delivery_job
delivery_idorder_idchannel(station/email/...)status(pending/ready/sent/failed)payload_jsoncreated_atupdated_at
delivery_attempt
delivery_idattempt_nostatusfailure_reasoncreated_at
5. 当前实现状态
已存在:
delivery_notifications事件表- portal 状态页 / 报告页 / PDF 下载页
delivered但无交付物时不再误报report_ready
未完成:
- 通知触发点下沉到稳定主链
- 独立
delivery_job/delivery_attempt模型 - 重试与失败原因追踪
- 多通道统一投递状态
6. 当前最短闭环
- 订单进入
delivered - 真实 HTML/PDF 都存在
- portal 显示
report_ready - 状态页提供查看/下载入口
report_ready事件落库且幂等
7. 下一步实施建议
- 统一
report_ready触发点 - 增加
delivery_status最小字段 - 增加失败重试/失败原因
- 再决定是否扩到邮件通道