西藏巴青项目

大屏畜牧资源测试用例.md 20KB

大屏 — 畜牧资源统计 — 测试用例

依据:大屏畜牧资源功能需求.md(v1.3)、大屏畜牧资源技术方案.md(v1.3)
接口 Base Path/bigScreen/livestockResource(含 context-path、网关前缀须补齐)。鉴权:若依 Cookie / Authorization Token;权限 bigScreen:livestockResource:query

通用前置(无特殊说明):已执行 sql/biz_consult_session.sqlsql/biz_consult_message.sqlsql/biz_consult_user.sql;测试账号具备大屏畜牧资源查询权限;时区 Asia/Shanghai

口径摘要

规则
统计年 Y 切换后年内区块一致;默认当前自然年
统计日 / 时刻 Y=当前年→statDate 今日、statDateTime 请求时刻;历史年→statDate=Y-12-31
AI 会话 consult_type=2已隐藏vet_visible=0计入
接诊隔离 consult_type=1 不参与
提问量 AI 回复sender_role=3sender_user_id=0)条数;界面名称仍为「提问量」
今日四项 Y=当前自然年按 statDate 统计;历史年固定 0
分类占比 AI 回复 + 提问人 ai_category 归因;分母=年内全部 AI 回复;占比之和 100%
平均耗时 cost_time 非空(含 0)参与平均;空值不参与;展示
用户结构 biz_consult_user 全表;新≤180 天、老>180 天;不随 Y
近 7 日 [statDate−6, statDate]7 日;缺日 0
分时热度 距 statDateTime 最近 24 整点小时桶;与 Y 无关
今日活跃 会话 update_time 在统计日
日新增 create_timeupdate_time 均在统计日,且此前无 AI 会话
分类/模型/热点 AI 回复条数 + 提问人 ai_category 归因;占比分母=年内 AI 回复总数
关键词 文本提问(msg_type=1

本期不测:移动端「畜牧资源」资讯 v_livestock_resource、AI 诊断维护接口、在线接诊数据。

UI 测试Playwright + Chromiumplaywright.configuse: { channel: 'chrome' } 调用本机 Google Chrome

自动化对照(建议)com.ruoyi.web.modules.screen.**.*LivestockResource*(JUnit5 / MockMvc / Playwright)。


测试数据样本

代号 说明
AI-Y 2026 AI 会话:用户 U1/U2;含提问+AI 回复;ai_category 含 1、2 与未分类
AI-HIDE 2026 vet_visible=0 的 AI 会话,有 AI 回复
AI-VET 2026 consult_type=1 接诊会话及消息
AI-EMPTY 2025 无 AI 会话
AI-HIST 2024 AI 会话 2 条、提问量 5
AI-TODAY 统计日当日新建会话、当日 AI 回复、U3 首次会话(日新增)
AI-COST AI 回复:cost_time=0、正数毫秒、NULL 各至少 1 条
AI-BAND 年内会话 A~D 的 AI 回复数分别为 2、4、8、12 条(四档分布)
AI-7D 近 7 日内每日各有会话创建与 AI 回复
AI-DAY-HOUR 统计日自然日内跨 3 个整点小时桶有会话/回复
DU-MIX biz_consult_user:新用户 3、老用户 2(间隔按 180 天规则构造)
DU-EMPTY biz_consult_user
KW-TEXT 2026 文本提问含可分词关键词「牦牛」「防疫」等
KW-NONTEXT 仅图片/语音提问、无文本

一、单元测试用例

用例编号 测试模块 测试项 测试类型 测试工具 测试目的 前置条件 测试步骤 预期结果
DP-XM-UT-001 参数校验 statYear 合法 单元测试 JUnit5 年份解析 传入 20262000 解析为整数通过
DP-XM-UT-002 参数校验 statYear 非法 单元测试 JUnit5 异常入参 空、26abcd1899 ServiceException 或等价失败
DP-XM-UT-003 统计日 当前年 statDate 单元测试 JUnit5 SY-XM-01 Mock 当前日 2026-05-20 resolveStatDate(2026) 返回 2026-05-20
DP-XM-UT-004 统计日 历史年 statDate 单元测试 JUnit5 §2.2 resolveStatDate(2024) 返回 2024-12-31
DP-XM-UT-005 口径 排除接诊会话 单元测试 JUnit5 SY-XM-13 AI-Y+AI-VET countAiSessions(2026) AI-Y
DP-XM-UT-006 口径 隐藏会话计入 单元测试 JUnit5 §2.18#2 AI-Y+AI-HIDE countAiSessions(2026) AI-HIDE
DP-XM-UT-007 提问量 AI 回复计数 单元测试 JUnit5 §2.6 AI-Y 已知 AI 条数 countAiReplies(year) 等于 sender_role=3 条数;不含提问人消息
DP-XM-UT-008 今日指标 历史年为 0 单元测试 JUnit5 §2.4 AI-TODAY 有当日数据 buildOverview(2024) todayActiveUsers 等四项为 0
DP-XM-UT-009 今日指标 当前年今日 单元测试 JUnit5 §2.8 AI-TODAY;statDate=今日 buildOverview(2026) 今日四项与样本一致
DP-XM-UT-010 平均耗时 含 0 不排除 单元测试 JUnit5 §2.18#5 AI-COST:0ms、3000ms、NULL avgResponseSeconds 平均=(0+3)/2 秒;NULL 不入分母
DP-XM-UT-011 7 日序列 补零 7 点 单元测试 JUnit5 §2.11 仅首尾 2 日有数据 buildDailySeries(statDate) length=7;中间日 sessionCount=questionCount=0
DP-XM-UT-012 分时 最近 24 整点小时桶 单元测试 JUnit5 §2.12、SY-XM-07 anchor=2026-05-20 10:30 buildHourlyHeat hourlySeries.length=24windowEnd=2026-05-20 10:00;末桶 10:00 有数据;含 bucketDateTime
DP-XM-UT-013 用户结构 180 天分界 单元测试 JUnit5 §2.9 DU-MIX buildUserStructure 新/老人数与 DATEDIFF 规则一致
DP-XM-UT-014 用户结构 不随 Y 变 单元测试 JUnit5 SY-XM-05 固定 DU-MIX loadDashboard(2025)2026 userStructure 相同
DP-XM-UT-015 分类占比 分母全量 单元测试 JUnit5 §2.18#3 5 类 AI 回复已知 buildCategoryShare ratio 之和≈100(1 位小数);分母=年内 AI 回复总数
DP-XM-UT-016 分类映射 编码转中文 单元测试 JUnit5 §2.10 ai_category14、空 normalizeCategory 养殖技巧…设备操作;空→未分类
DP-XM-UT-017 会话分档 四档固定 单元测试 JUnit5 §2.13 AI-BAND buildSessionReplyDistribution 4 项 LIGHT~DEEP;sum(sessionCount)=年内会话数
DP-XM-UT-018 状态分布 正常/失败 单元测试 JUnit5 §2.14 AI-COST buildReplyStatus OK+FAIL=totalAiReplies;NULL→FAIL
DP-XM-UT-019 热点榜 Top5 分类 单元测试 JUnit5 SY-XM-09 多分类条数 buildHotTopics ≤5 条;按 count/ratio 降序;无单条消息序
DP-XM-UT-020 关键词 仅文本 Top30 单元测试 JUnit5 §2.16 KW-TEXT+KW-NONTEXT extractTopKeywords(30) 来自文本语料;≤30;不含媒体
DP-XM-UT-021 7 日窗口 与 Y 无关 单元测试 JUnit5 SY-XM-02 固定 AI-7D activityTrend 2025 vs 2026 相同 statDatedailySeries 一致
DP-XM-UT-022 一致性 总览与状态总量 单元测试 JUnit5 §6 AI-Y 对比 totalQuestionCountreplyStatus.total 一致
DP-XM-UT-023 约束 只读无写 单元测试 JUnit5 SY-XM-12 检查 Controller 无 insert/update/delete dashboard
DP-XM-UT-024 缓存 forceRefresh 单元测试 JUnit5 技术§2.3 启用缓存 loadDashboard(2026,true) 跳过缓存重算

二、接口测试用例

用例编号 测试模块 测试项 测试类型 测试工具 测试目的 前置条件 测试步骤 预期结果
DP-XM-API-001 看板 满数据正常 接口测试 Postman/curl SY-XM-01 已登录;AI-Y+DU-MIX GET .../dashboard?statYear=2026 code 成功;含 overviewtopKeywords 十区块;statDate 为今日
DP-XM-API-002 看板 核心总览 8 项 接口测试 Postman SY-XM-03 有三资/产量/接种/人员造数 GET dashboard 2026 operatingFixedAssetsagriUnitCount 共 8 字段与 SQL 一致
DP-XM-API-003 看板 隐藏会话计入 接口测试 Postman §2.18#2 AI-Y+AI-HIDE 对比计入前后会话相关区块 含隐藏会话
DP-XM-API-004 看板 排除接诊 接口测试 Postman SY-XM-13 AI-Y+AI-VET GET dashboard 2026 AI 区块指标不含接诊会话/消息
DP-XM-API-005 看板 历史年产量/免疫按该年最大月 接口测试 Postman §5.2 2024 有产量与接种 statYear=2024 肉/奶/免疫率为 2024 最大月口径;固定资产与人员不随年变
DP-XM-API-006 看板 历史年 statDate 接口测试 Postman §2.2 AI-HIST statYear=2024 statDate=2024-12-31;年内指标仅 2024
DP-XM-API-007 看板 活跃度 7 日 接口测试 Postman SY-XM-04 AI-7D GET dashboard activityTrend.dailySeries.length=7;含 sessionCountquestionCount
DP-XM-API-008 看板 7 日与 Y 无关 接口测试 Postman SY-XM-02 固定 AI-7D statYear=20252026(同日请求) activityTrend 一致
DP-XM-API-009 看板 用户结构 接口测试 Postman SY-XM-05 DU-MIX GET dashboard newUserCount/oldUserCount 正确;newUserRatio+oldUserRatio≈100
DP-XM-API-010 看板 用户结构切年不变 接口测试 Postman §2.9 DU-MIX 固定 statYear=20252026 userStructure 相同
DP-XM-API-011 看板 分类占比 100% 接口测试 Postman SY-XM-06 AI-Y 多分类 categoryShare.items sum(ratio)≈100;分母=年内 AI 回复 总数(totalAskerMessages 字段名沿用)
DP-XM-API-012 看板 模型调用同源 接口测试 Postman §5.6 AI-Y 对比 modelCallAnalysiscategoryShare 分类条数一致
DP-XM-API-013 看板 分时使用热度 接口测试 Postman SY-XM-07 24h 窗口有跨小时数据 GET dashboard hourlyHeat.hourlySeries.length=24windowEnd 为整点 yyyy-MM-dd HH:mm;点含 bucketDateTime
DP-XM-API-014 看板 会话分档四档 接口测试 Postman SY-XM-08 AI-BAND sessionReplyDistribution 4 条;sum(ratio)≈100
DP-XM-API-015 看板 应答状态 接口测试 Postman SY-XM-08 AI-COST replyStatusDistribution OK+FAIL=totalAiReplies
DP-XM-API-016 看板 热点 Top5 接口测试 Postman SY-XM-09 AI-Y hotTopics ≤5;为分类非单条消息
DP-XM-API-017 看板 关键词 Top30 接口测试 Postman SY-XM-10 KW-TEXT topKeywords ≤30;含 keywordcount
DP-XM-API-018 看板 无数据空态 接口测试 Postman §7.1 AI-EMPTY 2025 GET dashboard 总览累计为 0;图表空态或全 0
DP-XM-API-019 看板 无用户台账 接口测试 Postman §7.1 DU-EMPTY userStructure 人数 0 或空态标记
DP-XM-API-020 看板 无文本关键词 接口测试 Postman §7.1 KW-NONTEXT topKeywords [] 或空态
DP-XM-API-021 看板 平均耗时含 0 接口测试 Postman §2.18#5 AI-COST 仅 0 与 3000ms avgResponseSeconds 为 1.5 秒(实现四舍五入一致即可)
DP-XM-API-022 看板 缺 statYear 接口测试 Postman 异常 已登录 不传 statYear 失败或默认当前年(与实现一致)
DP-XM-API-023 看板 非法 statYear 接口测试 Postman 异常 已登录 statYear=abc 失败;参数错误
DP-XM-API-024 看板 statYear 回显 接口测试 Postman 一致性 已登录 statYear=2025 data.statYear=2025
DP-XM-API-025 看板 availableYears 接口测试 Postman §2.1 会话年 2024、2026 GET dashboard 含各年+当前年;降序
DP-XM-API-026 看板 切年不串 接口测试 Postman SY-XM-02 AI-HISTAI-Y 分别 20242026 年内指标互不混入
DP-XM-API-027 看板 forceRefresh 接口测试 Postman 技术§2.3 已启用缓存 ?statYear=2026&forceRefresh=true 成功;与库最新一致
DP-XM-API-028 范围 无维护接口 接口测试 Postman SY-XM-12 已登录 POST/PUT/DELETE .../bigScreen/livestockResource/** 404/405 或无权限
DP-XM-API-029 范围 无资讯接口 接口测试 Postman §3.2 已登录 探测 /app/livestockResource/list 大屏资讯列表接口;与看板分离
DP-XM-API-030 联动 AI 新会话后 接口测试 Postman SY-XM-11 2026 原计数 N 后台/移动端新建 AI 会话→GET dashboard totalSessions 等增加
DP-XM-API-031 鉴权 未登录 接口测试 curl 安全 无 Token GET dashboard 401 或统一未登录
DP-XM-API-032 权限 无大屏权限 接口测试 Postman 越权 bigScreen:livestockResource:query GET dashboard 403 或无权限

三、界面测试用例(UI)

用例编号 测试模块 测试项 测试类型 测试工具 测试目的 前置条件 测试步骤 预期结果
DP-XM-UI-001 页面 默认当前年加载 UI 测试 Playwright+Chrome SY-XM-01 已登录有权限;2026 有 AI-Y 打开 #/livestock-resources 默认当前年;请求 dashboard;十区块展示
DP-XM-UI-002 筛选 切换年份刷新 UI 测试 Playwright+Chrome SY-XM-02 含 2025、2026 数据 切换统计年份 2025→2026 总览/分类/分档等随 Y 更新;7 日/24h 仍按当前统计日/时刻
DP-XM-UI-003 筛选 加载中防残留 UI 测试 Playwright+Chrome §7.2 已登录 切年(可 route 延迟 dashboard Loading;完成后无上年残留
DP-XM-UI-004 总览 八项指标卡 UI 测试 Playwright+Chrome SY-XM-03 有三资/产量/接种/人员造数 查看「核心数据总览」 8 卡:固定资产、肉/奶、免疫率%、兽医/特派员/事业单位
DP-XM-UI-005 总览 提问量文案 UI 测试 Playwright+Chrome §2.18#1 有 AI 回复 查看总览与趋势文案 显示「提问量」;数值为 AI 回复规模
DP-XM-UI-006 图表 活跃度 7 日 UI 测试 Playwright+Chrome SY-XM-04 AI-7D 查看「活跃度趋势」;切换会话数/提问量 7 个日期点;双维度可切换或双系列
DP-XM-UI-007 图表 用户结构 UI 测试 Playwright+Chrome SY-XM-05 DU-MIX 查看「用户结构分析」 新/老用户人数与占比;切年不变
DP-XM-UI-008 图表 提问分类占比 UI 测试 Playwright+Chrome SY-XM-06 AI-Y 查看饼图 含 1~4 类及未分类;占比之和 100%
DP-XM-UI-009 图表 模型调用分析 UI 测试 Playwright+Chrome §5.6 AI-Y 查看柱状/条形区 各分类条数与占比区一致
DP-XM-UI-010 图表 分时使用热度 UI 测试 Playwright+Chrome SY-XM-07 24h 有数据 查看「分时使用热度」 24 整点;横轴 HH:mm;悬停显完整时刻+会话/提问量
DP-XM-UI-011 图表 会话提问分布 UI 测试 Playwright+Chrome SY-XM-08 AI-BAND 查看「会话提问数量分布」 四档轻度~深度;占比展示
DP-XM-UI-012 图表 会话状态分布 UI 测试 Playwright+Chrome SY-XM-08 AI-COST 查看「会话状态分布」 正常应答/调用失败两档
DP-XM-UI-013 榜单 热点问题 Top5 UI 测试 Playwright+Chrome SY-XM-09 AI-Y 查看「热点问题榜单」 ≤5 条分类排行
DP-XM-UI-014 榜单 高频关键词 UI 测试 Playwright+Chrome SY-XM-10 KW-TEXT 查看「高频关键词」 词云或列表;≤30
DP-XM-UI-015 空态 无 AI 数据年 UI 测试 Playwright+Chrome §7.1 AI-EMPTY 切换 2025 总览累计 0;图表空态或全 0
DP-XM-UI-016 空态 无关键词 UI 测试 Playwright+Chrome §7.1 KW-NONTEXT 查看关键词区 空态;不报错
DP-XM-UI-017 约束 历史年今日为 0 UI 测试 Playwright+Chrome §2.4 AI-TODAY;切 2024 查看今日四项卡 均为 0
DP-XM-UI-018 只读 无维护按钮 UI 测试 Playwright+Chrome SY-XM-12 已登录 扫描全页 无新建会话/发消息/隐藏;可有刷新
DP-XM-UI-019 错误 接口失败重试 UI 测试 Playwright+Chrome §7.2 Mock dashboard 500 进入或切年 失败提示;支持重试
DP-XM-UI-020 权限 无入口 UI 测试 Playwright+Chrome 安全 无大屏权限账号 登录/直链 无菜单或 403
DP-XM-UI-021 联动 AI 使用后刷新 UI 集成 Playwright+Chrome SY-XM-11 原计数已知 业务端发 AI 问答→F5/刷新 总览/趋势等更新
DP-XM-UI-022 端到端 全流程查阅 UI 集成 Playwright+Chrome §4、SY-XM-01~13 2026 完整样本 登录→进页→默认年→切年→浏览十区块 数据合理;无控制台报错

Playwright 实施提示

// playwright.config.ts 片段
use: { channel: 'chrome', headless: false }

await page.goto('/#/livestock-resources');

await Promise.all([
  page.waitForResponse('**/bigScreen/livestockResource/dashboard**'),
  page.getByRole('combobox', { name: /统计年份|年份/ }).selectOption('2026'),
]);

