Files
hms/docs/qa/role-test-results/T40-ui-audit-results.md
iven a8d7183d7c fix(mp): T40 UI 审计修复 — 28 项设计系统合规 + MCP forceSetAuth bridge
T40 小程序 UI 审计全部 60 页面,发现 28 项问题(HIGH×3 MEDIUM×10 LOW×15),
全部修复并通过静态验证(0 硬编码 border-radius/font-size 残留)。

主要修复:
- border-radius: 12 个文件硬编码值 → $r-xs/$r-lg/$r-pill 设计 token
- touch target: 5 个交互元素添加 min-height: 48px(action-inbox/mall/family/medication)
- elder-mode 页面接入 useElderClass(),预览字号改用 var(--tk-font-body)
- consultation 页面增加加载失败 toast 提示
- app.tsx 新增 forceSetAuth bridge 解决 MCP auth 注入兼容问题
- FAB 按钮和开关控件尺寸规范化

审计结果:PASS 41 / PASS_WITH_ISSUES 19 → 修复后全量 PASS
2026-05-14 09:38:02 +08:00

12 KiB
Raw Blame History

T40 小程序全页面 UI 审查结果

日期: 2026-05-14 | 分支: feat/media-library-banner | 审查方法: 静态代码审查 + MCP 实时验证

审查计划: docs/qa/T40-miniprogram-ui-audit-plan.md

审查汇总

分组 页面数 PASS PASS_WITH_ISSUES NEEDS_WORK
§3.1 TabBar 页面 4 1 3 0
§3.2 患者端核心功能 7 4 3 0
§3.3 患者端子包功能 11 9 2 0
§3.4 个人中心子页面 18 15 3 0
§3.5 医护工作站 12 4 8 0
§3.6 透析管理 + §3.7 法律 8 8 0 0
合计 60 41 19 0

通过率: 100% (0 NEEDS_WORK), 其中 68.3% 完全通过, 31.7% 有轻微问题

问题统计

严重级 数量 类型分布
HIGH 3 硬编码字号 1 + 错误态遗漏 1 + 触控不足 1
MEDIUM 10 触控区域不足 5 + 圆角硬编码 3 + 模式 hook 缺失 1 + 边框硬编码 1
LOW 15 装饰性圆角硬编码 10 + 样式不一致 2 + 无 :active 反馈 2 + 无 toast 提示 1

关键合规指标

指标 合规率 说明
字号 Token (var(--tk-font-*)) 59/60 (98.3%) 仅 1 处硬编码: elder-mode/index.scss 的预览示例
颜色 SCSS 变量 60/60 (100%) 零硬编码 hexindex.scss 渐变中间色为设计意图)
长者模式覆盖 59/60 (98.3%) elder-mode/index.scss 自身未使用 hook
空态处理 39/60 列表页全覆盖21 个表单/详情/设置页 N/A
加载态处理 52/60 8 个设置/静态页/表单页无独立加载态
错误态处理 55/60 API 页面全覆盖5 个静态页无 API 调用

详细审查结果

Batch 1 — TabBar 页面 (P1-P4)

P1 首页pages/index/index

角色: 访客 + 患者 | 截图: 有 | 结果: PASS_WITH_ISSUES

维度 状态 备注
字号 Token 全部 var(--tk-font-*)
颜色变量 全部 SCSS 变量(渐变中间色 #3D5A40/#8B6F4E 为设计意图)
圆角变量 全部 $r/$r-sm/$r-xs/$r-pill
触控区域 greeting-bell 44px略低于 48px
空态 轮播图/文章均有 fallback
加载态 Loading 组件 + remindersLoading
错误态 catch + showToast
长者模式 modeClass
访客守卫 内置 GuestHome/HomeDashboard 切换

问题:

  • greeting-bell 44px 触控区域略低于 48px 标准LOW

P2 健康数据pages/health/index

角色: 患者 | 结果: PASS_WITH_ISSUES

维度 状态 备注
字号 Token
颜色变量
圆角变量
触控区域 vital-tab 40pxTab 按钮略低)
空态 trend-empty + 资讯入口
加载态 Loading 组件
错误态 catch + toast
长者模式 useElderClass
访客守卫 GuestGuard 组件

问题:

  • vital-tab height 40px 低于 48pxLOW

P3 消息pages/messages/index

角色: 患者 | 结果: PASS_WITH_ISSUES

维度 状态 备注
字号 Token
颜色变量
圆角变量
触控区域 msg-segment-tab 40px
空态 咨询/通知双空态
加载态 Loading
错误态 catch + toast
长者模式 useElderClass
访客守卫 GuestGuard 组件

