Files
hzhub/docs/CRM销售模块详细设计说明书.md
大壮 3f643ef31f feat: 完成CRM商机和线索管理模块开发
## 新增功能

### 商机中心 (/opportunity)
- Stats统计卡片(商机总数、金额、赢单、转化率)
- Pipeline商机管道(阶段Tab:全部/线索/谈判中/方案/赢单)
- 商机列表真实数据渲染(来自crm_opportunity表)
- 商机卡片详情(经销商、负责人、金额、概率)
- Pipeline计数实时更新

### 线索中心 (/lead)
- 线索列表完整功能(CRUD)
- 线索详情Drawer(基础信息 + 跟进记录Timeline)
- 新建线索(含ERP客户关联、手机号验证)
- 添加跟进记录(跟进方式、内容、下次时间)
- 分配负责人(用户选择器,显示真实姓名)
- 线索转经销商(自动创建商机)
- 删除线索(逻辑删除)

## 后端开发

### 数据库表
- crm_lead(线索表)
- crm_lead_follow(线索跟进记录表)
- crm_dealer(经销商表)
- crm_opportunity(商机表)
- crm_opportunity_follow(商机跟进记录表)
- 数据字典初始化

### API接口
- 线索管理:CRUD、详情、跟进、分配、转化
- 商机管理:列表查询
- 用户选择器:员工门户专用API

### 核心功能
- 线索转化自动创建经销商和商机
- 负责人翻译显示真实姓名(修复)
- 手机号前后端双重格式验证(修复)

## 前端开发

### 页面架构改进
- 商机中心:保留原CRM设计风格(Stats + Pipeline)
- 线索中心:独立页面(完整线索管理)
- 左侧菜单:独立菜单项(商机中心、线索中心)

### API模块
- src/api/crm/:线索和商机API类型定义和调用方法
- src/api/user/:用户选择器API

### 样式设计
- 商机中心:100%保持原CRM Pipeline设计风格
- 使用CSS变量系统(var(--radius-lg), var(--shadow-sm)等)
- Pipeline Tab白色圆角设计
- 商机卡片阴影和hover效果
- 头像堆叠显示

## 配置修改

- Gateway路由:添加CRM模块路由配置
- Gateway路由:添加system模块路由配置
- Aside菜单:拆分商机中心和线索中心

## Bug修复

- 修复负责人显示手机号问题(UserNameTranslationImpl返回昵称)
- 修复手机号格式验证缺失(前后端双重验证)
- 修复商机管道设计风格不一致(完整复制原CRM样式)

## 文档

- CRM销售模块详细设计说明书V3.md
- CRM线索转化API契约
- CRM线索转化开发计划
- CRM线索转化测试指引
- CRM线索管理测试指引
- CRM商机管理测试指引
- CRM架构改进报告
- CRM Bug修复报告

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-20 09:46:59 +00:00