await expect(page.getByText(/核心数据总览/)).toBeVisible();
await expect(page.getByText(/经营性固定资产|免疫率|科技特派员/)).toBeVisible();
await expect(page.getByText(/活跃度趋势|用户结构分析/)).toBeVisible();

// 7 日 / 24h 切年后仍应请求 dashboard(观察 network)
await page.route('**/bigScreen/livestockResource/dashboard**', route =>
  route.fulfill({ status: 500, body: '{}' })
);

覆盖对照

类别 单元 UT 接口 API 界面 UI
正常流程 UT-003~007、009~017、019~022 API-001~017、030 UI-001~014、021~022
异常流程 UT-002、008 API-018~020、022~023、031~032 UI-015~016、019~020
业务约束 UT-005~006、010~014、018、023~024 API-003~006、010~011、021、028~029 UI-005、007、017~018

功能需求追溯(SY-XM / 章节)

追溯 要点 主要用例
SY-XM-01 默认当前年 UI-001;API-001
SY-XM-02 切年;7 日/24h 不按 Y UT-021;API-008、026;UI-002
SY-XM-03 核心总览 8 项 UT-007~008、010;API-002;UI-004
SY-XM-04 活跃度 7 日 UT-011;API-007;UI-006
SY-XM-05 用户结构 UT-013~014;API-009~010;UI-007
SY-XM-06 分类 100% UT-015;API-011~012;UI-008~009
SY-XM-07 最近 24h 整点热度 UT-012;API-013;UI-010
SY-XM-08 分档与状态 UT-017~018;API-014~015;UI-011~012
SY-XM-09 热点 Top5 UT-019;API-016;UI-013
SY-XM-10 关键词 UT-020;API-017;UI-014
SY-XM-11 刷新联动 API-030;UI-021
SY-XM-12 只读 UT-023;API-028;UI-018
SY-XM-13 接诊隔离 UT-005;API-004
§2.18#1~6 产品确认 UT-006~007、010、015;API-003、011、021;UI-005
§7.1 空态 API-018~020;UI-015~016
§7.2 加载失败 UI-003、019

修订记录

版本 说明
1.0 初版:单元 24、接口 32、UI 22;覆盖 SY-XM-01~13 与正常/异常/约束;Playwright+Chrome;Base /bigScreen/livestockResource
1.1 对齐功能需求 v1.1(提问量、滑动 24h 等)
1.3 2026-07-04