SOP-502:CRM 创建合同工作流 E2E 测试
支持复制到 Excel 的标准 SOP 模板;每个
任务(Task ID)表示一个可打卡的子文档,便于人工/机器按照序号完成并记录进度。
文档元数据
- 文档类型:SOP / Checklist
- 适用场景:
http://localhost:3000/crm/contract合同管理界面 + 工作流审批流程 - 创建者:QA / 自动化工程
- 最近更新时间:2025-12-23
- 工作流说明:创建合同 → 人事审批 → 生效
- 相关接口定义:
core/openapi/crm.swagger.json中合同相关接口
前置条件
| 条件 | 检查方式 |
|---|---|
本地或测试环境可访问 http://localhost:3000/crm/contract |
浏览器打开,页面未返回 500/404 |
| 已使用有合同创建权限的用户登录 | 登录接口/前端登录流程成功,能加载左侧导航 |
| 测试数据准备就绪 | 记录将使用的合同名称,准备客户数据和合同文件 |
| 人事审批账号可用 | 具有人事审批权限的账号可以登录系统 |
任务矩阵(Excel Checklist 行模板)
每个任务独立一个表格,依次执行并记录状态;状态列可直接粘贴到 Excel 以打勾 [ ] → [x]。
任务 T1:环境与账号验证
入口:http://localhost:3000/crm/contract
| Action Steps | Input / Payload | 预期结果 | 验证方式 | 证据 | 状态 | 下游任务 |
|---|---|---|---|---|---|---|
| 步骤1:打开浏览器 | — | 浏览器启动成功 | 浏览器窗口打开 | 屏幕截图 | [x] |
步骤 2 |
| 步骤2:输入 URL | http://localhost:3000/crm/contract |
页面开始加载 | 地址栏显示正确 URL | 屏幕截图 | [x] |
步骤 3 |
| 步骤3:登录 | 账号:admin / 密码:asdfasdf3 | 登录成功,跳转到主页 | 左侧导航栏显示 | 屏幕截图、浏览器日志 | [x] |
步骤 4 |
| 步骤4:导航到「合同」 | 点击左侧「合同」菜单 | 页面成功加载、显示合同列表表格、无 500 错误 | UI:存在标题「合同列表」、表格;Console:无错误 | 屏幕截图、浏览器日志 | [x] |
T2 |

任务 T2:发起创建合同申请
前置条件:T1 成功且当前在合同列表
| Action Steps | Input / Payload | 预期结果 | 验证方式 | 证据 | 状态 | 下游任务 |
|---|---|---|---|---|---|---|
| 步骤1:点击「创建合同」按钮 | — | 弹出创建合同对话框 | 对话框显示,标题为「创建合同」 | 屏幕截图 | [x] |
步骤 2 |
| 步骤2:填写合同名称 | 合同名称:测试合同SOP502 |
字段成功填写,无验证错误 | 输入框显示正确内容 | 屏幕截图 | [x] |
步骤 3 |
| 步骤3:选择客户 | 客户:ceshi |
下拉列表成功展开,客户选择成功 | 下拉列表显示客户列表,选中客户后自动填充关联信息 | 屏幕截图 | [x] |
步骤 4 |
| 步骤4:确认自动填充信息 | — | 系统自动填充销售、甲方、乙方、合同金额等信息 | 字段自动填充:销售=超级管理员,甲方=甲方1,乙方=邮政,金额=100000 | 屏幕截图 | [x] |
步骤 5 |
| 步骤5:填写备注(可选) | 备注:SOP测试合同创建工作流 |
字段成功填写 | 输入框显示正确内容 | 屏幕截图 | [x] |
步骤 6 |
| 步骤6:确认合同周期 | 合同周期:2025年12月23日 - 2026年01月31日 |
日期范围显示正确 | 日期选择器显示正确日期 | 屏幕截图 | [x] |
步骤 7 |
| 步骤7:上传合同附件 | 上传文件:PDF格式 | 文件上传成功,显示文件名 | 文件列表显示已上传的文件 | 屏幕截图 | [x] |
步骤 8 |
| 步骤8:点击「创建」按钮 | — | 对话框关闭,显示创建成功提示,提示"点击此处查看审批流程" | UI:成功提示弹窗;toast:合同创建成功 | 屏幕截图 | [x] |
T3 |





字段验证规则说明:
| 字段 | 验证规则 | 错误提示 |
|---|---|---|
| 合同名称 | 必填,最少 2 个字符 | "最少两个字符" |
| 选择客户 | 必填 | "请选择客户" |
| 选择销售 | 自动填充,可修改 | — |
| 甲方 | 自动填充,可修改 | — |
| 乙方 | 自动填充,可修改 | — |
| 合同金额 | 必填,数字类型 | "请输入合同金额" |
| 合同周期 | 必填,日期范围 | "请选择合同周期" |
| 合同上传 | 必填,仅支持 PDF 格式 | "上传后缀为 .pdf 格式的文件" |
任务 T3:查看工作流审批状态
前置条件:T2 成功,合同创建申请已提交
| Action Steps | Input / Payload | 预期结果 | 验证方式 | 证据 | 状态 | 下游任务 |
|---|---|---|---|---|---|---|
| 步骤1:进入工作流页面 | 点击左侧「工作流」菜单或点击成功提示中的「点击此处」链接 | 跳转到工作流列表页面 | URL变为 /crm/flows,页面显示工作流列表 |
屏幕截图 | [x] |
步骤 2 |
| 步骤2:查找创建合同工作流 | 在列表中查找「创建合同」工作流 | 找到对应的工作流记录,状态为"审核中" | 工作流列表中显示最新创建的合同工作流,描述显示"等待审批" | 屏幕截图 | [x] |
步骤 3 |
| 步骤3:点击工作流查看详情 | 点击工作流名称或行 | 打开工作流详情抽屉/对话框 | 对话框显示合同详细信息和审批流程 | 屏幕截图 | [x] |
T4 |


