Files
hms/docs/superpowers/specs/2026-04-30-elderly-friendly-miniprogram-design.md
iven c208dcc6f5 docs(specs): 7 份设计规格 — 工作台/适老化/硬编码清理/项目分析
新增: 适老化小程序/Action Inbox/统一工作台/医生操作台/
硬编码清理/健康管理台/全项目深度分析报告
2026-05-03 19:32:25 +08:00

9.4 KiB
Raw Blame History

HMS 小程序患者端 — 老年友好版本设计规格

日期: 2026-04-30 | 状态: 待实施 | 选定方案: A健康 Tab 导航)

1. 背景与目标

患者端小程序面向 60+ 慢病患者群体当前版本信息密度高、字号小、导航层级深5 Tab + 40 页老年用户难以独立使用。基于多专家组UX 无障碍、老年医学、产品策略)头脑风暴,选定方案 A 进行全面重设计。

核心目标:

  • 老年患者能独立完成日常操作(记录体征、查看数据、预约挂号、服药提醒)
  • 每个核心操作路径不超过 3 步
  • 满足 WCAG 2.1 AA 对比度要求

2. 导航结构

4 Tab首页 / 健康 / 消息 / 我的

Tab 名称 核心内容 页面文件
1 首页 今日打卡 + 体征 2x2 + 快捷操作 pages/index/index.tsx
2 健康 体征录入 + 趋势图 + BLE 设备 pages/health/index.tsx(重写)
3 消息 咨询对话 + 系统通知 pages/messages/index.tsx(新建)
4 我的 个人信息 + 积分 + 菜单 pages/profile/index.tsx(调整)

Tab 迁移映射:

当前 Tab 操作 去向
首页 (index) 保留,重写
上报 (health) 重命名为"健康",重写 合并录入功能
咨询 (consultation) 从 Tab 移除 合并到"消息"Tab 的"咨询"子 Tab
商城 (mall) 从 Tab 移除 降级为"我的"页菜单项,pkg-mall 子包保留
我的 (profile) 保留,调整间距
(新增) 消息 新建 Tab + 页面 pages/messages/index.tsx

说明: pages/consultation/ 目录及 pages/consultation/detail/ 保留为路由页面(非 Tab从消息页的"咨询"子 Tab 导航进入。pkg-mall 子包(兑换/订单/详情)全部保留,从"我的"页菜单入口进入。

3. 首页设计

5 个区域,从上到下:

  1. 问候 + 日期 — "上午好,张大爷" 24px 粗体 + 日期 + 消息红点
  2. 今日体征完成度 — 圆形进度环72px+ 完成百分比 + 4 指标胶囊(血压/心率/血糖/体重)
    • 计算逻辑(纯前端): 查询当日体征数据 API4 个指标(血压/心率/血糖/体重)中当天有记录的计为完成,进度 = 已完成数 / 4
    • 与积分签到的区别: 这是"今日体征记录完成度"(纯展示),不是积分商城的"每日签到"usePointsStore.checkinStatus)。两者独立,不耦合。
    • 无需新后端 API 复用现有 getHealthSummary 或当日体征查询接口,前端计算百分比。
  3. 今日体征 2x2 — 白色卡片网格,数值 32px 衬线体,状态标签(正常/偏高/未记录)
  4. 今日待办≤3条 — 预约/随访/异常提醒,带图标和副标题
  5. 快捷操作 — 两个大按钮:"记录体征"(实色)+ "预约挂号"(描边)

