依据:
在线接诊(兽医)功能需求.md(v1.1)、在线接诊(兽医)技术方案.md(v1.1)
兽医后台 Base Path:/diseaseTreatments/onlineConsult/vet;移动端:/app/onlineConsult;鉴权与若依一致(Cookie / Token)。
通用前置(无特殊说明)
biz_medical_resource.resource_type=1、account_assigned=1、sys_user_id=A),角色 100;权限 diseaseTreatment:vetOnlineConsult:list|query|send。biz_consult_session / biz_consult_message 已执行 DDL;宜预置:| 样本 | 说明 | 要点 |
|---|---|---|
| S0 | U1↔R1,consult_type=1 |
last_message_time 在 3 个月内;vet_visible=1;有多条文本/图片消息 |
| S1 | U2↔R1 | 同上;用于筛选 |
| S2 | U1↔R1 超窗 | last_message_time 早于 3 个月自然日边界;默认列表不出现 |
| SX | U1↔R2 | 账号 A 不可见/不可操作 |
| SA | A 本人 AI 会话 | consult_type=2,receiver_provider_id=NULL |
| SH | U1↔R1 已 hide | vet_visible=0 |
界面(UI):Playwright + Chromium(channel: 'chrome' 使用本机 Google Chrome);菜单「牧业疫病诊疗服务 → 在线接诊(兽医)」;路由 diseaseTreatment/onlineConsult/vet/index。
| 用例编号 | 测试模块 | 测试项 | 测试类型 | 测试工具 | 测试目的 | 前置条件 | 测试步骤 | 预期结果 |
|---|---|---|---|---|---|---|---|---|
| ZCZX-ZXJZYS-UT-001 | 规则常量 | 问诊类型/消息类型 | 单元测试 | JUnit5 | §2.5、技术方案 §2.1 | 无 | 校验 VET_ONLINE=1、AI=2;msgType 1~4 合法 |
常量与方案一致 |
| ZCZX-ZXJZYS-UT-002 | 时间窗 | 3 个月边界计算 | 单元测试 | JUnit5 | §3.4#2、AC-02 | 固定「今日」2026-05-20 | calcThreeMonthsAgo() |
返回 2026-02-20 00:00:00(Asia/Shanghai 自然月) |
| ZCZX-ZXJZYS-UT-003 | 摘要 | 文本摘要截断 | 单元测试 | JUnit5 | §3.4#3 | 无 | 输入 60 字文本、msg_type=1 |
last_message_preview 最多 50 字 |
| ZCZX-ZXJZYS-UT-004 | 摘要 | 媒体固定文案 | 单元测试 | JUnit5 | §3.4#3、§6.1 | 无 | msg_type 2/3/4 |
分别为 [图片]、[视频]、[语音] |
| ZCZX-ZXJZYS-UT-005 | 参数校验 | 搜索条件为空 | 单元测试 | JUnit5 | §4.6 | 无 | searchMode=true 且 askerName、contentKeyword 均为空 |
失败;msg「请输入筛选条件」 |
| ZCZX-ZXJZYS-UT-006 | 参数校验 | 发送文本为空 | 单元测试 | JUnit5 | §6.3、§4.4 | 无 | msgType=1,content 空/空白 |
失败;「请输入消息内容」 |
| ZCZX-ZXJZYS-UT-007 | 参数校验 | 媒体 content 为空 | 单元测试 | JUnit5 | §6.3 | 无 | msgType=2/3/4,content 空 |
失败;「请上传文件」 |
| ZCZX-ZXJZYS-UT-008 | 参数校验 | 文件后缀白名单 | 单元测试 | JUnit5 | §3.4#7 | 无 | 图片 .exe;视频 .avi;合法 .png/.mp4 |
非法失败「文件格式或大小不符合要求」;合法通过 |
| ZCZX-ZXJZYS-UT-009 | 范围解析 | 当前兽医 providerId | 单元测试 | JUnit5+Mockito | §2.4 | Mock 用户 A;库有 R1 | resolveProviderId(A) |
返回 R1.id |
| ZCZX-ZXJZYS-UT-010 | 范围解析 | 未绑定兽医 | 单元测试 | JUnit5+Mockito | §9 | 用户无资源绑定 | resolveProviderId |
空;列表/发送返回「未绑定兽医资源,无法接诊」 |
| ZCZX-ZXJZYS-UT-011 | Service | 默认列表 scope | 单元测试 | JUnit5+Mockito | §4.1、§6.1 | 有 S0、S2、SH、SX、SA | list(searchMode=false) 账号 A |
仅 S0、S1;无 S2/SX/SH/SA |
| ZCZX-ZXJZYS-UT-012 | Service | 搜索超窗 | 单元测试 | JUnit5+Mockito | §4.6、AC-03 | 有 S2 | list(searchMode=true, contentKeyword=命中S2) |
含 S2 |
| ZCZX-ZXJZYS-UT-013 | Service | 有筛选项未搜索 | 单元测试 | JUnit5+Mockito | §3.4#1 | 有 S2 | askerName 非空但 searchMode=false |
仍不含 S2(仅 3 个月窗) |
| ZCZX-ZXJZYS-UT-014 | Service | 消息首次加载 | 单元测试 | JUnit5+Mockito | §3.4#5 | S0 有 >50 条 | listMessages(sessionId) 无 beforeId |
返回最新 50 条;send_time 升序 |
| ZCZX-ZXJZYS-UT-015 | Service | 上拉更早消息 | 单元测试 | JUnit5+Mockito | §6.2 | S0 有 60 条 | beforeId=最小id |
再取 50 条;与首批无重叠 |
| ZCZX-ZXJZYS-UT-016 | Service | 兽医发送成功 | 单元测试 | JUnit5+Mockito | §6.3 | Mock S0 | sendText(sessionId, "回复") |
入库 sender_role=2;更新 last_message_*;触发推送 |
| ZCZX-ZXJZYS-UT-017 | Service | 越权-他兽医会话 | 单元测试 | JUnit5+Mockito | §2.4、AC-05 | 账号 A;目标 SX | listMessages/send |
失败;「无权查看该会话」 |
| ZCZX-ZXJZYS-UT-018 | Service | 已 hide 会话 | 单元测试 | JUnit5+Mockito | §4.1.1、AC-04 | Mock SH | listMessages/send |
失败;「会话不存在或已删除」 |
| ZCZX-ZXJZYS-UT-019 | Service | open 会话唯一 | 单元测试 | JUnit5+Mockito | §4.1 | 已有 U1+R1 会话 | 移动端 open(vetResourceId=R1) 两次 |
返回同一 sessionId;库仅 1 条 consult_type=1 |
| ZCZX-ZXJZYS-UT-020 | Service | hide 仅问诊人 | 单元测试 | JUnit5+Mockito | §4.1.1 | S0 | 账号 A 调 hide;U1 调 hide |
A 失败或无权;U1 成功 vet_visible=0 |
| ZCZX-ZXJZYS-UT-021 | Mapper | 列表 SQL | 单元测试 | JUnit5 | 技术方案 §3.3 | 审阅 XML | 检查 selectSessionList |
consult_type=1;receiver_provider_id;vet_visible=1;条件性 3 个月;ORDER BY last_message_time DESC |
| ZCZX-ZXJZYS-UT-022 | Mapper | 内容搜索 SQL | 单元测试 | JUnit5 | §3.3 | 审阅 XML | searchMode=true 分支 |
匹配 preview/session_title/消息文本子查询 |
| ZCZX-ZXJZYS-UT-023 | 推送 | NEW_MESSAGE 载荷 | 单元测试 | JUnit5 | §5.1、AC-01 | Mock 推送服务 | 发送后检查 payload | 含 §4.2 字段 + lastMessagePreview + lastMessageTime |
| ZCZX-ZXJZYS-UT-024 | 约束 | 不校验预约 | 单元测试 | JUnit5+Mockito | §3.4、§5.3 | U1 无预约单 | open+send |
成功;不访问 biz_service_appointment |
| ZCZX-ZXJZYS-UT-025 | 隔离 | AI 不进兽医列表 | 单元测试 | JUnit5+Mockito | §3.6、AC-07 | 有 SA | 账号 A list |
无 SA;SQL 无 consult_type=2 |
| 用例编号 | 测试模块 | 测试项 | 测试类型 | 测试工具 | 测试目的 | 前置条件 | 测试步骤 | 预期结果 |
|---|---|---|---|---|---|---|---|---|
| ZCZX-ZXJZYS-API-001 | 列表 | 默认分页排序 | 接口测试 | Postman | §6.1、AC-02 | 账号 A;S0、S1 | GET /session/list |
code=200;仅 3 个月内;last_message_time 倒序;含 askerAvatar |
| ZCZX-ZXJZYS-API-002 | 列表 | 超窗默认不出现 | 接口测试 | Postman | AC-02 | 有 S2 | GET /session/list(searchMode=false) |
无 S2 |
| ZCZX-ZXJZYS-API-003 | 列表 | 搜索命中超窗 | 接口测试 | Postman | §4.6、AC-03 | 有 S2 | searchMode=true+contentKeyword 命中 |
含 S2 |
| ZCZX-ZXJZYS-API-004 | 列表 | 重置等价默认 | 接口测试 | Postman | §4.6 | 曾搜出 S2 | searchMode=false;筛选项空 |
无 S2 |
| ZCZX-ZXJZYS-API-005 | 列表 | 问诊人模糊 | 接口测试 | Postman | §6.1 | S0 问诊人含「扎西」 | searchMode=true&askerName=扎 |
含 S0 |
| ZCZX-ZXJZYS-API-006 | 列表 | 仅填筛选项未搜索 | 接口测试 | Postman | §3.4#1 | 有 S2 | askerName=扎 且 不传 searchMode=true |
仍无 S2 |
| ZCZX-ZXJZYS-API-007 | 列表 | 搜索条件全空 | 接口测试 | Postman | §4.6 | 已登录 | searchMode=true 无筛选项 |
code≠200;「请输入筛选条件」 |
| ZCZX-ZXJZYS-API-008 | 列表 | 空列表提示数据 | 接口测试 | Postman | §6.1 | 账号 A 无会话 | GET /session/list |
rows=[] |
| ZCZX-ZXJZYS-API-009 | 列表 | 数据隔离-他兽医 | 接口测试 | Postman | §2.4、AC-05 | 有 SX | 账号 A 列表 | 无 SX |
| ZCZX-ZXJZYS-API-010 | 列表 | 数据隔离-AI 会话 | 接口测试 | Postman | §3.6、AC-07 | 有 SA | 账号 A 列表 | 无 SA |
| ZCZX-ZXJZYS-API-011 | 列表 | 已 hide 不可见 | 接口测试 | Postman | AC-04 | 有 SH | 账号 A 列表 | 无 SH |
| ZCZX-ZXJZYS-API-012 | 列表 | 未绑定兽医 | 接口测试 | Postman | §9 | 无绑定账号 | GET /session/list |
空列表或「未绑定兽医资源,无法接诊」 |
| ZCZX-ZXJZYS-API-013 | 列表 | 禁止伪造 providerId | 接口测试 | Postman | §4.1 | 已登录 | 传 receiverProviderId=伪造 |
仍以服务端 R1 为准 |
| ZCZX-ZXJZYS-API-014 | 消息 | 加载历史升序 | 接口测试 | Postman | §6.2、§3.4#5 | 有 S0 | GET /session/{S0}/messages |
rows≤50;send_time 升序;含双方气泡字段 |
| ZCZX-ZXJZYS-API-015 | 消息 | 超窗会话全历史 | 接口测试 | Postman | §6.2 | S2 有 3 个月外消息 | GET /session/{S2}/messages(searchMode 搜出后) |
可返回全部历史,不受列表 3 个月限制 |
| ZCZX-ZXJZYS-API-016 | 消息 | 上拉 beforeId | 接口测试 | Postman | §3.4#5 | S0 >50 条 | 首次 GET;再 beforeId=最小messageId |
第二批更早;无重复 |
| ZCZX-ZXJZYS-API-017 | 消息 | 越权 sessionId | 接口测试 | Postman | AC-05 | 有 SX | 账号 A GET /session/{SX}/messages |
失败;「无权查看该会话」 |
| ZCZX-ZXJZYS-API-018 | 消息 | hide 后不可查 | 接口测试 | Postman | AC-04 | SH | GET /session/{SH}/messages |
失败;「会话不存在或已删除」 |
| ZCZX-ZXJZYS-API-019 | 发送 | 文本成功 | 接口测试 | Postman | §6.3、AC-01 | S0 | POST /session/{id}/message Body msgType=1 |
code=200;库有新消息;摘要更新 |
| ZCZX-ZXJZYS-API-020 | 发送 | 图片/视频/语音 | 接口测试 | Postman | §4.2、AC-06 | 先 /common/upload |
msgType=2/3/4+url |
成功;preview 为 [图片] 等 |
| ZCZX-ZXJZYS-API-021 | 发送 | 文本为空 | 接口测试 | Postman | §6.3 | S0 | msgType=1,content="" |
失败;「请输入消息内容」 |
| ZCZX-ZXJZYS-API-022 | 发送 | 非法后缀 | 接口测试 | Postman | §3.4#7 | S0 | msgType=2,content 为非法 url |
失败;格式或大小不符合要求 |
| ZCZX-ZXJZYS-API-023 | 发送 | hide 后会话 | 接口测试 | Postman | AC-04 | SH | POST .../message |
失败;会话不存在或已删除 |
| ZCZX-ZXJZYS-API-024 | 发送 | 越权发送 | 接口测试 | Postman | AC-05 | SX | 账号 A POST | 失败;无权 |
| ZCZX-ZXJZYS-API-025 | 本期范围 | 无后台新建会话 | 接口测试 | Postman | §5.2 | 已登录 | POST /session(若暴露) |
404 或未实现 |
| ZCZX-ZXJZYS-API-026 | 鉴权 | 未登录 | 接口测试 | curl | 安全 | 无 Token | GET /session/list |
401 |
| ZCZX-ZXJZYS-API-027 | 权限 | 无 list | 接口测试 | Postman | §7 | 无 list 权限 | GET /session/list |
无权限 |
| ZCZX-ZXJZYS-API-028 | 权限 | 无 send | 接口测试 | Postman | §7 | 仅 list/query | POST .../message |
无权限 |
| ZCZX-ZXJZYS-API-029 | 移动端 | open 新建 | 接口测试 | Postman | §7.2、M1 | U1 首次问 R1 | POST /app/.../open Body vetResourceId=R1 |
返回 sessionId;consult_type=1 |
| ZCZX-ZXJZYS-API-030 | 移动端 | open 续聊唯一 | 接口测试 | Postman | §4.1 | U1 已有会话 | 再次 open |
同一 sessionId |
| ZCZX-ZXJZYS-API-031 | 移动端 | 牧民发消息 | 接口测试 | Postman | §7.2、AC-01 | S0;U1 Token | POST /app/.../message |
成功;兽医 GET messages 可见 |
| ZCZX-ZXJZYS-API-032 | 移动端 | hide 会话 | 接口测试 | Postman | AC-04 | S0 | U1 POST .../hide |
vet_visible=0;兽医 API-011 |
| ZCZX-ZXJZYS-API-033 | 移动端 | hide 越权 | 接口测试 | Postman | §4.1.1 | S0 | U2 调 hide | 失败;无权 |
| ZCZX-ZXJZYS-API-034 | 端到端 | 接诊主流程 | 接口测试 | Postman | §7.1 | U1 open→发消息;A 登录 | A list→messages→send→U1 收 |
双向可见;列表摘要更新 |
| ZCZX-ZXJZYS-API-035 | 端到端 | 搜索重置流程 | 接口测试 | Postman | AC-03 | 有 S2 | 默认 list→search 出 S2→reset | 与 API-002~004 一致 |
| ZCZX-ZXJZYS-API-036 | 约束 | 无预约可问诊 | 接口测试 | Postman | §3.4 | U1 无 biz_service_appointment |
open+send | 成功 |
| ZCZX-ZXJZYS-API-037 | 近实时 | 推送延迟 | 接口测试 | Postman+WS 客户端 | AC-01 | 双端在线 | U1 发文本;A 订阅 WS | A ≤1s 收到 NEW_MESSAGE |
| ZCZX-ZXJZYS-API-038 | 响应 | 失败 msg 一致 | 接口测试 | Postman | §9 | 已登录 | 触发越权、空文本、hide | msg 与 §4.4/§9 一致 |
测试工具:Playwright + Chromium(channel: 'chrome' 使用本机 Google Chrome)。
| 用例编号 | 测试模块 | 测试项 | 测试类型 | 测试工具 | 测试目的 | 前置条件 | 测试步骤 | 预期结果 |
|---|---|---|---|---|---|---|---|---|
| ZCZX-ZXJZYS-UI-001 | 布局 | 左右分栏 | UI 测试 | Playwright+Chrome | §6、原型 | 账号 A;有 S0 | 进入「在线接诊(兽医)」 | 左「接诊会话」列表;右聊天区;标题区 |
| ZCZX-ZXJZYS-UI-002 | 列表 | 列表项字段 | UI 测试 | Playwright+Chrome | §6.1 | 有 S0 | 查看左侧项 | 头像/占位、问诊人姓名、摘要、日期「M月D日」 |
| ZCZX-ZXJZYS-UI-003 | 列表 | 默认仅 3 个月 | UI 测试 | Playwright+Chrome | AC-02 | 有 S0、S2 | 进入页不点搜索 | 见 S0;不见 S2 |
| ZCZX-ZXJZYS-UI-004 | 列表 | 搜索超窗 | UI 测试 | Playwright+Chrome | AC-03 | 有 S2 | 填会话内容→点搜索 | 出现 S2 |
| ZCZX-ZXJZYS-UI-005 | 列表 | 重置恢复默认 | UI 测试 | Playwright+Chrome | §6.1 | 已搜出 S2 | 点重置 | 筛选项清空;S2 消失 |
| ZCZX-ZXJZYS-UI-006 | 列表 | 未点搜索仍 3 个月 | UI 测试 | Playwright+Chrome | §3.4#1 | 有 S2 | 仅输入问诊人→不点搜索 | 仍无 S2 |
| ZCZX-ZXJZYS-UI-007 | 列表 | 搜索无结果 | UI 测试 | Playwright+Chrome | §9 | 已登录 | 搜索不存在关键字 | 提示「未找到匹配的接诊会话」或空态 |
| ZCZX-ZXJZYS-UI-008 | 列表 | 空列表 | UI 测试 | Playwright+Chrome | §6.1 | 无会话 | 进入页 | 「暂无接诊会话」 |
| ZCZX-ZXJZYS-UI-009 | 聊天 | 未选会话空态 | UI 测试 | Playwright+Chrome | §6.2 | 有列表 | 不点左侧项 | 右侧「请选择接诊会话」 |
| ZCZX-ZXJZYS-UI-010 | 聊天 | 选中加载历史 | UI 测试 | Playwright+Chrome | §6.2 | 有 S0 | 点击 S0 | 顶部问诊人姓名;气泡左右分布;按日期分组 |
| ZCZX-ZXJZYS-UI-011 | 聊天 | 上拉更早 | UI 测试 | Playwright+Chrome | §6.2 | S0>50 条 | 滚至顶部触发加载 | 更早消息追加;顺序正确 |
| ZCZX-ZXJZYS-UI-012 | 发送 | 文本成功 | UI 测试 | Playwright+Chrome | §6.3 | 选中 S0 | 输入文本→发送 | 右侧立即出现气泡;左侧摘要更新 |
| ZCZX-ZXJZYS-UI-013 | 发送 | 文本为空 | UI 测试 | Playwright+Chrome | §6.3 | 选中 S0 | 空内容点发送 | 「请输入消息内容」;无假成功气泡 |
| ZCZX-ZXJZYS-UI-014 | 发送 | 图片文件上传 | UI 测试 | Playwright+Chrome | §4.2 | 选中 S0 | 选本地 jpg≤10MB→发送 | 聊天区缩略图;列表摘要「[图片]」 |
| ZCZX-ZXJZYS-UI-015 | 发送 | 视频/语音文件 | UI 测试 | Playwright+Chrome | §4.2、§5.3 | 选中 S0 | 选 mp4/mp3 合法文件发送 | 占位/播放控件;摘要「[视频]」「[语音]」 |
| ZCZX-ZXJZYS-UI-016 | 发送 | 非法/超大文件 | UI 测试 | Playwright+Chrome | §6.3 | 选中 S0 | 选超大或非法后缀 | 提示文件不合规;不插入成功气泡 |
| ZCZX-ZXJZYS-UI-017 | 近实时 | 收到牧民消息 | UI 集成 | Playwright+Chrome | AC-01、§4.3 | A 页打开 S0;U1 移动端发 | 观察 A 页 ≤1s | 新气泡与列表摘要自动出现(WS,非仅 F5) |
| ZCZX-ZXJZYS-UI-018 | 本期范围 | 无新建会话按钮 | UI 测试 | Playwright+Chrome | §5.2 | 已登录 | 扫描工具栏/页头 | 无「新建会话」 |
| ZCZX-ZXJZYS-UI-019 | 本期范围 | 无删除/结束会话 | UI 测试 | Playwright+Chrome | §5.2 | 选中 S0 | 扫描会话操作 | 无删除/结束;牧民 hide 后项消失 |
| ZCZX-ZXJZYS-UI-020 | 本期范围 | 无 RTC/内嵌录播 | UI 测试 | Playwright+Chrome | §4.2 | 已登录 | 检查输入区图标 | 视频/语音为选文件;无通话/录音控件 |
| ZCZX-ZXJZYS-UI-021 | 权限 | 无 send 仅查看 | UI 测试 | Playwright+Chrome | §7 | 仅 list/query 角色 | 进入页选会话 | 无发送框或发送禁用 |
| ZCZX-ZXJZYS-UI-022 | 权限 | 未绑定账号 | UI 测试 | Playwright+Chrome | §9 | 无兽医绑定 | 进入菜单 | 无菜单或空列表+友好提示 |
| ZCZX-ZXJZYS-UI-023 | 隔离 | 菜单不含 AI 诊断混表 | UI 测试 | Playwright+Chrome | §6.4 | 有 SA 数据 | 本页列表 | 不出现 AI 问答标题/「AI 助手」会话 |
| ZCZX-ZXJZYS-UI-024 | 端到端 | 筛选聊天闭环 | UI 集成 | Playwright+Chrome | §7.1 | S0、S1 | 问诊人筛选→搜索→选会话→发回复 | 列表过滤正确;发送成功 |
| ZCZX-ZXJZYS-UI-025 | 端到端 | hide 后不可见 | UI 集成 | Playwright+Chrome | AC-04 | S0 | U1 移动端删除会话→A 刷新列表 | S0 从列表消失;无法再发 |
| 类别 | 单元 UT | 接口 API | 界面 UI |
|---|---|---|---|
| 正常主流程 | UT-011~016、019 | API-001、014~016、019~020、029~034 | UI-001~002、010~012、014~015、024 |
| 3 个月窗/搜索重置 | UT-002、012~013 | API-002~007、035 | UI-003~006 |
| 近实时 ≤1s | UT-023 | API-037 | UI-017 |
| 发送校验/媒体 | UT-003~008、006~007 | API-020~022 | UI-013~016 |
| hide/可见性 | UT-018、020 | API-011、018、032~033 | UI-019、025 |
| 越权/隔离 | UT-017、025 | API-009~010、017、024、010 | UI-023 |
| AI/预约约束 | UT-024~025 | API-010、036、025 | UI-018~020、023 |
| 权限/鉴权 | UT-010 | API-026~028 | UI-021~022 |
| 本期不做 | — | API-025 | UI-018~020 |
| 需求/方案章节 | 要点 | 主要用例 |
|---|---|---|
| §4.1 时间窗与搜索 | 默认 3 月;搜索超窗;重置 | UT-011~013;API-002~007、035;UI-003~006 |
| §4.1.1 hide | 牧民删除兽医不可见 | UT-018、020;API-011、018、032;UI-019、025 |
| §4.2 消息类型 | 文本/图/视/音文件 | UT-003~008;API-020;UI-014~016 |
| §4.3 近实时 | ≤1 秒 | UT-023;API-037;UI-017 |
| §5.3 产品确认五项 | 见技术方案 §3.4 | UT-002~013;API-001~007、037;UI-003~017 |
| §6.1 列表 | 筛选、字段、空态 | API-001~008;UI-001~008 |
| §6.2 详情 | 全历史、气泡、未选 | API-014~016;UI-009~011 |
| §6.3 发送 | 校验、失败不假成功 | UT-006~007;API-019~023;UI-012~016 |
| §6.4 与 AI 互斥 | 分列表 | UT-025;API-010;UI-023 |
| §3.4 不绑定预约 | 无预约可聊 | UT-024;API-036 |
| 技术方案 AC-01~07 | 验收 | API-037;各节对应用例编号 |
npm i -D @playwright/test;npx playwright install chrome。use: { channel: 'chrome', locale: 'zh-CN', baseURL: 'http://localhost:80' };storageState 复用兽医账号 A。page.goto('/diseaseTreatment/onlineConsult/vet')(与菜单 component 一致)。page.getByPlaceholder('请输入问诊人');page.getByPlaceholder('请输入会话内容');page.getByRole('button', { name: '搜索' });page.getByRole('button', { name: '重置' });page.locator('.session-list .session-item').first().click();page.getByRole('button', { name: '发送' });page.locator('input[type=file]').setInputFiles('fixtures/sample.jpg')。page.waitForEvent 监听 WS 帧,或 expect(locator).toBeVisible({ timeout: 1000 })。POST /app/onlineConsult/session/open + message 造 S0;SQL 直接插 S2(last_message_time 超窗)、SH(vet_visible=0)、SA(consult_type=2)。| 版本 | 说明 |
|---|---|
| 1.0 | 初版:单元 25、接口 38、UI 25;覆盖列表/消息/发送、3 个月与搜索、hide、近实时、AI 隔离、预约解耦、移动端 M1/M2/M4;Playwright+Chrome |