Files
inquiry_robot/prompt/10-TMS对接.md
T

2.4 KiB
Raw Blame History

提示词:TMS V2 对接

你只做主账进程内的 TMS 网关与字典投影。智能体通过主账「查价」API 间接触达 TMS。签名、投影、错误分类代码必须有详细中文注释(1002/1003/技术失败如何区分)。见 05。

认证

  1. client_credentials 取 accessToken(Basic clientId:clientSecret)。
  2. 查询/详情/模板字段:Authorization: Bearer。
  3. 空运锁舱/释放:额外 HMAC 签名头,正文原字节参与签名。
  4. 生产明文见 03,新系统直接复用现网 TMS 信息(同机并行,不再另开测试 TMS):TMS_V2_BASE_URL=http://113.106.62.254:3100/sangoe-boot;ClientId/Secret/SignatureSecret 均为 WVRELUFpQWdlbnQk。YTD_TMS_V2_ENABLED=true。字典同步 Token 也用 03 现网值。凭证放新系统自己的 .env,不要改 C:\yutongda\secure\ 给旧 Java 用的那份。

不要把密钥写进代码或前端。旧字段 tmsServiceToken/tmsSignatureKey 不要在 V2 再使用。

查询请求

主账把智能体已确认字段 + 字典投影结果映射为 TMS V2 body。投影规则以 tms-dictionary-projection-v2.json 为准(该文件放在新仓库):

  • AIR:origin/destination → 机场代码;packaging → packageType
  • LAND:地址、车型、运输类型
  • SEA:港口、箱型等
  • 匹配 EXACT_ONLY;多值歧义返回 AMBIGUOUS,不得 last-write-wins

响应

规范化 envelope:code、tmsData、tmsRequestId。映射到智能体分类:

  • code 1 且有价 → 有价
  • 1002 → 无价
  • 1003 或投影失败 → 用户/合同缺项,不是无价
  • HTTP 5xx/超时/熔断 → 技术失败

锁舱/释放:与旧系统共用同一套 TMS Client 时,新系统默认关闭(API 返回未开放,企微/后台不展示)。只做 query / detail / template-fields / 字典同步。切流替换旧系统前再打开 lock/release,避免两套应用抢舱。

观测

每次出站记录:耗时、HTTP 状态、业务码、请求摘要(无密钥)、响应摘要。连续失败熔断。字典版本号写入工单 tmsMappingVersion。

测试

用 WireMock/本地 stub:token 成功、query 1/1002/1003、签名错误、超时。禁止单测打真实 TMS。联调查价可以打现网 TMS(同一 Client);禁止联调 lock/release。不要做 Redis「TMS 测试开关」。无价和技术失败看真实 query 响应或 stub。