Files
DDUp/docs/plans/2026-01-27-health-module-enhancement-design.md
liweiliang0905@gmail.com 8031df1a71 docs: 添加健康模块增强设计方案
包含三个模块的功能增强设计:
- 运动模块:BMI 分析与目标达成预估
- 饮食模块:营养建议区间与配餐推荐
- 睡眠模块:睡眠预警与健康提示

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-27 16:00:38 +08:00

11 KiB
Raw Blame History

健康模块增强设计方案

日期: 2026-01-27 状态: 待实现

概述

本设计方案涵盖三个健康模块的功能增强:

  1. 运动模块 - BMI 分析与目标达成预估
  2. 饮食模块 - 营养建议区间与配餐推荐
  3. 睡眠模块 - 睡眠预警与健康提示

设计决策

决策点 选择 理由
目标设定方式 目标体重 用户更容易理解,系统反推 BMI
达成预估计算 综合运动+饮食数据 TDEE - 摄入 + 运动消耗,最精准
营养建议基准 基于用户 TDEE 动态计算 个性化推荐
睡眠预警阈值 固定阈值 < 6h 不足7-9h 理想
预警展示方式 卡片式提示 颜色区分状态,不打扰用户
配餐推荐范围 简单文字建议 根据营养缺口给出提示

设计风格

基于现有深色科技风格 + Dark Mode (OLED) 设计语言:

  • 背景: 深色渐变 #0A0E27#121212
  • 卡片: rgba(255,255,255,0.05) 玻璃质感 + 微发光边框
  • 字体: Fira Code / Fira Sans数据仪表盘风格
  • 强调色:
    • 健康绿 #10B981
    • 警告橙 #F59E0B
    • 危险红 #EF4444
    • 信息蓝 #3B82F6

一、运动模块 - BMI 分析卡片

位置

运动概览页面统计卡片区域下方

UI 结构

┌──────────────────────────────────────────────────────────────┐
│  BMI 健康分析                                    [设置目标 →] │
├──────────────────────────────────────────────────────────────┤
│                                                              │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐          │
│  │ 当前体重    │  │ 当前 BMI    │  │ BMI 状态    │          │
│  │   75.0      │  │   24.5      │  │  ● 偏重     │          │
│  │   kg        │  │             │  │  (24-27.9)  │          │
│  └─────────────┘  └─────────────┘  └─────────────┘          │
│                                                              │
│  ─────────────── BMI 刻度条 ───────────────                  │
│  [偏瘦 ][正常      ][偏重  ▲][肥胖    ]                      │
│   <18.5  18.5-24    24-28   >28                             │
│                                                              │
│  ┌────────────────────────────────────────────────────────┐ │
│  │  目标达成预估                                           │ │
│  │  ─────────────────────────────────────────────────     │ │
│  │  目标体重: 70.0 kg  →  目标 BMI: 22.9 (正常)           │ │
│  │  距离目标: -5.0 kg                                      │ │
│  │                                                         │ │
│  │  预估达成: 约 50 天                                     │ │
│  │  ────────────────────────────────────────────          │ │
│  │  计算依据: 近30天平均每日净消耗 350 卡                   │ │
│  │  (TDEE 1800 - 摄入 1650 + 运动 200 = 350 卡/天)         │ │
│  └────────────────────────────────────────────────────────┘ │
│                                                              │
│  提示: 健康减重建议每周 0.5-1 kg                             │
└──────────────────────────────────────────────────────────────┘

BMI 状态颜色映射

BMI 范围 状态 颜色 CSS Class
< 18.5 偏瘦 蓝色 text-blue-400 / #60A5FA
18.5-24 正常 绿色 text-emerald-400 / #34D399
24-28 偏重 橙色 text-amber-400 / #FBBF24
> 28 肥胖 红色 text-red-400 / #F87171

计算逻辑

# 每日净消耗
daily_deficit = TDEE - daily_intake + exercise_calories

# 预估天数 (7700 卡 ≈ 1 kg 脂肪)
estimated_days = (current_weight - target_weight) * 7700 / avg_daily_deficit

数据不足降级显示

当缺少必要数据时,显示引导用户完善信息的提示卡片。


二、饮食模块 - 营养建议区间

增强点

  1. 营养成分分布图 - 添加 TDEE 推荐比例参考环
  2. 餐次分布图 - 添加理想餐次比例参考
  3. 近7天摄入趋势 - 添加每日建议摄入参考线
  4. 新增营养差距卡片 - 显示今日缺口 + 配餐建议

1. 营养成分分布图(双环饼图)

外环: 用户实际摄入比例(实心)
内环: TDEE 计算的建议比例(虚线边框)

偏差提示:
- 绿色 = 达标
- 橙色 = 偏低/偏高

2. 餐次分布建议比例

餐次 建议比例
早餐 25-30%
午餐 35-40%
晚餐 25-30%
加餐 0-10%

