# 健康模块增强设计方案 > 日期: 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` | ### 计算逻辑 ```python # 每日净消耗 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