根因:主包 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
93 lines
3.9 KiB
Markdown
93 lines
3.9 KiB
Markdown
# 小程序"我的"页面子页面必要性分析
|
||
|
||
> 日期: 2026-05-22 | 参与者: 产品经理 / UX 研究员 / UX 架构师 / 医疗业务专家 / 前端技术专家
|
||
|
||
## 背景
|
||
|
||
小程序患者端"我的"页面当前有 5 个分组共 19 个菜单入口 + 1 个消息通知独立入口 = 20 个可点击项。远超移动端认知负荷上限(7±2),需要从全局角度分析各子页面的存在必要性。
|
||
|
||
## 讨论要点
|
||
|
||
### 核心问题诊断
|
||
|
||
1. **功能堆砌**:把所有没有找到更好归属的功能都塞进"我的",导致它变成了"功能大全"而非"个人中心"
|
||
2. **入口重复**:4 个入口在其他 Tab 已有更自然的路径(积分商城、用药记录、在线咨询、我的报告)
|
||
3. **透析噪音**:透析管理 3 个入口对所有用户无条件展示,80%+ 非透析用户看到无关功能
|
||
4. **语义模糊**:健康记录/我的报告/诊断记录三入口,患者分不清区别
|
||
5. **性能浪费**:消息未读数请求 50 条列表而非 count 接口
|
||
6. **静态菜单**:无法按患者画像动态显示
|
||
|
||
### 各入口使用频率评估
|
||
|
||
| 频率 | 入口 |
|
||
|------|------|
|
||
| 高频(日活) | 消息通知、用药记录(慢病) |
|
||
| 中频(周活) | 我的预约、我的随访、在线咨询、积分商城 |
|
||
| 低频(月活) | 我的报告、健康记录、AI 分析、诊断记录、就诊人管理 |
|
||
| 极低频 | 透析处方、知情同意、线下活动、长辈模式、设备同步、设置 |
|
||
|
||
### 患者画像与功能需求矩阵
|
||
|
||
| 功能 | 普通体检者(50-60%) | 慢病患者(20-25%) | 透析患者(5-8%) | 术后随访(10-15%) |
|
||
|------|:---:|:---:|:---:|:---:|
|
||
| 我的报告 | 高 | 高 | 高 | 高 |
|
||
| 我的预约 | 高 | 中 | 中 | 中 |
|
||
| AI 分析 | 高 | 高 | 中 | 高 |
|
||
| 健康记录 | 中 | 高 | 中 | 高 |
|
||
| 用药记录 | 低 | 高 | 高 | 中 |
|
||
| 我的随访 | 低 | 高 | 中 | 高 |
|
||
| 透析管理 | 无 | 无 | 高 | 无 |
|
||
| 诊断记录 | 低 | 中 | 中 | 高 |
|
||
|
||
## 结论
|
||
|
||
### 共识意见
|
||
|
||
1. **入口数应从 20 缩减到 9-11 个**(常驻 9 + 动态 1-2)
|
||
2. **移除 4 个重复入口**:积分商城(TabBar已有)、用药记录(健康Tab已有)、在线咨询(助手Tab可达)、我的报告("我的"保留但健康Tab快捷入口改为AI分析)
|
||
3. **透析管理按需显示**:仅透析患者可见,三入口合并为一
|
||
4. **健康数据合并**:健康记录+诊断记录合并为"健康档案"(Tab切换)
|
||
5. **长辈模式降级**:从一级入口移入设置页
|
||
|
||
### 优化后菜单结构
|
||
|
||
```
|
||
[消息通知] ← 优化为 getUnreadCount()
|
||
|
||
健康档案
|
||
├── 我的报告(Tab: 检查报告 / AI 解读)
|
||
└── 健康档案(Tab: 体检记录 / 诊断记录)
|
||
|
||
就诊服务
|
||
├── 我的预约
|
||
├── 我的随访
|
||
└── 在线咨询
|
||
|
||
透析管理 ← 仅透析患者可见
|
||
└── (内页 Tab: 透析记录 / 透析处方 / 同意书)
|
||
|
||
账号
|
||
├── 就诊人管理
|
||
├── 设备同步
|
||
└── 设置(含长辈模式开关)
|
||
```
|
||
|
||
### 行动优先级
|
||
|
||
| 优先级 | 行动 | 预期效果 | 工期 |
|
||
|--------|------|---------|------|
|
||
| P0 | 未读消息改用 getUnreadCount() | 节省 500ms+ | 0.5天 |
|
||
| P0 | 移除 3 个重复入口 | 减少 3 个入口 | 0.5天 |
|
||
| P1 | 透析管理条件显示 | 80%用户减少3个无关入口 | 1-2天 |
|
||
| P1 | 透析三页合并为一 | 节省 20-30KB | 1-2天 |
|
||
| P1 | 抽取 usePaginatedList hook | 消除 300 行重复代码 | 1天 |
|
||
| P2 | 健康记录/诊断合并为健康档案 | 减少 2 个入口 | 1-2天 |
|
||
| P2 | 长辈模式降级到设置页 | 减少 1 个入口 | 0.5天 |
|
||
| P2 | 线下活动改为消息推送触达 | 减少 1 个入口 | 0.5天 |
|
||
|
||
### 待定
|
||
|
||
- 后端 `patient` 表是否已有 `patient_type` 字段?需确认才能实现动态菜单
|
||
- AI 分析是否应完全合并到"我的报告"Tab,还是保留独立入口?
|
||
- 设备同步最终放在"账号"组还是"健康"Tab?
|