3. 摄入趋势图参考线

虚线: 建议摄入上限TDEE
实线: 目标摄入(根据减重/增重目标调整)
绿色区域: 健康摄入区间

4. 营养差距与配餐建议卡片

┌────────────────────────────────────────────────────────────┐
│  今日营养状况                                              │
├────────────────────────────────────────────────────────────┤
│  ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐      │
│  │ 热量     │ │ 蛋白质   │ │ 碳水     │ │ 脂肪     │      │
│  │ 1420     │ │ 45g      │ │ 180g     │ │ 52g      │      │
│  │ /1800卡  │ │ /90g     │ │ /200g    │ │ /60g     │      │
│  │ ████░░   │ │ ███░░░   │ │ █████░   │ │ █████░   │      │
│  │ 79%      │ │ 50%      │ │ 90%      │ │ 87%      │      │
│  └──────────┘ └──────────┘ └──────────┘ └──────────┘      │
│                                                            │
│  ┌──────────────────────────────────────────────────────┐ │
│  │  晚餐建议                                             │ │
│  │  蛋白质缺口较大 (-45g),建议晚餐增加:                  │ │
│  │  • 鸡胸肉 150g (+46g 蛋白质, 165 卡)                  │ │
│  │  • 或 鸡蛋 3 个 (+18g 蛋白质, 210 卡)                 │ │
│  │  • 或 豆腐 200g (+16g 蛋白质, 160 卡)                 │ │
│  └──────────────────────────────────────────────────────┘ │
└────────────────────────────────────────────────────────────┘

TDEE 营养素计算公式

营养素 建议比例 计算方式
蛋白质 20-30% TDEE × 0.25 ÷ 4 (每克4卡)
碳水 45-55% TDEE × 0.50 ÷ 4 (每克4卡)
脂肪 20-30% TDEE × 0.25 ÷ 9 (每克9卡)

三、睡眠模块 - 预警与提示

增强点

  1. 睡眠状态评估卡片 - 根据近期睡眠时长显示健康状态
  2. 睡眠不足警告 - 红色警示卡片,列出对身体的危害
  3. 睡眠充足益处 - 绿色激励卡片,列出健康益处
  4. 趋势图增强 - 添加健康睡眠区间参考带

状态阈值定义

睡眠时长 状态 颜色 显示卡片
< 5h 严重不足 #EF4444 红色 警告卡片(强调)
5-6h 不足 #F59E0B 橙色 警告卡片
7-9h 理想 #10B981 绿色 益处卡片
> 9h 过多 #3B82F6 蓝色 提示卡片

1. 睡眠状态评估卡片

位于统计卡片下方,显示:

  • 近 7 天平均睡眠时长
  • BMI 式刻度条(偏少/不足/理想/过多)
  • 当前状态与距理想的差距

2. 睡眠不足警告卡片

背景色: #7F1D1D20(深红半透明)

危害分类:

  • 认知能力: 注意力下降 40%、记忆力减退、决策能力受损
  • 身体健康: 免疫力下降、肥胖风险增加 33%、心血管疾病风险上升
  • 情绪状态: 焦虑抑郁风险增加、情绪波动大、压力耐受力降低
  • 运动表现: 反应速度下降、肌肉恢复减慢、受伤风险增加

3. 睡眠充足益处卡片

背景色: #065F4620(深绿半透明)

益处分类:

  • 认知提升: 记忆巩固增强、专注力提高、创造力活跃
  • 身体修复: 免疫系统强化、肌肉组织修复、激素分泌平衡
  • 情绪稳定: 情绪调节能力增强、压力抵抗力提升、心态积极
  • 运动增益: 运动表现提升 15%、恢复速度加快、耐力增强

4. 趋势图增强

  • 绿色半透明带7-9 小时理想睡眠区间
  • 理想区间内的点用绿色,区间外用橙色/红色
  • 底部增加统计:理想天数/不足天数占比

技术实现要点

前端修改文件

  • src/vitals/web/app.py - 运动/饮食/睡眠页面 HTML 模板

后端新增 API

API 功能
GET /api/bmi/analysis 获取 BMI 分析数据
GET /api/nutrition/recommendations 获取营养建议
GET /api/sleep/assessment 获取睡眠评估

数据依赖

  • 用户配置:身高、体重、年龄、性别、活动水平、目标体重
  • 运动记录:近 30 天运动消耗
  • 饮食记录:近 30 天摄入数据
  • 睡眠记录:近 7/30 天睡眠时长

预交付检查清单

  • 无 emoji 作为图标(使用 SVG: Heroicons/Lucide
  • 所有可点击元素添加 cursor-pointer
  • Hover 状态使用平滑过渡150-300ms
  • 深色模式文字对比度 4.5:1 以上
  • 键盘导航焦点状态可见
  • 响应式适配375px, 768px, 1024px, 1440px