任务 T4:人事审批流程
前置条件:T3 成功,工作流详情页面已打开
| Action Steps | Input / Payload | 预期结果 | 验证方式 | 证据 | 状态 | 下游任务 |
|---|---|---|---|---|---|---|
| 步骤1:查看审批详情 | 点击「审批详情」标签页 | 显示合同详细信息:合同编号、合同名称、客户、金额、周期、附件等 | 页面显示完整的合同信息,包含合同编号(如HT20251223-0003)、状态(PENDING) | 屏幕截图 | [x] |
步骤 2 |
| 步骤2:查看审批历史 | 点击「审批历史」标签页 | 显示审批流程:已提交的步骤和待审批人员 | 审批历史显示:超级管理员已提交,待审批人员包括人事部成员(谭仁、李虹信) | 屏幕截图 | [x] |
步骤 3 |
| 步骤3:进行审批操作 | 点击「审批详情」标签,点击「通过」按钮 | 审批成功,工作流状态更新 | 页面显示审批成功提示或状态变更 | 屏幕截图 | [x] |
步骤 4 |
| 步骤4:确认审批结果 | 关闭工作流详情,返回工作流列表或合同列表 | 工作流状态更新为已通过或下一审批节点 | 工作流列表中状态更新 | 屏幕截图 | [x] |
T5 |


审批流程说明:
- 发起人:超级管理员提交合同创建申请
- 审批节点:人事部审批(需要谭仁和李虹信审批)
- 审批操作:
- 通过:合同进入下一审批节点或直接生效
- 驳回:合同返回给发起人修改
任务 T5:验证合同创建成功
前置条件:T4 审批完成
| Action Steps | Input / Payload | 预期结果 | 验证方式 | 证据 | 状态 | 下游任务 |
|---|---|---|---|---|---|---|
| 步骤1:返回合同列表 | 点击左侧「合同」菜单 | 页面跳转到合同列表 | URL变为 /crm/contract,显示合同列表 |
屏幕截图 | [x] |
步骤 2 |
| 步骤2:查找新创建的合同 | 在列表顶部查找刚创建的合同 | 找到合同记录,显示合同编号、客户、负责人等信息 | 列表中显示合同记录:合同名称=合同测试,合同编号=HT20251223-0003,客户=ceshi | 屏幕截图 | [x] |
步骤 3 |
| 步骤3:点击合同查看详情 | 点击合同名称 | 打开合同详情抽屉 | 显示完整的合同信息:客户、销售、甲方、乙方、预算、合同预览等 | 屏幕截图 | [x] |
步骤 4 |
| 步骤4:验证合同信息完整性 | 比对创建时填写的信息与详情页显示的信息 | 所有信息一致,合同附件可下载查看 | 合同详情与创建时输入一致 | 屏幕截图 | [x] |
— |


工作流程图
发起申请 → 人事审批 → 生效
↓ ↓ ↓
填写合同 谭仁/李虹信 合同创建完成
信息 点击通过 可在列表查看
API 参考(必须遵循的接口)
| 接口 | 方法 | 说明 | 关键字段 & 数据格式 |
|---|---|---|---|
/api/v1/contracts |
POST |
创建合同 | body 需要包含: - name(string):合同名称- customerId(integer):客户ID- salesId(integer):销售ID- partyA(string):甲方- partyB(string):乙方- amount(number):合同金额- startDate(string):开始日期- endDate(string):结束日期- file(string):合同文件 |
/api/v1/contracts |
GET |
获取合同列表 | 可通过 filters 参数筛选,响应包含合同列表 |
/api/v1/contracts/{id} |
GET |
获取合同详情 | 返回指定ID的合同完整信息 |
/api/v1/workflows |
GET |
获取工作流列表 | 返回工作流列表,包含审批状态 |
/api/v1/workflows/{id}/approve |
POST |
审批工作流 | body 需要包含审批决策(通过/驳回)和审批意见 |
参见完整定义:
core/openapi/crm.swagger.json中合同和工作流相关接口定义。
测试数据记录
| 字段 | 测试值 | 说明 |
|---|---|---|
| 合同名称 | 测试合同SOP502 / 合同测试 | 用于测试的合同名称 |
| 合同编号 | HT20251223-0003 | 系统自动生成的合同编号 |
| 客户 | ceshi | 选择的测试客户 |
| 销售 | 超级管理员 | 自动填充的销售人员 |
| 甲方 | 甲方1 | 自动填充的甲方信息 |
| 乙方 | 邮政 | 自动填充的乙方信息 |
| 合同金额 | 100,000.00 | 合同金额(元) |
| 合同周期 | 2025-12-23 至 2026-01-31 | 合同有效期(39天) |
| 审批人 | 谭仁、李虹信 | 人事部审批人员 |
注意事项
- 工作流触发:创建合同时会自动触发"创建合同"工作流,进入审批流程
- 审批权限:只有具有人事审批权限的用户才能看到待审批的合同工作流
- 合同状态:
- PENDING:待审批
- APPROVED:已通过
- REJECTED:已驳回
- 合同文件:仅支持 PDF 格式的文件上传
- 数据清理:测试完成后,建议清理测试数据,避免影响其他测试
相关文档
变更历史
| 日期 | 版本 | 变更内容 | 作者 |
|---|---|---|---|
| 2025-12-23 | 1.0 | 初始版本,创建合同工作流SOP | QA Team |