Files
hms/docs/audits/v3-beta/02-web-functional.md
iven 1e59007bd5 fix(mp): DevTools 卡死 + 主包 2MB→766KB + 代码质量 4 项全通过
根因:主包 2MB 全量组件注入导致 DevTools 渲染引擎内存渐增,
叠加离线时固定 3s 抑制期后的请求洪泛。

修复:
- app.config.ts 添加 lazyCodeLoading: requiredComponents
  主包 2.0MB→766KB,taro.js 526→131KB,vendors.js 230→28KB
- request.ts 离线抑制改为指数退避(3s→6s→12s→30s cap)
  后端不可达时自动延长抑制,防止请求风暴
- SegmentTabs Tab 接口改为 readonly,修复 TS 编译错误
- AbortController polyfill 补齐小程序运行时缺失
- 健康首页/设备同步/健康档案/报告/设置页 UI 重构
- 文章页公开端点适配游客访问
- 健康首页 Swiper 间隔优化 4s→5s,动画 500→300ms
2026-05-24 11:32:40 +08:00

120 lines
5.1 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.
# Web 前端核心业务功能测试
> 测试工具: chrome-devtools MCP | 环境: Chrome, 1920x1080
> 测试账号: admin / Admin@2026 | 截图: `docs/qa/screenshots/`
## 1. 登录流程 — PASS
| 测试项 | 结果 | 说明 |
|--------|------|------|
| 登录页渲染 | PASS | 双栏布局,品牌信息完整 |
| 登录后跳转 | PASS | 跳转至工作台 `/#/` |
| 侧边栏菜单 | PASS | 7 个一级菜单加载(工作台/患者中心/随访关怀/健康监测/运营管理/AI助手/系统管理) |
| 用户信息显示 | PASS | 右上角"系统管理员" + 头像 |
| 权限不足页面 | PASS | 403 页面清晰,含返回首页按钮 |
| XSS 安全 | PASS | SQL 注入测试数据 `Robert"); DROP TABLE patients;--` 正确转义显示 |
## 2. 患者管理 — FAIL (2 issues)
| 测试项 | 结果 | 说明 |
|--------|------|------|
| 患者列表加载 | PASS | 136 条记录7 页分页 |
| 分页切换 | PASS | 第 2 页数据正确 |
| 创建表单打开 | PASS | 4 个分组(基本信息/联系方式/医疗信息/紧急联系人) |
| 编辑表单 | PASS | 预填充已有数据 |
| **空表单提交** | **FAIL** | 空表单成功提交创建患者(后端有校验但前端未拦截) |
| **搜索功能** | **FAIL** | 输入 "Test" 搜索后列表仍显示全部 136 条 |
### H-01: 患者创建表单缺少前端必填校验
- **严重性:** HIGH
- **证据:** 点击"保存"空表单后审计日志显示"创建 了 患者"
- **根因:** Ant Design Form 未配置 `rules: [{ required: true }]` 或未调用 `form.validateFields()`
- **修复:** 在 `PatientList.tsx` 的 DrawerForm 中添加 `rules` 配置,提交前调 `form.validateFields()`
- **预计工时:** 1h
### M-01: 患者搜索不生效
- **严重性:** MEDIUM
- **证据:** 搜索框输入 "Test" + 回车,列表无变化
- **根因:** 搜索框 `keyword` 参数可能未正确传递到 API 请求
- **修复:** 检查搜索输入与 API 参数绑定
- **预计工时:** 2h
## 3. 健康数据/实时监控 — PASS
| 测试项 | 结果 | 说明 |
|--------|------|------|
| 实时监控页 | PASS | 危急/高危/中等/低危告警计数正确 |
| 告警面板 | PASS | 1 个高危患者活跃告警 |
| 告警列表 | PASS | 5 条告警记录,状态/严重程度正确 |
| 筛选功能 | PASS | 患者下拉框存在 |
## 4. 预约管理 — FAIL (1 issue)
| 测试项 | 结果 | 说明 |
|--------|------|------|
| 预约列表页渲染 | PASS | 表头正确(患者/医护/类型/日期/时段/状态/创建时间/备注/操作) |
| **预约数据** | **FAIL** | 表格显示 "No data" + "网络连接异常,请检查网络" |
| 新建预约按钮 | PASS | 按钮可见 |
### H-02: 预约列表 API 网络连接异常
- **严重性:** HIGH
- **证据:** 页面显示"网络连接异常"No data"同时出现
- **根因:** 可能是后端 API 错误或前端 API 路径不匹配
- **修复:** 检查 `/api/v1/health/appointments` 端点状态和前端 API 路径
- **预计工时:** 2h
## 5. 咨询管理 — PASS
| 测试项 | 结果 | 说明 |
|--------|------|------|
| 咨询列表加载 | PASS | 18 条咨询记录 |
| 状态显示 | PASS | 已关闭/进行中/等待中正确 |
| 操作按钮 | PASS | 进行中的会话显示"关闭"按钮 |
| 未读消息计数 | PASS | 患者端/医护端分别显示 |
| 筛选/导出 | PASS | 状态筛选、日期范围、导出按钮均存在 |
## 6. 工作台/仪表盘 — PASS_WITH_ISSUES
| 测试项 | 结果 | 说明 |
|--------|------|------|
| 工作台首页 | PASS | 6 大状态卡片 + 统计 + 模块状态 + 活跃度 |
| 系统状态 | PASS | PostgreSQL/API/定时任务/文件存储/消息队列/缓存 全绿 |
| 统计数据 | PASS | 注册用户 27/今日活跃 4/本周 9/月活 18 |
| 最近操作 | PASS | 实时显示登录/创建/删除操作 |
| 通知面板 | PASS | 危急值告警和待办事项正常 |
| 侧边栏折叠 | PASS | 折叠后仅图标,悬停展开子菜单 |
| **Admin Dashboard** | **FAIL** | `/#/health/admin-dashboard` 显示 403 |
### M-02: Admin Dashboard URL 直接访问 403
- **严重性:** MEDIUM
- **说明:** AdminDashboard 组件存在但路由未注册,该页面可能仅作为工作台内嵌组件使用
- **修复:** 移除直接访问路径或正确注册路由并配置权限
- **预计工时:** 1h
## 7. 主题切换 — PASS (4/4)
| 主题 | 结果 | 说明 |
|------|------|------|
| 信任蓝(默认) | PASS | 蓝色系侧边栏 |
| 深邃夜色 | PASS | 深色侧边栏和页头 |
| 翡翠清雅 | PASS | 绿色系 |
| 温润东方 | PASS | 暖色调 |
| 持久化 | PASS | localStorage `hms-theme` 保存,刷新后保持 |
## 8. 控制台警告
| 类型 | 消息 | 严重性 |
|------|------|--------|
| WARN | `[antd: Drawer] width is deprecated. Please use size instead.` | LOW |
| WARN | `[antd: List] component is deprecated. And will be removed in next major version.` | LOW |
## 小结
- **完全通过领域:** 5/8登录/健康数据/咨询/工作台/主题)
- **存在问题领域:** 3/8患者管理/预约/仪表盘路由)
- **HIGH 问题:** 2 个 | **MEDIUM 问题:** 2 个 | **LOW 问题:** 2 个