# 外贸小助手 (TradeMate) — 技术架构文档 > 版本: v1.1 > 创建日期: 2026-05-10 > 更新: 新增客户健康度看板、AI跟进助手、市场机会分析三大模块 --- ## 一、系统架构总览 ``` ┌──────────────────────────────────────────────────────┐ │ 客户端层 │ │ ┌────────────┐ ┌────────────┐ ┌────────────┐ │ │ │ 微信小程序 │ │ Web后台 │ │ WhatsApp │ │ │ │ (主入口) │ │ (管理用) │ │ 原生客户端 │ │ │ └──────┬─────┘ └──────┬─────┘ └──────┬─────┘ │ └─────────┼───────────────┼────────────────┼───────────┘ │ HTTP/JSON │ HTTP/JSON │ WhatsApp │ │ │ Cloud API ┌─────────┼───────────────┼────────────────┼───────────┐ │ ┌┴──────────────┴────────────────┴┐ │ │ │ API Gateway (FastAPI) │ │ │ │ - 认证 (JWT + WeChat OAuth) │ │ │ │ - 用户 tier 中间件 │ │ │ │ - 配额控制中间件 │ │ │ └────────────────┬─────────────────┘ │ │ │ │ │ ┌────────────────┼─────────────────┐ │ │ │ │ │ │ │ ┌─────┴─────┐ ┌──────┴──────┐ ┌───────┴──────┐ │ │ │ 业务服务 │ │ AI 服务 │ │ WhatsApp │ │ │ │ │ │ 抽象层 │ │ 集成服务 │ │ │ │ - 营销素材 │ │ - Provider │ │ - 消息收发 │ │ │ │ - 翻译回复 │ │ - Router │ │ - Webhook │ │ │ │ - 客户跟进 │ │ - 语料库 │ │ - 会话管理 │ │ │ │ - 报价单 │ │ - 成本控制 │ │ │ │ │ │ - 健康度 │ │ - 市场分析 │ │ │ │ │ │ - 跟进引擎 │ │ - 跟进策略 │ │ │ │ │ └─────┬─────┘ └──────┬──────┘ └──────┬───────┘ │ │ │ │ │ │ │ ┌─────┴─────────────────┴─────────────────┴──────┐ │ │ │ 数据层 │ │ │ │ ┌──────────┐ ┌──────────┐ ┌──────────────┐ │ │ │ │ │PostgreSQL│ │ Redis │ │ 文件存储 │ │ │ │ │ │+pgvector │ │ (缓存) │ │ (报价单PDF) │ │ │ │ │ └──────────┘ └──────────┘ └──────────────┘ │ │ │ └──────────────────────────────────────────────────┘ │ └────────────────────────────────────────────────────────┘ ``` --- ## 二、技术栈选型 | 层级 | 技术 | 选型理由 | |------|------|---------| | 客户端 | 微信小程序 | 触达成本最低,中国外贸商家几乎100%使用微信 | | 后端 | FastAPI (Python 3.11+) | 异步性能好,类型安全,生态成熟 | | 主数据库 | PostgreSQL 15 + pgvector | 结构化数据 + 向量检索(语料库语义搜索) | | 缓存 | Redis 7 | 会话缓存、配额计数、任务队列 | | 任务队列 | Celery + Redis broker | 异步翻译、批量语料处理 | | AI Provider | DeepL + OpenAI + Claude + 本地模型 | 按场景路由,成本优化 | | WhatsApp | WhatsApp Cloud API | 官方API,合规稳定 | | 部署 | Docker + Docker Compose | 一键部署,环境一致 | --- ## 三、目录结构 ``` trade-assistant/ ├── docs/ # 设计文档 │ ├── PRODUCT_DESIGN.md │ ├── TECH_ARCHITECTURE.md │ ├── API_DESIGN.md # API 接口设计 │ └── DATABASE_SCHEMA.md # 数据库设计 │ ├── backend/ # Python 后端 │ ├── app/ │ │ ├── main.py # FastAPI 入口 │ │ ├── config.py # 配置管理 │ │ ├── database.py # 数据库连接 │ │ │ │ │ ├── models/ # SQLAlchemy 数据模型 │ │ │ ├── user.py │ │ │ ├── product.py │ │ │ ├── customer.py │ │ │ ├── conversation.py │ │ │ ├── quotation.py │ │ │ └── corpus.py │ │ │ │ │ ├── api/v1/ # REST API 路由 │ │ │ ├── auth.py # 认证 │ │ │ ├── marketing.py # 营销素材 │ │ │ ├── translate.py # 翻译与回复 │ │ │ ├── customer.py # 客户管理 │ │ │ ├── quotation.py # 报价单 │ │ │ └── whatsapp.py # WhatsApp 集成 │ │ │ │ │ ├── services/ # 业务逻辑层 │ │ │ ├── marketing.py # 营销素材生成 │ │ │ ├── translation.py # 翻译+回复引擎 │ │ │ ├── customer.py # 客户跟进引擎 │ │ │ ├── customer_health.py # 客户健康度评分 (新增) │ │ │ ├── followup_engine.py # AI跟进策略引擎 (新增) │ │ │ ├── market_analysis.py # 市场机会分析 (新增) │ │ │ ├── quotation.py # 报价单服务 │ │ │ └── whatsapp.py # WhatsApp 服务 │ │ │ │ │ ├── ai/ # AI 抽象层 │ │ │ ├── base.py # Provider 接口 │ │ │ ├── router.py # 智能路由+fallback │ │ │ ├── trade_corpus.py # 外贸语料库 │ │ │ └── providers/ # 各引擎实现 │ │ │ ├── openai.py │ │ │ ├── claude.py │ │ │ ├── deepl.py │ │ │ └── local.py │ │ │ │ │ ├── core/ # 核心基础设施 │ │ │ ├── security.py # JWT + 加密 │ │ │ ├── exceptions.py # 异常处理 │ │ │ └── middleware.py # 中间件 │ │ │ │ │ └── workers/ # Celery 任务 │ │ └── tasks.py │ │ │ ├── alembic/ # 数据库迁移 │ ├── requirements.txt │ ├── Dockerfile │ └── .env.example │ ├── miniprogram/ # 微信小程序 │ ├── app.js / app.json / app.wxss │ ├── pages/ │ │ ├── index/ # 首页仪表盘 │ │ ├── translate/ # 翻译+回复 │ │ ├── customers/ # 客户管理 │ │ ├── marketing/ # 营销素材 │ │ └── quotation/ # 报价单 │ ├── components/ # 通用组件 │ └── utils/ # 工具函数 │ ├── data/ # 数据存储 │ ├── corpus/ # 外贸语料库文件 │ └── models/ # 微调模型占位 │ ├── scripts/ # 运维脚本 ├── docker-compose.yml └── README.md ``` --- ## 四、AI 服务架构(核心) ### 4.1 Provider 抽象层 ``` ┌─────────────────────────────────────────────────────┐ │ AIRouter │ │ │ │ execute(task_type, method, *args, **kwargs) │ │ │ │ 1. 根据 task_type 获取优先级列表 │ │ 2. 按优先级依次尝试 provider │ │ 3. 失败自动 fallback 到下一个 │ │ 4. 记录每次调用的 provider、token、耗时、成本 │ │ 5. 将结果存入语料库(如果质量达标) │ └──────────┬──────────┬──────────┬──────────┬──────────┘ │ │ │ │ ┌──────┴──┐ ┌───┴────┐ ┌───┴────┐ ┌───┴──────┐ │ OpenAI │ │ Claude │ │ DeepL │ │ Local │ │ Provider│ │Provider│ │Provider│ │Provider │ └─────────┘ └────────┘ └────────┘ └──────────┘ ``` ### 4.2 路由规则 | 任务类型 | 主引擎 | Fallback | 成本策略 | |---------|--------|---------|---------| | 翻译(看懂) | DeepL | OpenAI → 本地 | 优先低成本 | | 回复建议 | OpenAI GPT-4o | Claude → 本地 | 质量优先 | | 营销文案 | Claude | OpenAI → 本地 | 质量优先 | | 结构化提取 | OpenAI GPT-4o | Claude | 结构化能力优先 | | 语料训练 | 本地(离线) | - | 零成本 | ### 4.3 语料库架构 ``` ┌─────────────────────────────────────────────────────────┐ │ TradeCorpus │ │ │ │ 收集: │ │ ├─ 用户翻译记录(原文→译文,用户是否编辑过) │ │ ├─ 用户选择的回复(用户从N个AI建议中选了哪个) │ │ ├─ 用户点赞/点踩的反馈 │ │ └─ 用户最终发出的版本(可能是AI建议+用户修改) │ │ │ │ 存储: │ │ ├─ PostgreSQL (结构化: 源文, 译文, 领域, 评分) │ │ └─ pgvector (语义向量, 用于相似翻译检索) │ │ │ │ 使用: │ │ ├─ 运行时: 相似翻译召回 → 做 few-shot prompt │ │ ├─ 离线: 训练专用翻译模型(用户量 >1万后启动) │ │ └─ 质量评估: 持续评估各 provider 的质量分数 │ └─────────────────────────────────────────────────────────┘ ``` --- ## 五、护城河实现策略 ### 5.1 外贸垂直语料库(数据壁垒) **数据采集点**(在用户流程中无感埋点): ``` 用户操作 → 系统记录 ──────────────────────────────────────── 用户输入中文要翻译 → 原文 用户选择了某个回复建议 → 被选中的建议 + 未被选中的建议 用户修改了AI建议再发送 → AI原文 + 用户修改版本 用户点了赞/点踩 → 质量标签 用户复制了某条营销文案 → 文案被使用的统计 ``` **语料库达到 10 万条后的效果**: - 翻译时从语料库检索相似度 >90% 的历史翻译,直接复用或做 few-shot - 回复建议不再是通用 prompt,而是"过去100个类似询盘的回复模式" - 新用户冷启动时直接受益于存量语料 ### 5.2 用户产品知识库(迁移成本壁垒) 用户存入的数据是不可替代的资产: ``` 用户产品库: ├─ 产品名称/描述(双语) ├─ 价格表(不同客户不同价) ├─ 规格参数 ├─ 产品图片 └─ 关键词(多语言) 客户画像: ├─ 基本信息(国家/公司/职位) ├─ 沟通偏好(正式/亲切) ├─ 历史价格 ├─ 付款习惯 └─ 砍价风格 → 换平台 = 所有数据重录 → 用户用得越久,走得越难 ``` ### 5.3 沉默客户模式算法(网络效应) ``` 输入: - 本用户的客户沉默时长 - 跨用户匿名统计的"不同国家客户回复率时间分布" - 历史成功跟进的话术模式 输出: - 最佳跟进时间 - 最高回复率的话术类型 - 客户"可能还有意向"的概率评分 网络效应: - 用户A的墨西哥客户跟进数据 → 改善用户B的墨西哥客户跟进建议 - 用户越多,预测越准 - 新用户直接获得"过去100个相似案例的最佳实践" ``` --- ## 六、配额与计费系统 ### 6.1 计费计量点 ``` ┌──────────────┬────────────┬───────────────┐ │ 功能 │ 计量单位 │ 免费版限制 │ ├──────────────┼────────────┼───────────────┤ │ 翻译 │ 字符数 │ 5000/天 │ │ 回复建议 │ 请求次数 │ 20次/天 │ │ 营销文案生成 │ 请求次数 │ 5次/天 │ │ 报价单生成 │ 份数 │ 3份/天 │ │ 客户管理 │ 客户数 │ 5个 │ │ 跟进提醒 │ - │ 仅沉默检测 │ └──────────────┴────────────┴───────────────┘ ``` ### 6.2 实现架构 ``` 用户请求 → tier middleware → quota middleware → 业务逻辑 │ │ ↓ ↓ User.tier Redis INCR user:daily_count 控制功能可用性 检查是否超限 ``` --- ## 七、WhatsApp 集成架构 ``` WhatsApp User WhatsApp Cloud API TradeMate Backend │ │ │ │ 发送消息 │ │ │ ────────────────────────────────► │ │ │ │ Webhook POST /webhook/whatsapp │ │ │ ────────────────────────────────► │ │ │ │ │ │ 1. 验证 Webhook signature │ │ │ 2. 解析消息内容 + 发送者信息 │ │ │ 3. 调用翻译服务(用户可配置) │ │ │ 4. 存储到 conversations 表 │ │ │ 5. 检查是否触发沉默检测更新 │ │ │ 6. 返回 200 OK │ │ │ │ │ 回复消息 │ POST /messages (通过 Cloud API) │ │ ◄──────────────────────────────── │ ──── 用户在小程序确认回复后 ────► │ │ │ │ ``` **注意**:WhatsApp Cloud API 要求企业通过 Meta Business 认证,初始阶段可以使用用户手动复制消息到 WhatsApp 的方式替代,降低启动门槛。 --- ## 八、V2 新增模块架构 ### 8.1 客户健康度看板 #### 评分模型 ``` 输入 → 多维度特征提取 → 加权评分 → 等级输出 → 行动建议 ``` **评分维度与权重**: | 维度 | 权重 | 数据源 | 计算方式 | |------|------|--------|---------| | 响应趋势 | 25% | messages | 近7天平均回复时长 vs 前7天,趋势上升加分 | | 情感轨迹 | 20% | messages | AI分析最近3条客户消息情感极性(正面/负面/中性) | | 询盘深度 | 20% | messages | 是否包含MOQ/认证/FOB/证书等成交信号关键词 | | 沉默天数 | 20% | customers | 归一化得分: 1天=100, 14天+=0 | | 商业价值 | 15% | quotations | 历史成交金额 + 当前在谈金额 | **等级输出**: | 分数区间 | 等级 | 颜色 | 建议动作 | |---------|------|------|---------| | 80-100 | 活跃 | 🟢 绿 | 保持正常跟进 | | 50-79 | 需关注 | 🟡 黄 | 3天内安排跟进 | | 0-49 | 高危 | 🔴 红 | 立即跟进,提供优惠或新产品信息 | #### 技术实现 - **无需新模型**: 使用现有 `messages`、`customers`、`quotations` 表 - **轻量计算**: 无需 ML 模型,规则引擎即可,同步计算 < 50ms - **异步更新**: Celery 定时任务每小时更新一次评分缓存到 Redis - **API**: `GET /api/v1/customers/{id}/health` — 单个客户健康度 - **API**: `GET /api/v1/customers/health-overview` — 全量概览 ### 8.2 AI 智能跟进引擎 #### 架构 ``` ┌────────────────────────────────────────────────────────────┐ │ FollowupEngine │ │ │ │ 1. 状态评估 │ │ └─ 读客户健康度 → 判断是否到跟进时机 │ │ │ │ 2. 策略选择 │ │ ├─ 沉默 3-5 天 → 温和提醒("Just checking in") │ │ ├─ 沉默 6-10 天 → 价值提供("新品/行业资讯") │ │ ├─ 沉默 11+ 天 → 重新激活("限时优惠/调查问卷") │ │ └─ 客户有回复但未成交 → 促进决策("成功案例/限时") │ │ │ │ 3. 内容生成 │ │ └─ AI 基于客户画像+产品库+历史对话生成个性化内容 │ │ │ │ 4. 渠道推荐 │ │ ├─ 历史互动中 WhatsApp 回复率>60% → WhatsApp │ │ ├─ 客户来自展会/邮件 → Email │ │ └─ 紧急/高价商机 → 建议电话 │ │ │ │ 5. 效果追踪 │ │ └─ 跟进后监控客户反应 → 更新策略模型 │ └────────────────────────────────────────────────────────────┘ ``` #### 技术实现 - **跟进策略**: 基于规则的策略选择器(可扩展为强化学习) - **内容生成**: 复用现有 AI 营销素材能力,注入客户上下文 - **渠道路由**: 基于 `customer.preference.channel` 和历史回复率 - **定时任务**: Celery beat 每 6 小时轮检所有客户 - **通知推送**: 检测到跟进时机 → 写入 notifications → PushService 推送 #### 数据模型 ```python class FollowupStrategy(Base): """跟进策略模板""" __tablename__ = "followup_strategies" id: UUID (PK) user_id: UUID (nullable — null = 系统策略) name: str # 策略名称 trigger_conditions: JSONB # 触发条件: {health_score_max, silence_days_min, ...} channel: str # 推荐渠道 ai_prompt_template: str # AI提示词模板 min_interval_hours: int # 最短间隔 is_active: bool success_count: int # 成功率统计 created_at: datetime ``` ```python class FollowupLog(Base): """跟进记录""" __tablename__ = "followup_logs" id: UUID (PK) user_id: UUID customer_id: UUID (FK) strategy_id: UUID (FK → followup_strategies) health_score_before: float # 跟进前健康分 suggested_content: Text # AI建议内容 actual_content: Text # 用户实际发送内容 channel: str # 使用的渠道 was_sent: bool # 是否已发送 customer_replied: bool # 客户是否回复 replied_within_hours: int # 回复间隔 created_at: datetime ``` ### 8.3 智能市场机会分析 #### 架构 ``` ┌────────────────────────────────────────────────────────────┐ │ MarketAnalysisService │ │ │ │ 1. 市场趋势分析 │ │ └─ 调取 UN COMTRADE / ITC TradeMap API → 目标国进口趋势 │ │ │ │ 2. 客户发现 │ │ └─ Google Custom Search → B2B平台/行业黄页 → 潜在客户列表 │ │ │ │ 3. 竞争情报 │ │ └─ AI 分析竞品定价/卖点/市场定位 │ │ │ │ 4. 策略报告 │ │ └─ AI 综合生成: 市场选择→进入策略→风险提示→行动清单 │ └────────────────────────────────────────────────────────────┘ ``` #### 数据源集成 | 数据源 | 集成方式 | 费率 | |--------|---------|------| | UN COMTRADE API | REST API (https://comtrade.un.org/api/) | 免费, 需注册 | | ITC TradeMap | SOAP/REST (https://www.trademap.org/) | 免费基础查询 | | Google Custom Search | JSON API (100次/天免费) | 免费~$5/1000次 | | SerpAPI | Google搜索结果结构化 | $50/月 起 | | AI 自有知识 | 已有模型知识 | 免费 | **核心原则**: 所有数据源有免费层,上线初期零数据采购成本。 #### API 设计 ``` POST /api/v1/market-analysis/opportunity 输入: { product_name, description, category, target_markets? } 输出: { recommended_markets: [{ country, growth_rate, entry_strategy }], potential_clients: [{ name, source, description }], competitive_landscape: "分析文本", strategy_report: "完整策略报告" } GET /api/v1/market-analysis/reports 列表用户历史报告 GET /api/v1/market-analysis/reports/{id} 获取报告详情 ``` #### 关键设计决策 - **异步生成**: 报告生成可能需要 30-60 秒,使用 Celery 异步任务 - **缓存策略**: 相同产品+市场的报告缓存 7 天 - **渐进式展示**: 前端先显示 loading,各个模块完成后逐步展示(趋势数据先出 → 客户发现 → 报告) - **用户引导**: 首次使用后提示"保存到产品库"或"一键生成开发信" --- ## 九、护城河策略(V2 更新) V1 有三层护城河,V2 增加两层: ### 第 4 层: 客户健康度数据集 ``` 用户每日查看健康度 → 记录评分变化 → 验证建议有效性 → 优化评分模型 ↓ 跨用户匿名统计 → 行业基准对比 "你的客户健康度分布 vs 同行业用户的分布" ``` 网络效应: 用户越多,行业基准越准,评分越有价值。 ### 第 5 层: AI跟进策略知识库 ``` 每次跟进记录: ├─ 客户状态(评分/沉默天数/阶段) ├─ 跟进策略(时机/内容/渠道) ├─ 结果(回复/未回复/成交) └─ 用户反馈 → 积累到 1000+ 条后: ├─ 分析"什么策略在什么场景下最有效" ├─ 自动优化策略选择器 └─ 新用户直接受益于"过去1000次跟进的最佳实践" ``` --- ## 十一、安全设计 | 维度 | 措施 | |------|------| | 认证 | JWT + 微信 OAuth + refresh token 轮换 | | API 安全 | 全站 HTTPS、请求签名校验、rate limiting | | 数据安全 | 密码 bcrypt 哈希、敏感配置环境变量注入 | | AI API Key | 仅服务端持有,不暴露给前端 | | 用户隔离 | 所有查询强制 user_id 过滤 | | WhatsApp | Webhook signature 验证、消息内容不落日志 | --- ## 十二、部署架构 ``` 开发环境: docker-compose up(单机) ├─ backend:8000 ├─ postgres:5432 ├─ redis:6379 └─ celery-worker 生产环境: 阿里云/腾讯云轻量服务器 ├─ Nginx 反代 + SSL ├─ systemd 管理 backend + celery ├─ PostgreSQL 走内网 └─ Redis 走内网 关键指标: ├─ API 响应: < 200ms (p95) ├─ 翻译延迟: < 2s (p95) ├─ 并发用户: 500+(单实例) └─ 可用性: 99.5% ```