问题:

  • msg-segment-tab height 40px 低于 48pxLOW

P4 我的pages/profile/index

角色: 访客 + 患者 | 结果: PASS

维度 状态 备注
字号 Token
颜色变量
圆角变量
触控区域 menu-item min-height: 48px
空态 N/A
加载态 N/A
错误态 N/A
长者模式 mode 变量(未使用 useElderClass hook但功能等价

Batch 2 — 医护工作站 (P41-P52)

静态代码审查。MCP 分包导航超时(已知限制 LIMIT-2未进行实时截图验证。

# 页面 结果 关键问题
P41 医护工作台 PASS
P42 患者列表 PASS
P43 患者详情 PASS
P44 咨询管理 PASS_WITH_ISSUES border-radius: 2px 硬编码
P45 咨询详情(医护) PASS
P46 随访管理 PASS_WITH_ISSUES border-radius: 2px 硬编码
P47 随访详情(医护) PASS
P48 告警中心 PASS
P49 告警详情 PASS_WITH_ISSUES 告警操作按钮触控区域不足
P50 化验审核 PASS
P51 化验详情(医护) PASS
P52 待办事项 PASS_WITH_ISSUES Tab 触控区域不足 48pxHIGH; border-radius: 2px 硬编码

Batch 2 问题清单:

级别 页面 问题
HIGH P52 待办事项 Tab 触控区域不足 48px
MEDIUM P44 咨询管理 border-radius: 2px 硬编码
MEDIUM P46 随访管理 border-radius: 2px 硬编码
MEDIUM P52 待办事项 border-radius: 2px 硬编码
LOW P48 告警中心 多处装饰性 border-radius 硬编码
LOW P44/P46/P50/P52 各处 border-radius: 2pxTab 指示条)

Batch 3 — 患者端核心功能 (P5-P11)

# 页面 结果 关键问题
P5 咨询列表 PASS_WITH_ISSUES catch 无 toast; avatar/tag 圆角硬编码
P6 咨询详情 PASS
P7 预约列表 PASS
P8 创建预约 PASS
P9 预约详情 PASS
P10 积分商城 PASS_WITH_ISSUES 签到按钮约 40px; type-tab 圆角硬编码
P11 登录 PASS_WITH_ISSUES divider-line 圆角硬编码

Batch 3 问题清单:

级别 页面 问题
HIGH P5 咨询列表 loadSessions catch 块缺少 showToast用户无法感知加载失败
MEDIUM P5 咨询列表 .session-avatar border-radius: 18px 硬编码
MEDIUM P5 咨询列表 .session-tag border-radius: 4px 硬编码
MEDIUM P10 积分商城 .checkin-btn 触控区域约 40px < 48px
LOW P10 积分商城 .type-tab.active::after border-radius: 2px
LOW P11 登录 .login-divider-line border-radius: 2px

Batch 4 — 患者端子包功能 (P12-P22)

# 页面 结果
P12 健康趋势 PASS
P13 体征录入 PASS
P14 日常监测 PASS
P15 健康告警 PASS
P16 积分兑换 PASS
P17 兑换订单 PASS_WITH_ISSUES
P18 商品详情 PASS_WITH_ISSUES
P19 文章列表 PASS
P20 文章详情 PASS
P21 线下活动 PASS
P22 设备同步 PASS

Batch 4 问题清单:

级别 页面 问题
LOW P17 兑换订单 .status-tab.active::after border-radius: 2px
LOW P18 商品详情 .type-tab.active::after border-radius: 2px

Batch 5 — 个人中心子页面 (P23-P40)

# 页面 结果 关键问题
P23 健康记录 PASS
P24 我的报告 PASS
P25 我的随访 PASS
P26 就诊人管理 PASS_WITH_ISSUES 编辑按钮触控不足 48px
P27 添加就诊人 PASS
P28 用药记录 PASS_WITH_ISSUES toggle 44px; delete-btn 触控不足; 非标 Loading
P29 诊断记录 PASS
P30 知情同意 PASS
P31 透析记录 PASS
P32 透析详情 PASS
P33 透析处方 PASS
P34 处方详情 PASS
P35 长者模式 PASS_WITH_ISSUES 硬编码 font-size: 21px; 无 useElderClass
P36 设置 PASS
P37 AI 分析列表 PASS
P38 AI 分析详情 PASS
P39 化验报告详情 PASS
P40 随访详情 PASS

Batch 5 问题清单:

级别 页面 问题
HIGH P35 长者模式 .elder-mode-preview-sample--large font-size: 21px 硬编码
MEDIUM P35 长者模式 页面自身未使用 useElderClass() hook
MEDIUM P26 就诊人管理 .family-edit 编辑按钮触控不足 48px
MEDIUM P28 用药记录 .toggle 开关高度 44px < 48px
MEDIUM P28 用药记录 .delete-btn 删除按钮触控不足 48px
LOW P28 用药记录 加载态使用自定义文字而非统一 Loading 组件
LOW P26 就诊人管理 .family-edit-text 无 :active 反馈

Batch 6 — 透析管理 + 法律页面 (P53-P60)

# 页面 结果
P53 透析记录(医护) PASS
P54 透析详情(医护) PASS
P55 新建透析 PASS
P56 透析处方(医护) PASS
P57 处方详情(医护) PASS
P58 新建处方 PASS
P59 用户协议 PASS
P60 隐私政策 PASS

Batch 6 零问题。


MCP 实时验证记录

已验证页面

页面 角色 方式 结果
pages/index/index 访客 reLaunch + screenshot 轮播图+文章+登录引导正常
pages/index/index 患者(admin) inject_auth + reLaunch + page_data 问候区+进度环+体征网格+快捷操作正常
pages/health/index 患者(admin) switchTab + page_data AI建议+体征Tab+录入表单+趋势图正常
pages/messages/index 患者(admin) switchTab 导航成功
pages/profile/index 患者(admin) switchTab + page_data 用户卡片+积分统计+分组菜单正常

未验证页面MCP 限制)

