# Push Payload Contract: 闪送订单状态变更消息推送 **Date**: 2026-09-17 | **Spec**: [spec.md](../spec.md) 本特性**不新增 HTTP 接口端点**。对外契约只有一份:推送给客户端的 payload 形状(经 uni 云函数透传给 App)。 ## Payload(OrderPushBodyDto JSON) ```json { "ddId": "FD7A3F9C2E1B4D5A6F7C8D9E", "state": "WAITING_ACCEPTANCE", "type": 0, "pushType": 3 } ``` | 字段 | 取值 | 说明 | |------|------|------| | `ddId` | 闪送 `orderNo`(`FD` + 24 位大写十六进制) | 订单标识;沿用历史字段名以兼容客户端既有解析 | | `state` | `WAITING_ACCEPTANCE` / `ACCEPTED` / `PICKED_UP` / `DELIVERED` / `CANCELLED` | 推送对应的目标状态(闪送状态枚举字符串,非外卖数字状态) | | `type` | `0`(新单)/ `-1`(状态通知) | 0 表示骑手新单提醒,-1 表示非语音状态提醒 | | `pushType` | `3` | **新增取值**:3=闪送订单(既有:1=外卖、2=充值)。客户端按此路由到闪送订单详情页 | ## 通知正文 | 事件 | 接收端 | title | content(渲染后) | |------|--------|-------|------------------| | 骑手抢单 | 用户 App | `消息`(`no.message.push.message`) | `骑手已接单,NO:{orderNo}` | | 骑手取件 | 用户 App | 同上 | `骑手配送中,NO:{orderNo}` | | 骑手送达 | 用户 App | 同上 | `骑手已送达,NO:{orderNo}` | | 订单取消 | 骑手 App | 同上 | `订单已取消,NO:{orderNo}` | | 可抢闪送新单 | 骑手 App | 同上 | `有新的闪送订单,NO:{orderNo}`(`no.message.push.new.flash.order`) | - 文案按接收方 locale 渲染(vi/zh/tw/en/th,复用既有 6 份 i18n 资源)。 - 取消通知只发给接单骑手;寄件用户不发(spec FR-004/FR-005)。 - 每条推送同时经 `PushEventService` 写入 `push_message`(消息中心可回看)。 - 外卖骑手新单改用 `no.message.push.new.food.order`(“有新的外卖订单”),避免与闪送文案混淆;两者 payload 的 `pushType` 仍分别按各自业务类型路由。 ## 客户端适配注意(本仓库外) - 客户端收到 `pushType=3` 的推送时,用 `ddId`(orderNo)跳转闪送订单详情;`state` 为闪送状态枚举字符串,与外卖的数字 `state` 语义不同,勿混用。 - 客户端适配不在本仓库范围(spec Assumptions)。