Files
hzhub/docs/crm-testing-guide.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

11 KiB
Raw Blame History

CRM线索中心模块 - 开发完成与测试指引

开发完成状态

后端开发hzhub-system- 已完成

创建文件统计

  • 数据库SQL1个
  • Entity实体类2个
  • Bo业务对象2个
  • Vo视图对象2个
  • Mapper接口2个
  • Mapper XML2个
  • Service接口与实现4个
  • Controller控制器2个
  • ERP集成服务1个
  • RestTemplate配置1个
  • application.yml配置1个修改

总计19个代码文件 + 1个SQL文件 + 1个配置修改


前端开发hzhub-portal-employee- 已完成

创建文件统计

  • API类型定义1个types.ts
  • API调用方法1个index.ts
  • 页面扩展1个/crm/index.vue从107行扩展到779行

总计2个API文件 + 1个页面扩展


Gateway配置 - 已完成

路由配置

  • 已添加 /crm/** 路由到 hzhub-system 服务
  • 配置文件:hzhub-gateway/src/main/resources/application.yml

🚀 启动测试步骤

步骤1数据库初始化

执行SQL脚本

# 登录MySQL
mysql -h localhost -u root -p

# 执行初始化SQL
source /data/hzhub/hzhub-system/src/main/resources/db/crm_lead_init.sql;

# 检查表创建和数据字典
show tables like 'crm_%';
select * from sys_dict_type where dict_type like 'crm_%';

SQL文件内容

  • 创建 crm_lead 表(线索表)
  • 创建 crm_lead_follow 表(跟进记录表)
  • 初始化5个数据字典
    • crm_lead_source线索来源
    • crm_lead_status线索状态
    • crm_intent_levelAI意向等级
    • crm_risk_level风险等级
    • crm_follow_type跟进方式

步骤2启动后端服务

启动顺序(按依赖关系):

1. 启动基础设施

cd hzhub-deploy
docker-compose up -d mysql redis weaviate

# 检查服务状态
docker-compose ps

2. 启动 hzhub-ai可选第一阶段不需要AI功能

cd hzhub-ai/hzhub-admin
mvn spring-boot:run -Dspring-boot.run.profiles=dev

注意第一阶段测试不需要启动AI服务AI功能在第二阶段实现。

3. 启动 hzhub-system必须

cd hzhub-system
mvn spring-boot:run -Dspring-boot.run.profiles=dev

验证

4. 启动 hzhub-erp可选测试ERP关联功能

cd hzhub-erp
mvn spring-boot:run -Dspring-boot.run.profiles=dev

注意如果要测试ERP客户关联功能需要启动ERP服务。

5. 启动 hzhub-gateway必须

cd hzhub-gateway
mvn spring-boot:run -Dspring-boot.run.profiles=dev

验证


步骤3启动前端服务

cd hzhub-portal-employee
pnpm install  # 如果没有安装依赖
pnpm dev

访问http://localhost:5137

验证

  • 登录员工门户
  • 导航到"销售CRM"页面
  • 确认页面正常加载

🧪 功能测试清单

测试1Tab切换功能

测试步骤

  1. 登录员工门户:http://localhost:5137
  2. 点击左侧菜单"销售CRM"
  3. 确认默认显示"商机管道"Tab
  4. 点击"线索管理"Tab
  5. 确认线索列表自动加载

预期结果

  • Tab切换流畅无卡顿
  • 切换到"线索管理"时显示空列表或现有线索数据

测试2新建线索功能

测试步骤

  1. 在"线索管理"Tab点击"新建线索"按钮
  2. 填写必填字段:
    • 公司名称:测试贸易有限公司
    • 联系人:张三
    • 手机号13800138000
  3. 选择来源类型:活动
  4. 填写活动名称:春季招商会
  5. 点击"创建线索"

预期结果

  • 显示"创建成功"提示
  • 线索列表自动刷新,显示新创建的线索
  • 手机号脱敏显示为138****8000

后端验证

select * from crm_lead order by create_time desc limit 1;

测试3ERP客户关联功能需要启动ERP服务

测试步骤

  1. 新建线索时,不填写基础信息
  2. 填写ERP客户编码C001需要ERP中存在的客户编码
  3. 点击"创建线索"

预期结果

  • 后端自动从ERP拉取客户信息
  • 线索列表显示的公司名称、联系人、手机号来自ERP
  • ERP编码显示为蓝色链接

后端验证

  • 查看后端日志确认调用ERP APIGET /erp/dynamic/v1/customer/detail?customerCode=C001

测试4线索详情查看

测试步骤

  1. 在线索列表中,点击某个线索的"详情"按钮
  2. 查看详情Drawer展示
  3. 确认字段完整显示

预期结果

  • Drawer右侧打开宽度50%
  • 公司名称、联系人、手机号完整显示(未脱敏)
  • AI意向评分显示进度条初始可能为空第二阶段AI分析后填充
  • 风险等级显示标签
  • ERP编码显示链接如果有

测试5线索跟进功能

测试步骤

  1. 在线索列表中,点击某个线索的"跟进"按钮
  2. 选择跟进方式:电话
  3. 输入跟进内容:与客户沟通了合作意向,客户对产品感兴趣
  4. 选择下次跟进时间:明天
  5. 点击"保存跟进"

预期结果

  • 显示"跟进成功"提示
  • Drawer关闭
  • 线索列表刷新,"下次跟进时间"列更新

详情验证

  1. 打开线索详情Drawer
  2. 查看跟进记录Timeline
  3. 确认最新跟进记录显示在最上方
  4. AI摘要字段可能为空第二阶段实现

后端验证

select * from crm_lead_follow where lead_id = {线索ID} order by create_time desc;

测试6线索筛选功能

测试步骤

  1. 在"线索管理"Tab的筛选栏
  2. 输入关键词:测试
  3. 选择AI意向等级高意向
  4. 选择线索状态:跟进中
  5. 点击"搜索"

预期结果

  • 线索列表只显示符合条件的记录
  • 分页总数更新
  • 清空筛选条件后,列表恢复完整显示

测试7线索分配功能

测试步骤

  1. 在线索列表中,点击某个线索的"分配"按钮暂未在UI显示需要后端接口测试
  2. 使用API工具如Postman测试
    PUT http://localhost:8080/crm/lead/assign
    Headers: Authorization: Bearer {token}
    Body: {
      "leadId": 1,
      "ownerUserId": 12345
    }
    

预期结果

  • 后端返回:{"code":200,"msg":"分配成功"}
  • 线索负责人更新为指定用户

测试8线索删除功能

测试步骤

  1. 在线索列表中,点击某个线索的"删除"按钮暂未在UI显示需要后端接口测试
  2. 使用API工具测试
    DELETE http://localhost:8080/crm/lead/1
    Headers: Authorization: Bearer {token}
    

预期结果

  • 后端返回:{"code":200,"msg":"删除成功"}
  • 线索从列表消失(逻辑删除)

后端验证

select * from crm_lead where lead_id = 1;  -- del_flag = 1

🔧 配置检查清单

1. 数据库配置

检查MySQL连接

mysql -h localhost -u root -p -e "show databases like 'hzhub';"

检查CRM表创建

use hzhub;
show tables like 'crm_%';
desc crm_lead;
desc crm_lead_follow;

2. 数据字典配置

检查字典类型

select dict_type, dict_name from sys_dict_type where dict_type like 'crm_%';

预期结果

  • crm_lead_source - 线索来源
  • crm_lead_status - 线索状态
  • crm_intent_level - AI意向等级
  • crm_risk_level - 风险等级
  • crm_follow_type - 跟进方式

3. Gateway路由配置

检查路由配置

cat hzhub-gateway/src/main/resources/application.yml | grep -A 10 "hzhub-crm"

预期结果

- id: hzhub-crm
  uri: http://${SYSTEM_HOST:localhost}:${SYSTEM_PORT:8083}
  predicates:
    - Path=/crm/**
  filters:
    - StripPrefix=1

4. ERP服务配置

检查ERP配置

cat hzhub-system/src/main/resources/application.yml | grep "erp.base-url"

预期结果

erp:
  base-url: ${ERP_BASE_URL:http://localhost:8082}

🐛 常见问题排查

问题1线索列表加载失败

排查步骤

  1. 检查hzhub-system服务是否启动
  2. 检查Gateway路由配置
  3. 检查数据库表是否创建
  4. 查看浏览器Console错误日志
  5. 查看后端日志:tail -f hzhub-system/logs/hzhub-system.log

问题2新建线索失败

排查步骤

  1. 检查数据库连接是否正常
  2. 检查数据字典是否初始化
  3. 检查必填字段是否填写
  4. 查看后端日志中的错误信息

问题3ERP客户关联失败

排查步骤

  1. 检查hzhub-erp服务是否启动
  2. 检查ERP服务健康http://localhost:8082/erp/test/health
  3. 检查customerCode是否在ERP中存在
  4. 查看hzhub-system日志中的ERP调用记录

问题4Gateway路由失败

排查步骤

  1. 检查Gateway服务是否启动
  2. 检查Gateway日志tail -f hzhub-gateway/logs/hzhub-gateway.log
  3. 确认路由配置顺序CRM路由在hzhub-ai-workflow之前
  4. 测试Gateway健康http://localhost:8080/actuator/health

📊 性能测试建议

API响应时间测试

使用Postman或curl测试

# 线索列表查询
curl -w "\nTime: %{time_total}s\n" \
  -H "Authorization: Bearer {token}" \
  "http://localhost:8080/crm/lead/list?pageNum=1&pageSize=10"

# 线索详情查询
curl -w "\nTime: %{time_total}s\n" \
  -H "Authorization: Bearer {token}" \
  "http://localhost:8080/crm/lead/1"

预期响应时间

  • 列表查询:< 200ms
  • 详情查询:< 100ms
  • 新增线索:< 300ms含ERP调用

🎯 第二阶段功能预告

待实现功能

  1. AI意向分析

    • 调用hzhub-ai服务分析线索意向
    • 自动生成AI评分
  2. AI跟进摘要

    • 使用LangChain4j生成跟进摘要
    • 自动提取关键信息
  3. 线索转经销商

    • 完整的转化流程UI
    • 创建经销商数据
  4. 用户选择器

    • 分配线索时使用真实的用户选择组件
  5. 企业微信集成

    • 移动端H5页面
    • 企业微信侧边栏

📝 测试报告模板

测试日期{填写日期}

测试人员{填写姓名}

测试环境

  • MySQL版本8.0.x
  • Redis版本7.x
  • Node版本22.x
  • JDK版本17

测试结果

测试项 结果 备注
Tab切换
新建线索
ERP关联
线索详情
线索跟进
线索筛选
线索分配 /
线索删除 /

问题记录

  1. {问题描述}
  2. {问题描述}

完成确认

请按照以上步骤进行测试,完成后告知测试结果,以便继续第二阶段开发!