Files
ccdi/doc/test-checklist-intermediary-import-failure-view.md
wkc 5ec5913759 fix: 修复中介导入成功条数计算错误
问题:
- 导入成功条数显示为负数
- 原因:成功数量计算使用 validRecords.size() - failures.size()
- 但没有使用实际的数据库操作返回值

修复:
- saveBatchWithUpsert 和 saveBatch 方法现在返回 int
- 累加实际的数据库影响行数
- 使用 actualSuccessCount 变量跟踪真实成功数量

影响范围:
- CcdiIntermediaryPersonImportServiceImpl
- CcdiIntermediaryEntityImportServiceImpl
2026-02-08 17:18:18 +08:00

10 KiB

中介库导入失败记录查看功能 - 测试清单

测试环境

  • 前端: Vue 2.6.12 + Element UI
  • 后端: Spring Boot 3.5.8
  • 测试数据目录: doc/test-data/purchase_transaction/

测试前准备

1. 准备测试数据

准备包含错误数据的Excel文件,用于测试导入失败场景:

个人中介测试数据应包含的错误类型:

  • 缺少必填字段(姓名、证件号)
  • 证件号格式错误
  • 手机号格式错误
  • 重复数据(唯一键冲突)

实体中介测试数据应包含的错误类型:

  • 缺少必填字段(机构名称、统一社会信用代码)
  • 统一社会信用代码格式错误
  • 重复数据(唯一键冲突)

2. 清理环境

打开浏览器开发者工具 → Application → Local Storage,清除以下key:

  • intermediary_person_import_last_task
  • intermediary_entity_import_last_task

功能测试清单

测试1: 个人中介导入失败记录查看

步骤

  1. 访问中介库管理页面
  2. 点击"导入"按钮
  3. 选择"个人中介"导入类型
  4. 上传包含错误数据的个人中介Excel文件
  5. 等待导入完成(观察通知消息)
  6. 验证"查看个人导入失败记录"按钮是否显示
  7. 点击按钮查看失败记录

预期结果

  • 导入完成后显示通知:"成功X条,失败Y条"
  • 工具栏显示"查看个人导入失败记录"按钮(黄色警告样式)
  • 按钮tooltip显示上次导入时间
  • 点击按钮打开对话框
  • 对话框标题:"个人中介导入失败记录"
  • 顶部显示统计信息:"导入时间: XXX | 总数: X条 | 成功: X条 | 失败: X条"
  • 表格显示失败记录,包含以下列:
    • 姓名
    • 证件号码
    • 人员类型
    • 性别
    • 手机号码
    • 所在公司
    • 失败原因(最小宽度200px,溢出显示tooltip)
  • 如果失败记录超过10条,分页组件正常显示

测试2: 实体中介导入失败记录查看

步骤

  1. 访问中介库管理页面
  2. 点击"导入"按钮
  3. 选择"实体中介"导入类型
  4. 上传包含错误数据的实体中介Excel文件
  5. 等待导入完成(观察通知消息)
  6. 验证"查看实体导入失败记录"按钮是否显示
  7. 点击按钮查看失败记录

预期结果

  • 导入完成后显示通知:"成功X条,失败Y条"
  • 工具栏显示"查看实体导入失败记录"按钮(黄色警告样式)
  • 按钮tooltip显示上次导入时间
  • 点击按钮打开对话框
  • 对话框标题:"实体中介导入失败记录"
  • 顶部显示统计信息:"导入时间: XXX | 总数: X条 | 成功: X条 | 失败: X条"
  • 表格显示失败记录,包含以下列:
    • 机构名称
    • 统一社会信用代码
    • 主体类型
    • 企业性质
    • 法定代表人
    • 成立日期(格式: YYYY-MM-DD)
    • 失败原因(最小宽度200px,溢出显示tooltip)
  • 如果失败记录超过10条,分页组件正常显示

测试3: localStorage持久化

步骤

  1. 执行个人中介导入,包含失败记录
  2. 观察按钮显示
  3. 刷新页面(F5)
  4. 观察"查看个人导入失败记录"按钮是否仍然显示
  5. 点击按钮验证能否正常查看失败记录

预期结果

  • 刷新页面后按钮仍然显示
  • 点击按钮能正常查看失败记录
  • localStorage中存在intermediary_person_import_last_taskintermediary_entity_import_last_task

测试4: 分页功能

步骤

  1. 准备至少20条失败记录的数据
  2. 导入并等待完成
  3. 打开失败记录对话框
  4. 测试翻页功能

预期结果

  • 分页组件显示正确的总记录数
  • 每页显示10条记录
  • 点击下一页/上一页按钮正常切换
  • 修改每页显示数量正常工作

测试5: 清除历史记录

步骤

  1. 打开失败记录对话框
  2. 点击"清除历史记录"按钮
  3. 确认清除操作
  4. 关闭对话框
  5. 观察工具栏按钮是否隐藏
  6. 检查localStorage是否已清除

预期结果

  • 弹出确认对话框:"确认清除上次导入记录?"
  • 确认后显示成功提示:"已清除"
  • 对话框关闭
  • 工具栏对应的"查看失败记录"按钮隐藏
  • localStorage中的对应key已删除

测试6: 记录过期处理

方法1: 手动修改localStorage模拟过期

  1. 打开开发者工具 → Application → Local Storage
  2. 找到intermediary_person_import_last_taskintermediary_entity_import_last_task
  3. 修改saveTime为8天前的时间戳
  4. 刷新页面
  5. 观察按钮是否隐藏

