## 新增功能 ### 商机中心 (/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>
1525 lines
36 KiB
Markdown
1525 lines
36 KiB
Markdown
# CRM销售自动化(渠道版)执行级详细设计说明书 V2
|
||
|
||
# 1. 文档说明
|
||
|
||
## 1.1 文档目标
|
||
|
||
本文档用于指导HZHub项目中CRM销售自动化(渠道版)系统的:
|
||
|
||
- 数据库设计(适配 MySQL 8 + MyBatis-Plus)
|
||
- 后端接口开发(适配 hzhub-system 服务)
|
||
- 前端页面开发(适配 hzhub-admin Vben Admin)
|
||
- AI能力集成(适配 LangChain4j + Weaviate)
|
||
- 企业微信集成
|
||
- 自动化流程配置(适配 warm-flow)
|
||
- 权限与组织体系建设(适配 Sa-Token)
|
||
|
||
本文档属于"开发执行版设计文档 V2",针对HZHub项目架构进行定制化适配。
|
||
|
||
---
|
||
|
||
## 1.2 与 V1 版本的主要差异
|
||
|
||
| 方面 | V1 版本 | V2 版本(HZHub 适配) |
|
||
|---|---|---|
|
||
| 前端技术栈 | Vue3 + Element Plus | Vben Admin + Ant Design Vue |
|
||
| 后端框架 | Java Spring Boot(通用) | Spring Boot 3.5.8 + MyBatis-Plus |
|
||
| API路径 | `/api/**` | `/crm/**`(通过 Gateway 路由) |
|
||
| 权限框架 | JWT(自定义) | Sa-Token(已集成) |
|
||
| 工作流引擎 | Flowable | warm-flow 1.8.2(已集成) |
|
||
| AI服务 | Python FastAPI | LangChain4j(Java) |
|
||
| 向量数据库 | 未指定 | Weaviate 1.25.0(已部署) |
|
||
| 搜索引擎 | Elasticsearch | 暂不集成(可选) |
|
||
| 消息队列 | RabbitMQ | 暂不集成(可选) |
|
||
| 文件存储 | MinIO | MinIO(已部署) |
|
||
| 实体设计 | 通用字段规范 | TenantEntity(多租户) |
|
||
|
||
---
|
||
|
||
# 2. 系统总体架构
|
||
|
||
## 2.1 HZHub 集成架构
|
||
|
||
### 服务归属
|
||
|
||
CRM模块归属于 **hzhub-system** 服务(端口 8083),通过 Gateway 路由对外提供服务。
|
||
|
||
```
|
||
┌─────────────────────────────────────────┐
|
||
│ hzhub-admin (管理后台) │
|
||
│ Vue3 + Vben Admin + Ant Design Vue │
|
||
│ Port: 5666 │
|
||
└────────────┬────────────────────────────┘
|
||
│
|
||
┌────────┴────────┐
|
||
│ hzhub-gateway │ (API Gateway, port 8080)
|
||
│ Spring Cloud │ JWT auth, routing
|
||
└───┬──────┬──────┘
|
||
│ │
|
||
┌───▼──────────┐
|
||
│ hzhub-system │ CRM 模块归属服务
|
||
│ 8083 │ (Users, Roles, CRM)
|
||
└─────────────┘
|
||
```
|
||
|
||
### Gateway 路由配置
|
||
|
||
在 `hzhub-gateway/src/main/resources/application.yml` 中添加 CRM 路由:
|
||
|
||
```yaml
|
||
spring:
|
||
cloud:
|
||
gateway:
|
||
routes:
|
||
# CRM 路由(新增)
|
||
- id: hzhub-crm
|
||
uri: lb://hzhub-system
|
||
predicates:
|
||
- Path=/crm/**
|
||
filters:
|
||
- StripPrefix=1 # 去除 /crm 前缀
|
||
```
|
||
|
||
**注意:** CRM 路由需要添加到现有路由列表中,位置在 `hzhub-system` 路由之后。
|
||
|
||
---
|
||
|
||
## 2.2 技术栈适配
|
||
|
||
| 层级 | HZHub 技术栈 | 说明 |
|
||
|---|---|---|
|
||
| 前端Web | Vue3 + Vben Admin + Ant Design Vue | 已在 hzhub-admin 中部署 |
|
||
| 移动端 | 企业微信H5 + UniApp | 集成企业微信侧边栏 |
|
||
| 后端 | Spring Boot 3.5.8 + MyBatis-Plus | hzhub-system 服务 |
|
||
| 数据库 | MySQL 8.0 | 已部署 |
|
||
| 缓存 | Redis 7 | 已部署,用于缓存与限流 |
|
||
| 向量数据库 | Weaviate 1.25.0 | 已部署,用于知识检索 |
|
||
| AI服务 | LangChain4j + LangGraph4j | hzhub-ai 服务集成 |
|
||
| 文件存储 | MinIO | 已部署,用于合同/录音文件存储 |
|
||
| 工作流 | warm-flow 1.8.2 | 已集成在 hzhub-system |
|
||
| 权限 | Sa-Token | 已集成,JWT-based |
|
||
| BI | FineBI / Superset | 可选(暂不集成) |
|
||
|
||
---
|
||
|
||
# 3. 数据库设计规范(HZHub 适配)
|
||
|
||
## 3.1 通用字段规范
|
||
|
||
所有CRM业务表继承 `TenantEntity`,包含以下字段:
|
||
|
||
| 字段 | 类型 | 注解 | 说明 |
|
||
|---|---|---|---|
|
||
| tenant_id | varchar(20) | 无注解(继承) | 租户ID(多租户) |
|
||
| create_dept | bigint | @TableField(fill = INSERT) | 创建部门 |
|
||
| create_by | bigint | @TableField(fill = INSERT) | 创建人 |
|
||
| create_time | datetime | @TableField(fill = INSERT) | 创建时间 |
|
||
| update_by | bigint | @TableField(fill = INSERT_UPDATE) | 更新人 |
|
||
| update_time | datetime | @TableField(fill = INSERT_UPDATE) | 更新时间 |
|
||
|
||
**注意:** 不需要手动添加 `id` 字段,使用 MyBatis-Plus 的 `@TableId` 注解。
|
||
|
||
---
|
||
|
||
## 3.2 Entity 实体类规范
|
||
|
||
### 基类继承
|
||
|
||
```java
|
||
@Data
|
||
@NoArgsConstructor
|
||
@EqualsAndHashCode(callSuper = true)
|
||
@TableName("crm_lead")
|
||
public class CrmLead extends TenantEntity {
|
||
|
||
@TableId(value = "lead_id", type = IdType.ASSIGN_ID)
|
||
private Long leadId;
|
||
|
||
// 业务字段...
|
||
|
||
/**
|
||
* 删除标志(0代表存在 1代表删除)
|
||
*/
|
||
@TableLogic
|
||
private Integer delFlag;
|
||
}
|
||
```
|
||
|
||
### Bo 业务对象
|
||
|
||
```java
|
||
@Data
|
||
@NoArgsConstructor
|
||
@EqualsAndHashCode(callSuper = true)
|
||
@AutoMapper(target = CrmLead.class)
|
||
public class CrmLeadBo extends BaseEntity {
|
||
|
||
private Long leadId;
|
||
|
||
// 业务字段...
|
||
}
|
||
```
|
||
|
||
### Vo 视图对象
|
||
|
||
```java
|
||
@Data
|
||
@AutoMapper(target = CrmLead.class)
|
||
public class CrmLeadVo implements Serializable {
|
||
|
||
@Serial
|
||
private static final long serialVersionUID = 1L;
|
||
|
||
private Long leadId;
|
||
|
||
/**
|
||
* 租户ID(翻译)
|
||
*/
|
||
@Translation(type = TransConstant.TENANT_ID_TO_NAME, mapper = "tenantId")
|
||
private String tenantId;
|
||
|
||
/**
|
||
* 创建人(翻译)
|
||
*/
|
||
@Translation(type = TransConstant.USER_ID_TO_NAME, mapper = "createBy")
|
||
private String createByName;
|
||
|
||
// 业务字段...
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 3.3 Controller 接口规范
|
||
|
||
```java
|
||
@Validated
|
||
@RequiredArgsConstructor
|
||
@RestController
|
||
@RequestMapping("/crm/lead")
|
||
public class CrmLeadController extends BaseController {
|
||
|
||
private final ICrmLeadService leadService;
|
||
|
||
/**
|
||
* 获取线索列表
|
||
*/
|
||
@SaCheckPermission("crm:lead:list")
|
||
@GetMapping("/list")
|
||
public TableDataInfo<CrmLeadVo> list(CrmLeadBo lead, PageQuery pageQuery) {
|
||
return leadService.selectPageLeadList(lead, pageQuery);
|
||
}
|
||
|
||
/**
|
||
* 新增线索
|
||
*/
|
||
@Log(title = "线索管理", businessType = BusinessType.INSERT)
|
||
@SaCheckPermission("crm:lead:add")
|
||
@RepeatSubmit()
|
||
@PostMapping()
|
||
public R<Void> add(@Validated @RequestBody CrmLeadBo lead) {
|
||
return R.ok(leadService.insertLead(lead));
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
# 4. 线索中心模块设计
|
||
|
||
## 4.1 模块目标
|
||
|
||
用于管理潜在经销商,支持:
|
||
|
||
- 多渠道线索接入
|
||
- AI意向识别(LangChain4j)
|
||
- AI风险分析
|
||
- 自动分配销售
|
||
- 商机转化
|
||
|
||
---
|
||
|
||
## 4.2 数据表设计
|
||
|
||
### 4.2.1 crm_lead(线索表)
|
||
|
||
| 字段 | 类型 | 注解 | 说明 |
|
||
|---|---|---|---|
|
||
| lead_id | bigint | @TableId(ASSIGN_ID) | 主键 |
|
||
| company_name | varchar(200) | - | 公司名称 |
|
||
| contact_name | varchar(100) | - | 联系人 |
|
||
| mobile | varchar(50) | - | 手机号 |
|
||
| wechat | varchar(100) | - | 微信号 |
|
||
| province | varchar(50) | - | 省 |
|
||
| city | varchar(50) | - | 市 |
|
||
| region_id | bigint | - | 区域ID(关联 sys_dept) |
|
||
| source_type | varchar(50) | - | 来源类型(字典:crm_lead_source) |
|
||
| activity_name | varchar(100) | - | 活动名称 |
|
||
| referrer_name | varchar(100) | - | 推荐人 |
|
||
| industry | varchar(100) | - | 行业(字典:crm_industry) |
|
||
| company_scale | varchar(100) | - | 公司规模(字典:crm_scale) |
|
||
| store_count | int | - | 门店数 |
|
||
| intent_level | varchar(20) | - | AI意向等级(字典:crm_intent_level) |
|
||
| ai_score | decimal(5,2) | - | AI评分 |
|
||
| risk_level | varchar(20) | - | 风险等级(字典:crm_risk_level) |
|
||
| owner_user_id | bigint | - | 负责人(关联 sys_user) |
|
||
| lead_status | varchar(50) | - | 状态(字典:crm_lead_status) |
|
||
| converted_dealer_id | bigint | - | 转化经销商ID |
|
||
| del_flag | int | @TableLogic | 删除标志 |
|
||
|
||
**继承字段:** tenant_id, create_dept, create_by, create_time, update_by, update_time
|
||
|
||
---
|
||
|
||
### 4.2.2 crm_lead_follow(线索跟进记录)
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|---|---|---|
|
||
| follow_id | bigint | 主键 |
|
||
| lead_id | bigint | 线索ID |
|
||
| follow_type | varchar(50) | 跟进方式(字典:crm_follow_type) |
|
||
| content | text | 跟进内容 |
|
||
| ai_summary | text | AI摘要 |
|
||
| next_follow_time | datetime | 下次跟进时间 |
|
||
| follow_user_id | bigint | 跟进人(关联 sys_user) |
|
||
| del_flag | int | 删除标志 |
|
||
|
||
---
|
||
|
||
## 4.3 接口设计
|
||
|
||
### 4.3.1 创建线索
|
||
|
||
**API:** `POST /crm/lead`
|
||
|
||
**请求参数:**
|
||
|
||
```json
|
||
{
|
||
"companyName": "XX贸易有限公司",
|
||
"contactName": "张三",
|
||
"mobile": "13800000000",
|
||
"wechat": "zhangsan",
|
||
"province": "广东省",
|
||
"city": "深圳市",
|
||
"industry": "食品",
|
||
"storeCount": 20
|
||
}
|
||
```
|
||
|
||
**业务逻辑:**
|
||
|
||
1. 校验手机号是否重复(同租户内)
|
||
2. 调用 LangChain4j AI服务分析意向等级(`hzhub-ai:6039/ai/analyze/intent`)
|
||
3. 自动生成AI评分
|
||
4. 根据区域规则(sys_dept)分配销售(owner_user_id)
|
||
5. 创建自动跟进任务(warm-flow)
|
||
|
||
---
|
||
|
||
### 4.3.2 线索转经销商
|
||
|
||
**API:** `POST /crm/lead/convert`
|
||
|
||
**请求参数:**
|
||
|
||
```json
|
||
{
|
||
"leadId": 12345,
|
||
"dealerName": "XX贸易",
|
||
"dealerCode": "DL20260001"
|
||
}
|
||
```
|
||
|
||
**逻辑:**
|
||
|
||
1. 创建 `crm_dealer` 数据
|
||
2. 迁移历史跟进记录到 `crm_dealer_follow`
|
||
3. 创建初始商机(`crm_opportunity`)
|
||
4. 更新线索状态为"已转化"
|
||
5. 触发 warm-flow 工作流(经销商审批)
|
||
|
||
---
|
||
|
||
## 4.4 前端页面设计(Vben Admin)
|
||
|
||
### 4.4.1 线索列表页
|
||
|
||
**路径:** `apps/web-antd/src/views/crm/lead/index.vue`
|
||
|
||
**页面布局:**
|
||
|
||
```text
|
||
-------------------------------------------------
|
||
顶部:搜索栏 + 高级筛选(Ant Design Form)
|
||
-------------------------------------------------
|
||
左侧:区域树(Ant Design Tree)
|
||
右侧:线索列表(Ant Design Table)
|
||
-------------------------------------------------
|
||
底部:分页(Ant Design Pagination)
|
||
```
|
||
|
||
**筛选项:**
|
||
|
||
- 区域(区域树选择)
|
||
- 来源(字典下拉:crm_lead_source)
|
||
- AI意向等级(字典下拉:crm_intent_level)
|
||
- 风险等级(字典下拉:crm_risk_level)
|
||
- 销售负责人(用户选择器)
|
||
- 创建时间(日期范围)
|
||
|
||
**表格字段:**
|
||
|
||
| 字段 | Ant Design 组件 |
|
||
|---|---|
|
||
| 公司名称 | Tag(高意向标红) |
|
||
| 联系人 | - |
|
||
| 手机 | 脱敏展示 |
|
||
| 区域 | 翻译展示 |
|
||
| AI评分 | Progress(进度条) |
|
||
| 意向等级 | Badge(高/中/低) |
|
||
| 风险等级 | Tag(高风险标红) |
|
||
| 当前负责人 | Avatar(头像) |
|
||
| 跟进状态 | Badge |
|
||
| 下次跟进时间 | DatePicker |
|
||
|
||
**操作按钮:**
|
||
|
||
- 查看(Drawer 侧边栏)
|
||
- 分配(Modal 弹窗)
|
||
- 跟进(Drawer)
|
||
- 转经销商(Modal)
|
||
- 作废(Popconfirm 确认)
|
||
|
||
---
|
||
|
||
### 4.4.2 AI分析侧边栏
|
||
|
||
右侧固定展示(Ant Design Drawer):
|
||
|
||
```text
|
||
┌────────────────────────┐
|
||
│ AI意向评分(Progress) │
|
||
│ AI风险提示(Alert) │
|
||
│ 推荐动作(Steps) │
|
||
│ 推荐销售话术(Collapse)│
|
||
│ 推荐拜访时间(DatePicker)│
|
||
└────────────────────────┘
|
||
```
|
||
|
||
**AI服务调用:** 通过 Gateway 调用 `hzhub-ai:6039/ai/chat/analyze`
|
||
|
||
---
|
||
|
||
# 5. 经销商中心模块设计
|
||
|
||
## 5.1 数据表设计
|
||
|
||
### 5.1.1 crm_dealer(经销商表)
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|---|---|---|
|
||
| dealer_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) | 等级(字典:crm_dealer_level) |
|
||
| lifecycle | varchar(50) | 生命周期(字典:crm_lifecycle) |
|
||
| 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 | 负责人(关联 sys_user) |
|
||
| del_flag | int | 删除标志 |
|
||
|
||
---
|
||
|
||
### 5.1.2 crm_dealer_tag(经销商标签表)
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|---|---|---|
|
||
| tag_id | bigint | 主键 |
|
||
| dealer_id | bigint | 经销商ID |
|
||
| tag_name | varchar(100) | 标签名称 |
|
||
| tag_type | varchar(50) | 标签类型(字典:crm_tag_type) |
|
||
| score | decimal(5,2) | 标签评分 |
|
||
| del_flag | int | 删除标志 |
|
||
|
||
---
|
||
|
||
## 5.2 接口设计
|
||
|
||
### 5.2.1 获取经销商画像
|
||
|
||
**API:** `GET /crm/dealer/{dealerId}/profile`
|
||
|
||
**返回内容:**
|
||
|
||
```json
|
||
{
|
||
"code": 200,
|
||
"data": {
|
||
"dealerName": "XX贸易",
|
||
"activityLevel": "高活跃",
|
||
"riskLevel": "低风险",
|
||
"growthTrend": "高增长",
|
||
"lastVisitTime": "2026-05-10",
|
||
"nextVisitTime": "2026-05-20",
|
||
"aiRecommendActions": [
|
||
"建议本周拜访",
|
||
"关注库存周转"
|
||
]
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 5.3 前端页面设计
|
||
|
||
### 5.3.1 经销商详情页
|
||
|
||
**路径:** `apps/web-antd/src/views/crm/dealer/detail.vue`
|
||
|
||
**页面布局:**
|
||
|
||
```text
|
||
顶部:基础信息卡片(Ant Design Card)
|
||
-------------------------------------------------
|
||
Tab页(Ant Design Tabs):
|
||
1. 基础档案(Descriptions)
|
||
2. 商机(Table + Kanban)
|
||
3. 拜访记录(Timeline)
|
||
4. 订单(Table)
|
||
5. 回款(Table)
|
||
6. AI画像(Progress + Chart)
|
||
7. 会话记录(Timeline)
|
||
-------------------------------------------------
|
||
右侧:AI经营分析面板(Affix 固定)
|
||
```
|
||
|
||
**AI经营分析面板:**
|
||
|
||
使用 Ant Design Charts 展示:
|
||
|
||
- 活跃度趋势(LineChart)
|
||
- 近90天订单趋势(AreaChart)
|
||
- 流失风险(Gauge)
|
||
- 推荐动作(Steps)
|
||
- 竞品风险(Alert)
|
||
|
||
---
|
||
|
||
# 6. 拜访管理模块设计
|
||
|
||
## 6.1 数据表设计
|
||
|
||
### 6.1.1 crm_visit_plan(拜访计划表)
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|---|---|---|
|
||
| plan_id | bigint | 主键 |
|
||
| dealer_id | bigint | 经销商ID |
|
||
| visit_type | varchar(50) | 拜访类型(字典:crm_visit_type) |
|
||
| planned_time | datetime | 计划时间 |
|
||
| visit_user_id | bigint | 销售人员(关联 sys_user) |
|
||
| status | varchar(50) | 状态(字典:crm_visit_plan_status) |
|
||
| del_flag | int | 删除标志 |
|
||
|
||
---
|
||
|
||
### 6.1.2 crm_visit_record(拜访记录表)
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|---|---|---|
|
||
| record_id | bigint | 主键 |
|
||
| dealer_id | bigint | 经销商ID |
|
||
| plan_id | bigint | 拜访计划ID |
|
||
| visit_time | datetime | 拜访时间 |
|
||
| participants | varchar(500) | 参与人员 |
|
||
| voice_file_url | varchar(500) | 录音文件(MinIO) |
|
||
| 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) | 签到照片(MinIO) |
|
||
| del_flag | int | 删除标志 |
|
||
|
||
---
|
||
|
||
## 6.2 AI语音处理流程
|
||
|
||
```text
|
||
语音上传(MinIO)
|
||
-> 调用 hzhub-ai:6039/ai/voice/transcribe
|
||
-> LangChain4j ASR识别
|
||
-> NLP结构化提取
|
||
-> AI摘要生成
|
||
-> 风险分析
|
||
-> 推荐下一步动作
|
||
-> 写入 CRM
|
||
```
|
||
|
||
**技术栈:** LangChain4j + OpenAI Whisper / 本地 ASR 模型
|
||
|
||
---
|
||
|
||
## 6.3 移动端页面设计
|
||
|
||
### 6.3.1 企业微信H5拜访页面
|
||
|
||
**路径:** `hzhub-portal-employee/src/pages/crm/visit.vue`(员工门户)
|
||
|
||
**页面模块(Element Plus):**
|
||
|
||
- 地图签到(腾讯地图)
|
||
- 语音录入按钮(Recorder)
|
||
- 拍照上传(Upload)
|
||
- AI实时摘要(Card)
|
||
- 下一步动作建议(Steps)
|
||
|
||
**AI辅助区域:**
|
||
|
||
自动生成(调用 hzhub-ai):
|
||
|
||
- 客户关注点(Tag)
|
||
- 异议问题(Alert)
|
||
- 竞品信息(Collapse)
|
||
- 推荐招商话术(Collapse)
|
||
|
||
---
|
||
|
||
# 7. 商机管理模块设计
|
||
|
||
## 7.1 数据表设计
|
||
|
||
### 7.1.1 crm_opportunity(商机表)
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|---|---|---|
|
||
| opportunity_id | bigint | 主键 |
|
||
| dealer_id | bigint | 经销商ID |
|
||
| opportunity_name | varchar(200) | 商机名称 |
|
||
| stage | varchar(50) | 商机阶段(字典:crm_opportunity_stage) |
|
||
| estimated_amount | decimal(18,2) | 预计金额 |
|
||
| success_rate | decimal(5,2) | 成交概率 |
|
||
| expected_sign_date | date | 预计签约时间 |
|
||
| owner_user_id | bigint | 销售负责人(关联 sys_user) |
|
||
| ai_next_stage | varchar(50) | AI建议阶段 |
|
||
| ai_probability | decimal(5,2) | AI成交预测 |
|
||
| del_flag | int | 删除标志 |
|
||
|
||
---
|
||
|
||
### 7.1.2 crm_opportunity_stage_log(阶段日志表)
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|---|---|---|
|
||
| log_id | bigint | 主键 |
|
||
| opportunity_id | bigint | 商机ID |
|
||
| old_stage | varchar(50) | 原阶段 |
|
||
| new_stage | varchar(50) | 新阶段 |
|
||
| change_reason | text | 变更原因 |
|
||
| changed_by | bigint | 变更人(关联 sys_user) |
|
||
| change_time | datetime | 变更时间 |
|
||
|
||
---
|
||
|
||
## 7.2 商机阶段规则
|
||
|
||
| 阶段(字典:crm_opportunity_stage) | 条件 |
|
||
|---|---|
|
||
| 初步接触 | 创建商机 |
|
||
| 需求沟通 | 已记录需求 |
|
||
| 招商政策沟通 | 已发送政策 |
|
||
| 样品测试 | 已寄样 |
|
||
| 商务谈判 | 已讨论返点 |
|
||
| 签约中 | 已提交合同 |
|
||
| 已签约 | 合同生效 |
|
||
|
||
---
|
||
|
||
## 7.3 AI自动推进逻辑
|
||
|
||
**规则示例:**
|
||
|
||
```text
|
||
如果AI识别(LangChain4j分析会话记录):
|
||
- 已询价
|
||
- 已谈返点
|
||
- 已谈库存
|
||
|
||
则自动建议推进至"商务谈判"阶段。
|
||
```
|
||
|
||
**实现方式:** 定时任务调用 `hzhub-ai:6039/ai/opportunity/predict`
|
||
|
||
---
|
||
|
||
## 7.4 前端页面设计
|
||
|
||
### 7.4.1 商机看板页
|
||
|
||
**路径:** `apps/web-antd/src/views/crm/opportunity/kanban.vue`
|
||
|
||
**视图模式(Ant Design Segmented):**
|
||
|
||
- Kanban阶段看板
|
||
- 列表模式
|
||
- 销售漏斗模式
|
||
|
||
**看板列(Ant Design Card):**
|
||
|
||
```text
|
||
初步接触
|
||
需求沟通
|
||
招商政策沟通
|
||
样品测试
|
||
商务谈判
|
||
签约中
|
||
已签约
|
||
```
|
||
|
||
**卡片展示:**
|
||
|
||
- 经销商名称
|
||
- 金额(Statistic)
|
||
- AI成交概率(Progress)
|
||
- 最近跟进时间
|
||
- 风险提示(Tag)
|
||
|
||
---
|
||
|
||
# 8. 合同管理模块设计
|
||
|
||
## 8.1 数据表设计
|
||
|
||
### 8.1.1 crm_contract(合同表)
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|---|---|---|
|
||
| contract_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) | 状态(字典:crm_contract_status) |
|
||
| approval_status | varchar(50) | 审批状态(字典:crm_approval_status) |
|
||
| sign_file_url | varchar(500) | 合同文件(MinIO) |
|
||
| ai_risk_summary | text | AI风险摘要 |
|
||
| del_flag | int | 删除标志 |
|
||
|
||
---
|
||
|
||
## 8.2 AI合同分析
|
||
|
||
AI识别(LangChain4j):
|
||
|
||
- 高风险条款
|
||
- 超标准返点
|
||
- 区域冲突
|
||
- 超长账期
|
||
|
||
**实现:** 调用 `hzhub-ai:6039/ai/contract/analyze`
|
||
|
||
---
|
||
|
||
## 8.3 审批流设计(warm-flow)
|
||
|
||
```text
|
||
销售提交
|
||
-> 区域经理审批(warm-flow节点)
|
||
-> 财务审批
|
||
-> 法务审批
|
||
-> 总部审批
|
||
-> 电子签章(可选)
|
||
```
|
||
|
||
**实现:**
|
||
|
||
1. 在 `hzhub-system` 中定义 warm-flow 流程定义(`workflow_definition`)
|
||
2. 合同提交触发流程实例(`workflow_instance`)
|
||
3. 审批节点与 `sys_role` 关联
|
||
|
||
---
|
||
|
||
# 9. 订单管理模块设计
|
||
|
||
## 9.1 数据表设计
|
||
|
||
### 9.1.1 crm_order(订单表)
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|---|---|---|
|
||
| order_id | bigint | 主键 |
|
||
| order_no | varchar(100) | 订单编号 |
|
||
| dealer_id | bigint | 经销商ID |
|
||
| contract_id | bigint | 合同ID |
|
||
| order_amount | decimal(18,2) | 订单金额 |
|
||
| order_status | varchar(50) | 订单状态(字典:crm_order_status) |
|
||
| shipment_status | varchar(50) | 发货状态(字典:crm_shipment_status) |
|
||
| payment_status | varchar(50) | 回款状态(字典:crm_payment_status) |
|
||
| logistics_status | varchar(50) | 物流状态(字典:crm_logistics_status) |
|
||
| erp_sync_status | varchar(50) | ERP同步状态(字典:crm_erp_sync_status) |
|
||
| del_flag | int | 删除标志 |
|
||
|
||
---
|
||
|
||
## 9.2 ERP同步逻辑
|
||
|
||
### 同步内容
|
||
|
||
- 订单数据(从 `hzhub-erp:8082` 拉取)
|
||
- 发货数据
|
||
- 库存数据
|
||
- 回款数据
|
||
- 物流数据
|
||
|
||
### 同步方式
|
||
|
||
1. **定时拉取:** 使用 XXL-Job(hzhub-extend 中已集成)定时任务
|
||
2. **Webhook回调:** ERP 主动推送(可选)
|
||
3. **MQ异步同步:** 暂不集成(可选)
|
||
|
||
**实现:**
|
||
|
||
```java
|
||
@Scheduled(cron = "0 0 2 * * ?") // 每天凌晨2点
|
||
public void syncErpOrders() {
|
||
// 调用 hzhub-erp:8082/erp/order/sync
|
||
// 使用 dynamic-datasource 切换到 erp 数据源
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 9.3 前端页面设计
|
||
|
||
### 9.3.1 订单中心
|
||
|
||
**路径:** `apps/web-antd/src/views/crm/order/index.vue`
|
||
|
||
**页面布局:**
|
||
|
||
```text
|
||
顶部:订单筛选(Form)
|
||
-------------------------------------------------
|
||
中部:订单表格(Table)
|
||
-------------------------------------------------
|
||
右侧:订单风险分析(Affix)
|
||
```
|
||
|
||
**风险分析:**
|
||
|
||
- 延迟发货风险(Alert)
|
||
- 超账期风险(Alert)
|
||
- 异常退货风险(Alert)
|
||
|
||
---
|
||
|
||
# 10. 回款管理模块设计
|
||
|
||
## 10.1 数据表设计
|
||
|
||
### 10.1.1 crm_payment(回款表)
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|---|---|---|
|
||
| payment_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) | 状态(字典:crm_payment_status) |
|
||
| del_flag | int | 删除标志 |
|
||
|
||
---
|
||
|
||
## 10.2 AI预警规则
|
||
|
||
| 条件 | 预警 | Redis 缓存键 |
|
||
|---|---|---|
|
||
| 超过30天未回款 | 高风险 | `crm:payment:risk:{dealer_id}` |
|
||
| 连续2次延迟 | 中风险 | - |
|
||
| 回款金额下降 | 流失风险 | - |
|
||
|
||
**实现:** 定时任务扫描 `crm_payment` 表,更新 Redis 缓存,前端实时查询。
|
||
|
||
---
|
||
|
||
# 11. 企业微信协同模块设计
|
||
|
||
## 11.1 集成能力
|
||
|
||
### 企业微信侧边栏
|
||
|
||
**展示内容:**
|
||
|
||
- 经销商画像(从 `crm_dealer` 查询)
|
||
- 最近订单(从 `crm_order` 查询)
|
||
- 最近拜访(从 `crm_visit_record` 查询)
|
||
- 商机阶段(从 `crm_opportunity` 查询)
|
||
- AI风险(Redis 缓存)
|
||
|
||
**实现:**
|
||
|
||
1. 企业微信应用配置(应用ID、Secret)
|
||
2. 后端接口:`GET /crm/wecom/sidebar/{externalUserId}`
|
||
3. 前端嵌入企业微信侧边栏(H5页面)
|
||
|
||
---
|
||
|
||
### 会话存档同步
|
||
|
||
**同步内容:**
|
||
|
||
- 文本
|
||
- 图片
|
||
- 文件
|
||
- 语音
|
||
|
||
**数据表:** `crm_wecom_chat_record`
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|---|---|---|
|
||
| record_id | bigint | 主键 |
|
||
| external_user_id | varchar(100) | 外部联系人 |
|
||
| dealer_id | bigint | 经销商ID |
|
||
| sender_id | bigint | 发送人(关联 sys_user) |
|
||
| message_type | varchar(50) | 消息类型 |
|
||
| message_content | text | 内容 |
|
||
| send_time | datetime | 发送时间 |
|
||
| ai_analysis_result | text | AI分析结果 |
|
||
| del_flag | int | 删除标志 |
|
||
|
||
---
|
||
|
||
## 11.2 AI会话分析
|
||
|
||
**识别内容:**
|
||
|
||
- 采购意向
|
||
- 价格异议
|
||
- 投诉风险
|
||
- 竞品信息
|
||
|
||
**实现:** 调用 `hzhub-ai:6039/ai/chat/analyze`
|
||
|
||
---
|
||
|
||
# 12. AI分析中心设计
|
||
|
||
## 12.1 AI标签体系
|
||
|
||
| 标签类型(字典:crm_tag_type) | 示例 |
|
||
|---|---|
|
||
| 活跃标签 | 高频沟通 |
|
||
| 风险标签 | 流失风险 |
|
||
| 经营标签 | 高增长 |
|
||
| 敏感标签 | 价格敏感 |
|
||
|
||
---
|
||
|
||
## 12.2 AI预测模型
|
||
|
||
| 模型 | 输入 | 调用服务 |
|
||
|---|---|---|
|
||
| 成交预测 | 商机数据 | `hzhub-ai:6039/ai/opportunity/predict` |
|
||
| 回款预测 | 订单与历史回款 | `hzhub-ai:6039/ai/payment/predict` |
|
||
| 流失预测 | 活跃度与订单 | `hzhub-ai:6039/ai/churn/predict` |
|
||
| 补货预测 | 销量趋势 | `hzhub-ai:6039/ai/replenish/predict` |
|
||
|
||
**向量检索:** 使用 Weaviate 存储历史案例,LangChain4j 进行相似度检索。
|
||
|
||
---
|
||
|
||
# 13. 自动化工作流设计
|
||
|
||
## 13.1 自动提醒规则
|
||
|
||
| 规则 | 动作 | 实现方式 |
|
||
|---|---|---|
|
||
| 7天未跟进 | 创建跟进提醒 | XXL-Job 定时任务 + Redis 缓存 |
|
||
| 30天未下单 | 创建经营风险提醒 | - |
|
||
| 合同即将到期 | 通知销售与经理 | - |
|
||
| 回款超期 | 通知财务与销售 | - |
|
||
|
||
---
|
||
|
||
## 13.2 自动任务规则
|
||
|
||
| 条件 | 自动任务 | warm-flow 流程 |
|
||
|---|---|---|
|
||
| 高意向线索 | 自动创建拜访 | `crm_auto_visit_flow` |
|
||
| 商机推进 | 自动创建回访 | `crm_auto_follow_flow` |
|
||
| 合同签约 | 自动创建首单跟进 | `crm_auto_order_flow` |
|
||
|
||
---
|
||
|
||
# 14. BI分析设计(可选)
|
||
|
||
## 14.1 BI指标体系
|
||
|
||
### 销售指标
|
||
|
||
- 销售额
|
||
- 回款率
|
||
- 转化率
|
||
- 客单价
|
||
- 区域增长率
|
||
|
||
### AI经营指标
|
||
|
||
- 高风险经销商数
|
||
- 高潜经销商数
|
||
- AI成交预测准确率
|
||
- AI流失预测准确率
|
||
|
||
---
|
||
|
||
## 14.2 仪表盘设计(Ant Design Charts)
|
||
|
||
### 总部仪表盘
|
||
|
||
**路径:** `apps/web-antd/src/views/crm/dashboard/index.vue`
|
||
|
||
**展示内容:**
|
||
|
||
- 全国销售地图(ChinaMap)
|
||
- 区域排名(BarChart)
|
||
- 经销商增长趋势(LineChart)
|
||
- AI风险预警(Alert)
|
||
- 商机漏斗(FunnelChart)
|
||
|
||
---
|
||
|
||
### 销售个人仪表盘
|
||
|
||
**展示内容:**
|
||
|
||
- 今日待跟进(Statistic)
|
||
- 今日拜访(Statistic)
|
||
- 本月成交(Statistic)
|
||
- AI推荐客户(List)
|
||
- AI销售建议(Collapse)
|
||
|
||
---
|
||
|
||
# 15. 权限与组织设计(Sa-Token)
|
||
|
||
## 15.1 RBAC模型
|
||
|
||
### 数据权限层级
|
||
|
||
```text
|
||
总部(sys_dept: root)
|
||
-> 大区(sys_dept: level 1)
|
||
-> 区域(sys_dept: level 2)
|
||
-> 城市(sys_dept: level 3)
|
||
-> 销售(sys_user)
|
||
```
|
||
|
||
**实现:** 使用 `sys_dept` 表的树形结构,通过 `DataPermissionHelper` 实现数据隔离。
|
||
|
||
---
|
||
|
||
## 15.2 权限控制点
|
||
|
||
| 模块 | 权限标识 | Sa-Token 注解 |
|
||
|---|---|---|
|
||
| 线索 | crm:lead:list, crm:lead:add, crm:lead:edit, crm:lead:remove | @SaCheckPermission |
|
||
| 经销商 | crm:dealer:list, crm:dealer:edit | - |
|
||
| 合同 | crm:contract:approve, crm:contract:amount-edit | - |
|
||
| 回款 | crm:payment:list, crm:payment:verify | - |
|
||
| BI | crm:bi:view(区域数据隔离) | - |
|
||
|
||
**菜单配置:** 在 `sys_menu` 表中添加 CRM 模块菜单树。
|
||
|
||
---
|
||
|
||
# 16. 移动端设计
|
||
|
||
## 16.1 企业微信H5页面
|
||
|
||
**归属项目:** `hzhub-portal-employee`(员工门户,Element Plus)
|
||
|
||
**必须支持:**
|
||
|
||
- 快速拜访
|
||
- AI语音录入
|
||
- 地图签到(腾讯地图)
|
||
- 拍照上传(MinIO)
|
||
- 快速订单查询
|
||
- AI风险提醒
|
||
|
||
---
|
||
|
||
## 16.2 移动端交互要求
|
||
|
||
| 要求 | 说明 | 技术实现 |
|
||
|---|---|---|
|
||
| 单手操作 | 核心按钮底部固定 | Element Plus Affix |
|
||
| 弱网容错 | 本地缓存 | IndexedDB / LocalStorage |
|
||
| 快速录入 | 支持语音 | Recorder + LangChain4j ASR |
|
||
| 离线能力 | 支持草稿 | IndexedDB |
|
||
|
||
---
|
||
|
||
# 17. 性能与安全设计
|
||
|
||
## 17.1 性能目标
|
||
|
||
| 指标 | 目标 | 实现方式 |
|
||
|---|---|---|
|
||
| 页面响应 | <2秒 | Redis 缓存 + 分页查询 |
|
||
| AI分析响应 | <5秒 | LangChain4j 异步调用 |
|
||
| ERP同步延迟 | <1分钟 | XXL-Job 定时任务 |
|
||
| 并发支持 | 5000用户 | Gateway 限流 + Redis 缓存 |
|
||
|
||
---
|
||
|
||
## 17.2 安全设计(HZHub 已有)
|
||
|
||
### 安全要求
|
||
|
||
- HTTPS加密(Gateway 配置)
|
||
- Sa-Token JWT鉴权(已集成)
|
||
- 数据权限隔离(TenantEntity + DataPermissionHelper)
|
||
- 敏感字段脱敏(@Sensitive 注解)
|
||
- 操作日志审计(@Log 注解)
|
||
- 企业微信身份校验(wecom_userid)
|
||
|
||
---
|
||
|
||
# 18. AI能力优先级实施建议
|
||
|
||
## P0(第一阶段必须上线)
|
||
|
||
- 企业微信集成(侧边栏)
|
||
- 客户画像(基础字段)
|
||
- AI语音拜访(LangChain4j ASR)
|
||
- 会话分析(LangChain4j NLP)
|
||
- 订单查询(ERP同步)
|
||
|
||
---
|
||
|
||
## P1(第二阶段)
|
||
|
||
- AI标签(LangChain4j + Weaviate)
|
||
- AI摘要(LangChain4j)
|
||
- AI意向识别
|
||
- 自动提醒(XXL-Job)
|
||
|
||
---
|
||
|
||
## P2(第三阶段)
|
||
|
||
- AI Copilot(LangGraph4j)
|
||
- AI销售建议
|
||
- AI预测模型
|
||
- AI自动推进商机
|
||
|
||
---
|
||
|
||
# 19. 项目实施计划
|
||
|
||
## 第一阶段(1-2个月)
|
||
|
||
**建设内容:**
|
||
|
||
- 基础CRM(线索、经销商、商机)
|
||
- 企业微信侧边栏集成
|
||
- 拜访管理(移动端)
|
||
- warm-flow 审批流程
|
||
- 订单查询(ERP同步)
|
||
|
||
**技术栈:**
|
||
|
||
- 后端:Spring Boot + MyBatis-Plus + Sa-Token
|
||
- 前端:Vben Admin + Ant Design Vue
|
||
- 移动端:Element Plus + 企业微信H5
|
||
- 工作流:warm-flow
|
||
|
||
---
|
||
|
||
## 第二阶段(2-3个月)
|
||
|
||
**建设内容:**
|
||
|
||
- AI标签体系(Weaviate)
|
||
- AI会话分析(LangChain4j)
|
||
- AI语音拜访(ASR + NLP)
|
||
- 自动化工作流(XXL-Job)
|
||
- 合同管理
|
||
|
||
**技术栈:**
|
||
|
||
- AI:LangChain4j + hzhub-ai 服务
|
||
- 向量:Weaviate
|
||
- 定时任务:XXL-Job
|
||
|
||
---
|
||
|
||
## 第三阶段(3-4个月)
|
||
|
||
**建设内容:**
|
||
|
||
- AI预测模型(成交预测、流失预测)
|
||
- AI Copilot(LangGraph4j)
|
||
- AI经营分析面板
|
||
- 智能决策支持
|
||
- BI仪表盘
|
||
|
||
**技术栈:**
|
||
|
||
- AI:LangGraph4j + hzhub-ai 服务
|
||
- 图表:Ant Design Charts
|
||
|
||
---
|
||
|
||
# 20. 数据字典定义
|
||
|
||
## 20.1 线索相关字典
|
||
|
||
### crm_lead_source(线索来源)
|
||
|
||
| 字典值 | 字典标签 |
|
||
|---|---|
|
||
| activity | 活动 |
|
||
| referral | 推荐 |
|
||
| website | 网站 |
|
||
| exhibition | 展会 |
|
||
|
||
### crm_lead_status(线索状态)
|
||
|
||
| 字典值 | 字典标签 |
|
||
|---|---|
|
||
| new | 新线索 |
|
||
| following | 跟进中 |
|
||
| converted | 已转化 |
|
||
| invalid | 已作废 |
|
||
|
||
### crm_intent_level(AI意向等级)
|
||
|
||
| 字典值 | 字典标签 |
|
||
|---|---|
|
||
| high | 高意向 |
|
||
| medium | 中意向 |
|
||
| low | 低意向 |
|
||
|
||
---
|
||
|
||
## 20.2 经销商相关字典
|
||
|
||
### crm_dealer_level(经销商等级)
|
||
|
||
| 字典值 | 字典标签 |
|
||
|---|---|
|
||
| A | A级经销商 |
|
||
| B | B级经销商 |
|
||
| C | C级经销商 |
|
||
|
||
### crm_lifecycle(生命周期)
|
||
|
||
| 字典值 | 字典标签 |
|
||
|---|---|
|
||
| active | 活跃期 |
|
||
| stable | 稳定期 |
|
||
| decline | 衰退期 |
|
||
| churn | 流失期 |
|
||
|
||
---
|
||
|
||
## 20.3 商机相关字典
|
||
|
||
### crm_opportunity_stage(商机阶段)
|
||
|
||
| 字典值 | 字典标签 |
|
||
|---|---|
|
||
| initial_contact | 初步接触 |
|
||
| requirement | 需求沟通 |
|
||
| policy | 招商政策沟通 |
|
||
| sample | 样品测试 |
|
||
| negotiation | 商务谈判 |
|
||
| signing | 签约中 |
|
||
| signed | 已签约 |
|
||
|
||
---
|
||
|
||
## 20.4 审批状态字典
|
||
|
||
### crm_approval_status(审批状态)
|
||
|
||
| 字典值 | 字典标签 |
|
||
|---|---|
|
||
| pending | 待审批 |
|
||
| approved | 已审批 |
|
||
| rejected | 已拒绝 |
|
||
|
||
---
|
||
|
||
# 21. 最终产品定位
|
||
|
||
系统最终定位:
|
||
|
||
# "AI驱动的渠道销售经营平台"
|
||
|
||
区别于传统CRM:
|
||
|
||
传统CRM:记录客户
|
||
|
||
本系统:
|
||
|
||
- AI驱动增长(LangChain4j + Weaviate)
|
||
- AI驱动招商(意向识别 + 风险分析)
|
||
- AI驱动销售动作(语音拜访 + 会话分析)
|
||
- AI驱动经营分析(预测模型 + Copilot)
|
||
- AI驱动渠道运营(自动化工作流)
|
||
|
||
---
|
||
|
||
# 22. 与 HZHub 项目的集成要点
|
||
|
||
## 22.1 Gateway 路由配置
|
||
|
||
**位置:** `hzhub-gateway/src/main/resources/application.yml`
|
||
|
||
```yaml
|
||
spring:
|
||
cloud:
|
||
gateway:
|
||
routes:
|
||
# CRM 路由(添加到现有路由列表)
|
||
- id: hzhub-crm
|
||
uri: lb://hzhub-system
|
||
predicates:
|
||
- Path=/crm/**
|
||
filters:
|
||
- StripPrefix=1
|
||
```
|
||
|
||
---
|
||
|
||
## 22.2 hzhub-system 依赖
|
||
|
||
**位置:** `hzhub-system/pom.xml`
|
||
|
||
```xml
|
||
<dependencies>
|
||
<!-- 已有依赖 -->
|
||
<dependency>
|
||
<groupId>org.hzhub</groupId>
|
||
<artifactId>hzhub-common-core</artifactId>
|
||
</dependency>
|
||
|
||
<!-- 新增 CRM 依赖(可选) -->
|
||
<dependency>
|
||
<groupId>org.hzhub</groupId>
|
||
<artifactId>hzhub-common-chat</artifactId>
|
||
<version>${project.version}</version>
|
||
</dependency>
|
||
</dependencies>
|
||
```
|
||
|
||
---
|
||
|
||
## 22.3 前端路由配置
|
||
|
||
**位置:** `hzhub-admin/apps/web-antd/src/router/routes/modules/crm.ts`
|
||
|
||
```typescript
|
||
export default {
|
||
path: '/crm',
|
||
name: 'CRM',
|
||
component: Layout,
|
||
redirect: '/crm/dashboard',
|
||
meta: {
|
||
title: 'CRM管理',
|
||
icon: 'ant-design:team-outlined',
|
||
},
|
||
children: [
|
||
{
|
||
path: 'dashboard',
|
||
name: 'CrmDashboard',
|
||
component: () => import('@/views/crm/dashboard/index.vue'),
|
||
meta: { title: 'CRM仪表盘' },
|
||
},
|
||
{
|
||
path: 'lead',
|
||
name: 'CrmLead',
|
||
component: () => import('@/views/crm/lead/index.vue'),
|
||
meta: { title: '线索管理' },
|
||
},
|
||
// ...
|
||
],
|
||
};
|
||
```
|
||
|
||
---
|
||
|
||
## 22.4 菜单配置(sys_menu)
|
||
|
||
在 `sys_menu` 表中添加 CRM 模块菜单树:
|
||
|
||
```sql
|
||
-- CRM 模块根菜单
|
||
INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, menu_type, visible, status, perms, icon, create_by, create_time)
|
||
VALUES (5000, 'CRM管理', 0, 5, '/crm', NULL, 'M', '0', '0', '', 'ant-design:team-outlined', 1, NOW());
|
||
|
||
-- 线索管理菜单
|
||
INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, menu_type, visible, status, perms, icon, create_by, create_time)
|
||
VALUES (5001, '线索管理', 5000, 1, 'lead', 'crm/lead/index', 'C', '0', '0', 'crm:lead:list', 'ant-design:user-outlined', 1, NOW());
|
||
|
||
-- ... 其他菜单
|
||
```
|
||
|
||
---
|
||
|
||
# 23. 开发规范建议
|
||
|
||
## 23.1 包结构
|
||
|
||
```
|
||
hzhub-system/src/main/java/org/hzhub/
|
||
├── crm/
|
||
│ ├── controller/ # CRM 控制器
|
||
│ │ ├── CrmLeadController.java
|
||
│ │ ├── CrmDealerController.java
|
||
│ │ └── ...
|
||
│ ├── domain/ # 实体类
|
||
│ │ ├── CrmLead.java
|
||
│ │ ├── bo/
|
||
│ │ │ ├── CrmLeadBo.java
|
||
│ │ └── vo/
|
||
│ │ │ ├── CrmLeadVo.java
|
||
│ ├── service/ # 服务接口
|
||
│ │ ├── ICrmLeadService.java
|
||
│ │ └── impl/
|
||
│ │ │ ├── CrmLeadServiceImpl.java
|
||
│ └── mapper/ # MyBatis Mapper
|
||
│ │ ├── CrmLeadMapper.java
|
||
```
|
||
|
||
---
|
||
|
||
## 23.2 前端目录结构
|
||
|
||
```
|
||
hzhub-admin/apps/web-antd/src/
|
||
├── api/
|
||
│ └── crm/
|
||
│ │ ├── lead.ts # 线索 API
|
||
│ │ ├── dealer.ts # 经销商 API
|
||
│ │ └── types.ts # 类型定义
|
||
├── views/
|
||
│ └── crm/
|
||
│ │ ├── dashboard/ # CRM 仪表盘
|
||
│ │ ├── lead/ # 线索管理
|
||
│ │ ├── dealer/ # 经销商管理
|
||
│ │ ├── opportunity/ # 商机管理
|
||
│ │ └── ...
|
||
```
|
||
|
||
---
|
||
|
||
# 24. 部署建议
|
||
|
||
## 24.1 Docker Compose 配置
|
||
|
||
CRM 模块不需要新增容器,使用现有 `hzhub-system` 容器。
|
||
|
||
**位置:** `hzhub-deploy/docker-compose.yml`
|
||
|
||
```yaml
|
||
services:
|
||
# 现有服务(无需修改)
|
||
hzhub-system:
|
||
build: ../hzhub-system
|
||
container_name: hzhub-system
|
||
ports:
|
||
- "8083:8083"
|
||
environment:
|
||
- SPRING_PROFILES_ACTIVE=prod
|
||
depends_on:
|
||
- mysql
|
||
- redis
|
||
networks:
|
||
- hzhub-network
|
||
```
|
||
|
||
---
|
||
|
||
## 24.2 数据库初始化
|
||
|
||
**SQL 文件:** `hzhub-system/src/main/resources/db/crm_init.sql`
|
||
|
||
包含:
|
||
|
||
- CRM 表结构(crm_lead, crm_dealer, ...)
|
||
- 数据字典(crm_lead_source, crm_opportunity_stage, ...)
|
||
- 菜单配置(sys_menu)
|
||
|
||
---
|
||
|
||
# 25. 后续优化方向
|
||
|
||
## 25.1 性能优化
|
||
|
||
- Redis 缓存经销商画像、AI评分
|
||
- Weaviate 向量检索优化(相似案例推荐)
|
||
- MyBatis-Plus 分页优化(避免全表扫描)
|
||
|
||
## 25.2 AI能力扩展
|
||
|
||
- LangGraph4j 集成(复杂 AI 工作流)
|
||
- 多模型支持(OpenAI、Claude、本地模型)
|
||
- AI Copilot 智能助手
|
||
|
||
## 25.3 移动端增强
|
||
|
||
- UniApp 跨平台支持(iOS/Android)
|
||
- 离线数据同步(IndexedDB)
|
||
- 企业微信深度集成
|
||
|
||
---
|
||
|
||
# 附录:技术栈对比表
|
||
|
||
| 功能模块 | V1 版本技术栈 | V2 版本(HZHub)技术栈 | 优势 |
|
||
|---|---|---|---|
|
||
| 前端框架 | Vue3 + Element Plus | Vben Admin + Ant Design Vue | 企业级UI,更丰富的组件 |
|
||
| 后端框架 | Spring Boot(通用) | Spring Boot 3.5.8 + MyBatis-Plus | 更强的ORM能力,多租户支持 |
|
||
| 权限框架 | JWT(自定义) | Sa-Token | 已集成,成熟稳定 |
|
||
| 工作流引擎 | Flowable | warm-flow 1.8.2 | 已集成,轻量级 |
|
||
| AI服务 | Python FastAPI | LangChain4j(Java) | 与后端同语言,更易集成 |
|
||
| 向量数据库 | 未指定 | Weaviate 1.25.0 | 已部署,用于知识检索 |
|
||
| 文件存储 | MinIO | MinIO(已部署) | 无需额外部署 |
|
||
| 数据权限 | 自定义实现 | TenantEntity + DataPermissionHelper | 已有实现,支持多租户 |
|
||
|
||
---
|
||
|
||
# 总结
|
||
|
||
本文档将 CRM 销售自动化系统完全适配到 HZHub 项目架构中,充分利用项目已有的基础设施(Gateway、Sa-Token、warm-flow、MinIO、Weaviate、LangChain4j),避免重复开发,提高实施效率。
|
||
|
||
核心改动:
|
||
1. 服务归属:CRM 模块归属于 `hzhub-system` 服务
|
||
2. API路径:统一使用 `/crm/**`,通过 Gateway 路由
|
||
3. 数据模型:继承 `TenantEntity`,支持多租户与自动填充
|
||
4. 前端UI:使用 Vben Admin + Ant Design Vue
|
||
5. AI集成:调用 `hzhub-ai` 服务的 LangChain4j API
|
||
6. 权限控制:使用 Sa-Token + 数据权限隔离
|
||
|
||
后续实施时,严格按照本文档执行,确保与 HZHub 项目架构的一致性。 |