女装/单据与执行/下游下发与回执
L4E3P1
设计稿 v2.0
‹ 模型 vs 人工差异留痕单据打印与导出 ›☰ 总览功能地图
王
王运营
总部 · 商品运营

下游下发与回执

单据下发 WMS / ERP / OMS / TMS 的接口清单、下发内容、回执状态、失败重试与幂等键约定(重复下发拦截),并用时间线展示"一次下发的全过程",回写日志与异常处理一屏可查。

今日下发单据
21张
涉及 4 个外部系统
下发成功率
95.2%
21 张中 20 张成功
幂等拦截重复
3次
重复下发已被拦截,无脏数据
失败待重试
1张
主数据校验失败,重试无效需人工
平均下发耗时
318ms
P99 = 1.2s
回执回写及时率
99.1%
异步回执 5 分钟内到齐

一次下发的全过程(RP20251021-003 · 幂等键贯穿)

E3 + X13 幂等与写入边界
STEP 1
审批通过
09:05
STEP 2
生成幂等键
09:05
STEP 3
下发 WMS
09:06
STEP 4
ERP 建单
09:06
STEP 5
拣货出库
15:20
STEP 6
回填运单
18:40
STEP 7
轨迹回执
持续
09:05:12 · 审批通过
二级审批通过,单据进入"已审批",生成幂等键 RP20251021-003__v2__202510210812(业务单号 + 数据版本 + 提单时间戳)
09:06:02 · 下发 WMS(成功)
POST /wms/inbound/order → 200 OK,218ms,WMS 返回出库单号 OB-20251021-0119
09:06:02 · 下发 ERP(成功)
POST /erp/sales-order → 200 OK,ERP 单号 SO-20251021-0342;行级幂等键含 lineNo
09:06:03 · 重复下发拦截
调度器补跑再次触发同幂等键 → 服务端返回 409 DUPLICATE 并回放首次结果,未新建订单
15:20:40 · WMS 拣货完成回执
3 个包裹 47 件全部拣齐,扫码复核差异 0;单据状态推进为"已发货"
18:40:11 · 回填运单号
POST /oms/transfer → 运单 SF7781002 绑定 3 个包裹
18:41:02 · OMS 首次回填失败
502 BAD_GATEWAY(网关超时 30s),进入重试队列,退避 30s/60s/120s
18:42:34 · 重试第 3 次成功
200 OK,612ms;幂等键未变,OMS 侧未产生重复运单绑定
持续 · 轨迹回执
TMS 每 2h 推送轨迹,预计 2025-10-24 12:00 到店;到店后等待门店扫码签收
业务单号
RP20251021-003
数据版本
v2(人工改量后版本)
提单时间戳
2025-10-21 08:12
幂等键
RP20251021-003__v2__202510210812
键的生成方
本系统(下游只校验不生成)
有效期
决策日 + 7 天(同键复用窗口)
重复处理
返回首次结果,不做二次写入
写入边界
本系统只写自己的单据表;库存以 WMS 为准回写

幂等键为什么必须由上游生成

若由下游按"门店 + SKC + 日期"自行判重,同一决策日多版本改量会被误判为重复而丢弃;若不加版本号,人工改量后的重发会被拦。因此幂等键 = 业务单号 + 数据版本 + 提单时间戳,且必须由本系统生成。

成功 同步 2xx重试中 指数退避失败 需人工介入

下发接口清单(WMS / ERP / OMS / TMS / 门店端 / 数仓)

幂等键约定:全局唯一、由上游生成、写入边界清晰
目标系统接口 / 方式下发内容触发时机幂等键回执方式SLA今日状态
WMSPOST /wms/inbound/order(REST · JSON)补货单/调拨单主信息 + 明细(SKC×尺码)+ 包裹号 + 期望到货时间审批通过后自动bizNo + version + submittedAt哈希同步 accepted / 异步出库回执≤ 30s正常
ERPPOST /erp/sales-order(REST · JSON)销售订单(内部调拨视同销售)+ 客户(门店)信息 + 数量 + 价格审批通过后自动bizNo + lineNo(行级 upsert)同步返回 ERP 单号 SO-xxx≤ 60s正常
OMSPOST /oms/transfer(REST · JSON)调拨单(含跨区)+ 逻辑仓映射 + 承运商 + 运单号回填发货后回填运单bizNo + 承运商 + 运单号异步回调 + 轮询兜底≤ 5min告警
TMSPOST /tms/shipment(REST · JSON)运单创建:起止门店、件数、体积重量、时效承诺WMS 拣货完成后shipmentNo 全局唯一异步轨迹推送(每 2h)≤ 5min正常
门店小程序 / 企微MsgPush(服务端推送)到货提醒、待办、异常反馈入口发货 / 到店节点taskId(同任务不重复推送)已读回执 + 处理回执≤ 10s正常
BI / 数仓Kafka topic: ar.decision.final决策最终数据(含模型值/人工值双轨)+ 单据与回执状态单据状态每次变更decisionRowId + version消费位点确认≤ 1min正常

