女装/权限与系统/外部集成与开放 API
L6S4P1
设计稿 v2.0
‹ 消息通知设置版本与发布记录 ›☰ 总览功能地图
王
王运营
总部 · 商品运营

外部集成与开放 API

ERP / WMS / TMS / OMS / 门店端 / 数仓 六类集成的方向、协议、频率、字段映射、负责人与健康状态;开放 API 的鉴权与配额;幂等键约定(业务单号 + 数据版本 + 时间戳,重复下发 409 拦截)与失败补偿队列。

幂等日志
!集成页的价值是回答三个问题:连了谁(系统 / 方向 / 协议 / 频率 / 字段映射 / 负责人)、怎么不写脏(幂等键 = 业务单号 + 数据版本 + 时间戳,重复下发 409 拦截)、失败怎么办(可重试与不可重试分开,死信可重放)。这三件事合起来才是 S4 + X13 的完整口径。
已接入系统
6个
ERP / WMS / TMS / OMS / 门店端 / 数仓
集成接口
28个
其中开放 API 12 个(对外 5 个)
今日调用
12,486次
库存 ATP 查询占 78.8%
调用成功率
99.62%
失败 47 次,其中 409 重复拦截 12 次
端到端时延 P95
218ms
决策导出接口 1.8s(异步分卷)
补偿队列积压
14条
超时重试 6 / 主数据 5 / 限流 3

集成配置清单

方向 / 协议 / 频率 / 字段映射 / 幂等键 / 负责人 / 健康状态
外部系统方向协议 / 接口同步频率数据范围字段映射幂等键负责人健康状态最近同步
——————————
——————————
——————————
——————————
——————————
——————————
共 6 个外部系统 / 28 个接口;健康状态取自近 24 小时成功率与同步时点偏差
每页
i健康状态不是“接口通不通”,而是数据到没到、口径对不对:TMS 告警是因为签收回执延迟 2 单,门店端告警是因为 51 家门店 POS 延迟 > 6 小时(会直接影响本次决策的销量口径)。字段映射版本(MAP-*-vN)与字段字典(io-template 的 168 列)同源,改映射必须走版本发布。

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

traceId + 幂等键可一路串到下游单号
STEP 1
审批通过
09:05
STEP 2
生成幂等键
09:05
STEP 3
下发 ERP
09:06
STEP 4
ERP 建单回执
09:06
STEP 5
下发 WMS
09:06
STEP 6
出库回执
15:20
STEP 7
签收回执
18:40
09:05:12 · 审批通过
二级审批通过,生成幂等键 RP20251021-003__v2__202510210812(业务单号 + 数据版本 + 提单时间戳)
09:06:02 · 下发 ERP
POST /openapi/v1/replenishment/orders → 200 OK,ERP 单号 SO-20251021-0342;行级幂等键含 lineNo
09:06:03 · 重复下发拦截
调度器补跑再次触发同幂等键 → 服务端返回 409 DUPLICATE 并回放首次结果,未新建订单
09:06:08 · 下发 WMS
POST /wms/task,taskNo = TR20251021-003__v2__202510210812,回执 accepted,拣货波次 1 个
15:20:41 · 出库回执
WMS 回执 shipped,包裹 2 个 / 7 件,回写台账流水(按 storeId + skc + size + snapDate upsert)
18:42:34 · 签收回执(重试第 3 次成功)
TMS 回调超时后 2 次重试,612ms 成功;幂等键未变,OMS 侧未产生重复运单绑定
待办 · 门店收货确认
等待武林银泰店在门店 App 确认收货;超 48 小时触发 TPL-RECV-PENDING 通知与升级

鉴权方式与调用配额

鉴权 1 · 服务端
OAuth2 客户端凭证(client_id / secret 存放于配置中心,90 天轮换)
鉴权 2 · 报文
HMAC-SHA256 签名(appId + timestamp + nonce + body 摘要)
鉴权 3 · 网络
管理后台与开放 API 强制 IP 白名单;门店端移动访问不受限
配额单位
按调用方(client_id)而非按 IP,防止同 IP 多应用互相挤占
超配额响应
429 + Retry-After 头;连续超限 10 分钟自动降速并通知对接人
审计
每次调用记录 client_id、traceId、幂等键、耗时、结果码(G9 / X17)

密钥不落在代码里

客户端凭证与签名密钥统一由配置中心下发、支持双密钥并行轮换(灰度期新旧密钥都能验签),禁止写在对接文档、脚本或数据库明文中。

幂等键约定(X13 写入边界)

at-least-once 语义下,接收侧按业务键 upsert 是唯一正确姿势
写入对象业务键幂等键规则唯一索引重复下发行为幂等键生成方
——————
——————
——————
——————
——————
——————
共 6 类写入对象;幂等键必须落唯一索引,不能只靠应用层判重(重跑即重复开单)
每页
键的构成
业务单号 + 数据版本(ver)+ 提单时间戳(ts),三段用“__”连接
真实样例
RP20251021-003__v2__202510210812(单据级)· SH008 + 24AW-3890 + M + 2025-10-21(库存回写级)
为什么带版本
同一决策日可能多次改量导入(v1 → v2),不带版本号会把人工改量后的重发误判为重复
为什么由上游生成
下游按“门店 + SKC + 日期”自行判重会丢单据;键必须由本系统生成并随报文下发
接收侧义务
按下发的幂等键 upsert;已存在则返回 409 + 首次结果,不得静默新建
拦截留痕
每次 409 都写日志(含 traceId),可在 data-idempotent 页反查拦截原因
回放能力
失败补偿队列重放时必须携带原幂等键,保证重试无损

API 管理与调用配额

配额、鉴权、SLA 三件套逐接口可见
开放接口方法鉴权方式配额(按调用方)今日调用平均时延SLA
———————
———————
———————
———————
———————
开放 API 共 12 个,对外可用 5 个;其余为内部服务间调用,不对外暴露
每页

集成失败处理与补偿队列

可重试与不可重试必须分开,否则重试一万次也不会成功
失败类型可重试处理策略补偿方式当前积压
—————
—————
—————
—————
—————
积压合计 14 条;同一失败类型连续 3 次即升级为集成告警
每页

近 7 天调用量(按系统)

总计 35,142 次 / 7 天,成功率 99.62%
门店端 POS / App18,240 次
ERP7,362 次
OMS(Kafka)5,264 次
数仓(批量 + JDBC)2,806 次
WMS1,052 次
TMS418 次

集成自检(每日 03:00 自动巡检)

自检项结果说明
接口清单与调用日志是否对齐通过28 个接口全部有近 24 小时调用记录
是否存在无幂等键的写接口0 个6 类写入对象全部声明幂等键与唯一索引
字段映射版本是否已发布1 项待发布MAP-WMS-v6 草稿待发布(新增包裹体积字段)
凭证是否临近轮换期1 项TMS 客户端密钥剩余 12 天到期
补偿队列是否有超 24h 积压3 条主数据不匹配 5 条中 3 条超 24 小时,已派工单

本页标签与联动

L6S4X13P1
集成配置可视化 字段映射版本 幂等键约定 409 拦截 接收侧 upsert API 配额 OAuth2 + HMAC IP 白名单 补偿队列 死信重放 健康状态
i落地提醒(附录 D 第 11 条):平台内部可以做到 exactly-once,一旦写外部系统(ERP 单据 / Kafka / WMS 接口)就退回 at-least-once,必须在接收侧按业务键 upsert,否则重跑就是重复开单。本页把幂等键做成系统的显式配置项,而不是散落在各接口文档里的一句话。