落地空运群内协同与锁舱出站。

群里按 BOT 通道激活当前工单、航线报价和成交跟进;没有 TMS 报价编号时用工单字段补齐仍调锁舱,避免被本地规则拦住。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-09-16 17:25:42 +08:00
co-authored by Cursor
parent 12219cacb1
commit d9029dec89
62 changed files with 6772 additions and 159 deletions
+4 -4
View File
@@ -13,9 +13,9 @@
## 2. 企业微信协同群(人 + 产品岗)
- 销售/产品在群里报文字价、发报价 Excel/PDF/图片。
- 空运可复用固定群(环境变量 `WECOM_FIXED_AIR_GROUP_CHAT_IDS`)。
- 存档席用户只为会话存档可见,不能当报价应答人。
- 海运:销售/产品在应用自动建的群里报文字价、发报价附件;不用 @。
- 空运:人自建群,拉销售、航线、询价小助手 BOT、询价机器人(存档)。文字必须 @ BOT。发文件不能 @,靠存档听见,航线 Excel/PDF 当报价,发完马上回「附件已保存」。一群多单,先激活当前工单。锁舱/释放见空运群定稿。
- 存档席「询价机器人」只为会话存档可见,不能当报价应答人,不能当 @ 对象。
## 3. H5 补问 / 附件页(浏览器,挂在智能体 8810)
@@ -102,7 +102,7 @@ REL25 候选路由 **未接管**现网企微执行链。新项目不必沿用该
- 现网为 Node 长连接脚本,新项目可仍用 Node 或等价实现
- 端口 8813 仅 127.0.0.1(测试环境 8913)
- **只传输**,不拥有业务状态
- **只传输**,不拥有业务状态。入站 `/forward`;出站 `/send-group` 走 `aibot_send_msg`(空运群发文件后马上说话)
## 10. 运维/发布端(人 + 脚本)
+2 -2
View File
@@ -10,11 +10,11 @@
2. 海运 / 空运 / 陆运(含陆运二级类型)按唯一字段合同补问:完整输入不误补、不漏字段。
3. 随时新开询价并保存旧工单;可激活历史工单从精确断点继续;不重放已提交副作用。
4. TMS:询价必填齐了就查价;有价返回报价,没有返回暂无报价;技术异常单独分支。不做本地字典对应判断。
5. 需要协同时建群或复用空运固定群;群文字与群附件都能形成正确报价版本。
5. 需要协同时:海运由应用自动建群;空运由人自建群、@ 询价小助手 BOT、激活当前工单。激活成功按海运进群同一套发工单号/询价字段/协同补充/TMS报价,并发送匹配到的空运模板。文字必须 @;发文件不能 @,靠存档听见,BOT 马上回「附件已保存」(该群须先 @ 过)。空运群细则见 `docs/superpowers/specs/2026-09-16-air-group-collab-design.md`。
6. 采用、调价、Excel/PDF、对象存储、附件登记、企微发送、流程唤醒共用同一 quoteVersion。
7. 正式报价后:成交、未成交、协商中;未成交原因、协商调价、终止、超时不串路由。
8. 关键异常可恢复;重复事件幂等;过期卡片/晚到消息零错误写入。
9. 多段联运、空运锁舱/释放若本迭代不做,必须关闭入口,禁止半可用。
9. 多段联运本迭代关闭入口,禁止半可用。空运锁舱/释放在空运群内做;测服打真实 TMS,验收期间现网锁舱先停,禁止两套同时抢舱。
10. 单一源码可构建、测试、回滚。
## 架构硬约束
+1 -1
View File
@@ -6,7 +6,7 @@
1. 应用回调(明文/密文 XML 或 JSON):挂在**智能体唯一 HTTP**(现网 8811,新系统不再单独端口)。文字、图片、文件、模板卡点击、进入会话。验签失败不入队。
2. 群机器人:现网 8812 **默认不实现**(生产群机器人 Token 为空、走 AIBOT)。产品未书面要求不要加端口。
3. AIBOT 长连接:独立 Node(或等价)进程听微信,转给智能体,**桥上无业务状态**,8813 仅回环。
3. AIBOT 长连接:独立 Node(或等价)进程听微信,转给智能体,**桥上无业务状态**,8813 仅回环(测试 8913)。出站 `/send-group` 走 `aibot_send_msg` 文字;`/send-file` 走上传素材后再发文件(空运激活发匹配模板)。
4. 微盛 Archive:由**后台 Worker** 轮询群消息与附件、限速下载,不要堵 HTTP 回调。
测试与正式 H5 同一地址:`https://ai.ytd-scm.com/inquiry-form`。切流前公网仍进现网进程,见 `13`。
+2 -2
View File
@@ -29,7 +29,7 @@
- 1002 / 无 quoteFound / TMS 说缺项 → **暂无报价**
- HTTP 5xx/超时/熔断 → 技术失败(不是「暂无报价」)
锁舱/释放:**与现网共用同一套 TMS Client 时,新系统默认关闭**(API 返回未开放,企微/后台不展示)。只做 query / detail / template-fields / 字典同步。切流接管前再打开 lock/release,避免两套应用抢舱。
锁舱/释放:空运群内由航线 @ BOT 触发,主账 HMAC 出站 `/air/cabin/lock`、`/air/cabin/release`(入参以 TMS 文档为准;日期用工单报价日期填 `flightDate`)。**测服打开真实出站**;验收期间现网锁舱必须先停,禁止两套同时抢舱。正式现网切流前不要让现网和新系统同时 lock。单测用 stub,禁止单测打真实 TMS。
## 观测
@@ -37,4 +37,4 @@
## 测试
用 WireMock/本地 stub:token 成功、query 1/1002/1003、签名错误、超时。禁止单测打真实 TMS。联调查价可以打现网 TMS(同一 Client);**禁止**联调 lock/release。不要做 Redis「TMS 测试开关」。无价和技术失败看真实 query 响应或 stub。
用 WireMock/本地 stub:token 成功、query 1/1002/1003、签名错误、超时、lock/release 成功与 2006/2009。禁止单测打真实 TMS。联调查价可以打现网 TMS(同一 Client)。测服联调 lock/release 只打测试工单,且现网锁舱已停。不要做 Redis「TMS 测试开关」。无价和技术失败看真实 query 响应或 stub。
+4 -3
View File
@@ -48,19 +48,20 @@ BIZ_API_BASE_URL=http://127.0.0.1:8180/jeecg-boot
AGENT_CALLBACK_BASE_URL=http://127.0.0.1:8910
WECOM_AIBOT_BRIDGE_URL=http://127.0.0.1:8913
WECOM_AIBOT_INGRESS_URL=http://127.0.0.1:8910/internal/aibot/inbound
# 空运群发文件后马上回话:先停现网 8813,再 WECOM_AIBOT_ENABLED=true,并填 BOT_ID/SECRET。该群须先 @ 过小助手。
```
前端 `VITE_GLOB_API_URL=/jeecgboot`,`VITE_GLOB_DOMAIN_URL=https://ai.ytd-scm.com`。不要加 `ai-test.conf`。
## TMS
现网 BaseURL + Client 三件套(`03`)。只 QUERY / 详情 / 字典。默认关闭 LOCK/RELEASE。智能体只打测试主账 8180,不直连 TMS、不打现网 8080。
现网 BaseURL + Client 三件套(`03`)。QUERY / 详情 / 字典照旧。空运群锁舱/释放:测服主账打开出站打真实 TMS;验收前必须先停现网锁舱,禁止两套抢舱。智能体只打测试主账 8180,不直连 TMS、不打现网 8080。
## 库表(测试库可直接改)
开发需要加表、加字段、改字段时:**直接对 `inquiry_robot` / `inquiry_robot_runtime` 做版本化迁移**,不必先等 Task 批准。
仍须批准的:改现网库、改现网 Secret、TMS LOCK/RELEASE、对非测试人员发企微。
仍须批准的:改现网库、改现网 Secret、对非测试人员发企微。测服 LOCK/RELEASE 已纳入空运群定稿,但必须现网锁舱已停。
## 发布原则
@@ -81,7 +82,7 @@ WECOM_AIBOT_INGRESS_URL=http://127.0.0.1:8910/internal/aibot/inbound
## 未经 Task 批准不得
- TMS LOCK/RELEASE(QUERY 按任务批准)
- 现网与测服同时 LOCK/RELEASE(测服锁舱须现网已停;QUERY 按任务批准)
- 给测试可见范围以外的人或生产客户群发企微
- 写现网库
- 改现网 Secret、防火墙、`1000010` 回调
+4
View File
@@ -93,6 +93,10 @@ BIZ_API_BASE_URL=http://127.0.0.1:8180
AGENT_CALLBACK_BASE_URL=http://127.0.0.1:8910
WECOM_AIBOT_BRIDGE_URL=http://127.0.0.1:8913
WECOM_AIBOT_INGRESS_URL=http://127.0.0.1:8910/internal/aibot/inbound
WECOM_AIBOT_ENABLED=false
WECOM_AIBOT_BOT_ID=
WECOM_AIBOT_SECRET=
WECOM_AIBOT_WS_URL=wss://openws.work.weixin.qq.com
REDIS_KEY_PREFIX=inquiry_robot:
PG_DATABASE=inquiry_robot_runtime
MYSQL_DB=inquiry_robot