查到价后把币种、单位、数量、单价、备注写入报价单,避免销售只看到光秃秃的金额。 Co-authored-by: Cursor <cursoragent@cursor.com>
41 lines
2.8 KiB
Markdown
41 lines
2.8 KiB
Markdown
# 提示词: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 `/quote/v2/query` 把空运查价参数带全再出站。智能体必须参数齐全才建单、才出询价卡片。
|
||
|
||
空运出站必带:`requestId`(UUID)、`workOrderNo`(WOYYYYMMDDNNNN)、`transportMode=AIR`、`quoteDate`(yyyy-MM-dd)、`segments[0]` 的 origin/originCode/destination/destinationCode/cargoName、`quantity`(整数)、`weightKg`/`volumeCbm`(大于 0 的数字)、`packageType`。缺一项:补问,不出卡片,不出站。
|
||
|
||
- 销售未说报价日期则填当天,不补问该字段
|
||
- 口语单位在出站前去掉;机场名能对应三字码则带上,销售已写三字码则原样带
|
||
- 空运 `packageType` 必须是 TMS 字典码:1=全部(现网航线常无价)、2=托盘/散货/卡板、3=纸箱/木箱。销售卡片仍写原文;禁止把托盘编成 1
|
||
|
||
## 响应
|
||
|
||
规范化 envelope:`code`、`tmsData`、`tmsRequestId`。销售侧只分两路业务结果:
|
||
|
||
- code 1 且有价 → 返回报价
|
||
- 1002 / 无 quoteFound / TMS 说缺项 → **暂无报价**
|
||
- 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。
|