Files
medical-mall/pages/mall/delivery/doc/需求文档/README.md
2026-02-06 15:10:18 +08:00

69 lines
6.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 配送模块文档目录Mock 三通一达后台联调)
本目录聚焦“模拟三通一达后台Mock 承运方 Server”的联调与测试需求用于在未签约真实承运方前验证平台侧的 Webhook 接收、验签、幂等、入库与前端时间线展示。
## 文档分层(先看什么、后看什么)
- 需求(做什么):[配送模块需求文档.md](配送模块需求文档.md)
- 页面(后台长什么样):[后台页面设计说明.md](后台页面设计说明.md)
- 接口(怎么对接):[接口规范.md](接口规范.md)
- 映射(状态怎么统一):[状态映射表.md](状态映射表.md)
- 前端契约(怎么展示):[前端字段清单.md](前端字段清单.md)
- 补齐清单(还缺什么):[缺口与待补充清单.md](缺口与待补充清单.md)
- 数据库(旧表 vs 新表):[数据库对比与修改建议.md](数据库对比与修改建议.md)
- 数据库(生产表字段说明):[生产表说明_platform_express.md](生产表说明_platform_express.md)
## 先读这个:这套文档在解决什么
你现在要做的是一个“像三通一达一样会产生物流节点并回调的平台外部系统”。真实承运方接口通常需要签约与联调周期,因此先通过 Mock 承运方 Server 把平台侧能力跑通:
- 事件接收:平台接收并处理 Webhook 回调
- 安全与可靠性:验签、防重放、幂等去重、乱序/重复/延迟处理
- 数据闭环:事件入库 -> 前端按时间线展示(类似京东/淘宝订单物流关键节点)
说明:本目录文档服务于“平台系统的一部分”(订单详情页的物流区块、客服/履约排障与对接联调)。
- 平台端通常需要在订单详情中查看与履约相关的信息(订单号、运单号、承运方、物流时间线、异常记录等)。
- 本目录不展开订单商品/支付/营销等业务字段,仅覆盖“订单详情里的物流子模块”与其对接/入库/展示规范。
## 核心思想(设计原则)
- 以“事件流”为中心:物流展示本质就是一组按时间发生的事件(揽收/中转/在途/派送/签收/异常)。
- Webhook + 控制面分层Webhook 用来模拟“承运方回调”,控制面 API 用来“造数据/控节奏/注入故障”。
- 统一状态码 + 原文并存:平台用 `status_code` 做标签/统计/告警;用 `event_text` 展示承运方原文,并保留 `raw_payload` 便于客服核查。
- 故障注入必须:重复推送、乱序、延迟、签名错误、缺字段等是外部对接最常见问题,必须在联调阶段覆盖。
## 阅读顺序(推荐)
1) 先看 [配送模块需求文档.md](配送模块需求文档.md):理解 Mock Server 要做什么、有哪些验收与故障注入。
2) 再看 [后台页面设计说明.md](后台页面设计说明.md):明确平台后台/商家后台需要哪些页面与最小展示/权限要求。
3) 再看 [接口规范.md](接口规范.md)
- Mock Server -> 平台Webhook 推送格式与验签
- 平台/测试工具 -> Mock Server控制面 API创建运单/追加事件/跑场景/触发推送)
4) 看 [状态映射表.md](状态映射表.md):明确 `event_code` 如何映射到平台统一 `status_code`
5) 看 [前端字段清单.md](前端字段清单.md):前端时间线组件到底需要哪些字段(以及 `source` 如何标注)。
6) 最后看 [缺口与待补充清单.md](缺口与待补充清单.md):把联调验收所需材料补齐,避免漏项。
## 快速上手(联调路径)
1) 平台准备一个 Webhook 接收地址:`/webhook/express/status`,并实现 `X-Signature` 验签与幂等去重(按 `event_id`)。
2) 使用 Mock Server 控制面配置目标:设置 `target_webhook_url``client_id``secret`
3) 创建运单tracking_no并运行场景例如 `standard_delivered`),选择是否立即推送。
4) 在平台查看:事件是否按预期入库、时间线是否按 `event_time` 展示、异常注入是否触发告警/日志。
## 常见问题(为什么这么设计)
- 为什么不直接做真实韵达/圆通对接因为联调成本高且不可控Mock 能让你先把平台侧工程能力打牢。
- 为什么需要控制面 API因为测试需要“可复现/可回放/可注入”,而不是只等外部推送。
- 为什么要状态映射?因为不同承运方文案与事件码不稳定,统一状态才能做稳定 UI 与统计。
文件列表:
- [配送模块需求文档.md](配送模块需求文档.md)Mock 承运方 Server 的目标、范围、流程与验收。
- [后台页面设计说明.md](后台页面设计说明.md):后台页面结构、权限与最小交互。
- [接口规范.md](接口规范.md)Mock Server 控制面 API + Mock -> 平台 Webhook 推送规范。
- [状态映射表.md](状态映射表.md)Mock 事件码到平台统一状态映射建议。
- [前端字段清单.md](前端字段清单.md):时间线组件所需字段契约与展示规则。
- [缺口与待补充清单.md](缺口与待补充清单.md):联调/验收需要补齐的资料与决策项。
- [数据库对比与修改建议.md](数据库对比与修改建议.md):旧自营骑手表 vs 第三方快递表的改库建议。
- [生产表说明_platform_express.md](生产表说明_platform_express.md):生产环境 `platform_express_*` 三表用途、字段、约束/索引与写入查询建议。
数据库:
- 生产环境(推荐执行):[express_tracking_platform_upgrade.sql](express_tracking_platform_upgrade.sql)
- 仅包含平台侧 `platform_express_*` 三张表,供生产代码使用。
- 联调/设计参考(不要用于生产直接落库):[express_tracking_mock_platform.sql](express_tracking_mock_platform.sql)
- 包含平台侧表 + `mock_*` 测试表(故障注入/回放用),仅用于联调与文档说明。
建议下一步在平台侧实现一个可切换的“Mock 数据源”开关(仅测试环境),并在 QA 用例中覆盖重复/乱序/验签失败等注入场景。