|
@@ -1,390 +1,573 @@
|
|
|
-# 阶段一用例文档 — 基础设施与用户体系
|
|
|
|
|
|
|
+# 阶段2a用例文档 — 果农核心功能
|
|
|
|
|
|
|
|
-> 功能点覆盖:20/20
|
|
|
|
|
|
|
+> 功能点覆盖:14/14
|
|
|
|
|
+> 用例数:32
|
|
|
|
|
|
|
|
---
|
|
---
|
|
|
|
|
|
|
|
-## 一、系统管理用例
|
|
|
|
|
|
|
+## 一、果农名篇用例
|
|
|
|
|
|
|
|
-### UC-SYS-001: 角色管理
|
|
|
|
|
|
|
+### UC-GP-001: 查看名片信息
|
|
|
|
|
|
|
|
-**主要参与者**: 超级管理员
|
|
|
|
|
|
|
+**主要参与者**: 果农用户
|
|
|
|
|
|
|
|
-**前置条件**: 已登录后台管理系统
|
|
|
|
|
|
|
+**前置条件**: 已登录,身份为果农
|
|
|
|
|
|
|
|
**基本流程**:
|
|
**基本流程**:
|
|
|
-1. 管理员进入系统管理 → 角色管理
|
|
|
|
|
-2. 系统显示角色列表(角色名称、编码、状态、创建时间)
|
|
|
|
|
-3. 管理员点击某个角色查看详情
|
|
|
|
|
-4. 系统显示角色详情(权限列表)
|
|
|
|
|
-5. 管理员修改权限配置
|
|
|
|
|
-6. 系统保存权限变更
|
|
|
|
|
-7. 系统记录操作日志
|
|
|
|
|
|
|
+1. 果农进入"我的名片"页面
|
|
|
|
|
+2. 系统查询 grower_profile 表
|
|
|
|
|
+3. 系统展示名片信息:品种、产量、预期价格、果园地址、视频、照片、审核状态
|
|
|
|
|
|
|
|
**替代流程**:
|
|
**替代流程**:
|
|
|
-- 3a. 管理员搜索角色 → 按名称筛选
|
|
|
|
|
-- 5a. 管理员尝试删除系统预置角色 → 系统提示"系统预置角色不可删除"
|
|
|
|
|
|
|
+- 2a. 名片未完善 → 显示引导页,提示完善信息
|
|
|
|
|
|
|
|
-**后置条件**: 角色权限已更新,操作日志已记录
|
|
|
|
|
|
|
+**后置条件**: 无数据变更
|
|
|
|
|
|
|
|
---
|
|
---
|
|
|
|
|
|
|
|
-### UC-SYS-002: 账号管理
|
|
|
|
|
|
|
+### UC-GP-002: 编辑名片信息
|
|
|
|
|
|
|
|
-**主要参与者**: 超级管理员
|
|
|
|
|
|
|
+**主要参与者**: 果农用户
|
|
|
|
|
|
|
|
-**前置条件**: 已登录后台管理系统
|
|
|
|
|
|
|
+**前置条件**: 已登录,身份为果农
|
|
|
|
|
|
|
|
**基本流程**:
|
|
**基本流程**:
|
|
|
-1. 管理员进入系统管理 → 账号管理
|
|
|
|
|
-2. 系统显示账号列表(用户名、姓名、手机号、角色、状态)
|
|
|
|
|
-3. 管理员点击"新增账号"
|
|
|
|
|
-4. 管理员填写:用户名、密码、姓名、手机号、角色
|
|
|
|
|
-5. 系统验证:用户名唯一、手机号唯一、密码强度
|
|
|
|
|
-6. 系统创建账号(密码 BCrypt 加密)
|
|
|
|
|
-7. 系统记录操作日志
|
|
|
|
|
|
|
+1. 果农点击"编辑名片"
|
|
|
|
|
+2. 系统显示编辑表单(品种多选、产量、价格、地址)
|
|
|
|
|
+3. 果农修改信息
|
|
|
|
|
+4. 果农点击"保存"
|
|
|
|
|
+5. 系统验证数据(品种非空、价格>0、地址非空)
|
|
|
|
|
+6. 系统更新 grower_profile 表
|
|
|
|
|
+7. 系统重置审核状态为"待审"
|
|
|
|
|
|
|
|
**替代流程**:
|
|
**替代流程**:
|
|
|
-- 5a. 用户名已存在 → 提示"用户名已存在"
|
|
|
|
|
-- 5b. 手机号已存在 → 提示"手机号已注册"
|
|
|
|
|
-- 5c. 密码强度不足 → 提示"密码需≥8位,含大小写字母和数字"
|
|
|
|
|
|
|
+- 5a. 必填字段为空 → 提示"请填写完整信息"
|
|
|
|
|
+- 5b. 价格≤0 → 提示"价格必须大于0"
|
|
|
|
|
|
|
|
-**后置条件**: 账号已创建,可正常登录
|
|
|
|
|
|
|
+**后置条件**: 名片信息已更新,审核状态重置为待审
|
|
|
|
|
|
|
|
---
|
|
---
|
|
|
|
|
|
|
|
-### UC-SYS-003: 字典管理
|
|
|
|
|
|
|
+### UC-GP-003: 上传果园视频
|
|
|
|
|
|
|
|
-**主要参与者**: 超级管理员、数据录入员
|
|
|
|
|
|
|
+**主要参与者**: 果农用户
|
|
|
|
|
|
|
|
-**前置条件**: 已登录后台管理系统
|
|
|
|
|
|
|
+**前置条件**: 已登录,身份为果农
|
|
|
|
|
|
|
|
**基本流程**:
|
|
**基本流程**:
|
|
|
-1. 管理员进入系统管理 → 字典管理
|
|
|
|
|
-2. 系统显示字典类型列表
|
|
|
|
|
-3. 管理员选择某个字典类型(如"苹果品种")
|
|
|
|
|
-4. 系统显示该类型下的字典项列表
|
|
|
|
|
-5. 管理员点击"新增字典项"
|
|
|
|
|
-6. 管理员填写:字典编码、字典名称、排序号
|
|
|
|
|
-7. 系统验证:字典编码唯一
|
|
|
|
|
-8. 系统创建字典项
|
|
|
|
|
-9. 系统记录操作日志
|
|
|
|
|
|
|
+1. 果农在名片编辑页点击"上传视频"
|
|
|
|
|
+2. 前端调用 `wx.chooseVideo()` 选择视频
|
|
|
|
|
+3. 前端清除EXIF元数据
|
|
|
|
|
+4. 前端预校验:格式(MP4/MOV)、大小(≤50MB)
|
|
|
|
|
+5. 前端调用 `/api/wx/file/upload/video` 上传
|
|
|
|
|
+6. 后端校验文件格式和大小
|
|
|
|
|
+7. 后端存储到 `./uploads/video/` 目录
|
|
|
|
|
+8. 后端返回文件URL
|
|
|
|
|
+9. 前端更新名片视频URL
|
|
|
|
|
+10. 后端异步压缩视频(720p/2Mbps)
|
|
|
|
|
|
|
|
**替代流程**:
|
|
**替代流程**:
|
|
|
-- 7a. 字典编码已存在 → 提示"字典编码已存在"
|
|
|
|
|
-- 5a. 管理员尝试删除系统内置字典 → 提示"系统内置字典不可删除"
|
|
|
|
|
|
|
+- 4a. 格式不支持 → 提示"仅支持MP4/MOV格式"
|
|
|
|
|
+- 4b. 文件过大 → 提示"视频大小不能超过50MB"
|
|
|
|
|
+- 5a. 网络中断 → 提示"上传失败,请重试"
|
|
|
|
|
+- 10a. 压缩失败 → 自动重试3次,仍失败记录日志
|
|
|
|
|
|
|
|
-**后置条件**: 字典项已创建,可在业务中使用
|
|
|
|
|
|
|
+**后置条件**: 视频已上传,URL已存入 grower_profile.video_url
|
|
|
|
|
|
|
|
---
|
|
---
|
|
|
|
|
|
|
|
-### UC-SYS-004: 操作日志查看
|
|
|
|
|
|
|
+### UC-GP-004: 上传果园照片
|
|
|
|
|
|
|
|
-**主要参与者**: 超级管理员
|
|
|
|
|
|
|
+**主要参与者**: 果农用户
|
|
|
|
|
|
|
|
-**前置条件**: 已登录后台管理系统
|
|
|
|
|
|
|
+**前置条件**: 已登录,身份为果农
|
|
|
|
|
|
|
|
**基本流程**:
|
|
**基本流程**:
|
|
|
-1. 管理员进入系统管理 → 操作日志
|
|
|
|
|
-2. 系统显示操作日志列表(操作人、时间、类型、模块、内容、IP、结果)
|
|
|
|
|
-3. 管理员按条件筛选(操作人、时间范围、操作类型)
|
|
|
|
|
-4. 系统显示筛选结果
|
|
|
|
|
-5. 管理员点击某条日志查看详情
|
|
|
|
|
-6. 系统显示日志详情
|
|
|
|
|
|
|
+1. 果农在名片编辑页点击"上传照片"
|
|
|
|
|
+2. 前端调用 `wx.chooseImage()` 选择照片(≤9张)
|
|
|
|
|
+3. 前端清除EXIF元数据
|
|
|
|
|
+4. 前端预校验:格式(JPG/JPEG/PNG/GIF)、单张大小(≤5MB)
|
|
|
|
|
+5. 前端逐张调用 `/api/wx/file/upload/image` 上传
|
|
|
|
|
+6. 后端存储到 `./uploads/image/` 目录
|
|
|
|
|
+7. 后端返回文件URL列表
|
|
|
|
|
+8. 前端更新名片照片列表
|
|
|
|
|
|
|
|
**替代流程**:
|
|
**替代流程**:
|
|
|
-- 3a. 管理员导出日志 → 系统生成 Excel 文件
|
|
|
|
|
|
|
+- 2a. 已有9张照片 → 提示"最多上传9张照片"
|
|
|
|
|
+- 4a. 单张过大 → 提示"单张照片不能超过5MB"
|
|
|
|
|
+- 5a. 部分上传失败 → 提示失败数量,支持重新上传
|
|
|
|
|
+
|
|
|
|
|
+**后置条件**: 照片URL已存入 grower_profile.photos(JSON数组)
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+### UC-GP-005: 删除已上传照片
|
|
|
|
|
+
|
|
|
|
|
+**主要参与者**: 果农用户
|
|
|
|
|
+
|
|
|
|
|
+**前置条件**: 已登录,身份为果农,已有照片
|
|
|
|
|
+
|
|
|
|
|
+**基本流程**:
|
|
|
|
|
+1. 果农在名片编辑页查看照片列表
|
|
|
|
|
+2. 果农点击某张照片的"删除"按钮
|
|
|
|
|
+3. 系统弹出确认框
|
|
|
|
|
+4. 果农确认删除
|
|
|
|
|
+5. 系统调用 `/api/wx/file/delete` 删除文件
|
|
|
|
|
+6. 系统更新 grower_profile.photos,移除对应URL
|
|
|
|
|
+
|
|
|
|
|
+**替代流程**:
|
|
|
|
|
+- 4a. 果农取消 → 不执行删除
|
|
|
|
|
+
|
|
|
|
|
+**后置条件**: 照片已删除,URL已从数据库移除
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+### UC-GP-006: 查看审核状态
|
|
|
|
|
+
|
|
|
|
|
+**主要参与者**: 果农用户
|
|
|
|
|
+
|
|
|
|
|
+**前置条件**: 已登录,身份为果农,已提交名片
|
|
|
|
|
+
|
|
|
|
|
+**基本流程**:
|
|
|
|
|
+1. 果农进入"我的名片"页面
|
|
|
|
|
+2. 系统查询 audit_status 字段
|
|
|
|
|
+3. 系统展示审核状态:
|
|
|
|
|
+ - 待审(0) → 显示"审核中"
|
|
|
|
|
+ - 已通过(1) → 显示"已通过"
|
|
|
|
|
+ - 被驳回(2) → 显示"已驳回" + 驳回原因
|
|
|
|
|
+
|
|
|
|
|
+**替代流程**: 无
|
|
|
|
|
|
|
|
**后置条件**: 无数据变更
|
|
**后置条件**: 无数据变更
|
|
|
|
|
|
|
|
---
|
|
---
|
|
|
|
|
|
|
|
-## 二、用户认证用例
|
|
|
|
|
|
|
+### UC-GP-007: 驳回后重新提交
|
|
|
|
|
|
|
|
-### UC-AUTH-001: 微信登录
|
|
|
|
|
|
|
+**主要参与者**: 果农用户
|
|
|
|
|
+
|
|
|
|
|
+**前置条件**: 已登录,身份为果农,名片被驳回
|
|
|
|
|
+
|
|
|
|
|
+**基本流程**:
|
|
|
|
|
+1. 果农查看驳回原因
|
|
|
|
|
+2. 果农修改名片信息/更换视频照片
|
|
|
|
|
+3. 果农点击"重新提交"
|
|
|
|
|
+4. 系统重置审核状态为"待审(0)"
|
|
|
|
|
+5. 系统清除驳回原因
|
|
|
|
|
+
|
|
|
|
|
+**替代流程**: 无
|
|
|
|
|
+
|
|
|
|
|
+**后置条件**: 审核状态重置为待审
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
|
|
|
-**主要参与者**: 小程序用户
|
|
|
|
|
|
|
+## 二、招工发布用例
|
|
|
|
|
|
|
|
-**前置条件**: 用户已安装微信
|
|
|
|
|
|
|
+### UC-RC-001: 发布招工信息
|
|
|
|
|
+
|
|
|
|
|
+**主要参与者**: 果农用户
|
|
|
|
|
+
|
|
|
|
|
+**前置条件**: 已登录,身份为果农
|
|
|
|
|
|
|
|
**基本流程**:
|
|
**基本流程**:
|
|
|
-1. 用户打开小程序
|
|
|
|
|
-2. 小程序调用 `wx.login()` 获取 code
|
|
|
|
|
-3. 小程序将 code 发送到后端
|
|
|
|
|
-4. 后端用 code 调用微信接口换取 openid
|
|
|
|
|
-5. 后端查询 openid 是否已绑定用户
|
|
|
|
|
-6. 已绑定 → 后端签发 JWT token,返回用户信息
|
|
|
|
|
-7. 小程序存储 token,进入首页
|
|
|
|
|
|
|
+1. 果农点击"发布招工"
|
|
|
|
|
+2. 系统显示招工表单
|
|
|
|
|
+3. 果农填写:工种(多选)、价格、价格单位、人数、天数、工作地点、备注
|
|
|
|
|
+4. 果农点击"发布"
|
|
|
|
|
+5. 系统验证必填字段(工种、价格、价格单位、人数、工作地点)
|
|
|
|
|
+6. 系统检测敏感关键词
|
|
|
|
|
+7. 如无敏感词 → keyword_flag=0
|
|
|
|
|
+8. 如有敏感词 → keyword_flag=1
|
|
|
|
|
+9. 系统创建 recruit_info 记录(status=1,免审核直接发布)
|
|
|
|
|
+10. 系统提示"发布成功"
|
|
|
|
|
|
|
|
**替代流程**:
|
|
**替代流程**:
|
|
|
-- 5a. 未绑定 → 返回提示"未找到信息,请联系村委会"
|
|
|
|
|
-- 6a. 用户有多个身份 → 返回身份列表,用户选择后进入对应首页
|
|
|
|
|
|
|
+- 5a. 必填字段为空 → 提示"请填写完整信息"
|
|
|
|
|
+- 5b. 价格≤0 → 提示"价格必须大于0"
|
|
|
|
|
+- 5c. 人数≤0 → 提示"人数必须大于0"
|
|
|
|
|
|
|
|
-**后置条件**: 用户已登录,token 已存储
|
|
|
|
|
|
|
+**后置条件**: 招工信息已发布,工人可见
|
|
|
|
|
|
|
|
---
|
|
---
|
|
|
|
|
|
|
|
-### UC-AUTH-002: 后台登录
|
|
|
|
|
|
|
+### UC-RC-002: 语音输入备注
|
|
|
|
|
|
|
|
-**主要参与者**: 后台管理员
|
|
|
|
|
|
|
+**主要参与者**: 果农用户
|
|
|
|
|
|
|
|
-**前置条件**: 已打开后台管理系统
|
|
|
|
|
|
|
+**前置条件**: 正在编辑招工表单
|
|
|
|
|
|
|
|
**基本流程**:
|
|
**基本流程**:
|
|
|
-1. 管理员输入用户名和密码
|
|
|
|
|
-2. 点击"登录"
|
|
|
|
|
-3. 系统验证用户名存在
|
|
|
|
|
-4. 系统验证密码正确(BCrypt)
|
|
|
|
|
-5. 系统验证账号状态(非禁用)
|
|
|
|
|
-6. 系统签发 JWT token
|
|
|
|
|
-7. 系统记录登录日志
|
|
|
|
|
-8. 管理员进入后台首页
|
|
|
|
|
|
|
+1. 果农点击备注输入框旁的麦克风图标
|
|
|
|
|
+2. 前端调用语音识别API
|
|
|
|
|
+3. 果农说话
|
|
|
|
|
+4. 前端将语音转为文字
|
|
|
|
|
+5. 文字自动填入备注输入框
|
|
|
|
|
+6. 果农可手动修改识别结果
|
|
|
|
|
|
|
|
**替代流程**:
|
|
**替代流程**:
|
|
|
-- 3a. 用户名不存在 → 提示"用户名或密码错误"
|
|
|
|
|
-- 4a. 密码错误 → 提示"用户名或密码错误",记录错误次数
|
|
|
|
|
-- 4b. 连续5次错误 → 锁定30分钟,提示"账号已锁定,请30分钟后重试"
|
|
|
|
|
-- 5a. 账号已禁用 → 提示"账号已禁用,请联系管理员"
|
|
|
|
|
|
|
+- 2a. 语音识别失败 → 提示"识别失败,请手动输入"
|
|
|
|
|
+- 3a. 环境噪音过大 → 提示"请到安静环境重试"
|
|
|
|
|
|
|
|
-**后置条件**: 管理员已登录,token 已存储
|
|
|
|
|
|
|
+**后置条件**: 备注已填入
|
|
|
|
|
|
|
|
---
|
|
---
|
|
|
|
|
|
|
|
-### UC-AUTH-003: 身份路由
|
|
|
|
|
|
|
+### UC-RC-003: 编辑招工信息
|
|
|
|
|
|
|
|
-**主要参与者**: 小程序用户
|
|
|
|
|
|
|
+**主要参与者**: 果农用户
|
|
|
|
|
|
|
|
-**前置条件**: 用户已登录
|
|
|
|
|
|
|
+**前置条件**: 已登录,身份为果农,已有发布的招工
|
|
|
|
|
|
|
|
**基本流程**:
|
|
**基本流程**:
|
|
|
-1. 用户登录成功
|
|
|
|
|
-2. 系统查询用户绑定的身份数量
|
|
|
|
|
-3. 根据身份数量决定跳转:
|
|
|
|
|
- - 0个身份 → 显示提示页"未找到信息,请联系村委会"
|
|
|
|
|
- - 1个身份 → 直接进入对应首页
|
|
|
|
|
- - N个身份 → 显示身份选择页
|
|
|
|
|
|
|
+1. 果农进入"我的招工"列表
|
|
|
|
|
+2. 果农选择某条招工,点击"编辑"
|
|
|
|
|
+3. 系统显示编辑表单(价格、人数、天数、备注可编辑)
|
|
|
|
|
+4. 果农修改信息
|
|
|
|
|
+5. 果农点击"保存"
|
|
|
|
|
+6. 系统验证数据
|
|
|
|
|
+7. 系统检测敏感关键词
|
|
|
|
|
+8. 系统更新 recruit_info 记录
|
|
|
|
|
|
|
|
**替代流程**:
|
|
**替代流程**:
|
|
|
-- 3a. 用户选择身份 → 进入对应首页
|
|
|
|
|
-- 3b. 用户拒绝授权 → 显示引导页,提供联系管理员方式
|
|
|
|
|
|
|
+- 6a. 数据验证失败 → 提示错误信息
|
|
|
|
|
|
|
|
-**后置条件**: 用户已进入对应角色首页
|
|
|
|
|
|
|
+**后置条件**: 招工信息已更新
|
|
|
|
|
|
|
|
---
|
|
---
|
|
|
|
|
|
|
|
-### UC-AUTH-004: 用户信息查询
|
|
|
|
|
|
|
+### UC-RC-004: 下架招工信息
|
|
|
|
|
|
|
|
-**主要参与者**: 已登录用户
|
|
|
|
|
|
|
+**主要参与者**: 果农用户
|
|
|
|
|
|
|
|
-**前置条件**: 用户已登录
|
|
|
|
|
|
|
+**前置条件**: 已登录,身份为果农,已有发布的招工
|
|
|
|
|
|
|
|
**基本流程**:
|
|
**基本流程**:
|
|
|
-1. 用户进入个人中心
|
|
|
|
|
-2. 系统查询用户基本信息
|
|
|
|
|
-3. 系统返回:用户ID、姓名、手机号(脱敏)、身份列表、当前身份
|
|
|
|
|
|
|
+1. 果农进入"我的招工"列表
|
|
|
|
|
+2. 果农选择某条招工,点击"下架"
|
|
|
|
|
+3. 系统弹出确认框
|
|
|
|
|
+4. 果农确认下架
|
|
|
|
|
+5. 系统更新 recruit_info.status=0
|
|
|
|
|
+6. 系统提示"已下架"
|
|
|
|
|
|
|
|
-**替代流程**: 无
|
|
|
|
|
|
|
+**替代流程**:
|
|
|
|
|
+- 4a. 果农取消 → 不执行下架
|
|
|
|
|
|
|
|
-**后置条件**: 无数据变更
|
|
|
|
|
|
|
+**后置条件**: 招工已下架,工人不可见
|
|
|
|
|
|
|
|
---
|
|
---
|
|
|
|
|
|
|
|
-### UC-AUTH-005: 用户状态管理
|
|
|
|
|
|
|
+### UC-RC-005: 查看我的招工列表
|
|
|
|
|
|
|
|
-**主要参与者**: 超级管理员
|
|
|
|
|
|
|
+**主要参与者**: 果农用户
|
|
|
|
|
|
|
|
-**前置条件**: 已登录后台管理系统
|
|
|
|
|
|
|
+**前置条件**: 已登录,身份为果农
|
|
|
|
|
|
|
|
**基本流程**:
|
|
**基本流程**:
|
|
|
-1. 管理员进入用户管理 → 用户列表
|
|
|
|
|
-2. 管理员选择某个用户
|
|
|
|
|
-3. 管理员修改用户状态(启用/禁用/锁定)
|
|
|
|
|
-4. 系统验证操作合法性
|
|
|
|
|
-5. 系统更新用户状态
|
|
|
|
|
-6. 系统记录操作日志
|
|
|
|
|
|
|
+1. 果农进入"我的招工"页面
|
|
|
|
|
+2. 系统查询该果农发布的所有招工
|
|
|
|
|
+3. 系统按发布时间倒序展示
|
|
|
|
|
+4. 展示:工种、价格、人数、发布时间、状态、报名人数
|
|
|
|
|
+5. 果农可下拉刷新、上拉加载更多
|
|
|
|
|
|
|
|
**替代流程**:
|
|
**替代流程**:
|
|
|
-- 4a. 尝试禁用超级管理员 → 提示"不可禁用超级管理员"
|
|
|
|
|
-- 3a. 锁定操作 → 需填写锁定原因
|
|
|
|
|
|
|
+- 2a. 无招工记录 → 显示"暂无招工,去发布"
|
|
|
|
|
|
|
|
-**后置条件**: 用户状态已更新,操作日志已记录
|
|
|
|
|
|
|
+**后置条件**: 无数据变更
|
|
|
|
|
|
|
|
---
|
|
---
|
|
|
|
|
|
|
|
-### UC-AUTH-006: 管理员创建用户
|
|
|
|
|
|
|
+### UC-RC-006: 敏感词自动检测
|
|
|
|
|
|
|
|
-**主要参与者**: 超级管理员、数据录入员
|
|
|
|
|
|
|
+**主要参与者**: 系统(自动)
|
|
|
|
|
|
|
|
-**前置条件**: 已登录后台管理系统
|
|
|
|
|
|
|
+**前置条件**: 果农发布或编辑招工
|
|
|
|
|
|
|
|
**基本流程**:
|
|
**基本流程**:
|
|
|
-1. 管理员进入用户管理 → 创建用户
|
|
|
|
|
-2. 管理员填写:姓名、手机号
|
|
|
|
|
-3. 管理员选择身份类型
|
|
|
|
|
-4. 管理员填写身份详细信息
|
|
|
|
|
-5. 系统验证:手机号唯一
|
|
|
|
|
-6. 系统创建用户账号
|
|
|
|
|
-7. 系统发送短信通知用户
|
|
|
|
|
-8. 系统记录操作日志
|
|
|
|
|
|
|
+1. 系统获取招工备注内容
|
|
|
|
|
+2. 系统使用正则表达式匹配敏感词库
|
|
|
|
|
+3. 匹配成功 → 设置 keyword_flag=1
|
|
|
|
|
+4. 匹配失败 → 设置 keyword_flag=0
|
|
|
|
|
+5. 记录检测结果
|
|
|
|
|
+
|
|
|
|
|
+**替代流程**: 无
|
|
|
|
|
+
|
|
|
|
|
+**后置条件**: keyword_flag 已设置
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## 三、找工人用例
|
|
|
|
|
+
|
|
|
|
|
+### UC-WK-001: 查看工人列表
|
|
|
|
|
+
|
|
|
|
|
+**主要参与者**: 果农用户
|
|
|
|
|
+
|
|
|
|
|
+**前置条件**: 已登录,身份为果农
|
|
|
|
|
+
|
|
|
|
|
+**基本流程**:
|
|
|
|
|
+1. 果农点击"找工人"
|
|
|
|
|
+2. 系统查询状态为"空闲"的工人
|
|
|
|
|
+3. 系统按工种筛选(可选)
|
|
|
|
|
+4. 系统按距离升序排序
|
|
|
|
|
+5. 系统展示工人列表:姓名、工种标签、报价、距离、状态
|
|
|
|
|
+6. 果农可下拉刷新、上拉加载更多
|
|
|
|
|
|
|
|
**替代流程**:
|
|
**替代流程**:
|
|
|
-- 5a. 手机号已存在 → 提示"手机号已注册"
|
|
|
|
|
|
|
+- 2a. 无空闲工人 → 显示"暂无空闲工人"
|
|
|
|
|
+- 3a. 选择特定工种 → 仅显示该工种工人
|
|
|
|
|
+
|
|
|
|
|
+**后置条件**: 无数据变更
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+### UC-WK-002: 按工种筛选工人
|
|
|
|
|
+
|
|
|
|
|
+**主要参与者**: 果农用户
|
|
|
|
|
|
|
|
-**后置条件**: 用户已创建,等待首次登录激活
|
|
|
|
|
|
|
+**前置条件**: 正在查看工人列表
|
|
|
|
|
+
|
|
|
|
|
+**基本流程**:
|
|
|
|
|
+1. 果农点击工种筛选按钮
|
|
|
|
|
+2. 系统显示工种选项(采摘工/分拣工/装卸工/喷药工/修剪工/施肥工)
|
|
|
|
|
+3. 果农选择工种
|
|
|
|
|
+4. 系统重新查询并展示筛选结果
|
|
|
|
|
+
|
|
|
|
|
+**替代流程**: 无
|
|
|
|
|
+
|
|
|
|
|
+**后置条件**: 无数据变更
|
|
|
|
|
|
|
|
---
|
|
---
|
|
|
|
|
|
|
|
-### UC-AUTH-007: 身份绑定
|
|
|
|
|
|
|
+### UC-WK-003: 拨打工人电话
|
|
|
|
|
|
|
|
-**主要参与者**: 超级管理员、数据录入员
|
|
|
|
|
|
|
+**主要参与者**: 果农用户
|
|
|
|
|
|
|
|
-**前置条件**: 已登录后台管理系统,用户已存在
|
|
|
|
|
|
|
+**前置条件**: 已登录,正在查看工人列表
|
|
|
|
|
|
|
|
**基本流程**:
|
|
**基本流程**:
|
|
|
-1. 管理员进入用户管理 → 选择用户
|
|
|
|
|
-2. 管理员点击"绑定身份"
|
|
|
|
|
-3. 管理员选择身份类型
|
|
|
|
|
-4. 管理员填写身份详细信息
|
|
|
|
|
-5. 系统创建身份关联
|
|
|
|
|
-6. 系统记录操作日志
|
|
|
|
|
|
|
+1. 果农点击某工人的"拨号"按钮
|
|
|
|
|
+2. 前端调用 `/api/wx/call/phone` 接口
|
|
|
|
|
+3. 后端记录拨号日志(call_log表)
|
|
|
|
|
+4. 后端返回脱敏手机号(138****8888)
|
|
|
|
|
+5. 前端调用 `wx.makePhoneCall()` 唤起系统拨号
|
|
|
|
|
|
|
|
**替代流程**:
|
|
**替代流程**:
|
|
|
-- 3a. 用户已有该类型身份 → 提示"用户已有该身份"
|
|
|
|
|
|
|
+- 3a. 接口调用失败 → 提示"获取号码失败,请重试"
|
|
|
|
|
+- 5a. 用户取消拨号 → 不做处理
|
|
|
|
|
|
|
|
-**后置条件**: 用户已绑定新身份
|
|
|
|
|
|
|
+**后置条件**: 拨号日志已记录
|
|
|
|
|
|
|
|
---
|
|
---
|
|
|
|
|
|
|
|
-### UC-AUTH-008: 退出登录
|
|
|
|
|
|
|
+### UC-WK-004: 查看工人详情
|
|
|
|
|
|
|
|
-**主要参与者**: 已登录用户
|
|
|
|
|
|
|
+**主要参与者**: 果农用户
|
|
|
|
|
|
|
|
-**前置条件**: 用户已登录
|
|
|
|
|
|
|
+**前置条件**: 正在查看工人列表
|
|
|
|
|
|
|
|
**基本流程**:
|
|
**基本流程**:
|
|
|
-1. 用户点击"退出登录"
|
|
|
|
|
-2. 系统清除本地 token
|
|
|
|
|
-3. 系统跳转到登录页
|
|
|
|
|
|
|
+1. 果农点击某工人卡片
|
|
|
|
|
+2. 系统显示工人详情:姓名、技能标签、报价、状态、距离
|
|
|
|
|
+3. 显示"拨号"按钮
|
|
|
|
|
|
|
|
**替代流程**: 无
|
|
**替代流程**: 无
|
|
|
|
|
|
|
|
-**后置条件**: 用户已退出,token 已清除
|
|
|
|
|
|
|
+**后置条件**: 无数据变更
|
|
|
|
|
|
|
|
---
|
|
---
|
|
|
|
|
|
|
|
-## 三、首页与行情用例
|
|
|
|
|
|
|
+## 四、找客商用例
|
|
|
|
|
|
|
|
-### UC-HOME-001: 果农首页展示
|
|
|
|
|
|
|
+### UC-BY-001: 查看客商列表
|
|
|
|
|
|
|
|
**主要参与者**: 果农用户
|
|
**主要参与者**: 果农用户
|
|
|
|
|
|
|
|
**前置条件**: 已登录,身份为果农
|
|
**前置条件**: 已登录,身份为果农
|
|
|
|
|
|
|
|
**基本流程**:
|
|
**基本流程**:
|
|
|
-1. 用户进入果农首页
|
|
|
|
|
-2. 系统显示问候语"早安,[姓名]!"
|
|
|
|
|
-3. 系统显示今日行情(苹果品种、价格区间、涨跌、更新时间)
|
|
|
|
|
-4. 系统显示金刚区(找工人、找客商、买农资、发布需求)
|
|
|
|
|
|
|
+1. 果农点击"找客商"
|
|
|
|
|
+2. 系统查询所有客商
|
|
|
|
|
+3. 系统展示客商列表:姓名/公司名、收购品种、收购价格、收购数量、地址
|
|
|
|
|
+4. 果农可下拉刷新、上拉加载更多
|
|
|
|
|
|
|
|
**替代流程**:
|
|
**替代流程**:
|
|
|
-- 3a. 行情数据未更新 → 显示"暂无行情数据"
|
|
|
|
|
|
|
+- 2a. 无客商数据 → 显示"暂无客商信息"
|
|
|
|
|
|
|
|
**后置条件**: 无数据变更
|
|
**后置条件**: 无数据变更
|
|
|
|
|
|
|
|
---
|
|
---
|
|
|
|
|
|
|
|
-### UC-HOME-002: 工人首页展示
|
|
|
|
|
|
|
+### UC-BY-002: 拨打客商电话
|
|
|
|
|
|
|
|
-**主要参与者**: 工人用户
|
|
|
|
|
|
|
+**主要参与者**: 果农用户
|
|
|
|
|
|
|
|
-**前置条件**: 已登录,身份为工人
|
|
|
|
|
|
|
+**前置条件**: 已登录,正在查看客商列表
|
|
|
|
|
|
|
|
**基本流程**:
|
|
**基本流程**:
|
|
|
-1. 用户进入工人首页
|
|
|
|
|
-2. 系统显示推荐招工(按工种匹配+距离排序)
|
|
|
|
|
-3. 系统显示招工卡片列表(工种、价格、天数、人数、果农姓名、距离)
|
|
|
|
|
|
|
+1. 果农点击某客商的"拨号"按钮
|
|
|
|
|
+2. 前端调用 `/api/wx/call/phone` 接口
|
|
|
|
|
+3. 后端记录拨号日志
|
|
|
|
|
+4. 后端返回脱敏手机号
|
|
|
|
|
+5. 前端唤起系统拨号
|
|
|
|
|
|
|
|
**替代流程**:
|
|
**替代流程**:
|
|
|
-- 2a. 无匹配招工 → 显示"暂无招工信息"
|
|
|
|
|
|
|
+- 3a. 接口调用失败 → 提示"获取号码失败,请重试"
|
|
|
|
|
+
|
|
|
|
|
+**后置条件**: 拨号日志已记录
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+### UC-BY-003: 查看客商详情
|
|
|
|
|
+
|
|
|
|
|
+**主要参与者**: 果农用户
|
|
|
|
|
+
|
|
|
|
|
+**前置条件**: 正在查看客商列表
|
|
|
|
|
+
|
|
|
|
|
+**基本流程**:
|
|
|
|
|
+1. 果农点击某客商卡片
|
|
|
|
|
+2. 系统显示客商详情:公司名、收购品种、价格区间、收购标准、地址
|
|
|
|
|
+3. 显示"拨号"按钮
|
|
|
|
|
+
|
|
|
|
|
+**替代流程**: 无
|
|
|
|
|
|
|
|
**后置条件**: 无数据变更
|
|
**后置条件**: 无数据变更
|
|
|
|
|
|
|
|
---
|
|
---
|
|
|
|
|
|
|
|
-### UC-HOME-003: 客商首页展示
|
|
|
|
|
|
|
+## 五、后台审核用例
|
|
|
|
|
+
|
|
|
|
|
+### UC-AU-001: 查看名片审核列表
|
|
|
|
|
|
|
|
-**主要参与者**: 客商用户
|
|
|
|
|
|
|
+**主要参与者**: 审核员
|
|
|
|
|
|
|
|
-**前置条件**: 已登录,身份为客商
|
|
|
|
|
|
|
+**前置条件**: 已登录后台管理系统
|
|
|
|
|
|
|
|
**基本流程**:
|
|
**基本流程**:
|
|
|
-1. 用户进入客商首页
|
|
|
|
|
-2. 系统显示今日行情
|
|
|
|
|
-3. 系统显示货源推荐(按品种匹配+产量排序)
|
|
|
|
|
|
|
+1. 审核员进入"内容审核" → "名片审核"
|
|
|
|
|
+2. 系统查询 audit_status=0 的果农档案
|
|
|
|
|
+3. 系统按提交时间倒序展示
|
|
|
|
|
+4. 展示:果农姓名、品种、提交时间、审核状态
|
|
|
|
|
+5. 系统显示待审核数量角标
|
|
|
|
|
|
|
|
**替代流程**:
|
|
**替代流程**:
|
|
|
-- 3a. 无匹配货源 → 显示"暂无货源信息"
|
|
|
|
|
|
|
+- 2a. 无待审核项 → 显示"暂无待审核"
|
|
|
|
|
|
|
|
**后置条件**: 无数据变更
|
|
**后置条件**: 无数据变更
|
|
|
|
|
|
|
|
---
|
|
---
|
|
|
|
|
|
|
|
-### UC-HOME-004: 农资商首页展示
|
|
|
|
|
|
|
+### UC-AU-002: 审核果农名片
|
|
|
|
|
|
|
|
-**主要参与者**: 农资商用户
|
|
|
|
|
|
|
+**主要参与者**: 审核员
|
|
|
|
|
|
|
|
-**前置条件**: 已登录,身份为农资商
|
|
|
|
|
|
|
+**前置条件**: 已登录后台管理系统,有待审核名片
|
|
|
|
|
|
|
|
**基本流程**:
|
|
**基本流程**:
|
|
|
-1. 用户进入农资商首页
|
|
|
|
|
-2. 系统显示店铺概览
|
|
|
|
|
-3. 系统显示快捷入口(商品管理、订单管理、店铺设置)
|
|
|
|
|
|
|
+1. 审核员选择某条待审核名片
|
|
|
|
|
+2. 系统显示名片详情(视频、照片、信息)
|
|
|
|
|
+3. 审核员审核内容
|
|
|
|
|
+4. 审核员点击"通过"或"驳回"
|
|
|
|
|
+5. 如驳回 → 填写驳回原因(必填)
|
|
|
|
|
+6. 系统更新 grower_profile.audit_status
|
|
|
|
|
+7. 系统记录审核日志(audit_log表)
|
|
|
|
|
+8. 系统通知果农审核结果
|
|
|
|
|
|
|
|
**替代流程**:
|
|
**替代流程**:
|
|
|
-- 2a. 店铺未完善 → 显示引导完善店铺信息
|
|
|
|
|
|
|
+- 5a. 驳回但未填原因 → 提示"请填写驳回原因"
|
|
|
|
|
|
|
|
-**后置条件**: 无数据变更
|
|
|
|
|
|
|
+**后置条件**: 审核状态已更新,审核日志已记录
|
|
|
|
|
|
|
|
---
|
|
---
|
|
|
|
|
|
|
|
-## 四、审核用例
|
|
|
|
|
|
|
+### UC-AU-003: 查看待复核招工列表
|
|
|
|
|
|
|
|
-### UC-AUDIT-001: 审核流程
|
|
|
|
|
|
|
+**主要参与者**: 审核员
|
|
|
|
|
+
|
|
|
|
|
+**前置条件**: 已登录后台管理系统
|
|
|
|
|
+
|
|
|
|
|
+**基本流程**:
|
|
|
|
|
+1. 审核员进入"内容审核" → "待复核列表"
|
|
|
|
|
+2. 系统查询 keyword_flag=1 的招工信息
|
|
|
|
|
+3. 系统按发布时间倒序展示
|
|
|
|
|
+4. 展示:招工内容、标记关键词、发布者、发布时间
|
|
|
|
|
+5. 系统显示待复核数量角标
|
|
|
|
|
+
|
|
|
|
|
+**替代流程**:
|
|
|
|
|
+- 2a. 无待复核项 → 显示"暂无待复核"
|
|
|
|
|
+
|
|
|
|
|
+**后置条件**: 无数据变更
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+### UC-AU-004: 处理待复核招工
|
|
|
|
|
|
|
|
**主要参与者**: 审核员
|
|
**主要参与者**: 审核员
|
|
|
|
|
|
|
|
-**前置条件**: 已登录后台管理系统,有待审核项
|
|
|
|
|
|
|
+**前置条件**: 已登录后台管理系统,有待复核招工
|
|
|
|
|
|
|
|
**基本流程**:
|
|
**基本流程**:
|
|
|
-1. 审核员进入内容审核 → 待审核列表
|
|
|
|
|
-2. 系统显示待审核列表(审核类型、提交人、提交时间)
|
|
|
|
|
-3. 审核员选择某项查看详情
|
|
|
|
|
-4. 系统显示审核详情(内容、附件)
|
|
|
|
|
-5. 审核员点击"通过"或"驳回"
|
|
|
|
|
-6. 如驳回,填写驳回原因
|
|
|
|
|
-7. 系统更新审核状态
|
|
|
|
|
-8. 系统记录审核日志
|
|
|
|
|
-9. 系统通知提交人审核结果
|
|
|
|
|
|
|
+1. 审核员选择某条待复核招工
|
|
|
|
|
+2. 系统显示招工详情和标记的敏感词
|
|
|
|
|
+3. 审核员判断内容是否违规
|
|
|
|
|
+4. 如正常 → 点击"标记为正常",keyword_flag=0
|
|
|
|
|
+5. 如违规 → 点击"强制下架",填写原因,status=0
|
|
|
|
|
+6. 系统记录审核日志
|
|
|
|
|
+7. 系统通知发布者
|
|
|
|
|
|
|
|
**替代流程**:
|
|
**替代流程**:
|
|
|
-- 5a. 审核员点击"驳回" → 必须填写驳回原因
|
|
|
|
|
|
|
+- 5a. 未填下架原因 → 提示"请填写下架原因"
|
|
|
|
|
+
|
|
|
|
|
+**后置条件**: 招工状态已更新,审核日志已记录
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+### UC-AU-005: 审核SLA提醒(24小时)
|
|
|
|
|
|
|
|
-**后置条件**: 审核状态已更新,通知已发送
|
|
|
|
|
|
|
+**主要参与者**: 系统(定时任务)
|
|
|
|
|
+
|
|
|
|
|
+**前置条件**: 有待审核项超过24小时
|
|
|
|
|
+
|
|
|
|
|
+**基本流程**:
|
|
|
|
|
+1. 定时任务每小时扫描一次
|
|
|
|
|
+2. 查询创建时间超过24小时且未处理的审核项
|
|
|
|
|
+3. 系统发送提醒通知给对应审核员
|
|
|
|
|
+4. 记录提醒日志
|
|
|
|
|
+
|
|
|
|
|
+**替代流程**: 无
|
|
|
|
|
+
|
|
|
|
|
+**后置条件**: 提醒已发送
|
|
|
|
|
|
|
|
---
|
|
---
|
|
|
|
|
|
|
|
-### UC-AUDIT-002: 审核列表查看
|
|
|
|
|
|
|
+### UC-AU-006: 审核SLA升级(48小时)
|
|
|
|
|
+
|
|
|
|
|
+**主要参与者**: 系统(定时任务)
|
|
|
|
|
+
|
|
|
|
|
+**前置条件**: 有待审核项超过48小时
|
|
|
|
|
+
|
|
|
|
|
+**基本流程**:
|
|
|
|
|
+1. 定时任务每小时扫描一次
|
|
|
|
|
+2. 查询创建时间超过48小时且未处理的审核项
|
|
|
|
|
+3. 系统发送升级提醒给超级管理员
|
|
|
|
|
+4. 记录提醒日志
|
|
|
|
|
+
|
|
|
|
|
+**替代流程**: 无
|
|
|
|
|
+
|
|
|
|
|
+**后置条件**: 升级提醒已发送
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+### UC-AU-007: 后台查看招工巡查列表
|
|
|
|
|
|
|
|
**主要参与者**: 审核员、超级管理员
|
|
**主要参与者**: 审核员、超级管理员
|
|
|
|
|
|
|
|
**前置条件**: 已登录后台管理系统
|
|
**前置条件**: 已登录后台管理系统
|
|
|
|
|
|
|
|
**基本流程**:
|
|
**基本流程**:
|
|
|
-1. 审核员进入内容审核
|
|
|
|
|
-2. 系统显示审核列表(待审核/已审核 Tab)
|
|
|
|
|
-3. 审核员按条件筛选(审核类型、状态、时间范围)
|
|
|
|
|
-4. 系统显示筛选结果
|
|
|
|
|
-5. 系统显示待审核数量角标
|
|
|
|
|
|
|
+1. 管理员进入"内容审核" → "招工巡查"
|
|
|
|
|
+2. 系统查询所有招工信息(含已下架)
|
|
|
|
|
+3. 系统按发布时间倒序展示
|
|
|
|
|
+4. 管理员可筛选:状态、关键词标记、时间范围
|
|
|
|
|
+5. 管理员可强制下架违规内容
|
|
|
|
|
|
|
|
**替代流程**: 无
|
|
**替代流程**: 无
|
|
|
|
|
|
|
@@ -396,8 +579,9 @@
|
|
|
|
|
|
|
|
| 模块 | 用例数 | 功能点覆盖 |
|
|
| 模块 | 用例数 | 功能点覆盖 |
|
|
|
|------|--------|-----------|
|
|
|------|--------|-----------|
|
|
|
-| 系统管理 | 4 | 6/6 |
|
|
|
|
|
-| 用户认证 | 8 | 8/8 |
|
|
|
|
|
-| 首页与行情 | 4 | 4/4 |
|
|
|
|
|
-| 审核框架 | 2 | 2/2 |
|
|
|
|
|
-| **总计** | **18** | **20/20** |
|
|
|
|
|
|
|
+| 果农名片 | 7 | 4/4 |
|
|
|
|
|
+| 招工发布 | 6 | 5/5 |
|
|
|
|
|
+| 找工人 | 4 | 2/2 |
|
|
|
|
|
+| 找客商 | 3 | 2/2 |
|
|
|
|
|
+| 后台审核 | 7 | 3/3 |
|
|
|
|
|
+| **总计** | **32** | **14/14** |
|