Files
hzhub/docs/CRM销售模块详细设计说明书V2.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

36 KiB
Raw Blame History

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 LangChain4jJava
向量数据库 未指定 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 路由:

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 实体类规范

基类继承

@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 业务对象

@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = CrmLead.class)
public class CrmLeadBo extends BaseEntity {

    private Long leadId;

    // 业务字段...
}

Vo 视图对象

@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 接口规范

@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

请求参数:

{
  "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

请求参数:

{
  "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

页面布局:

-------------------------------------------------
顶部:搜索栏 + 高级筛选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

┌────────────────────────┐
│ 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

返回内容:

{
  "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

页面布局:

顶部基础信息卡片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语音处理流程

语音上传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自动推进逻辑

规则示例:

如果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

初步接触
需求沟通
招商政策沟通
样品测试
商务谈判
签约中
已签约

卡片展示:

  • 经销商名称
  • 金额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

销售提交
-> 区域经理审批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-Jobhzhub-extend 中已集成)定时任务
  2. Webhook回调 ERP 主动推送(可选)
  3. MQ异步同步 暂不集成(可选)

实现:

@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

页面布局:

顶部订单筛选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模型

数据权限层级

总部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 CopilotLangGraph4j
  • 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
  • 合同管理

技术栈:

  • AILangChain4j + hzhub-ai 服务
  • 向量Weaviate
  • 定时任务XXL-Job

第三阶段3-4个月

建设内容:

  • AI预测模型成交预测、流失预测
  • AI CopilotLangGraph4j
  • AI经营分析面板
  • 智能决策支持
  • BI仪表盘

技术栈:

  • AILangGraph4j + hzhub-ai 服务
  • 图表Ant Design Charts

20. 数据字典定义

20.1 线索相关字典

crm_lead_source线索来源

字典值 字典标签
activity 活动
referral 推荐
website 网站
exhibition 展会

crm_lead_status线索状态

字典值 字典标签
new 新线索
following 跟进中
converted 已转化
invalid 已作废

crm_intent_levelAI意向等级

字典值 字典标签
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

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

<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

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 模块菜单树:

-- 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

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 LangChain4jJava 与后端同语言,更易集成
向量数据库 未指定 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 项目架构的一致性。