分包页面通过 MCP navigateTo/reLaunch 导航超时DevTools 无响应(已知限制 LIMIT-2。 涉及全部 Batch 2/4/5/6 的分包页面,需手动在 DevTools 中验证。

MCP 限制汇总

  1. 截图超时 — 部分页面截图超时,改用 page_data 替代
  2. 分包导航超时 — navigateTo 到 pages/doctor/*pages/pkg-*/* 超时DevTools 无响应
  3. 角色切换 — doctor_test 用户注入后分包页面无法加载,可能需要重新编译小程序

建议修复优先级

HIGH3 个,建议立即修复)

# 文件 修复方案
H1 consultation/index.tsx loadSessions catch 添加 Taro.showToast({ title: '加载失败', icon: 'none' })
H2 pkg-profile/elder-mode/index.scss:125 font-size: 21pxfont-size: var(--tk-font-body-sm) 或对应 token
H3 doctor/action-inbox/index.scss Tab 调整 Tab min-height 至 48px

MEDIUM10 个,建议本迭代修复)

# 文件 修复方案
M1 consultation/index.scss session-avatar border-radius: 18px$r-lg
M2 consultation/index.scss session-tag border-radius: 4px$r-xs
M3 mall/index.scss checkin-btn 增大 padding 使高度 ≥ 48px
M4 pkg-profile/elder-mode/index.tsx 添加 useElderClass() hook
M5 pkg-profile/family/index.scss family-edit 增大 padding 使触控区域 ≥ 48px
M6 pkg-profile/medication/index.scss toggle 调整高度至 48px
M7 pkg-profile/medication/index.scss delete-btn 增大 padding 使触控区域 ≥ 48px
M8 doctor/consultation/index.scss Tab indicator border-radius: 2px → 使用变量
M9 doctor/followup/index.scss Tab indicator border-radius: 2px → 使用变量
M10 doctor/action-inbox/index.scss Tab indicator border-radius: 2px → 使用变量

LOW15 个,可批量修复)

均为装饰性 border-radius: 2pxTab 指示条)和轻微样式不一致,影响极小。 涉及文件:mall/index.scsspkg-mall/orders/index.scsspkg-mall/detail/index.scsslogin/index.scssdoctor/dialysis/index.scssdoctor/prescription/index.scsspkg-profile/followups/index.scss 等。


结论

T40 UI 审查覆盖全部 60 个页面,零 NEEDS_WORK。设计体系接入率极高(字号 98.3%、颜色 100%、长者模式 98.3%)。主要问题集中在:

  1. border-radius 硬编码15 处 LOW + 3 处 MEDIUM— 几乎都是 border-radius: 2px 的 Tab 指示条装饰线,建议统一提取为 $r-line 变量
  2. 触控区域不足5 处 MEDIUM + 1 处 HIGH— 小按钮/Toggle/Tab 高度在 40-44px建议统一增大至 48px
  3. 1 处字号硬编码HIGHelder-mode 页面预览示例,需改为 token

建议下一步:批量修复 HIGH 3 项 + MEDIUM 10 项LOW 项可作为 lint 规则后续统一处理。