docs: 添加采购交易最终验证清单
- 功能测试清单(前端8大功能模块详细检查点) - 页面访问、查询、新增、编辑、详情、删除、导出、导入 - 后端10个接口测试要点 - 权限测试(菜单权限、按钮权限、数据权限) - 代码审查清单(后端7个方面、前端6个方面、数据库3个方面) - 性能测试建议(查询/写入/导入导出/并发/压力测试) - 部署前检查项(代码/配置/数据/文档/测试/部署) - 验收标准(7个维度) - 验收流程(4个阶段) - Bug分级标准 文件路径: doc/plans/2026-02-06-ccdi_purchase_transaction-verification.md Task 21: 最终验证清单 Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
888
doc/plans/2026-02-06-ccdi_purchase_transaction-verification.md
Normal file
888
doc/plans/2026-02-06-ccdi_purchase_transaction-verification.md
Normal file
@@ -0,0 +1,888 @@
|
|||||||
|
# 采购交易信息管理 - 最终验证清单
|
||||||
|
|
||||||
|
## 文档信息
|
||||||
|
- **模块名称**: 采购交易信息管理
|
||||||
|
- **验证时间**: 2026-02-06
|
||||||
|
- **版本**: v1.0.0
|
||||||
|
- **状态**: 待验证
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 目录
|
||||||
|
1. [功能测试清单](#功能测试清单)
|
||||||
|
2. [代码审查清单](#代码审查清单)
|
||||||
|
3. [性能测试建议](#性能测试建议)
|
||||||
|
4. [部署前检查项](#部署前检查项)
|
||||||
|
5. [验收标准](#验收标准)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 功能测试清单
|
||||||
|
|
||||||
|
### 1. 前端功能测试
|
||||||
|
|
||||||
|
#### 1.1 页面访问测试
|
||||||
|
- [ ] 登录系统后,左侧菜单显示"CCDI管理"
|
||||||
|
- [ ] "CCDI管理"下显示"采购交易管理"子菜单
|
||||||
|
- [ ] 点击"采购交易管理",页面正常加载
|
||||||
|
- [ ] 页面标题显示"采购交易管理"
|
||||||
|
- [ ] 页面布局完整,无错位、无空白
|
||||||
|
- [ ] 响应式布局在不同分辨率下正常
|
||||||
|
|
||||||
|
#### 1.2 查询功能测试
|
||||||
|
|
||||||
|
**基础查询**
|
||||||
|
- [ ] 项目名称模糊查询功能正常
|
||||||
|
- [ ] 标的物名称模糊查询功能正常
|
||||||
|
- [ ] 申请人姓名模糊查询功能正常
|
||||||
|
- [ ] 搜索按钮功能正常
|
||||||
|
- [ ] 重置按钮清空所有查询条件
|
||||||
|
- [ ] 重置后恢复全部数据
|
||||||
|
|
||||||
|
**日期范围查询**
|
||||||
|
- [ ] 日期选择器正常显示
|
||||||
|
- [ ] 选择日期范围后查询结果正确
|
||||||
|
- [ ] 只选开始日期,查询结果正确
|
||||||
|
- [ ] 只选结束日期,查询结果正确
|
||||||
|
- [ ] 开始日期大于结束日期时提示错误
|
||||||
|
|
||||||
|
**分页查询**
|
||||||
|
- [ ] 分页组件正常显示
|
||||||
|
- [ ] 总条数显示正确
|
||||||
|
- [ ] 当前页码显示正确
|
||||||
|
- [ ] 点击页码切换正常
|
||||||
|
- [ ] 修改每页显示条数正常(10/20/50/100)
|
||||||
|
- [ ] 分页数据正确,无重复或遗漏
|
||||||
|
|
||||||
|
**表格显示**
|
||||||
|
- [ ] 表头显示正确
|
||||||
|
- [ ] 数据行显示完整
|
||||||
|
- [ ] 金额字段格式化显示(千分位)
|
||||||
|
- [ ] 日期字段格式化显示(yyyy-MM-dd)
|
||||||
|
- [ ] 文本超长时显示省略号和tooltip
|
||||||
|
- [ ] 空数据时显示"暂无数据"
|
||||||
|
- [ ] 加载时显示loading动画
|
||||||
|
|
||||||
|
#### 1.3 新增功能测试
|
||||||
|
|
||||||
|
**打开新增对话框**
|
||||||
|
- [ ] 点击"新增"按钮,对话框正常打开
|
||||||
|
- [ ] 对话框标题显示"添加采购交易"
|
||||||
|
- [ ] 采购事项ID输入框可编辑
|
||||||
|
- [ ] 表单验证规则提示正确
|
||||||
|
|
||||||
|
**表单填写**
|
||||||
|
- [ ] 所有字段输入框正常显示
|
||||||
|
- [ ] 日期选择器功能正常
|
||||||
|
- [ ] 数字输入框可以输入小数
|
||||||
|
- [ ] 文本域可以输入多行文本
|
||||||
|
- [ ] 字段分组(分隔线)显示正确
|
||||||
|
|
||||||
|
**表单验证**
|
||||||
|
- [ ] 采购事项ID为必填项,不填提示错误
|
||||||
|
- [ ] 采购事项ID长度限制32字符
|
||||||
|
- [ ] 项目名称长度限制200字符
|
||||||
|
- [ ] 标的物名称长度限制200字符
|
||||||
|
- [ ] 标的物描述长度限制500字符
|
||||||
|
- [ ] 采购方式长度限制50字符
|
||||||
|
- [ ] 供应商名称长度限制200字符
|
||||||
|
- [ ] 供应商统一信用代码长度限制18字符
|
||||||
|
- [ ] 供应商联系人长度限制50字符
|
||||||
|
- [ ] 供应商联系电话长度限制20字符
|
||||||
|
- [ ] 供应商银行账户长度限制50字符
|
||||||
|
- [ ] 申请人姓名长度限制50字符
|
||||||
|
- [ ] 申请人工号长度限制20字符
|
||||||
|
- [ ] 申请部门长度限制100字符
|
||||||
|
- [ ] 采购负责人姓名长度限制50字符
|
||||||
|
- [ ] 采购负责人工号长度限制20字符
|
||||||
|
- [ ] 采购部门长度限制100字符
|
||||||
|
|
||||||
|
**提交保存**
|
||||||
|
- [ ] 填写完整信息后点击"确定",保存成功
|
||||||
|
- [ ] 成功提示显示"新增成功"
|
||||||
|
- [ ] 对话框自动关闭
|
||||||
|
- [ ] 列表自动刷新,显示新数据
|
||||||
|
- [ ] 数据保存到数据库
|
||||||
|
|
||||||
|
**取消操作**
|
||||||
|
- [ ] 点击"取消"按钮,对话框关闭
|
||||||
|
- [ ] 表单数据清空
|
||||||
|
- [ ] 不影响已有数据
|
||||||
|
|
||||||
|
#### 1.4 编辑功能测试
|
||||||
|
|
||||||
|
**打开编辑对话框**
|
||||||
|
- [ ] 点击"编辑"按钮,对话框正常打开
|
||||||
|
- [ ] 对话框标题显示"修改采购交易"
|
||||||
|
- [ ] 表单数据回显正确
|
||||||
|
- [ ] 采购事项ID输入框禁用(不可编辑)
|
||||||
|
|
||||||
|
**修改数据**
|
||||||
|
- [ ] 修改字段后保存成功
|
||||||
|
- [ ] 成功提示显示"修改成功"
|
||||||
|
- [ ] 对话框自动关闭
|
||||||
|
- [ ] 列表自动刷新,显示修改后数据
|
||||||
|
- [ ] 数据库数据正确更新
|
||||||
|
|
||||||
|
**并发编辑**
|
||||||
|
- [ ] 多人同时编辑同一条记录时,后提交的覆盖前面的
|
||||||
|
- [ ] 提示用户数据可能已被修改(如有乐观锁)
|
||||||
|
|
||||||
|
#### 1.5 详情功能测试
|
||||||
|
|
||||||
|
**打开详情对话框**
|
||||||
|
- [ ] 点击"详情"按钮,详情对话框正常打开
|
||||||
|
- [ ] 对话框标题显示"采购交易详情"
|
||||||
|
- [ ] 所有字段正确显示
|
||||||
|
- [ ] 空字段显示"-"
|
||||||
|
|
||||||
|
**详情分组显示**
|
||||||
|
- [ ] 基本信息分组显示正确
|
||||||
|
- [ ] 数量与金额分组显示正确
|
||||||
|
- [ ] 供应商信息分组显示正确
|
||||||
|
- [ ] 重要日期分组显示正确
|
||||||
|
- [ ] 申请人信息分组显示正确
|
||||||
|
- [ ] 采购负责人信息分组显示正确
|
||||||
|
- [ ] 审计信息分组显示正确
|
||||||
|
|
||||||
|
**数据格式化**
|
||||||
|
- [ ] 金额显示千分位格式(如:500,000.00)
|
||||||
|
- [ ] 日期显示yyyy-MM-dd格式
|
||||||
|
- [ ] 时间显示yyyy-MM-dd HH:mm:ss格式
|
||||||
|
- [ ] 描述文本换行显示
|
||||||
|
|
||||||
|
**关闭详情**
|
||||||
|
- [ ] 点击"关闭"按钮,对话框关闭
|
||||||
|
- [ ] 点击对话框外部,对话框关闭
|
||||||
|
|
||||||
|
#### 1.6 删除功能测试
|
||||||
|
|
||||||
|
**单条删除**
|
||||||
|
- [ ] 点击"删除"按钮,确认对话框显示
|
||||||
|
- [ ] 确认对话框显示正确的purchaseId
|
||||||
|
- [ ] 点击"确定",删除成功
|
||||||
|
- [ ] 成功提示显示"删除成功"
|
||||||
|
- [ ] 列表自动刷新,数据已删除
|
||||||
|
- [ ] 数据库数据已删除
|
||||||
|
|
||||||
|
**批量删除**
|
||||||
|
- [ ] 勾选多条记录,"删除"按钮可点击
|
||||||
|
- [ ] 点击"删除",确认对话框显示
|
||||||
|
- [ ] 确认对话框显示所有选中的purchaseId
|
||||||
|
- [ ] 点击"确定",批量删除成功
|
||||||
|
- [ ] 列表自动刷新,数据已删除
|
||||||
|
- [ ] 数据库数据已删除
|
||||||
|
|
||||||
|
**删除取消**
|
||||||
|
- [ ] 点击"取消",不删除数据
|
||||||
|
- [ ] 对话框关闭
|
||||||
|
- [ ] 数据保持不变
|
||||||
|
|
||||||
|
#### 1.7 导出功能测试
|
||||||
|
|
||||||
|
**全部导出**
|
||||||
|
- [ ] 点击"导出"按钮
|
||||||
|
- [ ] 浏览器下载Excel文件
|
||||||
|
- [ ] 文件名格式:采购交易_时间戳.xlsx
|
||||||
|
- [ ] 文件可以正常打开
|
||||||
|
|
||||||
|
**条件导出**
|
||||||
|
- [ ] 设置查询条件后点击"导出"
|
||||||
|
- [ ] 只导出符合条件的数据
|
||||||
|
- [ ] 导出数据数量正确
|
||||||
|
|
||||||
|
**Excel格式验证**
|
||||||
|
- [ ] 表头正确(使用@Excel注解定义的名称)
|
||||||
|
- [ ] 金额列格式为数字,保留2位小数
|
||||||
|
- [ ] 日期列格式为yyyy-MM-dd
|
||||||
|
- [ ] 字典列显示字典标签而非值
|
||||||
|
- [ ] 数据完整,无遗漏
|
||||||
|
- [ ] 数据顺序与列表一致
|
||||||
|
|
||||||
|
**大数据量导出**
|
||||||
|
- [ ] 导出1000条数据,时间<5秒
|
||||||
|
- [ ] 导出10000条数据,时间<30秒
|
||||||
|
- [ ] 导出过程不卡顿
|
||||||
|
|
||||||
|
#### 1.8 导入功能测试
|
||||||
|
|
||||||
|
**下载模板**
|
||||||
|
- [ ] 点击"导入"按钮,导入对话框打开
|
||||||
|
- [ ] 点击"下载模板"链接
|
||||||
|
- [ ] 浏览器下载模板文件
|
||||||
|
- [ ] 文件名格式:采购交易导入模板_时间戳.xlsx
|
||||||
|
- [ ] 模板包含所有字段
|
||||||
|
- [ ] 字典字段包含下拉框(使用@DictDropdown)
|
||||||
|
|
||||||
|
**填写模板**
|
||||||
|
- [ ] 使用下拉框选择字典值
|
||||||
|
- [ ] 填写各种类型的测试数据
|
||||||
|
- [ ] 日期格式正确
|
||||||
|
- [ ] 金额格式正确
|
||||||
|
- [ ] 文本长度符合要求
|
||||||
|
|
||||||
|
**导入数据**
|
||||||
|
- [ ] 上传Excel文件
|
||||||
|
- [ ] 文件格式验证(.xlsx或.xls)
|
||||||
|
- [ ] 显示上传进度
|
||||||
|
- [ ] 提交导入任务
|
||||||
|
- [ ] 提示"导入任务已提交"
|
||||||
|
- [ ] 返回taskId
|
||||||
|
|
||||||
|
**异步导入**
|
||||||
|
- [ ] 导入不阻塞界面
|
||||||
|
- [ ] 显示"正在导入数据,请稍候..."提示
|
||||||
|
- [ ] 提示不会自动关闭
|
||||||
|
|
||||||
|
**导入状态轮询**
|
||||||
|
- [ ] 每2秒查询一次导入状态
|
||||||
|
- [ ] 状态变化:pending -> running -> completed
|
||||||
|
- [ ] 导入完成后提示自动关闭
|
||||||
|
- [ ] 显示导入结果对话框
|
||||||
|
|
||||||
|
**导入结果显示**
|
||||||
|
- [ ] 显示"导入完成!"标题
|
||||||
|
- [ ] 显示成功数量
|
||||||
|
- [ ] 显示失败数量
|
||||||
|
- [ ] 失败记录显示行号
|
||||||
|
- [ ] 失败记录显示错误信息
|
||||||
|
- [ ] 失败记录列表可滚动
|
||||||
|
- [ ] 列表自动刷新
|
||||||
|
|
||||||
|
**导入成功验证**
|
||||||
|
- [ ] 数据导入到数据库
|
||||||
|
- [ ] 数据内容正确
|
||||||
|
- [ ] 字典值正确
|
||||||
|
- [ ] 日期格式正确
|
||||||
|
- [ ] 金额数值正确
|
||||||
|
|
||||||
|
**导入失败验证**
|
||||||
|
- [ ] 必填字段缺失,导入失败
|
||||||
|
- [ ] 字段长度超限,导入失败
|
||||||
|
- [ ] 数据格式错误,导入失败
|
||||||
|
- [ ] purchaseId重复,按updateSupport参数处理
|
||||||
|
- [ ] 失败原因准确描述
|
||||||
|
|
||||||
|
**更新已有数据**
|
||||||
|
- [ ] 勾选"是否更新"选项
|
||||||
|
- [ ] purchaseId重复时更新数据
|
||||||
|
- [ ] 不勾选时跳过重复数据
|
||||||
|
|
||||||
|
**批量导入性能**
|
||||||
|
- [ ] 导入100条数据 < 2秒
|
||||||
|
- [ ] 导入1000条数据 < 10秒
|
||||||
|
- [ ] 导入5000条数据 < 60秒
|
||||||
|
|
||||||
|
### 2. 后端接口测试
|
||||||
|
|
||||||
|
#### 2.1 查询接口测试
|
||||||
|
|
||||||
|
**GET /ccdi/purchaseTransaction/list**
|
||||||
|
- [ ] 无参数调用,返回第一页10条数据
|
||||||
|
- [ ] 传入pageNum和pageSize,分页正确
|
||||||
|
- [ ] 传入projectName,模糊查询正确
|
||||||
|
- [ ] 传入subjectName,模糊查询正确
|
||||||
|
- [ ] 传入applicantName,模糊查询正确
|
||||||
|
- [ ] 传入日期范围,过滤正确
|
||||||
|
- [ ] 组合多个条件,查询正确
|
||||||
|
- [ ] 无数据时,返回空列表
|
||||||
|
- [ ] 返回total数量正确
|
||||||
|
- [ ] 响应时间 < 500ms
|
||||||
|
|
||||||
|
#### 2.2 详情接口测试
|
||||||
|
|
||||||
|
**GET /ccdi/purchaseTransaction/{purchaseId}**
|
||||||
|
- [ ] 传入存在的purchaseId,返回正确数据
|
||||||
|
- [ ] 所有字段都有值
|
||||||
|
- [ ] 日期格式正确
|
||||||
|
- [ ] 金额精度正确
|
||||||
|
- [ ] 传入不存在的purchaseId,返回null或提示
|
||||||
|
- [ ] purchaseId为null或空,返回错误
|
||||||
|
- [ ] 响应时间 < 200ms
|
||||||
|
|
||||||
|
#### 2.3 新增接口测试
|
||||||
|
|
||||||
|
**POST /ccdi/purchaseTransaction**
|
||||||
|
- [ ] 传入完整数据,保存成功
|
||||||
|
- [ ] 必填字段验证生效
|
||||||
|
- [ ] 字段长度验证生效
|
||||||
|
- [ ] 数据类型验证生效
|
||||||
|
- [ ] purchaseId重复,保存失败
|
||||||
|
- [ ] 审计字段自动填充
|
||||||
|
- [ ] 返回正确的响应码
|
||||||
|
- [ ] 响应时间 < 200ms
|
||||||
|
|
||||||
|
#### 2.4 修改接口测试
|
||||||
|
|
||||||
|
**PUT /ccdi/purchaseTransaction**
|
||||||
|
- [ ] 传入完整数据,更新成功
|
||||||
|
- [ ] purchaseId必填验证生效
|
||||||
|
- [ ] purchaseId不存在,更新失败
|
||||||
|
- [ ] 只修改部分字段,其他字段不变
|
||||||
|
- [ ] 更新时间自动更新
|
||||||
|
- [ ] 更新人自动填充
|
||||||
|
- [ ] 返回正确的响应码
|
||||||
|
- [ ] 响应时间 < 200ms
|
||||||
|
|
||||||
|
#### 2.5 删除接口测试
|
||||||
|
|
||||||
|
**DELETE /ccdi/purchaseTransaction/{purchaseIds}**
|
||||||
|
- [ ] 删除单条数据,成功
|
||||||
|
- [ ] 删除多条数据(逗号分隔),成功
|
||||||
|
- [ ] 删除不存在的数据,不影响存在的数据
|
||||||
|
- [ ] purchaseId为空,返回错误
|
||||||
|
- [ ] 数据库数据已删除
|
||||||
|
- [ ] 返回正确的响应码
|
||||||
|
- [ ] 响应时间 < 200ms
|
||||||
|
|
||||||
|
#### 2.6 导出接口测试
|
||||||
|
|
||||||
|
**POST /ccdi/purchaseTransaction/export**
|
||||||
|
- [ ] 无条件导出,导出所有数据
|
||||||
|
- [ ] 有条件导出,导出符合条件的数据
|
||||||
|
- [ ] 返回Excel文件流
|
||||||
|
- [ ] Content-Type正确
|
||||||
|
- [ ] 文件名正确
|
||||||
|
- [ ] 响应时间 < 2000ms(1000条)
|
||||||
|
|
||||||
|
#### 2.7 导入模板接口测试
|
||||||
|
|
||||||
|
**POST /ccdi/purchaseTransaction/importTemplate**
|
||||||
|
- [ ] 返回Excel文件流
|
||||||
|
- [ ] 文件包含所有字段
|
||||||
|
- [ ] 字典字段包含下拉框
|
||||||
|
- [ ] 下拉框选项正确
|
||||||
|
- [ ] 表头格式正确
|
||||||
|
|
||||||
|
#### 2.8 导入数据接口测试
|
||||||
|
|
||||||
|
**POST /ccdi/purchaseTransaction/importData**
|
||||||
|
- [ ] 上传正确的Excel文件,导入成功
|
||||||
|
- [ ] 返回taskId
|
||||||
|
- [ ] updateSupport=false,重复数据跳过
|
||||||
|
- [ ] updateSupport=true,重复数据更新
|
||||||
|
- [ ] 文件格式错误,返回错误
|
||||||
|
- [ ] 数据验证失败,记录失败原因
|
||||||
|
- [ ] 异步执行,不阻塞
|
||||||
|
- [ ] 响应时间 < 500ms(提交任务)
|
||||||
|
|
||||||
|
#### 2.9 导入状态接口测试
|
||||||
|
|
||||||
|
**GET /ccdi/purchaseTransaction/importStatus/{taskId}**
|
||||||
|
- [ ] 返回任务状态
|
||||||
|
- [ ] 状态包括:pending/running/completed/failed
|
||||||
|
- [ ] 返回total/successCount/failureCount
|
||||||
|
- [ ] taskId不存在,返回错误
|
||||||
|
- [ ] 响应时间 < 100ms
|
||||||
|
|
||||||
|
#### 2.10 导入失败记录接口测试
|
||||||
|
|
||||||
|
**GET /ccdi/purchaseTransaction/importFailures/{taskId}**
|
||||||
|
- [ ] 返回失败记录列表
|
||||||
|
- [ ] 每条记录包含purchaseId/rowNum/errorMessage
|
||||||
|
- [ ] 错误信息准确描述失败原因
|
||||||
|
- [ ] 无失败记录时返回空列表
|
||||||
|
- [ ] 响应时间 < 200ms
|
||||||
|
|
||||||
|
### 3. 权限测试
|
||||||
|
|
||||||
|
#### 3.1 菜单权限
|
||||||
|
- [ ] 有权限的用户可以看到菜单
|
||||||
|
- [ ] 无权限的用户看不到菜单
|
||||||
|
- [ ] 分配权限后,刷新立即生效
|
||||||
|
|
||||||
|
#### 3.2 按钮权限
|
||||||
|
- [ ] 有list权限,可以查询
|
||||||
|
- [ ] 有query权限,可以查看详情
|
||||||
|
- [ ] 有add权限,可以新增
|
||||||
|
- [ ] 有edit权限,可以编辑
|
||||||
|
- [ ] 有remove权限,可以删除
|
||||||
|
- [ ] 有export权限,可以导出
|
||||||
|
- [ ] 有import权限,可以导入
|
||||||
|
- [ ] 无权限时,按钮不显示
|
||||||
|
- [ ] 直接访问接口,返回403
|
||||||
|
|
||||||
|
#### 3.3 数据权限
|
||||||
|
- [ ] 本部门数据权限
|
||||||
|
- [ ] 本部门及以下数据权限
|
||||||
|
- [ ] 仅本人数据权限
|
||||||
|
- [ ] 自定义数据权限
|
||||||
|
- [ ] 全部数据权限
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 代码审查清单
|
||||||
|
|
||||||
|
### 1. 后端代码审查
|
||||||
|
|
||||||
|
#### 1.1 Controller层
|
||||||
|
- [ ] 所有接口都有Swagger注解
|
||||||
|
- [ ] 接口描述清晰准确
|
||||||
|
- [ ] 参数说明完整
|
||||||
|
- [ ] 权限注解正确(@PreAuthorize)
|
||||||
|
- [ ] 日志注解正确(@Log)
|
||||||
|
- [ ] 参数验证注解正确(@Validated)
|
||||||
|
- [ ] 异常处理正确
|
||||||
|
- [ ] 响应格式统一(AjaxResult)
|
||||||
|
- [ ] 代码格式规范
|
||||||
|
- [ ] 注释清晰完整
|
||||||
|
|
||||||
|
#### 1.2 Service层
|
||||||
|
- [ ] 使用@Resource注解,而非@Autowired
|
||||||
|
- [ ] 方法命名规范(select/insert/update/delete)
|
||||||
|
- [ ] 业务逻辑清晰
|
||||||
|
- [ ] 事务处理正确
|
||||||
|
- [ ] 异常处理正确
|
||||||
|
- [ ] 代码复用性高
|
||||||
|
- [ ] 方法单一职责
|
||||||
|
|
||||||
|
#### 1.3 Mapper层
|
||||||
|
- [ ] 继承BaseMapper<CcdiPurchaseTransaction>
|
||||||
|
- [ ] 使用MyBatis Plus注解
|
||||||
|
- [ ] 复杂查询使用XML配置
|
||||||
|
- [ ] SQL语句优化
|
||||||
|
- [ ] 使用预编译语句
|
||||||
|
|
||||||
|
#### 1.4 Entity层
|
||||||
|
- [ ] 使用@Data注解
|
||||||
|
- [ ] 不继承BaseEntity
|
||||||
|
- [ ] 审计字段使用@TableField(fill = FieldFill.INSERT/INSERT_UPDATE)
|
||||||
|
- [ ] 主键使用@TableId(type = IdType.INPUT)
|
||||||
|
- [ ] 字段类型正确
|
||||||
|
- [ ] 字段长度合理
|
||||||
|
- [ ] 序列化支持
|
||||||
|
|
||||||
|
#### 1.5 DTO/VO层
|
||||||
|
- [ ] DTO用于接口参数
|
||||||
|
- [ ] VO用于返回数据
|
||||||
|
- [ ] 不与Entity混用
|
||||||
|
- [ ] 验证注解完整
|
||||||
|
- [ ] 字段说明完整
|
||||||
|
|
||||||
|
#### 1.6 Excel导入导出
|
||||||
|
- [ ] 使用@Excel注解定义导出
|
||||||
|
- [ ] 使用@DictDropdown注解添加下拉框
|
||||||
|
- [ ] 日期格式正确
|
||||||
|
- [ ] 金额格式正确
|
||||||
|
- [ ] 字典转换正确
|
||||||
|
- [ ] 数据验证正确
|
||||||
|
|
||||||
|
#### 1.7 异步导入
|
||||||
|
- [ ] 使用@Async注解
|
||||||
|
- [ ] 线程池配置合理
|
||||||
|
- [ ] 任务ID生成唯一
|
||||||
|
- [ ] 状态管理正确
|
||||||
|
- [ ] 失败记录保存完整
|
||||||
|
- [ ] 异常处理完善
|
||||||
|
|
||||||
|
### 2. 前端代码审查
|
||||||
|
|
||||||
|
#### 2.1 API文件
|
||||||
|
- [ ] 接口定义完整
|
||||||
|
- [ ] 请求方法正确
|
||||||
|
- [ ] 参数传递正确
|
||||||
|
- [ ] 错误处理正确
|
||||||
|
- [ ] Token自动添加
|
||||||
|
|
||||||
|
#### 2.2 页面组件
|
||||||
|
- [ ] 组件结构清晰
|
||||||
|
- [ ] 数据流向清晰
|
||||||
|
- [ ] 方法命名规范
|
||||||
|
- [ ] 事件处理正确
|
||||||
|
- [ ] 生命周期钩子使用正确
|
||||||
|
|
||||||
|
#### 2.3 表单验证
|
||||||
|
- [ ] 验证规则完整
|
||||||
|
- [ ] 验证提示清晰
|
||||||
|
- [ ] 必填项验证
|
||||||
|
- [ ] 长度验证
|
||||||
|
- [ ] 格式验证
|
||||||
|
|
||||||
|
#### 2.4 权限控制
|
||||||
|
- [ ] 使用v-hasPermi指令
|
||||||
|
- [ ] 权限标识正确
|
||||||
|
- [ ] 按钮显隐控制
|
||||||
|
- [ ] 接口权限验证
|
||||||
|
|
||||||
|
#### 2.5 用户体验
|
||||||
|
- [ ] Loading提示
|
||||||
|
- [ ] 成功提示
|
||||||
|
- [ ] 错误提示
|
||||||
|
- [ ] 确认对话框
|
||||||
|
- [ ] 操作反馈及时
|
||||||
|
|
||||||
|
#### 2.6 代码规范
|
||||||
|
- [ ] 缩进一致
|
||||||
|
- [ ] 命名规范
|
||||||
|
- [ ] 注释清晰
|
||||||
|
- [ ] 无重复代码
|
||||||
|
- [ ] 组件复用
|
||||||
|
|
||||||
|
### 3. 数据库设计审查
|
||||||
|
|
||||||
|
#### 3.1 表结构
|
||||||
|
- [ ] 表名符合规范(ccdi_开头)
|
||||||
|
- [ ] 主键设计合理
|
||||||
|
- [ ] 字段类型正确
|
||||||
|
- [ ] 字段长度合理
|
||||||
|
- [ ] 默认值合理
|
||||||
|
- [ ] 非空约束合理
|
||||||
|
- [ ] 索引设计合理
|
||||||
|
|
||||||
|
#### 3.2 审计字段
|
||||||
|
- [ ] create_time自动填充
|
||||||
|
- [ ] update_time自动更新
|
||||||
|
- [ ] created_by自动填充
|
||||||
|
- [ ] updated_by自动填充
|
||||||
|
|
||||||
|
#### 3.3 数据字典
|
||||||
|
- [ ] 字典类型定义
|
||||||
|
- [ ] 字典数据完整
|
||||||
|
- [ ] 字典排序正确
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 性能测试建议
|
||||||
|
|
||||||
|
### 1. 查询性能测试
|
||||||
|
|
||||||
|
#### 1.1 分页查询
|
||||||
|
- [ ] 1000条数据,查询时间 < 200ms
|
||||||
|
- [ ] 10000条数据,查询时间 < 500ms
|
||||||
|
- [ ] 100000条数据,查询时间 < 1000ms
|
||||||
|
- [ ] 复杂条件查询 < 500ms
|
||||||
|
|
||||||
|
#### 1.2 详情查询
|
||||||
|
- [ ] 单条详情查询 < 100ms
|
||||||
|
- [ ] 并发查询100次,平均响应 < 200ms
|
||||||
|
|
||||||
|
### 2. 写入性能测试
|
||||||
|
|
||||||
|
#### 2.1 单条插入
|
||||||
|
- [ ] 单条插入 < 100ms
|
||||||
|
- [ ] 单条更新 < 100ms
|
||||||
|
- [ ] 单条删除 < 100ms
|
||||||
|
|
||||||
|
#### 2.2 批量插入
|
||||||
|
- [ ] 批量插入100条 < 500ms
|
||||||
|
- [ ] 批量插入1000条 < 2000ms
|
||||||
|
- [ ] 批量插入5000条 < 10000ms
|
||||||
|
|
||||||
|
### 3. 导入导出性能测试
|
||||||
|
|
||||||
|
#### 3.1 导出性能
|
||||||
|
- [ ] 导出100条 < 1秒
|
||||||
|
- [ ] 导出1000条 < 5秒
|
||||||
|
- [ ] 导出10000条 < 30秒
|
||||||
|
- [ ] 导出50000条 < 120秒
|
||||||
|
|
||||||
|
#### 3.2 导入性能
|
||||||
|
- [ ] 导入100条 < 2秒
|
||||||
|
- [ ] 导入1000条 < 10秒
|
||||||
|
- [ ] 导入5000条 < 60秒
|
||||||
|
- [ ] 导入10000条 < 120秒
|
||||||
|
|
||||||
|
### 4. 并发性能测试
|
||||||
|
|
||||||
|
#### 4.1 查询并发
|
||||||
|
- [ ] 100个并发用户查询列表,平均响应 < 500ms
|
||||||
|
- [ ] 100个并发用户查询详情,平均响应 < 200ms
|
||||||
|
|
||||||
|
#### 4.2 写入并发
|
||||||
|
- [ ] 10个并发用户同时新增,成功率 > 95%
|
||||||
|
- [ ] 10个并发用户同时修改,成功率 > 95%
|
||||||
|
- [ ] 无数据冲突
|
||||||
|
|
||||||
|
#### 4.3 导入导出并发
|
||||||
|
- [ ] 10个并发用户同时导出,全部成功
|
||||||
|
- [ ] 10个并发用户同时导入,全部成功
|
||||||
|
- [ ] 服务器稳定,无内存泄漏
|
||||||
|
|
||||||
|
### 5. 压力测试
|
||||||
|
|
||||||
|
#### 5.1 持续压力
|
||||||
|
- [ ] 持续运行1小时,无内存泄漏
|
||||||
|
- [ ] 持续运行1小时,响应时间稳定
|
||||||
|
- [ ] 持续运行1小时,错误率 < 0.1%
|
||||||
|
|
||||||
|
#### 5.2 峰值压力
|
||||||
|
- [ ] 500个并发用户,系统稳定
|
||||||
|
- [ ] 1000个并发用户,系统不崩溃
|
||||||
|
- [ ] 峰值过后,性能恢复正常
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 部署前检查项
|
||||||
|
|
||||||
|
### 1. 代码检查
|
||||||
|
|
||||||
|
#### 1.1 代码质量
|
||||||
|
- [ ] 无编译错误
|
||||||
|
- [ ] 无警告信息
|
||||||
|
- [ ] 代码格式规范
|
||||||
|
- [ ] 无调试代码
|
||||||
|
- [ ] 无TODO未完成项
|
||||||
|
|
||||||
|
#### 1.2 代码安全
|
||||||
|
- [ ] 无SQL注入风险
|
||||||
|
- [ ] 无XSS漏洞
|
||||||
|
- [ ] 无CSRF漏洞
|
||||||
|
- [ ] 敏感信息加密
|
||||||
|
- [ ] 权限控制完善
|
||||||
|
|
||||||
|
#### 1.3 代码优化
|
||||||
|
- [ ] 无重复代码
|
||||||
|
- [ ] 算法优化
|
||||||
|
- [ ] 查询优化
|
||||||
|
- [ ] 缓存使用
|
||||||
|
|
||||||
|
### 2. 配置检查
|
||||||
|
|
||||||
|
#### 2.1 数据库配置
|
||||||
|
- [ ] 连接池配置合理
|
||||||
|
- [ ] 字符集配置正确(UTF-8)
|
||||||
|
- [ ] 时区配置正确
|
||||||
|
- [ ] 索引创建完成
|
||||||
|
|
||||||
|
#### 2.2 应用配置
|
||||||
|
- [ ] 端口配置正确
|
||||||
|
- [ ] 上下文路径正确
|
||||||
|
- [ ] 文件上传配置
|
||||||
|
- [ ] 文件大小限制
|
||||||
|
|
||||||
|
#### 2.3 日志配置
|
||||||
|
- [ ] 日志级别正确
|
||||||
|
- [ ] 日志文件路径
|
||||||
|
- [ ] 日志滚动策略
|
||||||
|
- [ ] 敏感信息过滤
|
||||||
|
|
||||||
|
### 3. 数据检查
|
||||||
|
|
||||||
|
#### 3.1 数据字典
|
||||||
|
- [ ] 字典类型创建
|
||||||
|
- [ ] 字典数据导入
|
||||||
|
- [ ] 字典排序正确
|
||||||
|
|
||||||
|
#### 3.2 菜单权限
|
||||||
|
- [ ] 菜单SQL执行
|
||||||
|
- [ ] 菜单显示正确
|
||||||
|
- [ ] 权限分配正确
|
||||||
|
- [ ] 角色关联正确
|
||||||
|
|
||||||
|
#### 3.3 测试数据
|
||||||
|
- [ ] 准备测试数据
|
||||||
|
- [ ] 数据多样性
|
||||||
|
- [ ] 边界情况数据
|
||||||
|
|
||||||
|
### 4. 文档检查
|
||||||
|
|
||||||
|
#### 4.1 API文档
|
||||||
|
- [ ] Swagger注解完整
|
||||||
|
- [ ] 接口文档生成
|
||||||
|
- [ ] 参数说明完整
|
||||||
|
- [ ] 响应示例完整
|
||||||
|
|
||||||
|
#### 4.2 用户文档
|
||||||
|
- [ ] 功能说明文档
|
||||||
|
- [ ] 操作手册
|
||||||
|
- [ ] 常见问题
|
||||||
|
- [ ] 测试说明
|
||||||
|
|
||||||
|
#### 4.3 开发文档
|
||||||
|
- [ ] 设计文档
|
||||||
|
- [ ] 数据库设计
|
||||||
|
- [ ] 接口文档
|
||||||
|
- [ ] 部署文档
|
||||||
|
|
||||||
|
### 5. 测试检查
|
||||||
|
|
||||||
|
#### 5.1 功能测试
|
||||||
|
- [ ] 所有功能测试通过
|
||||||
|
- [ ] 测试用例覆盖率 > 80%
|
||||||
|
- [ ] Bug全部修复
|
||||||
|
|
||||||
|
#### 5.2 性能测试
|
||||||
|
- [ ] 性能指标达标
|
||||||
|
- [ ] 无性能瓶颈
|
||||||
|
- [ ] 压力测试通过
|
||||||
|
|
||||||
|
#### 5.3 安全测试
|
||||||
|
- [ ] 权限测试通过
|
||||||
|
- [ ] 注入测试通过
|
||||||
|
- [ ] 越权测试通过
|
||||||
|
|
||||||
|
### 6. 部署检查
|
||||||
|
|
||||||
|
#### 6.1 环境准备
|
||||||
|
- [ ] JDK版本正确
|
||||||
|
- [ ] 数据库版本正确
|
||||||
|
- [ ] 依赖安装完整
|
||||||
|
- [ ] 端口未被占用
|
||||||
|
|
||||||
|
#### 6.2 配置文件
|
||||||
|
- [ ] application.yml配置正确
|
||||||
|
- [ ] 数据库连接配置
|
||||||
|
- [ ] Redis配置(如使用)
|
||||||
|
- [ ] 日志配置
|
||||||
|
|
||||||
|
#### 6.3 部署步骤
|
||||||
|
- [ ] 编译打包成功
|
||||||
|
- [ ] 文件上传完整
|
||||||
|
- [ ] 数据库脚本执行
|
||||||
|
- [ ] 服务启动成功
|
||||||
|
- [ ] 健康检查通过
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 验收标准
|
||||||
|
|
||||||
|
### 1. 功能完整性
|
||||||
|
- [ ] 所有需求功能已实现
|
||||||
|
- [ ] 所有接口测试通过
|
||||||
|
- [ ] 所有前端功能测试通过
|
||||||
|
- [ ] 无P0级Bug
|
||||||
|
- [ ] P1级Bug < 3个
|
||||||
|
|
||||||
|
### 2. 数据正确性
|
||||||
|
- [ ] 数据保存完整
|
||||||
|
- [ ] 数据查询准确
|
||||||
|
- [ ] 数据更新成功
|
||||||
|
- [ ] 数据删除正确
|
||||||
|
- [ ] 数据导入导出正确
|
||||||
|
|
||||||
|
### 3. 性能要求
|
||||||
|
- [ ] 分页查询 < 500ms
|
||||||
|
- [ ] 单条CRUD < 200ms
|
||||||
|
- [ ] 导入1000条 < 10秒
|
||||||
|
- [ ] 导出1000条 < 5秒
|
||||||
|
- [ ] 并发100用户,响应 < 500ms
|
||||||
|
|
||||||
|
### 4. 用户体验
|
||||||
|
- [ ] 界面美观大方
|
||||||
|
- [ ] 操作简单直观
|
||||||
|
- [ ] 响应及时流畅
|
||||||
|
- [ ] 提示清晰准确
|
||||||
|
- [ ] 错误处理友好
|
||||||
|
|
||||||
|
### 5. 安全性
|
||||||
|
- [ ] 权限控制严格
|
||||||
|
- [ ] 数据传输加密
|
||||||
|
- [ ] 敏感信息保护
|
||||||
|
- [ ] 日志记录完整
|
||||||
|
- [ ] 异常处理完善
|
||||||
|
|
||||||
|
### 6. 稳定性
|
||||||
|
- [ ] 系统运行稳定
|
||||||
|
- [ ] 无内存泄漏
|
||||||
|
- [ ] 无死锁
|
||||||
|
- [ ] 异常恢复正常
|
||||||
|
- [ ] 长期运行稳定
|
||||||
|
|
||||||
|
### 7. 可维护性
|
||||||
|
- [ ] 代码规范统一
|
||||||
|
- [ ] 注释清晰完整
|
||||||
|
- [ ] 结构清晰合理
|
||||||
|
- [ ] 文档完整详细
|
||||||
|
- [ ] 易于扩展
|
||||||
|
|
||||||
|
### 8. 兼容性
|
||||||
|
- [ ] 浏览器兼容(Chrome、Firefox、Edge)
|
||||||
|
- [ ] 分辨率兼容(1920x1080、1366x768)
|
||||||
|
- [ ] 数据库兼容(MySQL 8.0+)
|
||||||
|
- [ ] JDK兼容(JDK 17+)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 验收流程
|
||||||
|
|
||||||
|
### 1. 开发团队自测
|
||||||
|
- [ ] 功能测试完成
|
||||||
|
- [ ] 性能测试完成
|
||||||
|
- [ ] Bug修复完成
|
||||||
|
- [ ] 代码审查完成
|
||||||
|
|
||||||
|
### 2. 测试团队测试
|
||||||
|
- [ ] 功能测试通过
|
||||||
|
- [ ] 性能测试通过
|
||||||
|
- [ ] 安全测试通过
|
||||||
|
- [ ] 兼容性测试通过
|
||||||
|
|
||||||
|
### 3. 业务团队验收
|
||||||
|
- [ ] 功能验收通过
|
||||||
|
- [ ] 用户体验验收通过
|
||||||
|
- [ ] 数据准确性验收通过
|
||||||
|
|
||||||
|
### 4. 上线准备
|
||||||
|
- [ ] 部署文档完成
|
||||||
|
- [ ] 操作手册完成
|
||||||
|
- [ ] 培训材料完成
|
||||||
|
- [ ] 应急预案完成
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 验收签字
|
||||||
|
|
||||||
|
| 角色 | 姓名 | 签字 | 日期 |
|
||||||
|
|------|------|------|------|
|
||||||
|
| 开发负责人 | | | |
|
||||||
|
| 测试负责人 | | | |
|
||||||
|
| 业务负责人 | | | |
|
||||||
|
| 项目经理 | | | |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 附录
|
||||||
|
|
||||||
|
### A. Bug分级标准
|
||||||
|
|
||||||
|
**P0级(致命)**:
|
||||||
|
- 系统崩溃
|
||||||
|
- 数据丢失
|
||||||
|
- 安全漏洞
|
||||||
|
|
||||||
|
**P1级(严重)**:
|
||||||
|
- 主要功能无法使用
|
||||||
|
- 数据错误
|
||||||
|
- 性能严重下降
|
||||||
|
|
||||||
|
**P2级(一般)**:
|
||||||
|
- 次要功能异常
|
||||||
|
- 用户体验差
|
||||||
|
- 界面问题
|
||||||
|
|
||||||
|
**P3级(轻微)**:
|
||||||
|
- 文字错误
|
||||||
|
- 样式问题
|
||||||
|
- 建议性改进
|
||||||
|
|
||||||
|
### B. 测试环境
|
||||||
|
|
||||||
|
**开发环境**:
|
||||||
|
- 地址: http://dev.example.com
|
||||||
|
- 数据库: dev_db
|
||||||
|
- 用于开发自测
|
||||||
|
|
||||||
|
**测试环境**:
|
||||||
|
- 地址: http://test.example.com
|
||||||
|
- 数据库: test_db
|
||||||
|
- 用于测试团队测试
|
||||||
|
|
||||||
|
**预生产环境**:
|
||||||
|
- 地址: http://pre.example.com
|
||||||
|
- 数据库: pre_db
|
||||||
|
- 用于业务验收
|
||||||
|
|
||||||
|
### C. 联系方式
|
||||||
|
|
||||||
|
| 角色 | 姓名 | 邮箱 | 电话 |
|
||||||
|
|------|------|------|------|
|
||||||
|
| 开发负责人 | | | |
|
||||||
|
| 测试负责人 | | | |
|
||||||
|
| 业务负责人 | | | |
|
||||||
|
| 运维负责人 | | | |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**文档版本**: v1.0.0
|
||||||
|
**最后更新**: 2026-02-06
|
||||||
|
**更新人员**: ruoyi
|
||||||
Reference in New Issue
Block a user