回写日志与异常处理

共 96 条 · 展示 8 条;拦截重复与失败项均可见
时间单号目标动作幂等键HTTP / 业务码耗时结果返回 / 错误信息
2025-10-21 09:06:02RP20251021-003WMS下发入库单RP20251021-003__v2__202510210812200 / OK218ms成功WMS 受理,出库单号 OB-20251021-0119
2025-10-21 09:06:02RP20251021-003ERP下发销售订单RP20251021-003__v2__L001200 / OK1,240ms成功ERP 单号 SO-20251021-0342
2025-10-21 09:06:03RP20251021-003ERP重复下发拦截RP20251021-003__v2__L001409 / DUPLICATE12ms拦截重复同幂等键已存在,返回首次结果,未新建订单
2025-10-21 18:40:11RP20251021-003OMS回填运单号RP20251021-003__SF__SF7781002200 / OK486ms成功运单 SF7781002 已绑定 3 个包裹
2025-10-21 18:41:02RP20251021-005OMS回填运单号RP20251021-005__SF__—502 / BAD_GATEWAY30,000ms失败OMS 网关超时(重试 1/3)
2025-10-21 18:41:33RP20251021-005OMS回填运单号(重试 2/3)RP20251021-005__SF__—504 / TIMEOUT30,000ms失败OMS 连接池耗尽(重试 2/3),退避 60s
2025-10-21 18:42:34RP20251021-005OMS回填运单号(重试 3/3)RP20251021-005__SF__—200 / OK612ms成功第 3 次重试成功;单据状态由"已审批"推进为"已下发"
2025-10-20 09:12:44RP20251020-011WMS下发入库单RP20251020-011__v1__202510200900422 / VALIDATION_FAILED154ms失败SKC 主数据在 WMS 侧已停用,单据停留"已审批"并告警
共 8 行
每页

失败重试策略

分清"可重试"与"不可重试"是回执可靠性的关键
失败类型示例错误码重试策略上限超限后
网络 / 网关超时502 / 504指数退避 30s→60s→120s3 次转人工重试,单据停留"已审批",不置"已下发"
下游限流429 TOO_MANY按 Retry-After 头等待5 次降速到 5 TPS 后继续,不丢弃
主数据校验失败422 VALIDATION不重试0 次生成数据异常工单(主数据类),修好后手动重发
重复下发409 DUPLICATE不重试,回放首次结果—视为成功,记录拦截日志供审计
鉴权失败401 / 403刷新令牌后重试 1 次1 次立即告警到集成负责人,暂停该通道后续下发
部分成功(行级)207 MULTI_STATUS仅对失败行重发3 次失败行挂起并回写单据备注,成功行不重复写

下发通道健康度

WMS 通道成功 12 / 12
ERP 通道成功 12 / 12
OMS 通道成功 5 / 6(1 张重试后成功)
TMS 通道成功 9 / 9
门店消息通道送达 26 / 27
数仓 Topic延迟 ≤ 1min

回执回写规则

回执只回写状态与数量,不回写单据主数据;库存变动以 WMS 出库/入库回执为准,经库存台账(D3/D4)落账后再参与下一轮决策计算。

异常处理待办

级别系统异常内容建议动作
严重WMSRP20251020-011 下发 422:SKC 25SS-1245 在 WMS 侧主数据已停用,单据卡在"已审批"同步商品主数据后手动重发
警告OMS18:41 OMS 网关连续两次超时(连接池耗尽),重试后恢复调整连接池与超时阈值至 60s
警告ERP3 次 409 DUPLICATE 拦截记录,源自调度器补跑无需处理,保留审计日志
提示门店端1 家门店消息推送未送达(店员未关注企微)短信兜底 + 电话通知店长
!设计说明:E3X13 下发与回执是闭环里最容易被忽略的一段。三个必须做实的点:① 幂等键由上游生成且含数据版本,否则人工改量后重发会被拦;② 失败单据不得置为"已下发",状态必须停留并告警;③ 可重试与不可重试错误码要分开,主数据类错误重试一万次也不会成功。
关联跳转traceId 贯穿:单据号 → 幂等键 → 下游单号,可在链路追踪页一键串起来