# 移动端(uni-app)— 测试用例 > 依据:`ruoyi-ui-app/pages.json`、`ruoyi-ui-app/doc/*.md`、`doc/uni-app标准.md` 及各业务页面实现。 > **应用形态**:uni-app(Vue3 + uView Plus),主包 4 Tab + 分包 `package-a` 共 20 个子页。 > **接口鉴权**:Header `Authorization: Bearer {token}`(本地键 `Admin-Token`);401 时 Toast「登录过期,即将登录」并跳转登录页。 --- ## 通用前置 | 项 | 说明 | | --- | --- | | **测试账号** | 用户名 **ry**,密码 **123456** | | **后端** | 与 `ruoyi-ui-app/config/index.js` 中 `DEV_API_HOST` 一致(默认 `http://192.168.1.25:8010`);后端已启动且 CORS 已开 | | **运行方式** | H5:`npm run dev:h5`(端口以控制台为准,常见 5173);微信/APP 按 manifest 另行配置 | | **数据** | 业务库宜有:资讯分类(moduleId=01)、畜牧资源、农技课程/实战培训、预约资源(兽医 004001 / 专家 004005 / 机构 004003)、在线接诊兽医、牦牛行情样本 | | **登录态** | 需登录场景:先完成登录;Token 过期场景可 Mock `code=401` 或等待过期 | **App 路由索引**(H5 hash 示例): | 模块 | 路径 | | --- | --- | | 登录 | `#/pages/login/index` | | 首页 Tab | `#/pages/home/index` | | AI Tab | `#/pages/ai/index` | | 消息 Tab | `#/pages/message/index` | | 我的 Tab | `#/pages/mine/index` | | 养殖资讯 | `#/package-a/breeding-news/index` | | 畜牧资源 | `#/package-a/livestock-resources/index` | | 农技课堂 | `#/package-a/agri-classroom/index` | | 用药工具 | `#/package-a/medicine-tools/index` | | 牦牛行情 | `#/package-a/yak-market/index` | | 预约服务 | `#/package-a/booking-service/index` | | 我的预约 | `#/package-a/my-booking/index` | | 在线问诊 | `#/package-a/online-clinic/index` | | AI 助手 | `#/package-a/ai-assistant/index` | --- ## 覆盖说明 | 类别 | 覆盖要点 | | --- | --- | | **登录鉴权** | 登录/退出、验证码、记住账号、Token 401、ensureApiToken 跳转 | | **Tab 与 i18n** | 四 Tab 切换、汉藏双语、Tab 文案同步、藏文布局 | | **可匿名浏览** | 首页宫格、资讯/资源/课堂/用药/行情、课程详情(query 传参) | | **需登录操作** | 预约提交、我的报名、在线问诊、消息、AI 会话、评价提交 | | **预约全链路** | 兽医/专家/机构三类型、表单校验、状态筛选、取消、专家评价 | | **问诊与 AI** | 兽医列表→会话→消息;AI 列表→助手聊天→多媒体 | | **异常** | 空列表、网络失败、重复预约、非法表单、未登录拦截 | --- ## 一、接口测试用例 | 用例编号 | 测试模块 | 测试项 | 测试类型 | 测试工具 | 测试目的 | 前置条件 | 测试步骤 | 预期结果 | | --- | --- | --- | --- | --- | --- | --- | --- | --- | | YDD-LOGIN-API-001 | 登录 | 正常登录 | 接口测试 | Postman/curl | 获取 Token | 验证码关闭或已知 code | `POST /login` Body: `username=ry&password=123456` | `code=200`;返回 `token` | | YDD-LOGIN-API-002 | 登录 | 错误密码 | 接口测试 | Postman | 鉴权失败 | 无 | 错误 password | `code≠200`;msg 提示账号或密码错误 | | YDD-LOGIN-API-003 | 登录 | 获取用户信息 | 接口测试 | Postman | 会话有效 | 已登录 Token | `GET /getInfo` | `code=200`;含 `user`、`roles` | | YDD-LOGIN-API-004 | 登录 | 未登录访问 | 接口测试 | curl | 401 | 无 Token | `GET /getInfo` | 401 或未登录 | | YDD-LOGIN-API-005 | 登录 | 退出 | 接口测试 | Postman | 清会话 | 已登录 | `POST /logout` | `code=200` | | YDD-NEWS-API-001 | 养殖资讯 | 分类树 | 接口测试 | Postman | 分类加载 | 无 | `GET /category/informationCategory/tree?moduleId=01` | `code=200`;可见分类 | | YDD-NEWS-API-002 | 养殖资讯 | 列表分页 | 接口测试 | Postman | 列表 | 有资讯数据 | `GET /app/farmingNews/list?type={code}&pageNum=1&pageSize=10` | `code=200`;`rows` 非 null | | YDD-NEWS-API-003 | 养殖资讯 | 标题模糊 | 接口测试 | Postman | 搜索 | 有样本 | `title=关键字` | 仅匹配标题 | | YDD-RES-API-001 | 畜牧资源 | 四类列表 | 接口测试 | Postman | Tab 数据 | 有资源 | `GET /app/livestockResource/list?type=004002`(及 006/007/008) | 各 type 可返回;`rows` 含 `id`、`sourceType` | | YDD-RES-API-002 | 畜牧资源 | 详情-科技 | 接口测试 | Postman | 源表全字段 | 有已发布技术成果 | `GET /app/livestockResource/{id}?type=2` | `code=200`;`data.resourceType` 为 004006/007/008 | | YDD-RES-API-003 | 畜牧资源 | 详情-医疗 | 接口测试 | Postman | 源表全字段 | 有已发布专家团队 | `GET /app/livestockResource/{id}?type=1` | `code=200`;`data.resourceType=004002` | | YDD-RES-API-004 | 畜牧资源 | 详情-不存在 | 接口测试 | Postman | 异常 | 已登录 | `GET /app/livestockResource/999999?type=2` | 失败;msg 含「下线或不存在」 | | YDD-CLASS-API-001 | 农技课堂 | 视频课程 | 接口测试 | Postman | 课程列表 | 有课程 | `GET /app/agriculturalCourse/list?courseTopic=005001&pageNum=1` | `code=200` | | YDD-CLASS-API-002 | 农技课堂 | 实战培训 | 接口测试 | Postman | 培训列表 | 有培训 | `GET /app/agriculturalCourse/list?trainingStatus=006002` | `code=200` | | YDD-CLASS-API-003 | 培训报名 | 报名 | 接口测试 | Postman | 需登录 | ry 登录;培训 006002 | `POST /app/practicalTraining/{id}/enroll` | `code=200` | | YDD-CLASS-API-004 | 培训报名 | 取消报名 | 接口测试 | Postman | 需登录 | 已报名记录 | `POST /app/practicalTraining/{id}/cancelEnroll` | `code=200` | | YDD-CLASS-API-005 | 我的报名 | 列表 | 接口测试 | Postman | 需登录 | ry 登录 | `GET /app/practicalTraining/myEnroll/list?pageNum=1` | `code=200` | | YDD-MED-API-001 | 用药工具 | 药物查询 | 接口测试 | Postman | 药名必填 | 库有药物 | `GET /app/medication/drug/query?drugName=青霉素` | 返回 drugTypeName 等 | | YDD-MED-API-002 | 用药工具 | 休药期计算 | 接口测试 | Postman | 日期+药名 | 库有药物 | `GET /app/medication/withdrawal/calculate?drugName=xx&stopDate=2026-05-20` | 返回 endDate、withdrawalDays | | YDD-MED-API-003 | 用药工具 | 配伍检查 | 接口测试 | Postman | ≥2 药名 | 无 | `GET /app/medication/compatibility/check?drugName1=a&drugName2=b` | 返回 compatResult | | YDD-MKT-API-001 | 牦牛行情 | 昨日行情 | 接口测试 | Postman | 主卡片 | 有行情 | `GET /app/yakMarket/yesterday` | `code=200` | | YDD-MKT-API-002 | 牦牛行情 | 7 日统计 | 接口测试 | Postman | 统计 | 有数据 | `GET /app/yakMarket/stats7` | `code=200` | | YDD-MKT-API-003 | 牦牛行情 | 走势 | 接口测试 | Postman | 图表 | 有数据 | `GET /app/yakMarket/trend?days=7` | `code=200` | | YDD-MKT-API-004 | 牦牛行情 | 每日列表 | 接口测试 | Postman | 分页 | 有数据 | `GET /app/yakMarket/daily/list?pageNum=1` | `code=200` | | YDD-BOOK-API-001 | 预约服务 | 可约日期 | 接口测试 | Postman | 日期 Chip | 无 | `GET /app/bookingService/dates` | 近 7 日 | | YDD-BOOK-API-002 | 预约服务 | 资源列表 | 接口测试 | Postman | 三类型 | 有资源 | `GET /app/bookingService/resource/list?resourceType=004001` | 兽医列表 | | YDD-BOOK-API-003 | 预约 | 已约时段 | 接口测试 | Postman | 防重复 | ry 登录 | `GET /app/bookingService/appointment/booked?providerType=1&providerId={id}&appointDate=2026-05-25` | 返回已占时段 | | YDD-BOOK-API-004 | 预约 | 提交兽医预约 | 接口测试 | Postman | 主流程 | ry 登录;有效资源 | `POST /app/bookingService/appointment` Body 含 appointeeName、contactPhone、timeSlot、serviceAddress、serviceRequirement | `code=200`;status=0 待确认 | | YDD-BOOK-API-005 | 预约 | 提交机构预约 | 接口测试 | Postman | 机构规则 | ry 登录 | providerType=机构;Body 仅姓名电话 | `code=200`;status=5 已预约 | | YDD-MYBOOK-API-001 | 我的预约 | 列表-兽医 | 接口测试 | Postman | 分页 | ry 登录;有预约 | `GET /app/myAppointment/list?providerType=1&statusTab=all` | `code=200` | | YDD-MYBOOK-API-002 | 我的预约 | 状态筛选 | 接口测试 | Postman | statusTab | 有多状态样本 | `statusTab=notStarted` / `completed` / `cancelled` | 结果符合映射 | | YDD-MYBOOK-API-003 | 我的预约 | 取消预约 | 接口测试 | Postman | 取消 | 可取消记录 | `POST /app/myAppointment/cancel/{id}` | `code=200`;status=3 | | YDD-MYBOOK-API-004 | 我的预约 | 未登录 | 接口测试 | curl | 401 | 无 Token | `GET /app/myAppointment/list` | 401 | | YDD-REVIEW-API-001 | 评价 | 专家历史评价 | 接口测试 | Postman | 列表 | 有评价 | `GET /app/bookingService/expert/{id}/reviews` | `code=200` | | YDD-REVIEW-API-002 | 评价 | 提交评价 | 接口测试 | Postman | 三维评分 | ry 登录;专家已完成未评 | `POST /app/myAppointment/{id}/review` Body: punctualityScore、attitudeScore、guidanceScore、summary | `code=200` | | YDD-REVIEW-API-003 | 评价 | 查看评价 | 接口测试 | Postman | 只读 | 已评价 | `GET /app/myAppointment/{id}/review` | 含三维分与 summary | | YDD-CLINIC-API-001 | 在线问诊 | 兽医列表 | 接口测试 | Postman | 列表 | 有在线接诊兽医 | `GET /app/onlineConsult/vet/list?pageNum=1` | `code=200` | | YDD-CLINIC-API-002 | 在线问诊 | 开启会话 | 接口测试 | Postman | 开 session | ry 登录 | `POST /app/onlineConsult/session/open` Body: vetResourceId | `code=200`;sessionId | | YDD-CONSULT-API-001 | 问诊详情 | 消息列表 | 接口测试 | Postman | 历史消息 | 有 session | `GET /app/onlineConsult/session/{id}/messages` | `code=200` | | YDD-CONSULT-API-002 | 问诊详情 | 发送文本 | 接口测试 | Postman | 发消息 | ry 登录 | `POST /app/onlineConsult/session/{id}/message` msgType=1 | `code=200` | | YDD-MSG-API-001 | 消息 | 会话列表 | 接口测试 | Postman | Tab 消息 | ry 登录 | `GET /app/onlineConsult/session/list?pageNum=1&pageSize=24` | `code=200` | | YDD-MSG-API-002 | 消息 | 隐藏会话 | 接口测试 | Postman | 删除 | 有 session | `POST /app/consult/vet/session/{sessionId}/hide` | `code=200` | | YDD-AI-API-001 | AI | 会话列表 | 接口测试 | Postman | AI Tab | ry 登录 | `GET /app/consult/ai/session/list?pageNum=1&pageSize=100` | `code=200` | | YDD-AI-API-002 | AI | 新建会话 | 接口测试 | Postman | 新建 | ry 登录 | `POST /app/consult/ai/session` | 返回 sessionId | | YDD-AI-API-003 | AI | 隐藏会话 | 接口测试 | Postman | 删除 | 有 session | `POST /app/consult/ai/session/{id}/hide` | `code=200` | | YDD-AI-API-004 | AI | 发送消息 | 接口测试 | Postman | LLM | ry 登录;有 session | `POST /app/consult/ai/session/{id}/message` | `code=200`(超时≤65s) | --- ## 二、界面测试用例(UI) **测试工具**: - **H5**:Playwright + Chromium(`channel: 'chrome'`)或手工;`baseURL` 为 H5 开发地址(如 `http://localhost:5173`) - **小程序/APP**:手工 + 真机;步骤与 H5 一致,定位方式改为可见文案/组件 **通用登录步骤(前置)**:打开 `#/pages/login/index` → 输入 **ry** / **123456** →(若显示验证码则填写)→ 登录 → 进入首页 Tab。 | 用例编号 | 测试模块 | 测试项 | 测试类型 | 测试工具 | 测试目的 | 前置条件 | 测试步骤 | 预期结果 | | --- | --- | --- | --- | --- | --- | --- | --- | --- | | YDD-LOGIN-UI-001 | 登录 | 空用户名 | UI 测试 | Playwright/手工 | 前端校验 | 未登录 | 密码填 123456,用户名为空→登录 | Toast 提示用户名不能为空 | | YDD-LOGIN-UI-002 | 登录 | 空密码 | UI 测试 | Playwright/手工 | 前端校验 | 未登录 | 用户名 ry,密码空→登录 | Toast 提示密码不能为空 | | YDD-LOGIN-UI-003 | 登录 | 验证码必填 | UI 测试 | Playwright/手工 | captchaEnabled | 后端开启验证码 | 不填验证码→登录 | Toast 提示验证码不能为空 | | YDD-LOGIN-UI-004 | 登录 | 成功登录 | UI 测试 | Playwright/手工 | 主流程 | 验证码关或正确 | ry / 123456→登录 | 跳转首页 Tab;本地有 Token | | YDD-LOGIN-UI-005 | 登录 | 记住账号 | UI 测试 | Playwright/手工 | 持久化 | 勾选记住 | 登录成功→退出→再进登录页 | 用户名自动回填 ry | | YDD-LOGIN-UI-006 | 登录 | 已有 Token 跳过 | UI 测试 | Playwright/手工 | 免登 | 已登录 | 直接打开登录页 | 自动 switchTab 首页 | | YDD-LOGIN-UI-007 | 登录 | 401 过期 | UI 测试 | Playwright/手工 | request.js | 已登录 | Mock 某接口 401 或等过期 | Toast「登录过期,即将登录」→ 登录页 | | YDD-TAB-UI-001 | Tab | 四 Tab 切换 | UI 测试 | 手工 | 导航 | 已登录 | 依次点 首页/AI/消息/我的 | 各 Tab 高亮绿色;页面正确 | | YDD-TAB-UI-002 | Tab | 默认首页 | UI 测试 | 手工 | 默认页 | 冷启动 | 打开 App | 默认展示首页 Tab | | YDD-I18N-UI-001 | 多语言 | 切换藏文 | UI 测试 | 手工 | i18n | 我的页 | 语言版本→选 བོད་ཡིག | 文案变藏文;根节点 `lang-bo` | | YDD-I18N-UI-002 | 多语言 | Tab 文案同步 | UI 测试 | 手工 | tabBar | 已切藏文 | 查看底部 Tab | Tab 文本为藏文 | | YDD-I18N-UI-003 | 多语言 | 切回中文 | UI 测试 | 手工 | i18n | 当前藏文 | 语言版本→简体中文 | 文案恢复中文;布局正常 | | YDD-HOME-UI-001 | 首页 | 九宫格展示 | UI 测试 | 手工 | 入口 | 首页 | 查看 3×3 宫格 | 9 项:资讯、资源、课堂、用药、行情、店铺、预约、问诊、AI助手 | | YDD-HOME-UI-002 | 首页 | 跳转养殖资讯 | UI 测试 | 手工 | 导航 | 首页 | 点击「养殖资讯」 | 进入 breeding-news | | YDD-HOME-UI-003 | 首页 | 跳转预约服务 | UI 测试 | 手工 | 导航 | 首页 | 点击「预约服务」 | 进入 booking-service | | YDD-HOME-UI-004 | 首页 | 跳转在线问诊 | UI 测试 | 手工 | 导航 | 首页 | 点击「在线问诊」 | 进入 online-clinic | | YDD-HOME-UI-005 | 首页 | 跳转 AI 助手 | UI 测试 | 手工 | 导航 | 首页 | 点击「AI助手」 | 进入 ai-assistant | | YDD-NEWS-UI-001 | 养殖资讯 | 分类 Tab | UI 测试 | 手工 | 筛选 | 有分类数据 | 切换顶部分类 | 列表随 type 刷新 | | YDD-NEWS-UI-002 | 养殖资讯 | 搜索 | UI 测试 | 手工 | 模糊 | 有资讯 | 输入标题关键字 | 列表过滤匹配项 | | YDD-NEWS-UI-003 | 养殖资讯 | 全部分类弹窗 | UI 测试 | 手工 | 分类 | 首页进资讯 | 打开全部分类→选 Chip | 列表切换对应分类 | | YDD-NEWS-UI-004 | 养殖资讯 | 进详情 | UI 测试 | 手工 | 详情 | 有列表 | 点击一条 | 进入 news-detail;标题/日期/简介展示 | | YDD-NEWS-UI-005 | 养殖资讯 | 附件预览 | UI 测试 | 手工 | 附件 | 详情含 PDF/图片 | 点击附件 | 图片预览或跳转 file-preview | | YDD-RES-UI-001 | 畜牧资源 | 四类 Tab | UI 测试 | 手工 | Tab | 有数据 | 切换 t1~t4 | 各 Tab 列表不同 | | YDD-RES-UI-002 | 畜牧资源 | 搜索 | UI 测试 | 手工 | 模糊 | 有资源 | 输入标题搜索 | 列表过滤 | | YDD-CLASS-UI-001 | 农技课堂 | 视频/培训 Tab | UI 测试 | 手工 | 主 Tab | 有数据 | 切换视频课程与实战培训 | 子 Chip 与列表联动 | | YDD-CLASS-UI-002 | 农技课堂 | 进课程详情 | UI 测试 | 手工 | 视频 | 有视频课 | 点击课程卡片 | course-detail;可播放视频 | | YDD-CLASS-UI-003 | 培训详情 | 未开始不可报 | UI 测试 | 手工 | 006001 | 培训 status=006001 | 打开培训详情 | 按钮灰色不可点 | | YDD-CLASS-UI-004 | 培训详情 | 报名中可报 | UI 测试 | 手工 | 006002 | ry 登录;未满 | 打开→立即报名 | 成功;按钮变取消报名 | | YDD-CLASS-UI-005 | 培训详情 | 取消报名 | UI 测试 | 手工 | 已报名 | ry 登录 | 点击取消报名 | 成功;恢复可报名 | | YDD-CLASS-UI-006 | 培训详情 | 未登录报名 | UI 测试 | 手工 | 401 | 未登录 | 点击立即报名 | 提示登录或跳转登录页 | | YDD-ENROLL-UI-001 | 我的报名 | 入口需登录 | UI 测试 | 手工 | mine | 未登录 | 我的→我的报名 | 跳转登录页 | | YDD-ENROLL-UI-002 | 我的报名 | 列表与筛选 | UI 测试 | 手工 | 列表 | ry 登录;有报名 | 我的→我的报名;切换状态 Chip | 双列卡片;筛选正确 | | YDD-ENROLL-UI-003 | 我的报名 | 进培训详情 | UI 测试 | 手工 | 跳转 | 有卡片 | 点击卡片 | 进入 training-detail | | YDD-MED-UI-001 | 用药工具 | 药名空查询 | UI 测试 | 手工 | 校验 | 查询 Tab | 药名空→查询 | Toast 提示药名不能为空 | | YDD-MED-UI-002 | 用药工具 | 药物查询成功 | UI 测试 | 手工 | 展示 | 库有药 | 输入有效药名→查询 | 展示类型、休药期、用法等 | | YDD-MED-UI-003 | 用药工具 | 休药期缺日期 | UI 测试 | 手工 | 校验 | 休药期 Tab | 仅填药名→计算 | 提示选停药日期 | | YDD-MED-UI-004 | 用药工具 | 休药期计算 | UI 测试 | 手工 | 计算 | 有效药+日期 | 选日期→计算 | 展示 endDate、天数 | | YDD-MED-UI-005 | 用药工具 | 配伍少于 2 药 | UI 测试 | 手工 | 校验 | 配伍 Tab | 仅 1 个药名→检查 | 提示至少 2 个药名 | | YDD-MED-UI-006 | 用药工具 | 配伍重复药名 | UI 测试 | 手工 | 校验 | 配伍 Tab | 两行相同药名 | 提示不可重复 | | YDD-MED-UI-007 | 用药工具 | 配伍成功 | UI 测试 | 手工 | 结果 | ≥2 不同药名 | 检查 | 展示 compatResult / 禁忌 | | YDD-MKT-UI-001 | 牦牛行情 | 主卡片数据 | UI 测试 | 手工 | 展示 | 有行情 | 打开牦牛行情 | 昨日价、涨跌等展示 | | YDD-MKT-UI-002 | 牦牛行情 | 7/30 日切换 | UI 测试 | 手工 | 图表 | 有走势 | 切换 7 日/30 日 | 折线图更新 | | YDD-MKT-UI-003 | 牦牛行情 | 列表分页 | UI 测试 | 手工 | 滚动 | 有多日数据 | 滚动到底 | 加载更多每日行情 | | YDD-BOOK-UI-001 | 预约服务 | 三类型 Tab | UI 测试 | 手工 | Tab | 有资源 | 切换兽医/专家/机构 | 列表 resourceType 对应 | | YDD-BOOK-UI-002 | 预约服务 | 日期筛选 | UI 测试 | 手工 | 日期 Chip | 有近 7 日 | 选某日 | 列表按日期过滤 | | YDD-BOOK-UI-003 | 预约服务 | 名称搜索 | UI 测试 | 手工 | 防抖 | 有资源 | 输入名称 | 300ms 后列表过滤 | | YDD-BOOK-UI-004 | 预约服务 | 未登录预约 | UI 测试 | 手工 | ensureApiToken | 未登录 | 点某资源「预约」 | Toast 请先登录→登录页 | | YDD-VET-UI-001 | 预约兽医 | 表单必填 | UI 测试 | 手工 | 校验 | ry 登录;进兽医详情 | 留空→提交 | 各必填项 Toast | | YDD-VET-UI-002 | 预约兽医 | 手机号格式 | UI 测试 | 手工 | 校验 | 同上 | 输入非法手机号 | 提示格式错误 | | YDD-VET-UI-003 | 预约兽医 | 非服务日禁用 | UI 测试 | 手工 | weekday | 资源不含今日 weekday | 查看日期 Chip | 今日不可选或禁用 | | YDD-VET-UI-004 | 预约兽医 | 提交成功 | UI 测试 | 手工 | 主流程 | 合法表单 | 填全→提交 | 成功;状态待确认 | | YDD-VET-UI-005 | 预约兽医 | 同日重复预约 | UI 测试 | 手工 | 防重复 | 同日已有有效预约 | 再进同资源同日 | 按钮「已预约」禁用 | | YDD-EXPERT-UI-001 | 预约专家 | 评分跳转 | UI 测试 | 手工 | 评价入口 | 专家有评分 | 点击评分区 | 进入 review-history?id= | | YDD-EXPERT-UI-002 | 预约专家 | 提交预约 | UI 测试 | 手工 | 同兽医 | ry 登录 | 填表提交 | 成功;status=0 | | YDD-ORG-UI-001 | 预约机构 | 仅姓名电话 | UI 测试 | 手工 | 简化表单 | ry 登录 | 打开机构预约弹窗 | 无时段/地址手填项(地址取机构) | | YDD-ORG-UI-002 | 预约机构 | 无机构地址 | UI 测试 | 手工 | 约束 | 机构 detailAddress 空 | 提交 | 不可提交或提示无地址 | | YDD-ORG-UI-003 | 预约机构 | 提交成功 | UI 测试 | 手工 | status=5 | 有效机构 | 提交 | 成功;status 已预约 | | YDD-MYBOOK-UI-001 | 我的预约 | 兽医 Tab 筛选 | UI 测试 | 手工 | statusTab | ry 有各状态预约 | 我的→我的预约;兽医 Tab;切 未开始/已完成/已取消 | 列表符合状态映射 | | YDD-MYBOOK-UI-002 | 我的预约 | 专家待评价 | UI 测试 | 手工 | pendingReview | 专家已完成未评 | 专家 Tab→待评价 | 仅未评价已完成项 | | YDD-MYBOOK-UI-003 | 我的预约 | 取消预约 | UI 测试 | 手工 | 取消 | 待确认/已预约 | 取消预约→确定 | 状态变已取消 | | YDD-MYBOOK-UI-004 | 我的预约 | 取消二次确认 | UI 测试 | 手工 | confirm | 可取消项 | 取消→点取消 | 状态不变 | | YDD-MYBOOK-UI-005 | 我的预约 | 专家评价入口 | UI 测试 | 手工 | 评价 | 已完成未评 | 点击「评价」 | 进入 review-history mode=submit | | YDD-MYBOOK-UI-006 | 我的预约 | 查看评价 | UI 测试 | 手工 | 只读 | 已评价 | 点击「查看评价」 | mode=view;三维分展示 | | YDD-REVIEW-UI-001 | 历史评价 | 评分必选 | UI 测试 | 手工 | 1~5 分 | 提交模式 | 不选分→提交 | 提示选择评分 | | YDD-REVIEW-UI-002 | 历史评价 | 总结必填 | UI 测试 | 手工 | summary | 提交模式 | 总结空→提交 | 提示必填 | | YDD-REVIEW-UI-003 | 历史评价 | 总结超长 | UI 测试 | 手工 | ≤100 字 | 提交模式 | 输入 101 字 | 不可提交或提示超长 | | YDD-REVIEW-UI-004 | 历史评价 | 提交成功 | UI 测试 | 手工 | 主流程 | 合法三维分+总结 | 提交 | 成功;我的预约变「查看评价」 | | YDD-CLINIC-UI-001 | 在线问诊 | 兽医列表 | UI 测试 | 手工 | 列表 | 有在线兽医 | 打开在线问诊 | 展示姓名、单位等 | | YDD-CLINIC-UI-002 | 在线问诊 | 资料页 | UI 测试 | 手工 | vet-profile | 有兽医 | 点「资料」 | 展示简介、地址、服务时间 | | YDD-CLINIC-UI-003 | 在线问诊 | 未登录问诊 | UI 测试 | 手工 | 鉴权 | 未登录 | 点「问诊」 | 跳转登录 | | YDD-CLINIC-UI-004 | 在线问诊 | 开启会话 | UI 测试 | 手工 | 主流程 | ry 登录 | 点「问诊」 | 进入 consult-detail | | YDD-CONSULT-UI-001 | 问诊详情 | 发文本 | UI 测试 | 手工 | msgType=1 | 有 session | 输入文本→发送 | 消息出现在列表 | | YDD-CONSULT-UI-002 | 问诊详情 | 发图片 | UI 测试 | 手工 | msgType=2 | 有 session | 选图片发送 | 图片消息展示 | | YDD-CONSULT-UI-003 | 问诊详情 | 超长文本 | UI 测试 | 手工 | maxlength | 有 session | 输入 >2000 字 | 无法输入或截断 | | YDD-MSG-UI-001 | 消息 | 未登录 | UI 测试 | 手工 | 鉴权 | 未登录 | 点消息 Tab | 提示登录或空态+跳转 | | YDD-MSG-UI-002 | 消息 | 会话列表 | UI 测试 | 手工 | 列表 | ry 登录;有问诊 | 消息 Tab | 展示兽医名、最后一条预览 | | YDD-MSG-UI-003 | 消息 | 搜索过滤 | UI 测试 | 手工 | 本地搜 | 有多会话 | 输入兽医名 | 列表本地过滤 | | YDD-MSG-UI-004 | 消息 | 进详情 | UI 测试 | 手工 | 跳转 | 有会话 | 点击一条 | consult-detail | | YDD-MSG-UI-005 | 消息 | 长按删除 | UI 测试 | 手工 | hide | 有会话 | 长按→删除 | 列表移除;API hide 成功 | | YDD-AI-UI-001 | AI Tab | 未登录列表 | UI 测试 | 手工 | 鉴权 | 未登录 | AI Tab | 提示登录或无法加载 | | YDD-AI-UI-002 | AI Tab | 会话列表 | UI 测试 | 手工 | 列表 | ry 登录 | AI Tab | 展示历史 AI 会话 | | YDD-AI-UI-003 | AI Tab | 新建会话 | UI 测试 | 手工 | 创建 | ry 登录 | 点底部新建 | 创建成功→跳转 ai-assistant | | YDD-AI-UI-004 | AI Tab | 长按删除 | UI 测试 | 手工 | hide | 有会话 | 长按→删除 | 会话从列表消失 | | YDD-AIASST-UI-001 | AI助手 | 免责声明 | UI 测试 | 手工 | 顶栏 | 进助手页 | 查看顶部 | 展示 disclaimer | | YDD-AIASST-UI-002 | AI助手 | 模型切换 | UI 测试 | 手工 | LLM | ry 登录 | 切换 auto/疾病/通用/饲喂 | 发送后走对应模型 | | YDD-AIASST-UI-003 | AI助手 | 发文本 | UI 测试 | 手工 | 聊天 | 有 session | 输入问题→发送 | 展示用户消息与 AI 回复 | | YDD-AIASST-UI-004 | AI助手 | 空内容禁用 | UI 测试 | 手工 | disabled | 无文本无附件 | 查看发送按钮 | 不可点 | | YDD-AIASST-UI-005 | AI助手 | 图片附件 | UI 测试 | 手工 | 多媒体 | 有 session | 选图片发送 | 上传并展示 | | YDD-MINE-UI-001 | 我的 | 未登录展示 | UI 测试 | 手工 | 登录按钮 | 未登录 | 我的 Tab | 显示登录按钮 | | YDD-MINE-UI-002 | 我的 | 已登录信息 | UI 测试 | 手工 | 用户信息 | ry 登录 | 我的 Tab | 展示昵称/头像等 | | YDD-MINE-UI-003 | 我的 | 退出登录 | UI 测试 | 手工 | logOut | ry 登录 | 退出→确认 | 清 Token;进登录页 | | YDD-MINE-UI-004 | 我的 | 编辑资料占位 | UI 测试 | 手工 | 即将上线 | ry 登录 | 点编辑资料 | Toast 即将上线 | | YDD-MINE-UI-005 | 我的 | 我的预约入口 | UI 测试 | 手工 | 导航 | ry 登录 | 点我的预约 | 进入 my-booking | | YDD-STORE-UI-001 | 我的店铺 | 占位页 | UI 测试 | 手工 | 占位 | 首页进我的店铺 | 打开页面 | 展示占位文案;无报错 | --- ## 三、覆盖对照 | 模块 | 接口 API | 界面 UI | | --- | --- | --- | | 登录鉴权 | LOGIN-API-001~005 | LOGIN-UI-001~007 | | Tab / i18n | — | TAB-UI-001~002;I18N-UI-001~003 | | 首页 | — | HOME-UI-001~005 | | 养殖资讯 | NEWS-API-001~003 | NEWS-UI-001~005 | | 畜牧资源 | RES-API-001~004 | RES-UI-001~002 | | 农技/培训/报名 | CLASS-API-001~005 | CLASS-UI-001~006;ENROLL-UI-001~003 | | 用药工具 | MED-API-001~003 | MED-UI-001~007 | | 牦牛行情 | MKT-API-001~004 | MKT-UI-001~003 | | 预约服务 | BOOK-API-001~005 | BOOK-UI-001~004;VET/EXPERT/ORG-UI | | 我的预约/评价 | MYBOOK/REVIEW-API | MYBOOK-UI-001~006;REVIEW-UI-001~004 | | 在线问诊 | CLINIC/CONSULT-API | CLINIC/CONSULT-UI | | 消息 | MSG-API-001~002 | MSG-UI-001~005 | | AI | AI-API-001~004 | AI-UI-001~004;AIASST-UI-001~005 | | 我的 | — | MINE-UI-001~005 | | 占位 | — | STORE-UI-001 | --- ## 四、Playwright(H5)实施提示 1. **安装**:在 `ruoyi-ui-app` 目录 `npm i -D @playwright/test`;`npx playwright install chrome`。 2. **配置示例**: ```js // playwright.config.js export default { use: { channel: 'chrome', locale: 'zh-CN', baseURL: 'http://localhost:5173', viewport: { width: 390, height: 844 } } } ``` 3. **登录复用**(`tests/auth.setup.js`): ```js await page.goto('/#/pages/login/index') await page.getByPlaceholder(/用户名|账号/).fill('ry') await page.getByPlaceholder(/密码/).fill('123456') await page.getByRole('button', { name: /登录/ }).click() await page.waitForURL(/pages\/home\/index/) await context.storageState({ path: 'playwright/.auth/ry.json' }) ``` 4. **路由示例**: ```js await page.goto('/#/package-a/my-booking/index') await page.goto('/#/pages/message/index') ``` 5. **401 Mock**: ```js await page.route('**/app/myAppointment/list', route => route.fulfill({ status: 200, body: JSON.stringify({ code: 401, msg: '未登录' }) }) ) ``` 6. **藏文**:在 `#/pages/mine/index` 执行语言切换后,断言 `[class*="lang-bo"]` 存在且 Tab 文案变化。 --- ## 五、手工测试检查清单(发布前) - [ ] 账号 **ry / 123456** 可登录并访问需登录功能 - [ ] 四 Tab 与 9 个首页入口均可达且无白屏 - [ ] 汉藏切换后 Tab、导航栏、表单无截断/重叠 - [ ] 兽医/专家/机构预约提交后在「我的预约」可见且状态正确 - [ ] 专家评价三维分与总结提交、查看正常 - [ ] 在线问诊发消息、消息 Tab 列表与删除正常 - [ ] AI 新建/删除会话、助手发文本与附件正常 - [ ] Token 过期后统一跳转登录,无脏数据残留