# 阶段2a用例文档 — 果农核心功能 > 功能点覆盖:14/14 > 用例数:32 --- ## 一、果农名篇用例 ### UC-GP-001: 查看名片信息 **主要参与者**: 果农用户 **前置条件**: 已登录,身份为果农 **基本流程**: 1. 果农进入"我的名片"页面 2. 系统查询 grower_profile 表 3. 系统展示名片信息:品种、产量、预期价格、果园地址、视频、照片、审核状态 **替代流程**: - 2a. 名片未完善 → 显示引导页,提示完善信息 **后置条件**: 无数据变更 --- ### UC-GP-002: 编辑名片信息 **主要参与者**: 果农用户 **前置条件**: 已登录,身份为果农 **基本流程**: 1. 果农点击"编辑名片" 2. 系统显示编辑表单(品种多选、产量、价格、地址) 3. 果农修改信息 4. 果农点击"保存" 5. 系统验证数据(品种非空、价格>0、地址非空) 6. 系统更新 grower_profile 表 7. 系统重置审核状态为"待审" **替代流程**: - 5a. 必填字段为空 → 提示"请填写完整信息" - 5b. 价格≤0 → 提示"价格必须大于0" **后置条件**: 名片信息已更新,审核状态重置为待审 --- ### UC-GP-003: 上传果园视频 **主要参与者**: 果农用户 **前置条件**: 已登录,身份为果农 **基本流程**: 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) **替代流程**: - 4a. 格式不支持 → 提示"仅支持MP4/MOV格式" - 4b. 文件过大 → 提示"视频大小不能超过50MB" - 5a. 网络中断 → 提示"上传失败,请重试" - 10a. 压缩失败 → 自动重试3次,仍失败记录日志 **后置条件**: 视频已上传,URL已存入 grower_profile.video_url --- ### UC-GP-004: 上传果园照片 **主要参与者**: 果农用户 **前置条件**: 已登录,身份为果农 **基本流程**: 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. 前端更新名片照片列表 **替代流程**: - 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: 驳回后重新提交 **主要参与者**: 果农用户 **前置条件**: 已登录,身份为果农,名片被驳回 **基本流程**: 1. 果农查看驳回原因 2. 果农修改名片信息/更换视频照片 3. 果农点击"重新提交" 4. 系统重置审核状态为"待审(0)" 5. 系统清除驳回原因 **替代流程**: 无 **后置条件**: 审核状态重置为待审 --- ## 二、招工发布用例 ### UC-RC-001: 发布招工信息 **主要参与者**: 果农用户 **前置条件**: 已登录,身份为果农 **基本流程**: 1. 果农点击"发布招工" 2. 系统显示招工表单 3. 果农填写:工种(多选)、价格、价格单位、人数、天数、工作地点、备注 4. 果农点击"发布" 5. 系统验证必填字段(工种、价格、价格单位、人数、工作地点) 6. 系统检测敏感关键词 7. 如无敏感词 → keyword_flag=0 8. 如有敏感词 → keyword_flag=1 9. 系统创建 recruit_info 记录(status=1,免审核直接发布) 10. 系统提示"发布成功" **替代流程**: - 5a. 必填字段为空 → 提示"请填写完整信息" - 5b. 价格≤0 → 提示"价格必须大于0" - 5c. 人数≤0 → 提示"人数必须大于0" **后置条件**: 招工信息已发布,工人可见 --- ### UC-RC-002: 语音输入备注 **主要参与者**: 果农用户 **前置条件**: 正在编辑招工表单 **基本流程**: 1. 果农点击备注输入框旁的麦克风图标 2. 前端调用语音识别API 3. 果农说话 4. 前端将语音转为文字 5. 文字自动填入备注输入框 6. 果农可手动修改识别结果 **替代流程**: - 2a. 语音识别失败 → 提示"识别失败,请手动输入" - 3a. 环境噪音过大 → 提示"请到安静环境重试" **后置条件**: 备注已填入 --- ### UC-RC-003: 编辑招工信息 **主要参与者**: 果农用户 **前置条件**: 已登录,身份为果农,已有发布的招工 **基本流程**: 1. 果农进入"我的招工"列表 2. 果农选择某条招工,点击"编辑" 3. 系统显示编辑表单(价格、人数、天数、备注可编辑) 4. 果农修改信息 5. 果农点击"保存" 6. 系统验证数据 7. 系统检测敏感关键词 8. 系统更新 recruit_info 记录 **替代流程**: - 6a. 数据验证失败 → 提示错误信息 **后置条件**: 招工信息已更新 --- ### UC-RC-004: 下架招工信息 **主要参与者**: 果农用户 **前置条件**: 已登录,身份为果农,已有发布的招工 **基本流程**: 1. 果农进入"我的招工"列表 2. 果农选择某条招工,点击"下架" 3. 系统弹出确认框 4. 果农确认下架 5. 系统更新 recruit_info.status=0 6. 系统提示"已下架" **替代流程**: - 4a. 果农取消 → 不执行下架 **后置条件**: 招工已下架,工人不可见 --- ### UC-RC-005: 查看我的招工列表 **主要参与者**: 果农用户 **前置条件**: 已登录,身份为果农 **基本流程**: 1. 果农进入"我的招工"页面 2. 系统查询该果农发布的所有招工 3. 系统按发布时间倒序展示 4. 展示:工种、价格、人数、发布时间、状态、报名人数 5. 果农可下拉刷新、上拉加载更多 **替代流程**: - 2a. 无招工记录 → 显示"暂无招工,去发布" **后置条件**: 无数据变更 --- ### UC-RC-006: 敏感词自动检测 **主要参与者**: 系统(自动) **前置条件**: 果农发布或编辑招工 **基本流程**: 1. 系统获取招工备注内容 2. 系统使用正则表达式匹配敏感词库 3. 匹配成功 → 设置 keyword_flag=1 4. 匹配失败 → 设置 keyword_flag=0 5. 记录检测结果 **替代流程**: 无 **后置条件**: keyword_flag 已设置 --- ## 三、找工人用例 ### UC-WK-001: 查看工人列表 **主要参与者**: 果农用户 **前置条件**: 已登录,身份为果农 **基本流程**: 1. 果农点击"找工人" 2. 系统查询状态为"空闲"的工人 3. 系统按工种筛选(可选) 4. 系统按距离升序排序 5. 系统展示工人列表:姓名、工种标签、报价、距离、状态 6. 果农可下拉刷新、上拉加载更多 **替代流程**: - 2a. 无空闲工人 → 显示"暂无空闲工人" - 3a. 选择特定工种 → 仅显示该工种工人 **后置条件**: 无数据变更 --- ### UC-WK-002: 按工种筛选工人 **主要参与者**: 果农用户 **前置条件**: 正在查看工人列表 **基本流程**: 1. 果农点击工种筛选按钮 2. 系统显示工种选项(采摘工/分拣工/装卸工/喷药工/修剪工/施肥工) 3. 果农选择工种 4. 系统重新查询并展示筛选结果 **替代流程**: 无 **后置条件**: 无数据变更 --- ### UC-WK-003: 拨打工人电话 **主要参与者**: 果农用户 **前置条件**: 已登录,正在查看工人列表 **基本流程**: 1. 果农点击某工人的"拨号"按钮 2. 前端调用 `/api/wx/call/phone` 接口 3. 后端记录拨号日志(call_log表) 4. 后端返回脱敏手机号(138****8888) 5. 前端调用 `wx.makePhoneCall()` 唤起系统拨号 **替代流程**: - 3a. 接口调用失败 → 提示"获取号码失败,请重试" - 5a. 用户取消拨号 → 不做处理 **后置条件**: 拨号日志已记录 --- ### UC-WK-004: 查看工人详情 **主要参与者**: 果农用户 **前置条件**: 正在查看工人列表 **基本流程**: 1. 果农点击某工人卡片 2. 系统显示工人详情:姓名、技能标签、报价、状态、距离 3. 显示"拨号"按钮 **替代流程**: 无 **后置条件**: 无数据变更 --- ## 四、找客商用例 ### UC-BY-001: 查看客商列表 **主要参与者**: 果农用户 **前置条件**: 已登录,身份为果农 **基本流程**: 1. 果农点击"找客商" 2. 系统查询所有客商 3. 系统展示客商列表:姓名/公司名、收购品种、收购价格、收购数量、地址 4. 果农可下拉刷新、上拉加载更多 **替代流程**: - 2a. 无客商数据 → 显示"暂无客商信息" **后置条件**: 无数据变更 --- ### UC-BY-002: 拨打客商电话 **主要参与者**: 果农用户 **前置条件**: 已登录,正在查看客商列表 **基本流程**: 1. 果农点击某客商的"拨号"按钮 2. 前端调用 `/api/wx/call/phone` 接口 3. 后端记录拨号日志 4. 后端返回脱敏手机号 5. 前端唤起系统拨号 **替代流程**: - 3a. 接口调用失败 → 提示"获取号码失败,请重试" **后置条件**: 拨号日志已记录 --- ### UC-BY-003: 查看客商详情 **主要参与者**: 果农用户 **前置条件**: 正在查看客商列表 **基本流程**: 1. 果农点击某客商卡片 2. 系统显示客商详情:公司名、收购品种、价格区间、收购标准、地址 3. 显示"拨号"按钮 **替代流程**: 无 **后置条件**: 无数据变更 --- ## 五、后台审核用例 ### UC-AU-001: 查看名片审核列表 **主要参与者**: 审核员 **前置条件**: 已登录后台管理系统 **基本流程**: 1. 审核员进入"内容审核" → "名片审核" 2. 系统查询 audit_status=0 的果农档案 3. 系统按提交时间倒序展示 4. 展示:果农姓名、品种、提交时间、审核状态 5. 系统显示待审核数量角标 **替代流程**: - 2a. 无待审核项 → 显示"暂无待审核" **后置条件**: 无数据变更 --- ### UC-AU-002: 审核果农名片 **主要参与者**: 审核员 **前置条件**: 已登录后台管理系统,有待审核名片 **基本流程**: 1. 审核员选择某条待审核名片 2. 系统显示名片详情(视频、照片、信息) 3. 审核员审核内容 4. 审核员点击"通过"或"驳回" 5. 如驳回 → 填写驳回原因(必填) 6. 系统更新 grower_profile.audit_status 7. 系统记录审核日志(audit_log表) 8. 系统通知果农审核结果 **替代流程**: - 5a. 驳回但未填原因 → 提示"请填写驳回原因" **后置条件**: 审核状态已更新,审核日志已记录 --- ### UC-AU-003: 查看待复核招工列表 **主要参与者**: 审核员 **前置条件**: 已登录后台管理系统 **基本流程**: 1. 审核员进入"内容审核" → "待复核列表" 2. 系统查询 keyword_flag=1 的招工信息 3. 系统按发布时间倒序展示 4. 展示:招工内容、标记关键词、发布者、发布时间 5. 系统显示待复核数量角标 **替代流程**: - 2a. 无待复核项 → 显示"暂无待复核" **后置条件**: 无数据变更 --- ### UC-AU-004: 处理待复核招工 **主要参与者**: 审核员 **前置条件**: 已登录后台管理系统,有待复核招工 **基本流程**: 1. 审核员选择某条待复核招工 2. 系统显示招工详情和标记的敏感词 3. 审核员判断内容是否违规 4. 如正常 → 点击"标记为正常",keyword_flag=0 5. 如违规 → 点击"强制下架",填写原因,status=0 6. 系统记录审核日志 7. 系统通知发布者 **替代流程**: - 5a. 未填下架原因 → 提示"请填写下架原因" **后置条件**: 招工状态已更新,审核日志已记录 --- ### UC-AU-005: 审核SLA提醒(24小时) **主要参与者**: 系统(定时任务) **前置条件**: 有待审核项超过24小时 **基本流程**: 1. 定时任务每小时扫描一次 2. 查询创建时间超过24小时且未处理的审核项 3. 系统发送提醒通知给对应审核员 4. 记录提醒日志 **替代流程**: 无 **后置条件**: 提醒已发送 --- ### UC-AU-006: 审核SLA升级(48小时) **主要参与者**: 系统(定时任务) **前置条件**: 有待审核项超过48小时 **基本流程**: 1. 定时任务每小时扫描一次 2. 查询创建时间超过48小时且未处理的审核项 3. 系统发送升级提醒给超级管理员 4. 记录提醒日志 **替代流程**: 无 **后置条件**: 升级提醒已发送 --- ### UC-AU-007: 后台查看招工巡查列表 **主要参与者**: 审核员、超级管理员 **前置条件**: 已登录后台管理系统 **基本流程**: 1. 管理员进入"内容审核" → "招工巡查" 2. 系统查询所有招工信息(含已下架) 3. 系统按发布时间倒序展示 4. 管理员可筛选:状态、关键词标记、时间范围 5. 管理员可强制下架违规内容 **替代流程**: 无 **后置条件**: 无数据变更 --- ## 用例统计 | 模块 | 用例数 | 功能点覆盖 | |------|--------|-----------| | 果农名片 | 7 | 4/4 | | 招工发布 | 6 | 5/5 | | 找工人 | 4 | 2/2 | | 找客商 | 3 | 2/2 | | 后台审核 | 7 | 3/3 | | **总计** | **32** | **14/14** |