Files
inquiry_robot/prompt/01-现状总览.md

8.7 KiB
Raw Permalink Blame History

现状总览:语言、技术、框架、数据库、部署、域名

产品是什么

货代询价智能体:销售在企业微信私聊/群聊发文字、图片、Excel/PDF;系统抽字段、补问、建工单、查 TMS 报价、需要时建协同群、生成 Excel/PDF 报价、成交闭环。管理后台查看工单、报价、人员、模板、异常。

当前不是单体,而是多进程组合。

开发语言

语言 版本(建议/源码) 用在哪
Python 3.12 智能体、企微 Worker、LangGraph、LLM/识别/报价/存档
Java 1.8(JDK 8) JeecgBoot 工单/TMS 主账
TypeScript / JavaScript Node 18 或 20 Vue3 管理后台;企微 AIBOT 长连接是 Node .cjs
PowerShell 7(本机开发建议) 环境导入、累计部署、远程运维
SQL MySQL / PostgreSQL 方言 Java 业务库、Python 运行账迁移

主要框架与库

Python(现网)

  • FastAPI 0.137 + Uvicorn:HTTP 入口
  • LangGraph 1.2.5 + langgraph-checkpoint-postgres:业务流程编排与 checkpoint(何时用、怎么用见 14)
  • httpx:出站 HTTP
  • psycopg / psycopg2:PostgreSQL
  • redis:队列、限流、token 缓存;现网还有 Worker 全局单例锁(新系统不要)。何时用见 14
  • openpyxl / PyMuPDF / pypdf:Excel、PDF
  • cryptography / python-dotenv
  • PyMySQL:仅 metrics 等旁路读 MySQL(正式写走 Java)

Java(现网主账)

  • JeecgBoot 3.5.3
  • Spring Boot 2.7.10
  • Spring Cloud / Alibaba 组件在仓库里有,生产活动形态是单体 jeecg-system-start,不是必开微服务
  • MyBatis-Plus 3.5.1、Druid、Shiro、JWT
  • MinIO Java SDK、Hutool、Fastjson、Knife4j
  • 询价业务在 Jeecg 的 inquiry 模块

前端(现网管理后台)

  • JeecgBoot Vue3 3.5.3
  • Vue 3.2、Vite 3、Ant Design Vue 3、Pinia、TypeScript
  • pnpm 7.33.x(锁文件 pnpm-lock v5.4,不要用 pnpm 11 重新生成锁文件)
  • Axios、ECharts 等 Jeecg 全家桶

其它运行时

  • Node.js:AIBOT 长连接脚本(只做传输)
  • Nginx 1.18.0:C:\nginx-1.18.0,反代前端与 Java
  • LibreOffice:报价 Excel → PDF(默认 C:\Program Files\LibreOffice\program\soffice.exe)

数据库与存储

组件 角色 谁写
MySQL 正式业务主账:工单六态、运输段、源报价/客户报价/版本、费用、附件元数据、人员角色、时间线、Jeecg 系统表。库名源码默认 jeecg-boot 仅 Java
PostgreSQL 运行账:企微 inbox/outbox、Graph checkpoint、conversation session、suspend、clarification/卡片绑定、LLM/识别/报价任务 仅 Python
Redis 缓存、LLM 队列、限流。不能当业务真相 Python + Java
MinIO / S3 兼容 报价文件、附件对象;元数据仍在 Java/任务账 Python object_storage + Jeecg 上传配置
本地磁盘 企微 spool、release 目录、Nginx 静态、上传目录 运维/进程

现网 Redis 另有两样,新系统都不要:wecom:worker:singleton(全机只准一个 Worker 的锁);按销售 UserID 伪造 TMS 无价/异常。并发靠「一条任务认领 + 超时回收」和「服务只起一份」。

新系统库名(同机 10.206.0.14,空库待建,口令新开)

现网(禁止新系统连接) 新系统
MySQL 主账 jeecg-boot / 用户 ytd_jeecg 库 inquiry_robot / 用户 inquiry_robot
PostgreSQL 运行账 ytd_runtime / 用户 ytd_runtime 库 inquiry_robot_runtime / 用户 inquiry_robot_runtime
Redis db0 前缀 ytd:prod:node01-07 db1,前缀 inquiry_robot:
MinIO 桶 ytd-inquiry inquiry_robot

仍用现网端口 3306 / 5432 / 6379 / 9000。账号口令不要抄现网,由甲方新建。变量名与正式/测试取值见 13。

外部系统(非本仓库)

系统 职责
企业微信 私聊、群聊、模板卡、应用消息、AIBOT
微盛会话存档 open.wshoto.com 群/会话 Archive、附件下载
TMS(友商/自有 TMS V2) 报价查询、详情、字典、空运锁舱/释放;外部报价与舱位事实 Owner
DeepSeek API 意图路由(A)+ 字段语义(B)
阿里云百炼/DashScope 千问 附件/图片、报价表映射等
现网 Git 对照地址见 03;本仓库用自己的远程