940 lines
16 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# CRM销售自动化渠道版执行级详细设计说明书
# 1. 文档说明
## 1.1 文档目标
本文档用于指导CRM销售自动化渠道版系统的
- 数据库设计
- 后端接口开发
- 前端页面开发
- AI能力集成
- 企业微信集成
- 自动化流程配置
- 权限与组织体系建设
本文档属于“开发执行版设计文档”。
---
# 2. 系统总体架构
## 2.1 技术架构建议
| 层级 | 技术建议 |
|---|---|
| 前端Web | Vue3 + Element Plus |
| 移动端 | 企业微信H5 + UniApp |
| 后端 | Java Spring Boot |
| 数据库 | MySQL 8 |
| 缓存 | Redis |
| 消息队列 | RabbitMQ |
| 搜索 | Elasticsearch |
| AI服务 | Python FastAPI |
| 文件存储 | MinIO |
| 工作流 | Flowable |
| BI | FineBI / Superset |
---
# 3. 数据库设计规范
## 3.1 通用字段规范
所有业务表统一包含:
| 字段 | 类型 | 说明 |
|---|---|---|
| id | bigint | 主键 |
| created_by | bigint | 创建人 |
| created_at | datetime | 创建时间 |
| updated_by | bigint | 更新人 |
| updated_at | datetime | 更新时间 |
| deleted | tinyint | 逻辑删除 |
| tenant_id | bigint | 租户ID |
---
# 4. 线索中心模块设计
# 4.1 模块目标
用于管理潜在经销商。
支持:
- 多渠道线索接入
- AI意向识别
- AI风险分析
- 自动分配销售
- 商机转化
---
# 4.2 数据表设计
## 4.2.1 leads线索表
| 字段 | 类型 | 说明 |
|---|---|---|
| id | bigint | 主键 |
| company_name | varchar(200) | 公司名称 |
| contact_name | varchar(100) | 联系人 |
| mobile | varchar(50) | 手机号 |
| wechat | varchar(100) | 微信号 |
| province | varchar(50) | 省 |
| city | varchar(50) | 市 |
| region_id | bigint | 区域ID |
| source_type | varchar(50) | 来源类型 |
| activity_name | varchar(100) | 活动名称 |
| referrer_name | varchar(100) | 推荐人 |
| industry | varchar(100) | 行业 |
| company_scale | varchar(100) | 公司规模 |
| store_count | int | 门店数 |
| intent_level | varchar(20) | AI意向等级 |
| ai_score | decimal(5,2) | AI评分 |
| risk_level | varchar(20) | 风险等级 |
| owner_user_id | bigint | 负责人 |
| lead_status | varchar(50) | 状态 |
| converted_dealer_id | bigint | 转化经销商ID |
---
## 4.2.2 lead_follow_records线索跟进记录
| 字段 | 类型 | 说明 |
|---|---|---|
| id | bigint | 主键 |
| lead_id | bigint | 线索ID |
| follow_type | varchar(50) | 跟进方式 |
| content | text | 跟进内容 |
| ai_summary | text | AI摘要 |
| next_follow_time | datetime | 下次跟进时间 |
| follow_user_id | bigint | 跟进人 |
---
# 4.3 接口设计
## 4.3.1 创建线索
### API
POST /api/leads
### 请求参数
```json
{
"companyName":"XX贸易有限公司",
"contactName":"张三",
"mobile":"13800000000",
"wechat":"zhangsan",
"province":"广东省",
"city":"深圳市",
"industry":"食品",
"storeCount":20
}
```
### 业务逻辑
1. 校验手机号是否重复
2. 调用AI服务分析意向等级
3. 自动生成AI评分
4. 根据区域规则分配销售
5. 创建自动跟进任务
---
## 4.3.2 线索转经销商
POST /api/leads/convert
### 逻辑
1. 创建dealer数据
2. 迁移历史跟进记录
3. 创建初始商机
4. 更新线索状态
---
# 4.4 页面原型说明
## 4.4.1 线索列表页
### 页面布局
```text
-------------------------------------------------
顶部:搜索栏 + 高级筛选
-------------------------------------------------
左侧:区域树
右侧:线索列表
-------------------------------------------------
底部:分页
```
### 筛选项
- 区域
- 来源
- AI意向等级
- 风险等级
- 销售负责人
- 创建时间
### 表格字段
| 字段 |
|---|
| 公司名称 |
| 联系人 |
| 手机 |
| 区域 |
| AI评分 |
| 意向等级 |
| 风险等级 |
| 当前负责人 |
| 跟进状态 |
| 下次跟进时间 |
### 操作按钮
- 查看
- 分配
- 跟进
- 转经销商
- 作废
---
## 4.4.2 AI分析侧边栏
右侧固定展示:
- AI意向评分
- AI风险提示
- 推荐动作
- 推荐销售话术
- 推荐拜访时间
---
# 5. 经销商中心模块设计
# 5.1 数据表设计
## 5.1.1 dealers经销商表
| 字段 | 类型 | 说明 |
|---|---|---|
| id | bigint | 主键 |
| dealer_name | varchar(200) | 经销商名称 |
| dealer_code | varchar(100) | 编码 |
| contact_name | varchar(100) | 联系人 |
| mobile | varchar(50) | 手机 |
| province | varchar(50) | 省 |
| city | varchar(50) | 市 |
| level | varchar(50) | 等级 |
| lifecycle | varchar(50) | 生命周期 |
| signed_at | datetime | 签约时间 |
| store_count | int | 门店数 |
| team_size | int | 团队规模 |
| total_order_amount | decimal(18,2) | 累计订单金额 |
| total_payment_amount | decimal(18,2) | 累计回款金额 |
| activity_score | decimal(5,2) | 活跃评分 |
| risk_score | decimal(5,2) | 风险评分 |
| owner_user_id | bigint | 负责人 |
---
## 5.1.2 dealer_tags经销商标签表
| 字段 | 类型 | 说明 |
|---|---|---|
| id | bigint | 主键 |
| dealer_id | bigint | 经销商ID |
| tag_name | varchar(100) | 标签名称 |
| tag_type | varchar(50) | 标签类型 |
| score | decimal(5,2) | 标签评分 |
---
# 5.2 接口设计
## 5.2.1 获取经销商画像
GET /api/dealers/{id}/profile
### 返回内容
```json
{
"dealerName":"XX贸易",
"activityLevel":"高活跃",
"riskLevel":"低风险",
"growthTrend":"高增长",
"lastVisitTime":"2026-05-10",
"nextVisitTime":"2026-05-20"
}
```
---
# 5.3 页面设计
## 5.3.1 经销商详情页
### 页面布局
```text
顶部:基础信息卡片
-------------------------------------------------
Tab页
1. 基础档案
2. 商机
3. 拜访记录
4. 订单
5. 回款
6. AI画像
7. 会话记录
-------------------------------------------------
右侧AI经营分析面板
```
### AI经营分析面板
显示:
- 活跃度趋势
- 近90天订单趋势
- 流失风险
- 推荐动作
- 竞品风险
---
# 6. 拜访管理模块设计
# 6.1 数据表设计
## 6.1.1 visit_plans拜访计划表
| 字段 | 类型 | 说明 |
|---|---|---|
| id | bigint | 主键 |
| dealer_id | bigint | 经销商ID |
| visit_type | varchar(50) | 拜访类型 |
| planned_time | datetime | 计划时间 |
| visit_user_id | bigint | 销售人员 |
| status | varchar(50) | 状态 |
---
## 6.1.2 visit_records拜访记录表
| 字段 | 类型 | 说明 |
|---|---|---|
| id | bigint | 主键 |
| dealer_id | bigint | 经销商ID |
| visit_plan_id | bigint | 拜访计划ID |
| visit_time | datetime | 拜访时间 |
| participants | varchar(500) | 参与人员 |
| voice_file_url | varchar(500) | 录音文件 |
| ai_summary | text | AI摘要 |
| ai_requirements | text | AI提取需求 |
| ai_risk | text | AI风险 |
| next_action | text | 下一步动作 |
| latitude | decimal(10,6) | 纬度 |
| longitude | decimal(10,6) | 经度 |
| sign_photo_url | varchar(500) | 签到照片 |
---
# 6.2 AI语音处理流程
```text
语音上传
-> ASR语音识别
-> NLP结构化提取
-> AI摘要生成
-> 风险分析
-> 推荐下一步动作
-> 写入CRM
```
---
# 6.3 页面设计
## 6.3.1 移动端拜访页面
### 页面模块
- 地图签到
- 语音录入按钮
- 拍照上传
- AI实时摘要
- 下一步动作建议
### AI辅助区域
自动生成:
- 客户关注点
- 异议问题
- 竞品信息
- 推荐招商话术
---
# 7. 商机管理模块设计
# 7.1 数据表设计
## 7.1.1 opportunities商机表
| 字段 | 类型 | 说明 |
|---|---|---|
| id | bigint | 主键 |
| dealer_id | bigint | 经销商ID |
| opportunity_name | varchar(200) | 商机名称 |
| stage | varchar(50) | 商机阶段 |
| estimated_amount | decimal(18,2) | 预计金额 |
| success_rate | decimal(5,2) | 成交概率 |
| expected_sign_date | date | 预计签约时间 |
| owner_user_id | bigint | 销售负责人 |
| ai_next_stage | varchar(50) | AI建议阶段 |
| ai_probability | decimal(5,2) | AI成交预测 |
---
## 7.1.2 opportunity_stage_logs阶段日志表
| 字段 | 类型 | 说明 |
|---|---|---|
| id | bigint | 主键 |
| opportunity_id | bigint | 商机ID |
| old_stage | varchar(50) | 原阶段 |
| new_stage | varchar(50) | 新阶段 |
| change_reason | text | 变更原因 |
| changed_by | bigint | 变更人 |
---
# 7.2 商机阶段规则
| 阶段 | 条件 |
|---|---|
| 初步接触 | 创建商机 |
| 需求沟通 | 已记录需求 |
| 招商政策沟通 | 已发送政策 |
| 样品测试 | 已寄样 |
| 商务谈判 | 已讨论返点 |
| 签约中 | 已提交合同 |
| 已签约 | 合同生效 |
---
# 7.3 AI自动推进逻辑
## 规则示例
```text
如果AI识别
- 已询价
- 已谈返点
- 已谈库存
则自动建议推进至“商务谈判”阶段。
```
---
# 7.4 页面设计
## 7.4.1 商机看板页
### 视图模式
- Kanban阶段看板
- 列表模式
- 销售漏斗模式
### 看板列
```text
初步接触
需求沟通
招商政策沟通
样品测试
商务谈判
签约中
已签约
```
### 卡片展示
- 经销商名称
- 金额
- AI成交概率
- 最近跟进时间
- 风险提示
---
# 8. 合同管理模块设计
# 8.1 数据表设计
## 8.1.1 contracts合同表
| 字段 | 类型 | 说明 |
|---|---|---|
| id | bigint | 主键 |
| contract_no | varchar(100) | 合同编号 |
| dealer_id | bigint | 经销商ID |
| opportunity_id | bigint | 商机ID |
| contract_amount | decimal(18,2) | 合同金额 |
| sign_date | date | 签约日期 |
| expire_date | date | 到期日期 |
| contract_status | varchar(50) | 状态 |
| approval_status | varchar(50) | 审批状态 |
| sign_file_url | varchar(500) | 合同文件 |
| ai_risk_summary | text | AI风险摘要 |
---
# 8.2 AI合同分析
AI识别
- 高风险条款
- 超标准返点
- 区域冲突
- 超长账期
---
# 8.3 审批流设计
```text
销售提交
-> 区域经理审批
-> 财务审批
-> 法务审批
-> 总部审批
-> 电子签章
```
---
# 9. 订单管理模块设计
# 9.1 数据表设计
## 9.1.1 orders订单表
| 字段 | 类型 | 说明 |
|---|---|---|
| id | bigint | 主键 |
| order_no | varchar(100) | 订单编号 |
| dealer_id | bigint | 经销商ID |
| contract_id | bigint | 合同ID |
| order_amount | decimal(18,2) | 订单金额 |
| order_status | varchar(50) | 订单状态 |
| shipment_status | varchar(50) | 发货状态 |
| payment_status | varchar(50) | 回款状态 |
| logistics_status | varchar(50) | 物流状态 |
| erp_sync_status | varchar(50) | ERP同步状态 |
---
# 9.2 ERP同步逻辑
## 同步内容
- 订单
- 发货
- 库存
- 回款
- 物流
## 同步方式
- 定时拉取
- Webhook回调
- MQ异步同步
---
# 9.3 页面设计
## 9.3.1 订单中心
### 页面布局
```text
顶部:订单筛选
-------------------------------------------------
中部:订单表格
-------------------------------------------------
右侧:订单风险分析
```
### 风险分析
- 延迟发货风险
- 超账期风险
- 异常退货风险
---
# 10. 回款管理模块设计
# 10.1 数据表设计
## 10.1.1 payments回款表
| 字段 | 类型 | 说明 |
|---|---|---|
| id | bigint | 主键 |
| dealer_id | bigint | 经销商ID |
| order_id | bigint | 订单ID |
| payment_amount | decimal(18,2) | 回款金额 |
| payment_date | date | 回款日期 |
| receivable_due_date | date | 应收截止日 |
| overdue_days | int | 超期天数 |
| payment_status | varchar(50) | 状态 |
---
# 10.2 AI预警规则
| 条件 | 预警 |
|---|---|
| 超过30天未回款 | 高风险 |
| 连续2次延迟 | 中风险 |
| 回款金额下降 | 流失风险 |
---
# 11. 企业微信协同模块设计
# 11.1 集成能力
## 企业微信侧边栏
展示:
- 经销商画像
- 最近订单
- 最近拜访
- 商机阶段
- AI风险
---
## 会话存档同步
同步内容:
- 文本
- 图片
- 文件
- 语音
---
# 11.2 数据表设计
## 11.2.1 wecom_chat_records企业微信会话表
| 字段 | 类型 | 说明 |
|---|---|---|
| id | bigint | 主键 |
| external_user_id | varchar(100) | 外部联系人 |
| dealer_id | bigint | 经销商ID |
| sender_id | bigint | 发送人 |
| message_type | varchar(50) | 消息类型 |
| message_content | text | 内容 |
| send_time | datetime | 发送时间 |
| ai_analysis_result | text | AI分析结果 |
---
# 11.3 AI会话分析
识别:
- 采购意向
- 价格异议
- 投诉风险
- 竞品信息
---
# 12. AI分析中心设计
# 12.1 AI标签体系
| 标签类型 | 示例 |
|---|---|
| 活跃标签 | 高频沟通 |
| 风险标签 | 流失风险 |
| 经营标签 | 高增长 |
| 敏感标签 | 价格敏感 |
---
# 12.2 AI预测模型
| 模型 | 输入 |
|---|---|
| 成交预测 | 商机数据 |
| 回款预测 | 订单与历史回款 |
| 流失预测 | 活跃度与订单 |
| 补货预测 | 销量趋势 |
---
# 13. 自动化工作流设计
# 13.1 自动提醒规则
| 规则 | 动作 |
|---|---|
| 7天未跟进 | 创建跟进提醒 |
| 30天未下单 | 创建经营风险提醒 |
| 合同即将到期 | 通知销售与经理 |
| 回款超期 | 通知财务与销售 |
---
# 13.2 自动任务规则
| 条件 | 自动任务 |
|---|---|
| 高意向线索 | 自动创建拜访 |
| 商机推进 | 自动创建回访 |
| 合同签约 | 自动创建首单跟进 |
---
# 14. BI分析设计
# 14.1 BI指标体系
## 销售指标
- 销售额
- 回款率
- 转化率
- 客单价
- 区域增长率
---
## AI经营指标
- 高风险经销商数
- 高潜经销商数
- AI成交预测准确率
- AI流失预测准确率
---
# 14.2 仪表盘设计
## 总部仪表盘
展示:
- 全国销售地图
- 区域排名
- 经销商增长趋势
- AI风险预警
- 商机漏斗
---
## 销售个人仪表盘
展示:
- 今日待跟进
- 今日拜访
- 本月成交
- AI推荐客户
- AI销售建议
---
# 15. 权限与组织设计
# 15.1 RBAC模型
## 数据权限层级
```text
总部
-> 大区
-> 区域
-> 城市
-> 销售
```
---
# 15.2 权限控制点
| 模块 | 控制点 |
|---|---|
| 线索 | 查看/分配/转移 |
| 经销商 | 编辑/归属 |
| 合同 | 审批/金额修改 |
| 回款 | 查看/核销 |
| BI | 区域数据隔离 |
---
# 16. 移动端设计
# 16.1 企业微信H5页面
必须支持:
- 快速拜访
- AI语音录入
- 地图签到
- 拍照上传
- 快速订单查询
- AI风险提醒
---
# 16.2 移动端交互要求
| 要求 | 说明 |
|---|---|
| 单手操作 | 核心按钮底部固定 |
| 弱网容错 | 本地缓存 |
| 快速录入 | 支持语音 |
| 离线能力 | 支持草稿 |
---
# 17. 性能与安全设计
# 17.1 性能目标
| 指标 | 目标 |
|---|---|
| 页面响应 | <2秒 |
| AI分析响应 | <5秒 |
| ERP同步延迟 | <1分钟 |
| 并发支持 | 5000用户 |
---
# 17.2 安全设计
## 安全要求
- HTTPS加密
- JWT鉴权
- 数据权限隔离
- 敏感字段脱敏
- 操作日志审计
- 企业微信身份校验
---
# 18. AI能力优先级实施建议
# P0第一阶段必须上线
- 企业微信集成
- 客户画像
- AI语音拜访
- 会话分析
- 订单查询
---
# P1第二阶段
- AI标签
- AI摘要
- AI意向识别
- 自动提醒
---
# P2第三阶段
- AI Copilot
- AI销售建议
- AI预测
- AI自动推进商机
---
# 19. 项目实施建议
# 第一阶段
建设:
- 基础CRM
- 企业微信
- 拜访管理
- 商机管理
- 订单查询
---
# 第二阶段
建设:
- AI标签
- AI会话分析
- AI语音拜访
- 自动化工作流
---
# 第三阶段
建设:
- AI预测
- AI Copilot
- AI经营分析
- 智能决策
---
# 20. 最终产品定位
系统最终定位:
# “AI驱动的渠道销售经营平台”
区别于传统CRM
传统CRM记录客户
本系统:
- AI驱动增长
- AI驱动招商
- AI驱动销售动作
- AI驱动经营分析
- AI驱动渠道运营