落地私聊空运询价与TMS报价回填,按后台模板出单。

查到价后把币种、单位、数量、单价、备注写入报价单,避免销售只看到光秃秃的金额。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-09-14 20:25:35 +08:00
co-authored by Cursor
parent cea3a6e51e
commit 99da1faf30
78 changed files with 8838 additions and 321 deletions
+7 -8
View File
@@ -38,10 +38,11 @@
查价必填(激活业务线之后):
- **海运**:起运港、目的港、品名、货量、整柜或拼柜、箱型箱量
- **海运**:起运港、目的港、品名、货量、整柜或拼柜、箱型箱量、报价日期
箱型箱量是一个原始业务字段;结构化 `containerItems` 只由 DeepSeek B 投影。
- **空运**:起运地、目的地、品名、件数、毛重、体积、包装类型
- **陆运**按二级类型:国内拼车/整车、跨境集拼/整车、中港(见合同 JSON)
- **空运**:起运地、目的地、品名、件数、重量、体积、包装类型、报价日期
- **陆运**按二级类型:国内拼车/整车、跨境集拼/整车、中港(见合同 JSON),各类型均含报价日期
- **报价日期**:三线查价都要,用来查 TMS 当天/指定日的价;销售没说则系统默认为当天(上海时区),不补问;销售说了用原话,不得用当天盖掉。
协同阶段另有协同必填(贸易条款、HS、含电含磁等),点「协同」必须用 **不可变销售原话** 重跑模型 B,不得用卡片口令覆盖。
@@ -51,13 +52,11 @@
| 分类 | 含义 |
|---|---|
| 有价 | 业务码成功且有报价 |
| `TMS_NO_QUOTE_1002` | 无价 |
| `TMS_NO_QUOTE_1003` / 合同不匹配 | 业务缺项或投影失败 |
| 字典/协议投影失败 | Java 投影失败,不是「没价格」 |
| 有价 | 业务码成功且有报价,返回报价 |
| `TMS_NO_QUOTE_1002` | 暂无报价(含 TMS 未匹配、TMS 仍缺项) |
| 技术失败 | HTTP/超时/熔断 |
字典:精确匹配 `source_code`/`source_name`,禁止模糊、正则、别名推断。域:空运机场、包装、陆运地址/车型/运输类型、海运箱型、币种参考。
查价前只校验询价必填是否已齐。销售原文非空即采集(包装写散货就记散货),本地不做包装白名单、不对销售再拦。卡片按用户说的展示,再去查 TMS。
## 报价文件
+1 -1
View File
@@ -9,7 +9,7 @@
1. 企微私聊:文字、图片、Excel/PDF 三种询价入口。
2. 海运 / 空运 / 陆运(含陆运二级类型)按唯一字段合同补问:完整输入不误补、不漏字段。
3. 随时新开询价并保存旧工单;可激活历史工单从精确断点继续;不重放已提交副作用。
4. TMS:有价、无价 1002、业务缺项 1003、字典/协议失败、技术异常,分支互不混淆。
4. TMS:询价必填齐了就查价;有价返回报价,没有返回暂无报价;技术异常单独分支。不做本地字典对应判断。
5. 需要协同时建群或复用空运固定群;群文字与群附件都能形成正确报价版本。
6. 采用、调价、Excel/PDF、对象存储、附件登记、企微发送、流程唤醒共用同一 quoteVersion。
7. 正式报价后:成交、未成交、协商中;未成交原因、协商调价、终止、超时不串路由。
+1 -1
View File
@@ -108,7 +108,7 @@ NormalizedInbound
## 出站
- 主账:登录或 Token,所有写操作要幂等键(message_id / request_id / quoteVersion)。
- 企微:只通过 outbox;失败重试;过期出站丢弃不计业务成功。询价与正式同一 Agent `1000010`;运维 `1000014`,测试告警正文加 `[test]`。
- 企微:只通过 outbox;失败重试;过期出站丢弃不计业务成功。询价与正式同一 Agent `1000010`;运维 `1000014`,测试**告警**正文加 `[test]`,销售询价确认不加 `[test]`、不加「询价卡片」标题。建单确认按空运询价必填 8 项:起运地、目的地、品名、件数、重量、体积、包装类型、报价日期(另加工程单号、运输方式),末行「工单已创建,正在查询TMS报价。」销售侧标签不得写成毛重、重量(KG)、体积(CBM)。缺项补问先回显已识别,再列待补充并给示例(重量如 100KGS、体积如 2CBM、包装如托盘),待补充行不加圆点;报价日期销售说了写入已识别,没说默认当天,不进待补充。起运地/目的地说了地名即采集完成,不得因对不上三字码再补问。每次出询价确认都新开一单再查 TMS,相同需求不复用旧工单号。包装等字段销售说什么就记什么,禁止白名单把散货等原文挡回去再补问。
- 对象存储:S3 兼容;生成文件后登记主账附件再发企微。
## 测试
+5 -5
View File
@@ -36,7 +36,7 @@
## API 能力(与智能体、后台对齐)
- 工单:创建、校验、查询、聚合视图、六态 transition、异常 handle/retry。
- 工单:创建、校验、查询、聚合视图、六态 transition、异常 handle/retry。智能体每次出询价确认都新开一单,相同需求不复用未关闭工单。
- TMS:query、template-fields、detail、health、字典 sync。lock/release 接口可留,**与现网共用 TMS 密钥期间默认关闭出站**。
- 报价决策:采用、调价、成本/售价基线(空运与海陆规则不同,与合同语义对齐)。
- 模板、识别任务、生成任务的查询接口(任务执行可在智能体,主账存结果指针)。
@@ -58,11 +58,11 @@
路径默认:`/quote/v2/query`、`/quote/v2/detail`、`/quote/template-fields`、`/air/cabin/lock`、`/air/cabin/release`、`/auth/token`。地址与 Client 三件套、字典 Token **直接用 `03` 现网值**,不要另要一套 TMS。智能体仍只打**新主账**,不直连 TMS、不打现网 Java 8080。
## 字典投影
## 查价(不做字典对应)
- EXACT_ONLY,禁止模糊。
- 空运包装缺省可投影 `packageType=1`(全部),并保留 raw。
- 失败要返回智能体能区分的 `source=TMS_DICTIONARY_PROJECTION` 与明确错误码,不要装成「无报价」。
- 询价必填齐了就出站查 TMS,本地不把「珠海」对成机场码、不因对不上而拒绝查价。
- 有价返回报价;TMS 无匹配或未出价格则「暂无报价」。
- 技术失败(超时/熔断/未配置)单独分类,禁止 fixture 假价。
## 不要
+10 -10
View File
@@ -13,21 +13,21 @@
## 查询请求
主账把智能体已确认字段 + 字典投影结果映射为 TMS V2 body。投影规则以 `tms-dictionary-projection-v2.json` 为准(该文件放在新仓库):
主账按 TMS V2 `/quote/v2/query` 把空运查价参数带全再出站。智能体必须参数齐全才建单、才出询价卡片。
- AIR:origin/destination → 机场代码;packaging → packageType
- LAND:地址、车型、运输类型
- SEA:港口、箱型等
- 匹配 EXACT_ONLY;多值歧义返回 AMBIGUOUS,不得 last-write-wins
空运出站必带:`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`。映射到智能体分类:
规范化 envelope:`code`、`tmsData`、`tmsRequestId`。销售侧只分两路业务结果:
- code 1 且有价 → 有价
- 1002 → 无价
- 1003 或投影失败 → 用户/合同缺项,**不是**无价
- HTTP 5xx/超时/熔断 → 技术失败
- code 1 且有价 → 返回报价
- 1002 / 无 quoteFound / TMS 说缺项 → **暂无报价**
- HTTP 5xx/超时/熔断 → 技术失败(不是「暂无报价」)
锁舱/释放:**与现网共用同一套 TMS Client 时,新系统默认关闭**(API 返回未开放,企微/后台不展示)。只做 query / detail / template-fields / 字典同步。切流接管前再打开 lock/release,避免两套应用抢舱。