160 lines
6.0 KiB
Markdown
160 lines
6.0 KiB
Markdown
# 保险智能客服系统
|
||
|
||
基于 BaoDan 源码的保险行业智能客服系统。**直接在 BaoDan 源码上开发**,自研代码放在 `api/insurance/` 目录下,与 BaoDan 代码物理隔离。
|
||
|
||
## 系统架构
|
||
|
||
```
|
||
用户浏览器 / 企微 H5
|
||
│
|
||
▼
|
||
┌─ BaoDan 服务(BaoDan + 你的代码,同一进程)─────────────┐
|
||
│ BaoDan WebApp(对话界面,iframe 嵌入) │
|
||
│ BaoDan 管理后台(知识库/Prompt/模型/日志) │
|
||
│ 你的 Extensions(api/insurance/): │
|
||
│ · 企微机器人 + OAuth │
|
||
│ · 产品推荐 │
|
||
│ · 角色权限 │
|
||
│ · 数据统计 │
|
||
└───────────────────────┬──────────────────────────────┘
|
||
│
|
||
┌───────────────▼───────────────┐
|
||
│ 你的前端(Vue 3,独立项目) │
|
||
│ 对话页 / 推荐页 / 管理页 │
|
||
└───────────────────────────────┘
|
||
```
|
||
|
||
## 技术栈
|
||
|
||
| 层级 | 技术 | 说明 |
|
||
|------|------|------|
|
||
| 基础平台 | BaoDan 1.14.2(源码) | Flask 后端 + Next.js 前端 |
|
||
| 自研后端 | Python + Flask Blueprint | 放在 `api/insurance/`,复用 BaoDan 基础设施 |
|
||
| 自研前端 | Vue 3 + TypeScript + Vite + Element Plus | 对话 iframe + 推荐页 + 管理页 |
|
||
| 数据库 | PostgreSQL 15 | 复用 BaoDan 的 DB,新增 3 张自研表 |
|
||
| 向量库 | BaoDan 内置 | 知识库检索 |
|
||
| 缓存 | Redis 6 | 复用 BaoDan 的 Redis |
|
||
|
||
## 项目结构
|
||
|
||
```
|
||
baodan-main/
|
||
├── api/
|
||
│ ├── insurance/ # ★ 你的代码(新建目录)
|
||
│ │ ├── wecom/ # 企微机器人 + OAuth
|
||
│ │ ├── recommend/ # 产品推荐
|
||
│ │ ├── permissions/ # 角色权限
|
||
│ │ ├── stats/ # 数据统计
|
||
│ │ └── db/ # 自研数据表
|
||
│ ├── core/ # BaoDan 核心(不动)
|
||
│ ├── controllers/ # BaoDan API(不动)
|
||
│ ├── models/ # BaoDan 模型(不动)
|
||
│ └── main.py # ★ 只改这里:注册路由
|
||
│
|
||
├── web/
|
||
│ └── .env.local # ★ 只改这里:开启 iframe
|
||
│
|
||
├── dev/ # 开发脚本(BaoDan 自带)
|
||
└── docker/ # Docker 部署(BaoDan 自带)
|
||
|
||
frontend/ # 你的前端(Vue 3)
|
||
├── src/
|
||
├── package.json
|
||
└── 前端开发计划.md
|
||
|
||
deploy/
|
||
├── sql/init.sql # 自研表建表脚本
|
||
└── nginx.conf # Nginx 反向代理
|
||
```
|
||
|
||
## 修改 BaoDan 文件清单
|
||
|
||
| 文件 | 改动 | 改动量 |
|
||
|------|------|:---:|
|
||
| `api/main.py` | 注册 insurance Blueprint | ~5 行 |
|
||
| `web/.env.local` | 开启 iframe 嵌入 | 1 行 |
|
||
| **合计** | **只改 2 个 BaoDan 文件** | **~6 行** |
|
||
|
||
## 快速开始
|
||
|
||
### 前置条件
|
||
|
||
- Python 3.12 + uv
|
||
- Node.js 22 + pnpm
|
||
- PostgreSQL 15 + Redis 6
|
||
- DeepSeek API Key
|
||
|
||
### 启动步骤
|
||
|
||
```bash
|
||
# 1. 克隆 BaoDan 源码
|
||
git clone https://github.com/langgenius/baodan.git
|
||
cd baodan
|
||
|
||
# 2. 安装依赖
|
||
./dev/setup
|
||
|
||
# 3. 配置环境变量
|
||
# 编辑 api/.env 和 web/.env.local(详见开发文档)
|
||
|
||
# 4. 启动服务(4 个终端)
|
||
./dev/start-api # 终端1:后端(含你的 insurance 模块)
|
||
./dev/start-worker # 终端2:Celery Worker
|
||
./dev/start-web # 终端3:BaoDan 前端
|
||
./dev/start-beat # 终端4:定时任务(可选)
|
||
|
||
# 5. 启动你的 Vue 前端
|
||
cd ../frontend && pnpm install && pnpm dev
|
||
|
||
# 6. 验证
|
||
curl http://localhost:5001/api/health
|
||
```
|
||
|
||
## BaoDan 功能 vs 自研功能
|
||
|
||
| 功能 | 来源 | 你做什么 |
|
||
|------|:---:|---------|
|
||
| 对话界面 | BaoDan WebApp | iframe 嵌入 |
|
||
| 知识库管理 | BaoDan 后台 | 不写代码 |
|
||
| Prompt 编辑 | BaoDan 后台 | 不写代码 |
|
||
| 模型配置 | BaoDan 后台 | 不写代码 |
|
||
| 对话日志 | BaoDan 后台 | 不写代码 |
|
||
| 产品推荐 | **自研** | `api/insurance/recommend/` |
|
||
| 企微机器人 | **自研** | `api/insurance/wecom/` |
|
||
| 企微 OAuth | **自研** | `api/insurance/wecom/` |
|
||
| 角色权限 | **自研** | `api/insurance/permissions/` |
|
||
| 数据统计 | **自研** | `api/insurance/stats/` |
|
||
|
||
## 开发文档
|
||
|
||
所有文档在 `docs/` 目录,完整索引见 [docs/README.md](docs/README.md)。
|
||
|
||
| 文档 | 说明 |
|
||
|------|------|
|
||
| [需求文档](docs/保险智能客服系统_需求文档.md) | 137 项功能 + 数据库设计 + 数据流转 |
|
||
| [API 接口文档](docs/保险智能客服系统_API接口文档.md) | 45 个接口完整设计 |
|
||
| [后续开发计划](docs/后续开发计划.md) | 项目状态(64%)+ 未完成功能 + 时间表 |
|
||
| [开发任务清单](docs/开发任务清单.md) | 412 项可勾选任务 |
|
||
| [编码规范](docs/保险智能客服系统_编码规范.md) | 编码标准 + BaoDan 集成规范 |
|
||
| [测试用例](docs/保险智能客服系统_测试用例.md) | 功能/边界/异常测试 + 上线 Checklist |
|
||
| [前端开发计划](docs/前端开发计划.md) | Vue 3 前端完整组件代码 |
|
||
| [API curl 示例](docs/API_curl示例.md) | 接口调试 curl 示例 |
|
||
| [部署指南](docs/部署文档_完整版.md) | 完整部署文档 + 架构图 |
|
||
|
||
## BaoDan 升级流程
|
||
|
||
```bash
|
||
cd baodan
|
||
git stash # 暂存你的改动
|
||
git pull origin main # 拉取 BaoDan 新版本
|
||
git stash pop # 恢复你的改动
|
||
# main.py 冲突 → 手动合并(只合并注册路由的 5 行)
|
||
# .env.local 冲突 → 重新加那一行
|
||
# api/insurance/ 目录永远不会冲突
|
||
```
|
||
|
||
## 许可证
|
||
|
||
BaoDan 部分:Apache 2.0
|
||
你的自研部分:MIT
|