测试环境:https://admin.devlovecode.com
测试账号:admin / shijie123(超管)
浏览器:Chrome / Edge 最新版
更新日期:2026-08-18
- 登录与鉴权
- 系统管理
- CRM 客户管理
- OA 办公自动化
- 审批中心
- PSI 进销存
- 财务管理
- HRM 人事管理
- CMS 内容管理
- 知识库
- 项目管理
- 企业网盘
- 定时任务
- AI 业务系统(MCP)
- 跨模块公共用例
用例编号规则
模块-序号,如 AUTH-001、CRM-012。
1. 登录与鉴权
| ID | 场景 | 前置条件 | 操作步骤 | 预期结果 | 优先级 |
|---|
| AUTH-001 | 正确账密登录 | 无 | 1. 打开 /login 2. 输入 admin / shijie123 3. 点「登录」 | 跳转到 /dashboard,右上角显示「管理员」,左侧菜单加载完整 | P0 |
| AUTH-002 | 错误密码登录 | 无 | 输入 admin / wrongpass,点「登录」 | 提示密码错误,停留在登录页,显示剩余尝试次数 | P0 |
| AUTH-003 | 连续错误锁定 | 无 | 连续输错密码超过限制次数 | 账号被临时锁定,提示稍后重试 | P1 |
| AUTH-004 | 空字段校验 | 无 | 不填用户名/密码,直接点「登录」 | 表单校验提示「请输入用户名」「请输入密码」 | P1 |
| AUTH-005 | 登出 | 已登录 | 点击右上角头像 → 退出登录 | 清除 token,跳转到 /login | P0 |
| AUTH-006 | Token 过期跳转 | token 已过期 | 任意页面操作触发 API 请求 | 自动跳转到 /login,重新登录后恢复 | P0 |
| AUTH-007 | 未登录路由守卫 | 未登录 | 直接访问 /crm/customer | 自动重定向到 /login | P0 |
| AUTH-008 | 修改个人资料 | 已登录 | 个人中心 → 修改昵称/邮箱/手机 → 保存 | 保存成功,右上角显示更新后的信息 | P1 |
| AUTH-009 | 修改密码 | 已登录 | 个人中心 → 输旧密码 + 新密码 → 保存 | 保存成功,下次登录用新密码 | P1 |
| AUTH-010 | 动态菜单路由 | 已登录 | 检查左侧菜单树 | 菜单由后端 sys_menu 驱动,与数据库配置一致 | P1 |
2. 系统管理
2.1 用户管理 /system/user
| ID | 场景 | 操作步骤 | 预期结果 | 优先级 |
|---|
| SYS-001 | 新建用户 | 新建 → 填用户名/密码/昵称/手机/邮箱 → 选角色 → 确定 | 创建成功,列表显示新用户 | P0 |
| SYS-002 | 用户名重复 | 新建时输入已存在的用户名 | 报错提示用户名已存在 | P1 |
| SYS-003 | 编辑用户 | 编辑某用户 → 修改昵称 → 保存 | 保存成功,列表刷新 | P0 |
| SYS-004 | 重置密码 | 编辑用户 → 填新密码 → 保存 | 保存成功,该用户可用新密码登录 | P1 |
| SYS-005 | 禁用用户 | 编辑用户 → 状态改为禁用 → 保存 | 该用户无法登录 | P1 |
| SYS-006 | 删除用户 | 删除某非超管用户 | 软删除成功,列表不再显示 | P1 |
| SYS-007 | 分配角色 | 编辑用户 → 修改角色 → 保存 | 角色变更生效,菜单权限随之变化 | P0 |
2.2 角色管理 /system/role
| ID | 场景 | 操作步骤 | 预期结果 | 优先级 |
|---|
| SYS-010 | 新建角色 | 新建 → 填名称/编码 → 确定 | 创建成功 | P0 |
| SYS-011 | 分配菜单权限 | 编辑角色 → 勾选菜单树 → 保存 | 该角色用户登录后只看到勾选的菜单 | P0 |
| SYS-012 | 分配 API 权限 | 编辑角色 → 勾选 API 列表 → 保存 | 该角色用户只能调用勾选的 API | P0 |
| SYS-013 | 数据权限范围 | 编辑角色 → 设置 data_scope(本部门/仅本人等) | 列表数据按 data_scope 过滤 | P1 |
| SYS-014 | 删除角色 | 删除一个未绑定用户的角色 | 删除成功 | P1 |
| ID | 场景 | 操作步骤 | 预期结果 | 优先级 |
|---|
| SYS-020 | 新建目录菜单 | 新建 → 类型选「目录」→ 填名称/路径 → 确定 | 菜单树新增该目录 | P1 |
| SYS-021 | 新建页面菜单 | 新建 → 类型选「菜单」→ component 填对应路径 → 确定 | 前端能正确加载该页面 | P0 |
| SYS-022 | 新建按钮权限 | 新建 → 类型选「按钮」→ 填权限标识 → 确定 | 按钮权限生效 | P1 |
| SYS-023 | 禁用菜单 | 编辑菜单 → 状态改禁用 → 保存 | 该菜单不在侧边栏显示 | P1 |
2.4 字典管理 /system/dict
| ID | 场景 | 操作步骤 | 预期结果 | 优先级 |
|---|
| SYS-030 | 新建字典 | 新建字典 → 填编码/名称 → 添加字典项 → 保存 | 创建成功,业务页面下拉框出现新选项 | P1 |
| SYS-031 | 编辑字典项 | 修改某字典项的 label/value → 保存 | 已使用的记录显示更新后的 label | P1 |
| SYS-032 | 删除字典 | 删除一个未被使用的字典 | 删除成功 | P2 |
2.5 其他系统配置
| ID | 场景 | 操作步骤 | 预期结果 | 优先级 |
|---|
| SYS-040 | 站点配置 | 修改企业名称/Logo/联系方式 → 保存 | 官网首页显示更新后的信息 | P1 |
| SYS-042 | 操作日志 | 查看操作日志列表 → 点详情 | 能看到请求体/响应体/操作人/IP | P1 |
| SYS-043 | 登录日志 | 查看登录日志 | 能看到登录成功/失败记录 | P2 |
| SYS-044 | 编号规则 | 修改客户编号前缀/格式 → 保存 | 新建客户时编号按新规则生成 | P1 |
| SYS-045 | 数据重置 | 选择某模块 → 确认清空 | 仅超管可操作,清空后该模块数据为空 | P2 |
3. CRM 客户管理
3.1 线索管理 /crm/lead
| ID | 场景 | 操作步骤 | 预期结果 | 优先级 |
|---|
| CRM-001 | 新建线索 | 新建 → 填名称/电话/来源/级别 → 保存 | 创建成功,自动生成线索编号 | P0 |
| CRM-002 | 线索查重 | 新建线索时输入已存在的名称/电话 | 提示重复线索/客户 | P1 |
| CRM-003 | 领取线索 | 在线索池点击「领取」 | 线索移出公海,负责人变为当前用户 | P0 |
| CRM-004 | 释放线索 | 选中线索 → 「释放到公海」 | 线索移入公海池 | P0 |
| CRM-005 | 转移线索 | 选中线索 → 「转移」→ 选目标用户 | 负责人变更为目标用户 | P1 |
| CRM-006 | 转化线索 | 选中线索 → 「转化」 | 线索状态变为「已转化」,自动创建客户+联系人 | P0 |
| CRM-007 | 线索跟进 | 线索详情 → 跟进 Tab → 写跟进 → 保存 | 时间线出现新跟进记录 | P0 |
| CRM-008 | 公海自动回收 | 配置回收规则后,超期未跟进的线索 | 定时任务自动回收到公海 | P2 |
3.2 客户管理 /crm/customer
| ID | 场景 | 操作步骤 | 预期结果 | 优先级 |
|---|
| CRM-020 | 新建客户 | 新建 → 填名称/级别/行业/来源 → 保存 | 创建成功,自动生成客户编号 | P0 |
| CRM-021 | 编辑客户 | 打开客户详情抽屉 → 修改信息 → 保存 | 保存成功 | P0 |
| CRM-022 | 客户详情-联系人 | 详情 → 联系人 Tab → 添加联系人 | 联系人列表新增一条 | P1 |
| CRM-023 | 客户详情-商机 | 详情 → 商机 Tab → 添加商机 | 商机列表新增一条 | P1 |
| CRM-024 | 客户详情-合同 | 详情 → 合同 Tab → 查看关联合同 | 展示该客户的合同列表 | P1 |
| CRM-025 | 客户详情-跟进 | 详情 → 跟进 Tab → 写跟进(含 Ctrl+Enter) | 时间线出现新记录 | P0 |
| CRM-026 | 客户详情-团队 | 详情 → 团队 Tab → 添加协作成员 | 成员列表新增,可设置只读/协作 | P2 |
| CRM-027 | 客户详情-变更历史 | 详情 → 变更历史 Tab | 展示字段变更轨迹 | P1 |
| CRM-028 | 客户详情-自定义字段 | 详情 → 自定义字段 Tab → 填值 → 保存 | 自定义字段值保存成功 | P1 |
| CRM-029 | 客户详情-附件 | 详情 → 附件 Tab → 上传文件 → 点击下载 | 上传成功,下载正常(不 404) | P0 |
| CRM-030 | 客户领取 | 公海池 → 领取客户 | 负责人变为当前用户 | P0 |
| CRM-031 | 客户转移 | 转移客户给其他用户 | 负责人变更,变更历史有记录 | P0 |
| CRM-032 | 删除客户 | 删除某客户 | 软删除成功 | P1 |
| CRM-033 | 数据权限过滤 | 非超管用户(仅本人范围)查看客户列表 | 只能看到自己负责的客户 | P0 |
3.3 商机管理 /crm/opportunity
| ID | 场景 | 操作步骤 | 预期结果 | 优先级 |
|---|
| CRM-050 | 新建商机 | 新建 → 关联客户 → 填名称/金额 → 保存 | 创建成功 | P0 |
| CRM-051 | 阶段流转 | 商机详情 → 变更阶段(如 谈判中 → 已成交) | 阶段变更成功,阶段历史有记录 | P0 |
| CRM-052 | 看板视图 | 切换看板视图 | 按阶段分列展示,卡片可拖拽 | P1 |
| CRM-053 | 赢单生成合同 | 商机阶段改为「已成交」→ 创建合同 | 合同自动带入客户和金额 | P1 |
3.4 合同管理 /crm/contract
| ID | 场景 | 操作步骤 | 预期结果 | 优先级 |
|---|
| CRM-070 | 新建合同 | 新建 → 关联客户 → 填金额/日期 → 保存 | 创建成功 | P0 |
| CRM-071 | 合同明细项 | 合同详情 → 添加产品明细行 | 明细行保存成功 | P1 |
| CRM-072 | 回款计划 | 合同详情 → 添加回款计划 | 计划列表新增一条 | P1 |
| CRM-073 | 登记回款 | 合同详情 → 登记回款 → 填金额/日期 → 保存 | 回款记录新增,合同已回款金额累计 | P0 |
| CRM-074 | 合同模板渲染 | 使用模板新建合同 → 变量替换 | ${customerName} 等占位符被正确替换 | P1 |
3.5 自定义字段 /crm/field
| ID | 场景 | 操作步骤 | 预期结果 | 优先级 |
|---|
| CRM-090 | 添加字段 | 点击左侧类型(如单行文本) | 字段出现在表单预览区 | P0 |
| CRM-091 | 编辑字段属性 | 选中字段 → 修改名称 → 点「保存属性」 | 保存成功(不报 Type 校验错误) | P0 |
| CRM-092 | 选项类字段配置 | 添加「下拉单选」→ 在属性区配置选项 → 保存 | 选项保存成功,客户详情中下拉框显示选项 | P0 |
| CRM-093 | 字段排序 | 点字段上移/下移按钮 | 顺序更新,保存成功 | P1 |
| CRM-094 | 删除字段 | 删除某自定义字段 | 删除成功,表单不再显示 | P1 |
| CRM-095 | 字段移动端显示 | 创建字段并开启「移动端」开关 | 移动端表单中出现该字段 | P2 |
3.6 跟进计划 /crm/follow
| ID | 场景 | 操作步骤 | 预期结果 | 优先级 |
|---|
| CRM-110 | 新建计划 | 点「新建跟进计划」→ 填类型/内容/计划时间 → 确定 | 列表新增一条待办计划 | P0 |
| CRM-111 | 转跟进记录 | 选中计划 → 「转跟进记录」→ 确认 | 计划消失,跟进记录生成 | P0 |
| CRM-112 | 跳过计划 | 选中计划 → 「跳过」 | 计划状态变更 | P1 |
| CRM-113 | 编辑计划 | 编辑计划 → 修改时间 → 保存 | 保存成功 | P1 |
| CRM-114 | 删除计划 | 删除某计划 | 删除成功 | P1 |
4. OA 办公自动化
| ID | 场景 | 模块路径 | 操作步骤 | 预期结果 | 优先级 |
|---|
| OA-001 | 新建报销单 | /oa/expense | 新建 → 填标题/费用明细/金额 → 提交审批 | 创建成功,进入审批流 | P0 |
| OA-002 | 报销打款 | /oa/expense | 已审批的报销单 → 点「标记已打款」 | 状态变为「已打款」 | P1 |
| OA-003 | 出差申请 | /oa/trip | 新建出差 → 填目的地/预算/日期 → 提交 | 创建成功 | P1 |
| OA-004 | 借款+还款 | /oa/loan | 新建借款 → 标记部分还款 → 再还清 | 还款状态:未还→部分→已还清 | P1 |
| OA-005 | 工作日志 | /oa/work-log | 新建日报 → 填今日完成/明日计划 → 保存 | 列表新增记录 | P1 |
| OA-006 | 日程安排 | /oa/schedule | 新建日程 → 设提醒 → 保存 | 日历视图显示该日程 | P2 |
| OA-007 | 会议室预订 | /oa/meeting-booking | 选会议室+时间段 → 提交预订 | 预订成功(无冲突时) | P1 |
| OA-008 | 会议室冲突 | /oa/meeting-booking | 同一会议室同一时间段重复预订 | 报错提示时间冲突 | P1 |
| OA-009 | 公告发布 | /oa/notice | 新建公告(草稿)→ 发布 | 首页公告栏显示该公告 | P1 |
| OA-010 | 公告撤回 | /oa/notice | 已发布的公告 → 撤回 | 公告状态变为已撤回 | P2 |
| OA-011 | 站内消息 | /oa/message | 给某用户发一条消息 | 对方实时收到(SSE 推送) | P1 |
| OA-012 | 消息已读 | /oa/message | 点击「全部已读」 | 未读数清零 | P1 |
| OA-013 | 自定义表单 | /oa/form-template | 新建表单模板 → 配置字段 → 启用 → 员工填写 | 提交数据可查看 | P2 |
5. 审批中心
| ID | 场景 | 模块路径 | 操作步骤 | 预期结果 | 优先级 |
|---|
| APR-001 | 我的待办 | /approval/todo | 查看待办列表 | 展示待审批任务 | P0 |
| APR-002 | 审批通过 | 待办详情 | 打开审批单 → 点「同意」 | 任务流转到下一节点或结束 | P0 |
| APR-003 | 审批驳回 | 待办详情 | 打开审批单 → 点「驳回」→ 填原因 | 整个审批实例驳回,业务状态回滚 | P0 |
| APR-004 | 撤回审批 | /approval/mine | 我发起的审批 → 撤回 | 审批终止 | P1 |
| APR-005 | 已办列表 | /approval/done | 查看已办 | 展示已处理的审批记录 | P1 |
| APR-006 | 流程设计器 | /approval/flow | 新建流程 → 拖入审批节点 → 配置审批人 → 保存 → 启用 | 流程可被业务模块使用 | P0 |
| APR-007 | 条件分支 | 流程设计器 | 配置金额>5万走总经理分支 | 不同金额自动走不同路径 | P1 |
| APR-008 | 会签模式 | 流程设计器 | 审批节点配会签(全员同意) | 所有审批人都同意才通过 | P1 |
| APR-009 | 或签模式 | 流程设计器 | 审批节点配或签(任一同意) | 任一审批人同意即通过 | P1 |
| APR-010 | 报销发起审批 | /oa/expense | 报销单提交审批 | 审批待办中出现该报销单 | P0 |
6. PSI 进销存
| ID | 场景 | 模块路径 | 操作步骤 | 预期结果 | 优先级 |
|---|
| PSI-001 | 新建供应商 | /psi/supplier | 新建 → 填名称/联系人/电话 → 保存 | 列表新增 | P1 |
| PSI-002 | 新建仓库 | /psi/warehouse | 新建 → 填名称/地址 → 保存 | 列表新增 | P1 |
| PSI-003 | 创建采购单 | /psi/purchase-order | 新建 → 选供应商 → 添加商品明细 → 保存 | 创建成功,状态「待入库」 | P0 |
| PSI-004 | 采购入库 | /psi/purchase-order | 采购单 → 执行入库 | 状态变「已入库」,库存增加 | P0 |
| PSI-005 | 采购退货 | /psi/purchase-return | 新建退货 → 选原采购单 → 退货出库 | 库存减少 | P1 |
| PSI-006 | 创建销售单 | /psi/sales-order | 新建 → 选客户 → 添加商品 → 保存 | 创建成功,状态「待出库」 | P0 |
| PSI-007 | 销售出库 | /psi/sales-order | 销售单 → 执行出库 | 状态变「已出库」,库存减少 | P0 |
| PSI-008 | 库存不足出库 | /psi/sales-order | 出库数量 > 当前库存 | 报错提示库存不足 | P0 |
| PSI-009 | 销售退货 | /psi/sales-return | 新建退货 → 入库 | 库存恢复 | P1 |
| PSI-010 | 库存结余 | /psi/stock | 查看库存列表 | 按仓库+产品展示结余数量 | P1 |
| PSI-011 | 收发明细 | /psi/movement | 查看出入库流水 | 展示所有出入库记录 | P1 |
| PSI-012 | 库存预警 | /psi/stock | 查看低库存商品 | 标红显示低于安全库存的商品 | P2 |
7. 财务管理
| ID | 场景 | 模块路径 | 操作步骤 | 预期结果 | 优先级 |
|---|
| FIN-001 | 会计科目 | /finance/account | 查看科目树 | 树形展示资产/负债/权益/成本/损益 | P1 |
| FIN-002 | 新增科目 | /finance/account | 新增子科目 → 保存 | 科目树新增节点 | P1 |
| FIN-003 | 录入凭证 | /finance/voucher | 新建凭证 → 选科目 → 填借贷金额 → 保存 | 借贷平衡校验通过,凭证创建成功 | P0 |
| FIN-004 | 借贷不平 | /finance/voucher | 借方总额 ≠ 贷方总额 → 保存 | 报错提示借贷不平衡 | P0 |
| FIN-005 | 凭证审核 | /finance/voucher | 未审核凭证 → 点「审核」 | 状态变为已审核 | P1 |
| FIN-006 | 开具发票 | /finance/invoice | 新建发票 → 关联合同 → 填金额 → 保存 | 创建成功 | P1 |
| FIN-007 | 应收收款 | /finance/receivable | 应收单 → 标记结算 → 填收款金额 | 结算状态更新 | P1 |
| FIN-008 | 财务报表 | /finance/report | 查看资产负债表/利润表 | 报表数据正确展示 | P2 |
8. HRM 人事管理
| ID | 场景 | 模块路径 | 操作步骤 | 预期结果 | 优先级 |
|---|
| HRM-001 | 部门树 | /hrm/department | 查看部门树 | 树形展示多级部门 | P0 |
| HRM-002 | 新增部门 | /hrm/department | 新建子部门 → 填名称 → 保存 | 树新增节点 | P1 |
| HRM-003 | 岗位管理 | /hrm/position | 新建岗位 → 绑定部门 → 保存 | 列表新增 | P1 |
| HRM-004 | 新增员工 | /hrm/employee | 新建 → 填姓名/工号/部门/岗位 → 保存 | 创建成功 | P0 |
| HRM-005 | 员工转正 | /hrm/employee | 试用期员工 → 操作转正 | 状态变更为正式 | P1 |
| HRM-006 | 员工离职 | /hrm/employee | 操作离职 → 批量转移客户/线索 | 该员工名下业务数据转移给指定人 | P1 |
| HRM-007 | 请假申请 | /hrm/leave | 新建请假 → 填类型/天数 → 提交审批 | 进入审批流 | P1 |
| HRM-008 | 考勤汇总 | /hrm/attendance | 查看月度考勤 | 展示出勤/迟到/缺卡统计 | P2 |
| HRM-009 | 绩效考核 | /hrm/performance | 发起考核 → 员工自评 → 主管评分 | 评分流程完成 | P2 |
| HRM-010 | 招聘职位 | /hrm/recruitment | 新建职位 → 发布 → 添加候选人 | 候选人列表可追踪状态 | P2 |
9. CMS 内容管理
| ID | 场景 | 模块路径 | 操作步骤 | 预期结果 | 优先级 |
|---|
| CMS-001 | 新建文章 | /cms/article | 新建 → 填标题/正文(Markdown)/分类 → 发布 | 官网展示该文章 | P0 |
| CMS-002 | 文章草稿 | /cms/article | 新建 → 保存为草稿 | 不在官网展示,后台可见 | P1 |
| CMS-003 | 编辑文章 | /cms/article | 编辑已发布文章 → 修改内容 → 保存 | 官网内容更新 | P1 |
| CMS-004 | 文章置顶/热门 | /cms/article | 设置 is_top / is_hot | 官网首页优先展示 | P2 |
| CMS-005 | 分类管理 | /cms/category | 新建分类 → 保存 | 文章可选择该分类 | P1 |
| CMS-006 | 单页管理 | /cms/page | 新建单页(如关于我们)→ 发布 | 官网可访问该页面 | P1 |
| CMS-007 | 标签管理 | /cms/tag | 新建标签 → 保存 | 文章可使用该标签 | P2 |
10. 知识库
| ID | 场景 | 模块路径 | 操作步骤 | 预期结果 | 优先级 |
|---|
| KB-001 | 新建分类 | /kb/category | 新建分类 → 填名称 → 保存 | 分类树新增节点 | P1 |
| KB-002 | 新建文档 | /kb/document | 新建 → 填标题/内容 → 保存 | 文档列表新增 | P0 |
| KB-003 | 富文本编辑 | /kb/document/editor | 打开编辑器 → 编辑内容 → 保存 | 内容保存成功,格式正确 | P1 |
| KB-004 | 版本回滚 | /kb/document | 查看版本历史 → 选择旧版本 → 恢复 | 内容回滚到历史版本 | P1 |
| KB-005 | 发布/草稿 | /kb/document | 文档状态切换 | 草稿不对外展示,已发布可见 | P1 |
11. 项目管理
| ID | 场景 | 模块路径 | 操作步骤 | 预期结果 | 优先级 |
|---|
| PRJ-001 | 新建项目 | /project | 新建 → 关联客户 → 填名称/经理/成员 → 保存 | 创建成功 | P1 |
| PRJ-002 | 添加任务 | 项目详情 | 添加任务 → 填标题/负责人 → 保存 | 任务列表新增 | P1 |
| PRJ-003 | 任务状态变更 | 项目详情 | 拖拽任务从「待办」到「已完成」 | 状态变更成功 | P1 |
| PRJ-004 | 项目进度 | 项目详情 | 更新进度百分比 → 保存 | 进度条更新 | P2 |
12. 企业网盘
| ID | 场景 | 模块路径 | 操作步骤 | 预期结果 | 优先级 |
|---|
| CLD-001 | 新建文件夹 | /cloud | 新建文件夹 → 填名称 → 确定 | 文件列表新增文件夹 | P1 |
| CLD-002 | 上传文件 | /cloud | 选择文件 → 上传 | 文件出现在列表 | P0 |
| CLD-003 | 个人空间隔离 | /cloud | 切换到个人空间 → 上传文件 | 仅本人可见 | P1 |
| CLD-004 | 部门空间共享 | /cloud | 切换到部门空间 → 上传文件 | 同部门成员可见 | P1 |
| CLD-005 | 文件重命名 | /cloud | 右键文件 → 重命名 → 保存 | 名称更新 | P2 |
| CLD-006 | 删除到回收站 | /cloud | 删除文件 | 文件移入回收站,常规列表不可见 | P2 |
13. 定时任务
| ID | 场景 | 模块路径 | 操作步骤 | 预期结果 | 优先级 |
|---|
| JOB-001 | 新建任务 | /enterprise/job | 新建 → 填名称/Cron表达式/处理器 → 保存 | 创建成功,状态运行中 | P1 |
| JOB-002 | 手动触发 | /enterprise/job | 点「执行」 | 异步执行,任务日志新增一条 | P1 |
| JOB-003 | 暂停任务 | /enterprise/job | 暂停某任务 | 状态变暂停,不再定时触发 | P2 |
| JOB-004 | 查看执行日志 | /enterprise/job-log | 查看日志列表 | 展示状态/耗时/输出/异常 | P1 |
| JOB-005 | Cron 格式校验 | /enterprise/job | 输入无效 Cron(如 99 * * * * *) | 报错提示格式无效 | P2 |
14. AI 业务系统(MCP)
全部业务功能通过 MCP 协议开放(/mcp 端点,API Key 认证),可被 Claude Desktop / Cursor 等 AI 客户端直接调用。密钥在「个人中心 → API Key」管理。
| ID | 场景 | 前置条件 | 操作步骤 | 预期结果 | 优先级 |
|---|
| AI-001 | 创建 API Key | 已登录 | 个人中心 → API Key → 新建 → 勾选工具集(如仅 CRM)→ 保存 | 生成 qzt_ 前缀密钥,仅展示一次 | P1 |
| AI-002 | MCP 连接 | AI-001 的密钥 | 客户端配置 url=https://域名/mcp + Authorization: Bearer qzt_xxx → 连接 | 连接成功,tools/list 只返回勾选工具集内的工具 | P1 |
| AI-003 | 自然语言查数据 | 已连接 | 对 AI 说「查客户 XX 的资料和最近三次跟进」 | AI 调用 crm_* 工具,返回真实业务数据 | P1 |
| AI-004 | 自然语言写数据 | 已连接 | 对 AI 说「给客户 XX 建一条电话跟进,要点是……」 | crm_followup_create 成功落库,后台可见该记录 | P1 |
| AI-005 | 工具集裁剪 | 密钥仅勾选 CRM | 让 AI 调用 OA 工具(如发公告) | 工具不可见 / 调用被拒绝 | P2 |
| AI-006 | 操作级权限 | 普通角色(无 HRM 权限)的密钥 | 让 AI 查员工薪资 | Casbin 拒绝,返回无权限提示 | P1 |
| AI-007 | 吊销密钥 | 存在已创建密钥 | 删除该 API Key → 客户端再次调用 | 返回 401,调用失败 | P1 |
15. 跨模块公共用例
15.1 通用 CRUD 模式
| ID | 场景 | 适用范围 | 操作步骤 | 预期结果 | 优先级 |
|---|
| X-001 | 分页加载 | 所有列表页 | 翻页 / 改变每页条数 | 数据正确分页,无重复/遗漏 | P0 |
| X-002 | 关键词搜索 | 所有列表页 | 输入关键词 → 搜索 | 结果正确匹配 | P0 |
| X-003 | 必填校验 | 所有表单 | 空提交表单 | 提示必填字段 | P0 |
| X-004 | 表单取消 | 所有 Modal 表单 | 打开新建弹窗 → 填一半 → 点取消 | 数据不保存,弹窗关闭 | P1 |
| X-005 | 删除确认 | 所有删除操作 | 点击删除 | 弹出确认框,确认后执行 | P0 |
15.2 权限控制
| ID | 场景 | 操作步骤 | 预期结果 | 优先级 |
|---|
| X-010 | 菜单不可见 | 用只读角色登录 | 无权限的菜单不显示 | P0 |
| X-011 | 按钮不可见 | 用只读角色进入有权限的页面 | 新建/编辑/删除按钮不显示 | P0 |
| X-012 | API 越权拦截 | 用非超管 token 直接调用无权限 API | 返回 403 | P0 |
| X-013 | 数据范围过滤 | data_scope=本部门用户 | 列表只返回本部门数据 | P0 |
15.3 文件上传与附件
| ID | 场景 | 操作步骤 | 预期结果 | 优先级 |
|---|
| X-020 | 上传图片 | 任意上传组件 → 选图片 | 上传成功,返回 CDN URL | P0 |
| X-021 | 上传 PDF | 任意上传组件 → 选 PDF | 上传成功 | P0 |
| X-022 | 文件大小超限 | 上传超过 max_upload_mb 的文件 | 报错提示文件过大 | P1 |
| X-023 | 文件类型限制 | 上传不允许的扩展名(如 .exe) | 报错提示文件类型不允许 | P1 |
| X-024 | 私有文件下载 | 附件面板 → 点击下载私有文件 | 下载成功,不 404 | P0 |
| X-025 | 删除附件 | 附件面板 → 删除 | 元数据软删除,记录消失 | P1 |
15.4 Dashboard 与分析
| ID | 场景 | 模块路径 | 操作步骤 | 预期结果 | 优先级 |
|---|
| X-030 | 工作台指标 | /dashboard | 查看核心指标卡片 | 正确显示客户数/商机数/合同额/回款额 | P1 |
| X-031 | 回款趋势图 | /dashboard | 查看回款趋势折线图 | 图表正常渲染 | P1 |
| X-032 | 商机漏斗 | /dashboard | 查看商机漏斗 | 各阶段数量/金额正确 | P1 |
| X-033 | CRM 分析 | /analysis/crm | 查看销售排行/合同趋势 | 数据正确展示 | P2 |
| X-034 | HRM 分析 | /analysis/hrm | 查看人员分布/考勤汇总 | 数据正确展示 | P2 |
| X-035 | Finance 分析 | /analysis/finance | 查看收支趋势 | 数据正确展示 | P2 |
| X-036 | PSI 分析 | /analysis/psi | 查看库存价值/采销对比 | 数据正确展示 | P2 |
15.5 浏览器兼容性
| ID | 场景 | 测试环境 | 预期结果 | 优先级 |
|---|
| X-040 | Chrome 最新版 | Windows / macOS | 全功能正常 | P0 |
| X-041 | Edge 最新版 | Windows | 全功能正常 | P1 |
| X-042 | Safari | macOS | 全功能正常 | P1 |
| X-043 | 移动端 H5 | m.devlovecode.com | 移动端页面正常(列表加载、表单提交、个人中心) | P1 |
测试执行记录模板
| 用例 ID | 执行日期 | 执行人 | 结果(通过/失败/阻塞) | 备注/缺陷描述 |
|---|
| AUTH-001 | 2026-08-10 | — | — | — |
| ... | | | | |
已知修复记录
| 日期 | 模块 | 缺陷描述 | 修复 commit |
|---|
| 2026-08-10 | 移动端 | 列表页首次加载为空(useInfiniteList 未自动加载) | — |
| 2026-08-10 | 移动端 | FloatingBubble 不可见(缺 CSS 变量) | — |
| 2026-08-10 | 移动端 | FormSheet 提交无响应(Button type=submit 不可靠) | — |
| 2026-08-10 | 后端 | 私有附件下载 404(SignURL 硬编码 /api 前缀) | 27d7c9b |
| 2026-08-10 | CRM | 自定义字段保存属性报 Type 校验失败 | 0617adb |