部署环境

项 值
形态 甲方 Windows 服务器,不可变 release 目录
公网 IP 129.211.181.80(SSH 22)
主机名 10_206_0_15
运行根 C:\yutongda
版本目录 C:\yutongda\releases\
运维指针 C:\yutongda\ops\(active-release*.json)
SSH 账号 ytd_extdev_0903,仅 Ed25519 公钥
允许出口 38.175.103.103、113.119.172.108、115.159.76.75
部署方式 固定脚本 Deploy-YtdCumulativeRelease.ps1,禁止手工覆盖活动目录
OS 本机开发 Windows 10/11 + PowerShell 7

新系统与现网 同机并存:不占用上表 C:\yutongda 活动指针;TMS、域名 ai.ytd-scm.com、询价企微 1000010、AIBOT Bot 与正式相同。库、Redis 前缀、监听端口另起。运维通知 1000014 也相同。并存期不要改 Nginx 回调、不要双连 AIBOT。

公开域名与路径

地址 用途
https://ai.ytd-scm.com 正式站点(Nginx ai.conf)。测试环境域名配置与此相同,切流前公网仍进现网
https://ai.ytd-scm.com/inquiry-form H5(测试 .env 也填这一条)
https://ai.ytd-scm.com/inquiry-form/upload H5 询价附件上传
/jeecgboot(生产前端 VITE_GLOB_API_URL) 浏览器到 Java 的反代前缀
Java context-path /jeecg-boot(服务端口 8080)
现网 Git 地址见 03;本仓库用新远程
https://work.weixin.qq.com/ 企微卡片跳转占位
https://open.wshoto.com 微盛 Archive API 默认基址
https://api.deepseek.com / /beta DeepSeek
DashScope 兼容基址(环境变量 QWEN_BASE_URL) 千问

源码里的 minio.jeecg.com、fileview.jeecg.com、cas.test.com 是 Jeecg 模板默认值,不等于生产。生产对象存储与域名以服务器环境文件为准。

监听端口

公网对外只需 443(Nginx)。下面多数是本机回环或数据机,不是都要映射到公网。

现网应用口(拆得过细)

端口 现网进程 新系统
8080 Java JeecgBoot 保留(主账,本机,Nginx 反代)
8810 Python agent_api 保留,并承接原 8809/8811
8809 Python bridge_api 砍,并进 8810
8811 Python wecom_callback 砍,并进 8810
8812 Python wecom_robot 砍,现网基本空配置
8813 AIBOT Bridge 保留,仅 127.0.0.1
3100 Vite 开发服 生产不要开

基础设施(不是询价业务端口)

数据在 10.206.0.14:MySQL 3306、PostgreSQL 5432、Redis 6379。本机还有 MinIO 9000。Worker 不占对外端口。

新系统并存期应用口:8180 + 8910 + 8913,外加 Nginx 80/443。切流前不要占用现网 8080/8810/8813。

目标进程(不要复现现网拆法)

现网 Python 拆成多个 uvicorn + 五个 Worker,是发布/隔离习惯,不是业务必需。新系统交付形态:

进程 端口(可沿用) 职责
Nginx 443 / 80 TLS、静态后台、反代
主账 API 并存时不要用 8080(示例 8180) 工单、权限、TMS、后台 API
智能体 HTTP 并存时不要用 8810(示例 8910) H5、企微 HTTP 回调、主账唤醒;只入队、快回
AIBOT 桥 并存时不要用 8813(示例 8913)仅回环 长连接转发,无业务状态
后台 Worker 一个进程 无对外端口 LLM、识别、报价(LibreOffice)、存档;进程内分并发槽

Worker 并发约定(不允许系统卡顿,尽量多线程):

  • 1 个槽专跑 LibreOffice(避免本机两台 soffice 互抢)。不是整进程单线程。
  • 2~3 个线程槽跑 HTTP 类(模型、识别、存档下载、主账)。不同工单并行。
  • inbox / outbox 独立线程,禁止和转 PDF 串在一条阻塞线上。
  • 回调 / H5 只入队快回;禁止在请求线程转 PDF、等完整 LLM、忙等 Redis 结果。
  • 禁止全局大锁把所有询价排成单行。同一任务认领即可。

不要:群机器人独立 8812(现网空配置);五个 NSSM Worker;把慢活塞回回调请求。

业务六态(Java 唯一)

询价中、已报价、协商中、已成交、未成交、已关闭。

补字段、附件识别中、生成文件、异常、人工协同 不是第七态,属于 Graph/任务/异常正交状态。