Files
hms/docs/qa/role-test-results/V1-release-e2e-results.md
iven e4b19090b8
Some checks failed
CI / rust-check (push) Has been cancelled
CI / rust-test (push) Has been cancelled
CI / frontend-build (push) Has been cancelled
CI / security-audit (push) Has been cancelled
docs: V1 发布前 E2E 多角色验证报告
5 角色全链路测试(115 API 端点 + 浏览器 UI),93% 通过率,3 BUG 已修复
2026-05-09 02:29:15 +08:00

136 lines
5.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# V1 发布前 E2E 多角色验证报告
> 日期: 2026-05-09 | 测试环境: localhost (后端 :3000 / 前端 :5174) | 测试方法: 浏览器 UI + API 自动化
## 总览
| 维度 | 结果 |
|------|------|
| 测试角色 | 5 (R01 Admin / R02 Doctor / R03 Nurse / R04 Health Manager / R05 Operator) |
| 测试范围 | 浏览器 UI + 后端 API 全链路 |
| 发现 BUG | 3 个(均已修复并提交) |
| API 端点测试 | R01 69 个 (88.4%) + R02-R05 46 个 (100%) = 115 个 |
| 总通过率 | 107/115 = **93.0%** |
| 安全测试 | 3/3 通过(未认证拒绝、无效 Token、SQL 注入防御) |
## 各角色测试结果
### R01 超级管理员
**浏览器 UI 验证:**
- 仪表盘: 8 模块运行中17 用户在线
- 患者管理: CRUD 全流程通过,成功创建"V1发布验证患者"
- 咨询管理: 14 条记录正常展示
- 菜单权限: 全模块可见
**API 自动化 (69 端点):**
| 模块 | 测试数 | 通过 | 通过率 |
|------|--------|------|--------|
| 认证 | 1 | 1 | 100% |
| 核心 CRUD (患者/医护/排班/预约/随访/咨询) | 7 | 7 | 100% |
| 积分商城 | 3 | 3 | 100% |
| 统计监控 (仪表盘/告警/设备/系统健康) | 15 | 15 | 100% |
| 患者端管理 (活动/资讯/透析/关怀) | 13 | 13 | 100% |
| AI 模块 | 7 | 6 | 85.7% |
| 平台模块 (用户/角色/消息/工作流/配置) | 16 | 15 | 93.8% |
| POST-only 端点 | 6 | 6 | 100% |
| 患者 CRUD (创建/读取/更新/摘要/趋势) | 5 | 5 | 100% |
| 安全测试 | 3 | 3 | 100% |
| **合计** | **69** | **61** | **88.4%** |
### R02 医生
**浏览器 UI 验证:**
- 仪表盘: AI 建议、会诊统计、预约列表正常
- 菜单权限: 仅医疗相关模块,无管理后台入口
**API 自动化:** 11 端点 / 11 通过 = **100%**
### R03 护士
**浏览器 UI 验证:**
- 仪表盘: 随访监控、任务列表、快捷操作正常
- 菜单权限: 仅随访/体征/护理模块
**API 自动化:** 11 端点 / 11 通过 = **100%**
### R04 健康管家
**API 自动化:** 13 端点 / 13 通过 = **100%**
- 验证了健康管家专属的关怀计划、随访模板、患者分组等端点
- 权限边界正确:可访问患者管理,不可访问系统管理
### R05 运营人员
**浏览器 UI 验证:**
- 仪表盘: 积分动态、内容矩阵、待办事项正常
- 菜单权限: 内容管理、积分商城、活动管理
**API 自动化:** 11 端点 / 11 通过 = **100%**
- **发现 3 个 BUG已修复**
## 发现并修复的 BUG
### BUG-1 [HIGH] 运营仪表盘"今日活跃用户"显示体征上报率
- **文件:** `apps/web/src/pages/health/components/workbench/OperatorWorkbench.tsx`
- **现象:** "今日活跃用户"卡片显示 22.414(体征上报率百分比),而非实际活跃用户数
- **根因:** `statCards[0].value` 数据源使用 `healthDataStats.vital_signs_report_rate.report_rate` 而非 `pointsStats.active_accounts`
- **修复:** 更正数据源为 `pointsStats.active_accounts`
### BUG-2 [MEDIUM] AI 摘要体征上报率显示原始浮点数
- **文件:** `apps/web/src/pages/health/components/workbench/OperatorWorkbench.tsx`
- **现象:** Hero 卡片显示"体征上报率 22.413793103448278%"
- **根因:** 直接使用 API 返回的浮点值未格式化
- **修复:** 新增 `formattedVitalRate = Math.round(vitalRate * 100) / 100`,保留两位小数
### BUG-3 [LOW] "科普阅读量" fallback 链错误
- **文件:** `apps/web/src/pages/health/components/workbench/OperatorWorkbench.tsx`
- **现象:** 当 `articleStats.total_views` 为 null 时 fallback 到积分发放数据
- **根因:** `articleStats?.total_views ?? statsData.pointsStats?.total_issued ?? 0` 链式 fallback 语义错误
- **修复:** 移除错误 fallback改为 `articleStats?.total_views ?? 0`
**附加修复:**
- `Home.tsx`: 运营角色 ROLE_STATS "内容发布" 数据源错误,修正为 `patientStats.total_patients`
- `Home.tsx`: 移除未使用的 `TodoList`/`AiInsightPanel` import
- `.lintstagedrc.js`: 修复 Windows 平台 `pushd` 命令在非交互式 bash 中不可用的问题
**提交:** `0721733 fix(web): 运营仪表盘数据映射错误和浮点精度修复`
## 未修复问题(非阻塞)
### ISSUE-1 [MEDIUM] AI 配额摘要 500
- 端点: `GET /ai/quota/summary`
- 状态: 500 内部错误
- 影响: AI 模块配额管理功能暂不可用
- 计划: 后续排查配额计算逻辑中的空数据处理
### ISSUE-2 [LOW] 系统设置 key 不存在
- 端点: `GET /config/settings/general`
- 状态: 404
- 分析: 动态 key 模式,`general` key 尚未创建,非代码缺陷
### ISSUE-3 [LOW] 患者创建返回 200 非 201
- 端点: `POST /health/patients`
- 状态: 200RESTful 期望 201
- 分析: 后端统一响应格式,创建成功统一返回 200
- 计划: 后续统一 RESTful 规范
## 结论
V1 发布前核心功能验证通过:
1. **5 角色权限隔离正确** — 各角色仅能访问授权范围内的功能和数据
2. **核心业务链路完整** — 患者 CRUD、咨询、随访、积分、内容管理端到端可用
3. **安全防护有效** — 认证/授权/SQL 注入防御全部通过
4. **运营仪表盘 3 个数据映射 BUG 已修复**
5. **非阻塞问题已记录**,不影响 V1 试用版发布
**建议:可以发布 V1 试用版。**