Files
hms/docs/discussions/2026-05-20-miniprogram-production-ready-brainstorm.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

105 lines
4.6 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-20 | 参与者: UX/UI 审计 / 性能稳定性 / 安全审计 / 产品架构 / 代码质量
## 背景
小程序62 页面 + 34 组件 + 38 service即将交付用户测试。启动 5 个并行专家组进行全方位深度审计,确保交付版本的质量和可用性。
## 五专家组综合评分
| 专家组 | 评分 | CRITICAL | HIGH | MEDIUM | LOW | 总问题数 |
|--------|------|----------|------|--------|-----|----------|
| UX/UI 审计 | 6.2/10 B- | 3 | 8 | 14 | 9 | 34 |
| 性能稳定性 | 6.5/10 B- | 1 | 4 | 10 | 8 | 25 |
| 安全审计 | 5.1/10 D+ | 2 | 5 | 8 | 6 | 21 |
| 产品架构 | 6.0/10 C+ | 2 | 6 | 8 | 5 | 21 |
| 代码质量 | — | 0 | 2 | 3 | 0 | 134 空 catch + 10 any |
| **综合** | **6.0/10 C+** | **8** | **25** | **43** | **28** | **~135+** |
## CRITICAL 汇总(必须修复,阻断用户测试)
| # | 来源 | 问题 | 影响 |
|---|------|------|------|
| 1 | 产品 | 咨询创建页缺失,"发起咨询"按钮导航失败 | 核心咨询流程阻断 |
| 2 | 产品 | 随访流程不闭环(患者无触发入口 + 医生无执行页面) | 医疗质量核心链路断裂 |
| 3 | 安全 | 硬编码管理员凭据 `admin/Admin@2026` 在源码中 | 反编译可获取管理员权限 |
| 4 | 安全 | Token 明文存储在 Storagesecure-storage 实际无加密) | 设备丢失 = 身份冒用 |
| 5 | UX | AI 聊天页 13 处硬编码字号,长者模式完全失效 | TabBar 核心页老年用户不可用 |
| 6 | UX | 咨询详情页 14 处硬编码字号 | 医患沟通场景老年患者无法阅读 |
| 7 | UX | Loading 文字 28px 过大,误认为标题 | 视觉层级混乱 |
| 8 | 性能 | 咨询页长轮询可能永远不启动dataLoadedRef 时序竞争) | 咨询消息收不到 |
## HIGH 汇总(严重影响体验,应在上线前修复)
| # | 来源 | 问题 |
|---|------|------|
| 1 | 产品 | "消息" Tab 实为 AI 聊天,非消息中心,命名误导 |
| 2 | 产品 | 预约创建未选就诊人,多就诊人场景不可用 |
| 3 | 产品 | 趋势图仅 7 天柱状图,缺长期趋势和对比 |
| 4 | 产品 | 日常监测/设备同步入口层级过深 |
| 5 | UX | 87 处页面硬编码字号,长者模式系统性失效 |
| 6 | UX | StatusTag 色值与设计系统不一致 |
| 7 | UX | 44 个页面缺少 ErrorState |
| 8 | UX | AI 聊天页未使用 PageShell 组件 |
| 9 | 安全 | X-Patient-Id/X-Tenant-Id Header 可能导致越权 |
| 10 | 安全 | openid 明文存储和跨网络传输 |
| 11 | 安全 | RichText XSS 绕过风险 |
| 12 | 性能 | 主包 12 页面可能超 2MB无法发布 |
| 13 | 性能 | 无虚拟滚动,长列表性能差 |
| 14 | 性能 | 首页 4 个并行 API 无批量优化 |
| 15 | 代码 | 134 处空 catch 静默吞错 |
## 头脑风暴 — 上线策略
### 方案 A: 保守上线(修复所有 CRITICAL + 安全加固)
**时间**: 3-4 天
**范围**: 8 个 CRITICAL + 安全 TOP 3
**风险**: HIGH 级别问题可能影响用户第一印象
### 方案 B: 全面打磨(修复 CRITICAL + HIGH + 关键 MEDIUM
**时间**: 7-10 天
**范围**: 全部 CRITICAL + HIGH + 选定 MEDIUM
**风险**: 延迟用户测试,但交付质量更高
### 方案 C: 分层交付(推荐)
**时间**: 分 3 批,每批 2-3 天
**范围**:
- **Batch 1 (P0, 2天)**: 安全 CRITICAL + 功能 CRITICAL + 性能 CRITICAL
- **Batch 2 (P1, 2天)**: UX 一致性 + 长者模式修复 + HIGH 级产品问题
- **Batch 3 (P2, 3天)**: MEDIUM 级优化 + 性能优化 + 代码质量
## 决策
采用**方案 C 分层交付**,优先确保安全和功能完整,然后打磨体验。
### Batch 1 修复清单P0, 预估 2 天)
1. 移除硬编码凭据 → 环境变量注入1h
2. 确认后端不信任前端 Header2h
3. 咨询创建页缺失 → 新增页面或移除入口按钮4h
4. 咨询页长轮询启动时序修复2h
5. Loading 文字 token 修正0.5h
6. Token 存储安全加固4h— 可延至 Batch 2
### Batch 2 修复清单P1, 预估 2 天)
7. AI 聊天页 + 咨询详情页字号 token 替换4h
8. 医生端核心页面字号 token 替换3h
9. StatusTag 色值对齐设计系统1h
10. AI 聊天页接入 PageShell2h
11. 移除 forceSetAuth bridge0.5h
12. 随访流程闭环补全4h— 可延至 Batch 3
### Batch 3 修复清单P2, 预估 3 天)
13. 全局 87 处硬字号 → token 批量替换
14. 74 处硬 padding → token 批量替换
15. 44 个页面补充 ErrorState
16. 主包瘦身 + splitChunks 配置
17. 空 catch 添加日志
18. AI 聊天历史持久化(接后端 API