首页不放置的内容(从当前首页移除):

  • 设备快捷入口(血压计/血糖仪卡片)→ 移至"健康"Tab
  • 6 项快捷服务网格(预约挂号/健康录入/趋势/告警/资讯/AI→ 精简为 2 个核心按钮
  • 健康资讯文章列表 → 入口移至"健康"Tab 底部或"我的"页

4. 健康页设计

功能定位: 体征数据录入 + 趋势查看 + 设备管理

4.1 录入区

  • 顶部类型 Tab血压 / 心率 / 血糖 / 体重56px 高大 Tab选中项 $pri 实色底白字)
  • 血压:收缩压 + 舒张压两个大输入框56px 高,数值 28px 衬线体),上下排列(非左右,防止老年用户填反)
  • 心率/体重:单个大输入框
  • 血糖:数值 + 时段选择(空腹/餐后 2h大按钮组
  • 每个输入框下方显示参考范围和实时状态(正常/偏高/偏低)
  • 保存按钮:全宽 56px 高 $pri 实色
  • 异常值保存前弹出确认:"血压偏高 (160/95),确认提交?"

4.2 趋势图

  • 复用现有 getTrend API
  • 7 天柱状图,异常值用 $wrn 色,正常用 $pri 色
  • 底部显示周一到周日标签

4.3 BLE 设备

  • 从首页移入此区域
  • 连接状态卡片:设备图标 + 名称 + 连接状态
  • 一键同步按钮
  • 设备管理入口(跳转 pkg-device-sync

4.4 健康资讯入口

  • 从首页移入,放在页面底部
  • 单行卡片:"最新健康资讯 " 点击跳转文章列表

5. 消息页设计

新页面,合并咨询 + 系统通知。

  • 顶部 Tab 切换:"咨询" | "通知"56px 大 Tab
  • 咨询列表:对话卡片 80px 高,文字 28px未读红点 24px
  • 通知列表:随访提醒、预约确认、异常告警、用药提醒

6. 我的页设计

保留现有结构,调整参数:

  • 菜单项高度 48px → 64px
  • 文字 28px
  • 图标 40px
  • 积分 + 连续打卡横排展示

7. 设计系统调整

7.1 字号

单位说明: 代码库统一使用 pxTaro 的 pxtransform 编译时自动转为 rpx。以下所有值均为 px

用途 当前(px) 调整为(px)
问候/标题 26 28
区块标题 24 26
正文 22 24
辅助文字 20 22
体征数值 44 48-64
按钮文字 24 28
最小字号 20 22

7.2 间距与触控

参数 当前 调整为
按钮最小高度 48px120rpx
主按钮高度 56px140rpx
菜单项高度 48px 64px160rpx
卡片圆角 12px 16px
卡片内间距 24-28px 28-32px
列表项间距 16px 20px

7.3 色彩

对比度基于 $bg #F5F0EB 计算。 WCAG 2.1 AA 要求:正文(<24px≥ 4.5:1大字≥24px≥ 3:1。

变量 当前 调整为 对比度 WCAG
$tx2 #7A756E #5A554F ~5.5:1 AA 正文
$tx3 #A8A29E #78716C ~4.6:1 AA 正文
$pri #C4623A 不变
$bg #F5F0EB 不变

使用约束: $tx3 仅用于 24px 及以上的文字或装饰性标签。正文一律使用 $tx2$tx

8. 功能优先级

优先级 功能 状态
P0 体征数据查看2x2 卡片) 重写首页
P0 体征录入(大输入框) 重写健康页
P0 今日体征完成度(进度环) 新增(纯前端,复用现有 API
P1 今日待办≤3 条) 新增
P1 消息中心(咨询+通知) 新建页面
P1 BLE 设备同步 保留调整
P2 趋势图简化 调整
P2 用药提醒 保留
P3 积分商城 降级为菜单项

9. 页面路由变更

TabBar 配置app.config.ts

5 Tab → 4 Tab
删除上报health、商城mall
新增消息messages
保留首页index、健康health → 重写、我的profile

页面增减

操作 页面
新建 pages/messages/index.tsx
重写 pages/index/index.tsxpages/health/index.tsx
调整 pages/profile/index.tsx
删除 Tab pages/mall/index.tsx(降级为子页面)
保留 所有 pkg-* 子包页面

10. 关键文件

文件 改动类型
apps/miniprogram/src/app.config.ts TabBar 5→4路由调整
apps/miniprogram/src/styles/variables.scss 字号/色值/间距调整
apps/miniprogram/src/styles/mixins.scss 新增老年友好 mixin
apps/miniprogram/src/pages/index/index.tsx 首页全面重写
apps/miniprogram/src/pages/index/index.scss 首页样式全面重写
apps/miniprogram/src/pages/health/index.tsx 健康页重写
apps/miniprogram/src/pages/health/index.scss 健康页样式重写
apps/miniprogram/src/pages/messages/index.tsx 新建消息页
apps/miniprogram/src/pages/messages/index.scss 新建消息页样式
apps/miniprogram/src/pages/profile/index.tsx 调整菜单和间距
apps/miniprogram/src/services/consultation.ts 消息页复用咨询列表 API
apps/miniprogram/src/services/health.ts 复用体征数据查询(打卡进度)
apps/miniprogram/src/stores/points.ts 签到/积分功能保留,不改动
apps/miniprogram/src/components/ 新增 ProgressRing 组件

11. 验证方式

  1. pnpm build — 小程序编译通过
  2. 微信开发者工具预览 — 布局和字号正确
  3. 真机测试 — 在 60+ 患者手机上验证可读性和触控体验
  4. WCAG 2.1 AA — 色值对比度合规≥4.5:1 正文≥3:1 大字),使用 axe-core 或微信开发者工具无障碍审计
  5. 核心路径验证(每条 ≤ 3 步):
    • 记录血压:首页 → 点击"记录体征" → 输入 → 保存3 步)
    • 查看趋势:健康 Tab → 查看趋势图1 步)
    • 预约挂号:首页 → 点击"预约挂号" → 选择时间 → 确认3 步)
    • 查看消息:消息 Tab → 点击对话2 步)
  6. 不同屏幕尺寸测试:特别是老年用户常用的小屏 Android 设备
  7. 字体回退验证:衬线体在低端 Android 设备上的回退(使用 Georgia, "PingFang SC", serif

12. 迁移与发布策略

  • 一次性全量发布(非 A/B 测试),因为 5 Tab → 4 Tab 是结构性变更,无法共存
  • 旧路径 pages/consultation/pages/mall/ 保留为路由页面,但不再从 TabBar 进入
  • 小程序分享卡片可能指向旧路径——这些页面保留可访问,不受影响
  • 发布前在测试环境完整走一遍所有核心路径