Files
hms/docs/discussions/2026-05-22-my-page-subpages-necessity.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

93 lines
3.9 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.
# 小程序"我的"页面子页面必要性分析
> 日期: 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