Files
lingxi-web/docs/ARCHITECTURE.md
T
wmq af49d22ca7 feat: release contextual omnichannel customer platform
Add Telegram, WhatsApp and email account management, realtime messaging, contextual multilingual AI, customer intelligence, knowledge workflows, enterprise controls, a unified design system and complete repository documentation.
2026-07-30 02:29:53 +08:00

3.7 KiB

系统架构

1. 架构目标

灵犀跨境以“租户隔离、渠道可扩展、消息实时、AI 异步化”为核心。浏览器只访问统一 Web/API 入口;Telegram、WhatsApp、邮箱和模型凭据只保存在服务端环境与加密存储中。

Browser
  │ HTTPS / WebSocket
  ▼
Nginx (web:80)
  ├── React SPA
  └── /api, /internal, /health ──► Node.js API (:3100)
                                     ├── PostgreSQL 16
                                     ├── DeepSeek Anthropic API
                                     ├── Telegram Gateway / TDLib
                                     ├── WhatsApp Gateway / Baileys
                                     ├── IMAP + SMTP
                                     └── Stripe

2. 仓库结构

路径 职责
src/ React 页面、组件、状态、API 客户端、国际化与类型
server/src/index.js 认证、租户业务、消息、AI、渠道、Webhook、WebSocket 与数据初始化
whatsapp-gateway/ 普通 WhatsApp 多账号连接、消息/媒体/群组/联系人操作
tests/e2e/ Playwright 桌面与移动端验收
docker/ Nginx 与邮件协议测试辅助镜像
docs/ 架构、部署、接口、测试与运维文档

3. 核心数据流

入站消息

  1. Telegram/WhatsApp 网关向带租户和渠道标识的内部 Webhook 投递事件;邮箱轮询器从 IMAP 拉取邮件。
  2. API 校验签名、渠道归属与事件幂等标识。
  3. 消息、会话、联系人和状态写入 PostgreSQL。
  4. API 向当前租户的 WebSocket 客户端广播增量事件。
  5. 文本消息进入 AI 高优先级队列;较早历史进入低优先级补齐队列。
  6. 翻译、意图、情感、风险和会话记忆完成后再次广播更新。

出站消息

  1. 前端提交渠道、会话、正文、媒体、回复目标和客户端幂等标识。
  2. API 验证 RBAC、租户归属、渠道状态与限流。
  3. 先落库发送任务,再调用对应网关或 SMTP。
  4. 网关状态事件持续对账已发送、已送达、已读和失败状态。
  5. 可恢复错误进入持久化重试;超过阈值进入死信等待人工重放。

上下文 AI

  • 最近消息优先处理,以保证实时聊天速度。
  • 每个会话维护独立上下文;超过长度阈值后压缩为结构化记忆。
  • 历史消息按游标后台补齐,避免首次打开阻塞。
  • 翻译目标可自动识别,也可由坐席指定;智能回复保持人工确认发送。

4. 隔离与权限

  • JWT 含用户、租户和角色信息;业务查询必须带 tenant_id。
  • 渠道、会话、消息、客户、任务与管理资源均在服务端校验租户归属。
  • WebSocket 使用短期票据,不把长期 JWT 放入 URL。
  • API Key 仅在创建时返回明文,持久化摘要并支持撤销。
  • 邮箱密码使用 EMAIL_CREDENTIAL_KEY 加密;网关登录态位于独立持久卷。

5. 可靠性边界

  • PostgreSQL 是平台业务数据的事实来源。
  • Telegram/WhatsApp 平台状态由异步事件最终一致对账。
  • WebSocket 只用于加速展示;断线后客户端必须通过 REST 游标补齐。
  • Webhook 接收快速确认,耗时处理异步化;失败投递可查询和重放。
  • AI 失败不能阻断原始消息收发,任务可独立重试。

6. 当前约束

  • Telegram Gateway 为独立仓库和独立部署,本仓库只保存适配与配置。
  • 普通 WhatsApp 接入依赖非官方 Web 多设备协议,生产使用前必须评估账号风控和平台条款。
  • API 目前集中在单入口文件,业务增长后应按领域拆分路由、服务、仓储和迁移文件。