# 二手汽车AI智能客服系统 - 设计文档 ## 概述 为二手车贸易公司构建AI智能客服系统,核心功能是通过自然对话收集客户信息、评估购买意向,将有意向客户推送至邮箱。 ### 核心需求 - AI自然对话收集客户信息,不预设固定字段,自主判断信息是否足够 - 简单意向分级:interested / not_interested / pending - 有意向客户自动发送邮件通知 - 前端支持三种使用方式:独立页面、iframe嵌入、JS Widget悬浮窗 ### 约束 - 单租户,贸易公司自用 - 初期使用智谱GLM模型,架构支持多模型切换 - Docker部署 - 客户主要来自自有网站 ## 1. 系统架构 采用**全栈一体化**架构,FastAPI托管所有服务。 ``` ┌─────────────────────────────────────────────────┐ │ Docker Compose │ │ │ │ ┌──────────────┐ ┌──────────────┐ ┌────────┐ │ │ │ FastAPI │ │ Redis │ │SQLite/ │ │ │ │ (后端+前端) │←→│ (会话缓存) │ │Postgres│ │ │ │ │ │ │ │(持久化) │ │ │ │ - REST API │ └──────────────┘ └────────┘ │ │ │ - WebSocket │ │ │ │ - 静态页面 │ │ │ │ - JS Widget │ │ │ └──────┬───────┘ │ │ │ │ │ ┌──────▼───────┐ ┌──────────────┐ │ │ │ AI Service │ │ Email Service│ │ │ │ (多模型适配) │ │ (SMTP推送) │ │ │ └──────────────┘ └──────────────┘ │ └─────────────────────────────────────────────────┘ ``` ### 模块职责 - **FastAPI主服务** — REST API + WebSocket + 静态文件托管 - **AI Service** — 多模型适配层(初期智谱GLM),统一prompt管理和对话管理 - **Email Service** — SMTP发送,意向客户自动推送 - **Redis** — 活跃WebSocket会话、对话上下文缓存 - **SQLite/PostgreSQL** — 持久化对话记录、客户信息、评估结果 ### 数据流 客户打开聊天框 → WebSocket建立连接 → AI自然对话收集信息 → AI判断信息足够 → 评估意向 → 有意向则推送邮件 ## 2. 数据模型 ### Conversation(对话) | 字段 | 类型 | 说明 | |------|------|------| | id | UUID | 主键 | | session_id | string | 会话标识 | | status | enum | active / completed / abandoned | | source | enum | standalone / embedded / widget | | client_info | JSON | IP、浏览器、来源页面等 | | created_at | datetime | 创建时间 | | updated_at | datetime | 更新时间 | ### Message(消息) | 字段 | 类型 | 说明 | |------|------|------| | id | UUID | 主键 | | conversation_id | UUID | 外键 | | role | enum | user / assistant / system | | content | text | 消息内容 | | created_at | datetime | 创建时间 | ### CustomerProfile(客户画像 — AI逐步填充) | 字段 | 类型 | 说明 | |------|------|------| | id | UUID | 主键 | | conversation_id | UUID | 外键(一对一) | | raw_info | JSON | AI自然收集的所有信息,灵活结构 | | summary | text | AI生成的客户画像摘要 | | updated_at | datetime | 更新时间 | ### Evaluation(意向评估 — 对话结束时生成) | 字段 | 类型 | 说明 | |------|------|------| | id | UUID | 主键 | | conversation_id | UUID | 外键(一对一) | | intent_level | enum | interested / not_interested / pending | | reasoning | text | AI的判断依据 | | contact_info | JSON | 提取的联系方式(手机/微信/邮箱) | | email_sent | boolean | 是否已发送邮件 | | evaluated_at | datetime | 评估时间 | ## 3. 会话流程 ``` 客户进入 → 创建 Conversation │ ▼ [对话阶段] AI自然对话,不预设字段 │ 每轮对话后,AI在后台提取信息填充 raw_info │ AI自主判断:信息是否足够评估意向? │ ├── 信息不足 → 继续对话(引导提问) │ └── 信息足够 → [评估阶段] AI生成客户画像 summary 判定 intent_level │ ├── interested → 提取联系方式 → 发送邮件 → 结束 ├── not_interested → 记录归档 → 结束 └── pending → 标记待定,不发邮件(信息不足无法判断) → 结束 ``` ### 关键设计点 - `raw_info` 是灵活JSON,不锁死字段,AI对话中发现什么就记什么 - 联系方式由AI从对话中自然提取,不强求客户填写表单 - 对话可随时中断,系统保存已有信息,客户回来可继续 ## 4. 前端设计 ### 三种使用场景 #### 独立聊天页面 - 完整的全屏聊天界面 - FastAPI直接托管静态HTML - 访问域名(如 chat.yourdomain.com)直接使用 #### iframe嵌入 - 在网站任意位置用 `