# 前端字段清单（订单详情页物流时间线｜安卓 & Web）

说明：本清单用于平台前端展示“物流关键节点时间线”。数据来源为平台后端消费 Mock Server（或未来真实承运方）的事件后形成的统一模型。

本文定位：只定义“平台后端 -> 客户端”的展示字段契约与规则；Mock Server 的接口与字段以 `接口规范.md` 为准。

关联文档：
- `配送模块需求文档.md`：目标/范围/验收与故障注入
- `接口规范.md`：统一事件模型、平台接收 Webhook、Mock 控制面 API
- `状态映射表.md`：event_code -> status_code 映射建议

适用端：
- 安卓端（App）：重点是用户体验（弱网/图片预览/快速刷新）。
- Web 端（H5/PC）：重点是排障效率（筛选/搜索/原始事件折叠展示）。

1. 订单详情（delivery block）
- `order_no`：订单号
- `tracking_no` / `waybill_no`：运单号（可能为空）
- `carrier`：承运商标识（YUNDA/YTO/KDN 等）
- `status`：平台统一状态码（ORDER_PLACED/SHIPPED/IN_TRANSIT/OUT_FOR_DELIVERY/READY_FOR_PICKUP/DELIVERED/EXCEPTION/RETURNED）
- `status_history`：事件数组，元素结构 `{event_id, event_time, event_code, event_text, status_code, node_name, location, description, evidence_urls, source}`
- `eta`：预计到达时间（ISO8601，若承运方或 ETA 服务提供）
- `pod`：签收凭证数组，元素 `{type: photo|signature, url, timestamp, remark}`
- `receiver_name`：收件人姓名（仅客服可查看完整）
- `receiver_masked_phone`：脱敏手机号（前端展示）
- `receiver_address`：收货地址（可按需隐藏部分字段）
- `last_synced_at`：最后同步时间（平台本地）
- `source`：来源（mock / carrier / aggregator），用于 UI 标注与排障

2. 管理/调试视图字段（可选）
- `mock_enabled`：是否开启 mock 数据
- `mock_carrier`：当前模拟承运方
- `webhook_last_result`：最近一次 webhook 推送结果摘要（仅调试页面）

3. 行为与按钮映射（平台侧）
- 刷新物流 -> GET /api/v1/delivery/express/track（平台查询自身已入库事件；或平台发起轮询）
- 上报异常 -> POST /api/v1/delivery/express/report-exception

（联调阶段可选）平台侧调试按钮（调用 Mock Server 控制面 API）：
- 运行标准场景 -> POST /mock/v1/waybills/{tracking_no}/run-scenario
- 触发推送 -> POST /mock/v1/waybills/{tracking_no}/push

4. 展示规则 & 隐私
- 所有时间使用 ISO8601（含时区）。
- 手机号必须脱敏（如 138****8000），完整手机号仅在客服/运维界面显示并记录访问审计。
- 证据 URL 应带鉴权或短期有效，前端需支持预览与下载。

4.1 同源数据，不同端展示颗粒度
- 同一运单的轨迹事件（`event_code/event_text/status_code/node_name/location`）必须同源，保证事实与状态口径一致；不同端仅做“展示层过滤/脱敏”，不做口径改写。
- 商家端（B 端）：只需展示大致进度（到达某地/中转/派送/签收/异常）与最新节点摘要；不展示配送员/快递员手机号等个人敏感信息。
- 消费者端（C 端）：可展示更详细的节点文案；若提供“联系配送”能力，建议用按钮/虚拟号/中转号承载，而不是把第三方 `event_text` 中的手机号原文直接展示或通过消息推送透传。

4.2 `event_text` 使用建议（避免直接透传敏感信息）
- `event_text` 属于第三方原文，可能包含手机号、网点内部信息等；建议前端展示使用“清洗后的文案”。
- 最小实现：
	- 商家端优先展示 `status_code + node_name/location` 组合出的摘要；必要时展示清洗后的 `event_text`。
	- 消费者端可展示清洗后的 `event_text`；仅在 `OUT_FOR_DELIVERY` 等末端节点按需提供脱敏联系方式。
- 口径要求：除末端状态（派送中/待取件/已签收/异常/退回等）外，中转/到达/发往下一站等统一展示为“运输中”，不展示“到达××网点/分拨中心”等中间节点状态文案。

5. 安卓端适配要点
- 缓存：将最近一次 `status_history` 缓存在本地（仅该用户的订单范围），离线可展示并提示“数据可能不是最新”。
- 图片：POD/证据图片支持大图预览与失败重试；弱网下优先加载文本节点。
- 刷新：进入页面自动拉取；下拉刷新；显示 `last_synced_at`。

6. Web 端适配要点
- 调试信息：`raw_payload` 默认折叠，仅客服/运维可展开查看。
- 筛选搜索：按 `status_code`、时间范围、承运方 `carrier` 过滤；支持按 `tracking_no` 搜索。
- 安全：避免在前端日志中打印 `raw_payload` 与敏感字段。

7. 兼容性
- 前端组件可接收 `raw_payload`（仅供客服/运维查看）并折叠显示。
- 时间线组件需支持展开单条事件详情、证据大图预览与来源标注（承运方/聚合方）。

---
（以上为前端字段与契约建议，实际字段名可与后端协商最终确认）