方法2: 等待后端记录过期

  1. 导入数据并等待失败记录显示
  2. 等待后端清理过期记录(根据后端配置的过期时间)
  3. 点击"查看失败记录"按钮
  4. 观察错误提示

预期结果

  • 方法1: 刷新后按钮自动隐藏
  • 方法2: 显示提示"导入记录已过期,无法查看失败记录"
  • 方法2: localStorage自动清除
  • 方法2: 按钮自动隐藏

测试7: 两种类型导入互不影响

步骤

  1. 先导入个人中介(有失败记录)
  2. 再导入实体中介(有失败记录)
  3. 验证两个按钮是否同时显示
  4. 分别点击两个按钮,验证显示的失败记录是否正确

预期结果

  • 两个按钮同时显示
  • "查看个人导入失败记录"按钮显示个人中介的失败记录
  • "查看实体导入失败记录"按钮显示实体中介的失败记录
  • 两个localStorage存储独立,互不影响

测试8: 导入成功场景

步骤

  1. 准备完全正确的Excel文件(所有数据都符合要求)
  2. 导入数据
  3. 等待导入完成

预期结果

  • 显示成功通知:"全部成功!共导入X条数据"
  • 不显示"查看失败记录"按钮
  • localStorage中不存储该任务(或hasFailures为false)

测试9: 网络错误处理

步骤

  1. 导入数据(有失败记录)
  2. 打开失败记录对话框
  3. 断开网络或使用浏览器开发者工具模拟离线
  4. 尝试翻页或重新加载失败记录

预期结果

  • 显示友好的错误提示:"网络连接失败,请检查网络"
  • 不影响页面其他功能的正常使用

测试10: 服务器错误处理

步骤

  1. 导入数据(有失败记录)
  2. 使用浏览器开发者工具模拟服务器错误(500)
  3. 尝试加载失败记录

预期结果

  • 显示错误提示:"服务器错误,请稍后重试"

边界情况测试

测试11: 大数据量性能测试

步骤

  1. 准备1000条数据,其中100条失败
  2. 导入并等待完成
  3. 打开失败记录对话框
  4. 测试翻页性能

预期结果

  • 导入在合理时间内完成(参考员工模块:1000条约1-2分钟)
  • 查询失败记录响应时间 < 2秒
  • 翻页流畅,无卡顿

测试12: 并发导入

步骤

  1. 快速连续执行两次个人中介导入
  2. 观察localStorage中的数据
  3. 观察按钮显示状态

预期结果

  • 只有最近一次导入的数据被保存
  • 按钮显示状态基于最新的导入结果

浏览器兼容性测试

测试13: 不同浏览器测试

在以下浏览器中重复执行测试1和测试2:

  • Chrome (推荐)
  • Firefox
  • Edge
  • Safari (Mac)

回归测试

测试14: 原有功能不受影响

验证以下原有功能仍正常工作:

  • 新增中介(个人/实体)
  • 编辑中介(个人/实体)
  • 查看详情
  • 删除中介
  • 搜索功能
  • 导入成功场景
  • 导入模板下载

性能测试

测试15: 内存泄漏检查

  1. 打开浏览器开发者工具 → Performance
  2. 开始录制
  3. 执行多次导入和查看失败记录操作
  4. 停止录制
  5. 检查内存使用情况

预期结果

  • 内存使用稳定,无明显泄漏
  • 定时器在组件销毁时正确清理

自动化测试脚本(可选)

测试16: API接口测试

使用Postman或curl测试以下接口:

# 1. 测试个人中介导入失败记录查询
curl -X GET "http://localhost:8080/ccdi/intermediary/importPersonFailures/{taskId}?pageNum=1&pageSize=10" \
  -H "Authorization: Bearer {token}"

# 2. 测试实体中介导入失败记录查询
curl -X GET "http://localhost:8080/ccdi/intermediary/importEntityFailures/{taskId}?pageNum=1&pageSize=10" \
  -H "Authorization: Bearer {token}"

# 3. 测试过期记录查询(应返回404)
curl -X GET "http://localhost:8080/ccdi/intermediary/importPersonFailures/expired-task-id?pageNum=1&pageSize=10" \
  -H "Authorization: Bearer {token}"

测试结果记录表

测试项 测试结果 问题描述 解决方案 验证日期
测试1: 个人中介导入失败记录查看 通过 / 失败
测试2: 实体中介导入失败记录查看 通过 / 失败
测试3: localStorage持久化 通过 / 失败
测试4: 分页功能 通过 / 失败
测试5: 清除历史记录 通过 / 失败
测试6: 记录过期处理 通过 / 失败
测试7: 两种类型导入互不影响 通过 / 失败
测试8: 导入成功场景 通过 / 失败
测试9: 网络错误处理 通过 / 失败
测试10: 服务器错误处理 通过 / 失败
测试11: 大数据量性能测试 通过 / 失败
测试12: 并发导入 通过 / 失败
测试13: 浏览器兼容性 通过 / 失败
测试14: 原有功能不受影响 通过 / 失败
测试15: 内存泄漏检查 通过 / 失败

已知问题

记录测试过程中发现的已知问题:

问题编号 问题描述 严重程度 状态 解决方案

测试总结

通过率统计

  • 总测试项: 15项
  • 通过: X项
  • 失败: Y项
  • 通过率: X%

测试结论

  • 测试通过,可以发布
  • 存在问题,需要修复后再测试

测试签名

  • 测试人员: ___________
  • 测试日期: ___________
  • 审核人员: ___________
  • 审核日期: ___________