chore: 删除文档目录下不需要的三个文件

This commit is contained in:
liuyunqin
2026-07-03 16:40:40 +08:00
parent 1c1469402a
commit 6646cbdfac
2 changed files with 0 additions and 749 deletions
@@ -1,307 +0,0 @@
# 膳食推荐AI算法 — 需求说明
> 面向AI工程师 | 基于《高血压、高尿酸干预行动项目方案(修订版)》| 2026-06-29
---
## 一、算法架构概述
采用 **"三层规则 + AI推理"混合架构**
```
用户输入 → 第一层:基础营养层(固定公式)→ 第二层:慢病管控层(AI动态调整)→ 第三层:个性化适配层(AI推理)→ 输出食谱
```
- **第一层**:基于权威指南的固定公式(BMR、供能比),无需模型参与,确定性计算
- **第二层**:AI根据慢病组合类型动态调整营养阈值优先级,需要模型推理
- **第三层**:AI根据口味/地区/场景生成个性化食谱,需要模型推理 + 规则库
---
## 二、数据需求清单
### 2.1 系统自动获取(无需员工手动输入)
| 序号 | 数据字段 | 类型 | 数据来源 | 获取方式 | 用途(哪一层) |
|------|----------|------|----------|----------|-------------|
| 1 | 员工ID(哈希化) | string | 健康CQ平台 | 登录态自动获取,脱敏后传入 | 全链路标识 |
| 2 | 身高 | number(cm) | 员工档案 | 从 `basic-info.html` 录入的档案读取 | 第一层:计算BMR |
| 3 | 体重 | number(kg) | 体重打卡记录 | 取最近一次 `weight-checkin.html` 的测量值 | 第一层:计算BMR |
| 4 | 年龄 | number | 员工档案 | 从身份证号/档案计算 | 第一层:BMR公式参数 |
| 5 | 性别 | enum(男/女) | 员工档案 | 档案读取 | 第一层:BMR公式选择 |
| 6 | 体力活动等级 | enum | 员工档案 | 员工在 `basic-info.html` 中自行填写,5个选项之一 | 第一层:活动系数 |
| 7 | 血压-收缩压 | number(mmHg) | 体检报告/指标录入 | 从 `indicators-diseases.html` 取最近值 | 第二层:高血压分级 |
| 8 | 血压-舒张压 | number(mmHg) | 体检报告/指标录入 | 同上 | 第二层:高血压分级 |
| 9 | 血尿酸值 | number(μmol/L) | 体检报告/指标录入 | 从 `indicators-diseases.html` 取最近值 | 第二层:高尿酸分期 |
| 10 | 智能餐线消费记录 | array | 智能餐线系统 | 近6个月消费记录,脱敏后仅提供"菜品类型+消费频次",不含姓名/工号 | 第三层:提取口味偏好 |
| 11 | 肾病合并 | boolean | 体检报告 | 从年度体检报告自动获取,影响蛋白质和钠阈值 | 第二层:合并慢病调整 |
| 12 | 糖尿病合并 | boolean | 体检报告 | 从年度体检报告自动获取,影响碳水分配和GI选择 | 第二层:合并慢病调整 |
### 2.2 需问卷采集(员工主动填写)
| 序号 | 数据字段 | 类型 | 采集方式 | 问卷内容示例 | 用途(哪一层) |
|------|----------|------|----------|------------|-------------|
| 13 | 所在地区 | enum | 健康问卷 | "您常驻工作地区?" 用于匹配当地常见食材库(如西安→西北食材库) | 第三层:地区食材匹配 |
| 14 | 口味偏好 | enum(清淡/辛辣/咸鲜/酸甜) | 健康问卷 | "您偏好什么口味?" 单选 | 第三层:口味适配 |
| 15 | 规避食材 | array(string) | 健康问卷 / 膳食建议页标记 | 过敏/不喜欢食材多选(羊肉、海鲜、动物内脏、香菜、…),可自定义添加 | 第三层:排除特定食材 |
| 16 | 上班时间 | enum | 健康问卷 | "您通常的上班时间?" 正常白班 / 早班 / 晚班 / 倒班 | 第三层:场景适配 |
### 2.3 外部数据(AI团队自行整理,非实时调用)
| 序号 | 数据内容 | 来源 | 用途 |
|------|----------|------|------|
| 17 | 西北地区常见食材库 | 地方疾控《居民膳食报告》+ 本地餐饮协会 | 第三层:地区食材匹配(莜面、羊肉、土豆、菠菜…) |
| 18 | 餐品嘌呤等级标注 | AI团队预标注 | 第二层:食材嘌呤分级(高/中/低) |
| 19 | 餐品钠含量数据 | AI团队预标注 | 第二层:钠摄入计算(mg/100g) |
| 20 | 菜品-口味标签映射 | AI团队预标注 | 第三层:从菜品消费记录提取口味偏好 |
---
## 三、数据校验规则
| 字段 | 校验规则 |
|------|----------|
| 血尿酸值 | 150-1000 μmol/L,超出范围接口返回"数据异常" |
| 口味偏好 | 仅接受枚举值,传入"微辣"等非标值→自动映射为"辛辣" |
| 身高 | 100-250 cm |
| 体重 | 30-300 kg |
| 年龄 | 18-70 岁 |
| 血压 | 收缩压60-250 mmHg,舒张压30-150 mmHg |
---
## 四、第一层:基础营养计算规则(确定性公式,无需模型)
### 4.1 BMR计算
```
男性:BMR = 10 × 体重(kg) + 6.25 × 身高(cm) - 5 × 年龄 - 161 + 166
女性:BMR = 10 × 体重(kg) + 6.25 × 身高(cm) - 5 × 年龄 - 161
```
### 4.2 活动系数(员工自行填写,系统直接获取)
| 员工选项 | 活动系数 |
|----------|----------|
| 久坐不运动 | 1.2 |
| 久坐运动或久站 | 1.375 |
| 体力劳动者 | 1.55 |
| 久站+运动 | 1.725 |
| 健身+体力劳动者 | 1.9 |
### 4.3 总热量
```
总热量 = BMR × 活动系数 - 300(固定热量缺口)
```
### 4.4 三大宏量营养素供能比(固定)
| 营养素 | 供能比 | 每克热量 | 计算公式 |
|--------|--------|----------|----------|
| 蛋白质 | 15% | 4 kcal/g | 总热量×15%÷4 |
| 碳水化合物 | 55% | 4 kcal/g | 总热量×55%÷4 |
| 脂肪 | 30% | 9 kcal/g | 总热量×30%÷9 |
---
## 五、第二层:慢病管控规则(AI动态调整)
### 5.1 高血压 → 钠控制
| 高血压等级 | 判定条件 | 钠上限/日 | 相当于盐 |
|-----------|----------|----------|----------|
| 正常 | 收缩压<140 且 舒张压<90 | 无特殊限制 | — |
| 1级 | 收缩压140-159 或 舒张压90-99 | ≤2000mg | ≈5g盐 |
| 2级 | 收缩压≥160 或 舒张压≥100 | ≤1500mg | ≈3.75g盐 |
| 合并肾病 | 任意级别 + 肾病 | ≤1200mg | ≈3g盐 |
**额外约束**:每餐钠摄入不超过日总上限的40%(避免单次超标)
### 5.2 高尿酸 → 嘌呤控制
| 高尿酸分期 | 判定条件 | 嘌呤上限/日 | 高嘌呤食材 |
|-----------|----------|------------|----------|
| 无症状期 | 血尿酸420-600 μmol/L | ≤300mg | 动物内脏、沙丁鱼直接排除 |
| 急性发作期 | 血尿酸>600 或 近期发作 | ≤150mg | 海鲜类也排除 |
| 痛风石 | 已确诊痛风石 | ≤100mg | 仅保留极低嘌呤食材 |
### 5.3 合并慢病 → AI动态调整优先级
- **高血压 + 高尿酸**:优先控制钠和嘌呤,允许钾从2500→2800mg/日
- **高尿酸 + 肾病**:优先控制嘌呤和蛋白质,蛋白质从1.2g/kg→0.8g/kg体重
- **高血压 + 糖尿病**:碳水中低GI占比≥60%,钠按相应等级控制
---
## 六、第三层:个性化适配规则(AI推理 + 规则库)
### 6.1 口味适配
- 从消费记录提取高频菜品→匹配口味标签
- 例如:员工高频消费"油泼面"→口味标签=辛辣→推荐菜品时保留辛辣风味但减少钠(如"低盐油泼面",钠减少30%
- **原则**:改良而非替代,不强制推荐清淡菜品给辛辣口味员工
### 6.2 地区适配
- 食谱生成时优先从西北本地食材库选材(目标占比≥70%)
- 例如:早餐优先"杂粮粥+全麦馒头"而非"白粥+包子"
- 本地食材库包含:莜面、土豆、菠菜、羊肉、小米、全麦粉、沙棘果等
### 6.3 场景适配(根据员工填写的上班时间)
| 上班时间 | 适配策略 |
|----------|----------|
| 正常白班 | 三餐正常分配,早/午/晚餐热量比 30%/40%/30% |
| 早班 | 早餐热量适当上调至35%,凌晨餐推荐低GI主食 |
| 晚班 | 晚餐为主餐(40%热量),夜间加餐推荐低GI主食(燕麦、荞麦)+ 高蛋白菜品,避免夜间血糖波动 |
| 倒班 | 根据当日实际班次动态调整餐次分配,优先保证蛋白质摄入稳定 |
---
## 七、API接口规范
### 7.1 请求
```
POST /api/v1/diet/recommend
Content-Type: application/json
```
```json
{
"user_id": "a3f2d...", // 必填,脱敏哈希ID
"date": "2026-06-29", // 必填,推荐日期
"height": 175, // 必填 cm
"weight": 72.5, // 必填 kg
"age": 45, // 必填
"gender": "male", // 必填 male/female
"activity_level": "manual_labor", // 必填,员工自行填写的体力活动等级
// 取值:sedentary(久坐不运动) / sedentary_exercise(久坐运动或久站)
// manual_labor(体力劳动者) / standing_exercise(久站+运动)
// fitness_labor(健身+体力劳动者)
"sbp": 145, // 收缩压 mmHg,可为null
"dbp": 92, // 舒张压 mmHg,可为null
"uric_acid": 526, // 血尿酸 μmol/L,可为null
"region": "xian", // 必填,员工填写的所在地区,决定食材库匹配
"taste": "spicy", // 必填 bland/spicy/salty/sweet_sour
"avoid_foods": ["lamb", "organ_meat"], // 规避食材列表(过敏/不喜欢)
"has_kidney_disease": false, // 是否合并肾病
"has_diabetes": false, // 是否合并糖尿病
"work_schedule": "normal" // 必填 normal/early/late/rotating
// 正常白班/早班/晚班/倒班
}
```
### 7.2 响应
```json
{
"user_id": "a3f2d...",
"date": "2026-06-29",
"total_calorie": 2645,
"calorie_consumed": 1486,
"calorie_remaining": 1159,
"bmr": 1900,
"activity_factor": 1.55,
"macros": {
"protein": { "target_g": 99, "current_g": 61, "ratio": 0.15 },
"carbs": { "target_g": 364, "current_g": 186, "ratio": 0.55 },
"fat": { "target_g": 88, "current_g": 34, "ratio": 0.30 }
},
"chronic_control": {
"sodium": {
"limit_mg": 2000,
"current_mg": 1040,
"level": "ok", // ok / warn / danger
"rule": "高血压1级,≤2000mg/日"
},
"purine": {
"limit_mg": 300,
"current_mg": 204,
"level": "warn", // ok / warn / danger
"rule": "无症状高尿酸,≤300mg/日,已排除高嘌呤食材"
}
},
"personalization": {
"taste_label": "辛辣",
"region": "西安·西北",
"work_schedule": "正常白班",
"local_ratio": 0.76 // 本地食材占比
},
"meals": {
"breakfast": [
{
"dish_name": "杂粮粥",
"amount": "200g",
"ingredients": ["燕麦30g", "小米20g", "枸杞5g"],
"calorie_kcal": 185,
"nutrient": { "sodium_mg": 50, "purine_mg": 15 },
"badges": ["local", "low-purine"],
"cooking_tip": "少放糖,加少量枸杞增加风味"
}
],
"lunch": [ /* ... */ ],
"dinner": [ /* ... */ ],
"snack": [ /* ... */ ]
},
"warning": "昨日尿酸值偏高(526 μmol/L),今日已自动剔除高嘌呤食材(动物内脏、沙丁鱼)。建议增加饮水至2000ml。",
"weekly_plan": [
{ "day": "周一", "date": "08-10", "total_kcal": 2645, "meals": [ /* */ ] }
]
}
```
### 7.3 性能要求
| 指标 | 要求 |
|------|------|
| 单次响应时间 | ≤500ms |
| 1000并发响应时间 | 平均≤500ms,峰值≤1s |
| 批量查询(≤100用户) | ≤3s |
| 稳定性(72h连续) | ≥99.9%成功率 |
---
## 八、膳食建议页(diet-advice.html)展示内容映射
页面上每个展示区对应算法输出的字段:
| 页面区域 | 数据来源(响应字段) | 说明 |
|----------|---------------------|------|
| 慢病标签条 | 根据sbp/dbp/uric_acid推导的等级 | 展示"高血压1级""高尿酸无症状期" |
| AI慢病提醒 | `warning` | 红色/黄色横幅,突出显示 |
| 口味/地区/场景标签 | `personalization` | 三个pill标签 |
| 热量目标卡片 | `total_calorie` + `calorie_consumed` + `calorie_remaining` + `bmr` + `activity_factor` | 大数字+进度条 |
| 三大宏量营养素环 | `macros.protein/carbs/fat` | 环形图 |
| 钠指标卡 | `chronic_control.sodium` | 进度条+状态标识 |
| 嘌呤指标卡 | `chronic_control.purine` | 进度条+状态标识 |
| 本地食材占比 | `personalization.local_ratio` | 进度条 |
| 三餐推荐(含加餐) | `meals.breakfast/lunch/dinner/snack` | 每道菜:名称+份量+营养素+标签+烹饪建议 |
| 一周食谱 | `weekly_plan` | 7天切换 |
| 规避食材标记 | 前端交互(回传avoid_foods给接口) | 员工自行勾选 |
| 份量参考 | 静态内容(非算法输出) | 手掌/拳头等图示 |
| 分层注意事项 | `chronic_control.*.rule` + 静态内容 | 按三层分组 |
---
## 九、模型训练与交付要求
| 阶段 | 工作内容 | 验收标准 |
|------|----------|----------|
| 预训练 | 用公开膳食数据集训练基础营养计算能力 | 偏差率≤12% |
| 微调1(慢病) | 用500条员工健康数据微调慢病管控 | 符合率≥90% |
| 微调2(个性化) | 用口味/地区数据微调,加入本地食材库 | 适配率≥88% |
| 迭代优化 | 根据员工反馈调整规则库 | 满意度≥85% |
**最终精度目标:**
- 膳食建议符合《高血压/高尿酸膳食指导》率 ≥ 95%
- 口味/地区适配符合率 ≥ 92%
- 钠/嘌呤计算偏差率 ≤ 8%
**交付物:**
- 算法模型(含API接口,RESTful/HTTPS/JSON
- 规则配置文件(XML,支持非技术人员修改食材库/营养阈值/口味维度)
- 《模型使用手册》(含接口调用指南+规则配置教程+维护周期建议)
- 《数据对接规范》(含输入输出格式+校验规则)
- 《测试报告》(≥10类场景测试+性能测试)
@@ -1,442 +0,0 @@
# 体重管理 · 膳食建议模块 需求文档
> 整合自《高血压、高尿酸干预行动项目方案(修订版)》项目诉求 + 员工端 APP 体重管理模块现有业务
> 面向:产品 / 健康平台开发方 / AI 算法团队 / 医学顾问
> 版本:v1.0 · 2026-07-03
---
## 一、文档目的与范围
本文档围绕员工端 APP **体重管理模块 → 膳食建议子模块**`diet-advice.html`),完成三件事:
1. **诉求分析**:从项目方案文档中提取对"膳食建议"的直接诉求;
2. **数据结合逻辑**:说明如何把员工健康数据、慢病数据、饮食打卡数据、个人偏好数据结合,输出**针对性个性化膳食建议**;
3. **移动端落地**:明确页面交互与展示方式,并列出全部需要准备的资料清单。
范围限定在"膳食建议"页面本身及其数据上下游;运动建议、体重打卡等兄弟模块仅作为数据来源提及。
---
## 二、项目背景与诉求分析
### 2.1 项目背景
机械制造总厂员工因工作性质(部分岗位体力劳动强度大、倒班作息),**高血压、高尿酸**患病率高于普通人群。现有健康管理在"饮食干预"上存在三大痛点,这三大痛点直接构成膳食建议模块要解决的核心诉求。
### 2.2 三大痛点 → 模块诉求
| # | 痛点(项目方案原文) | 对膳食建议模块的诉求 |
|---|---|---|
| 1 | 通用膳食建议与员工口味偏好(如西北员工喜辛辣、面食)脱节,执行度低 | 建议**必须贴合口味偏好**,改良而非替代(如辛辣口味→"低盐油泼面"而非强制清淡) |
| 2 | 慢病饮食规则(低盐、低嘌呤)与当地饮食习惯(偏好羊肉、浓肉汤)冲突,员工难平衡 | 建议**必须同时满足慢病管控规则 + 地区饮食适配**,本地食材占比≥70% |
| 3 | 健康平台仅提供基础体重管理,未针对"双高"人群输出个性化饮食方案,与油田干预体系缺乏数据联动 | 建议**必须为"高血压+高尿酸"等双高/合并慢病人群**输出个性化方案,并与平台数据联动(同步延迟≤1h) |
### 2.3 项目核心目标(量化,作为本模块验收基线)
| 维度 | 目标 |
|---|---|
| 膳食建议符合《高血压/高尿酸膳食指导》率 | ≥ 95% |
| 口味/地区适配符合率(西北员工食谱本地食材占比≥70%) | ≥ 92% |
| 核心营养指标(钠、嘌呤)计算偏差率 | ≤ 8% |
| 与健康长庆平台体重管理模块数据同步延迟 | ≤ 1 小时 |
| 与油田公司干预体系数据对接成功率 | 100% |
| 接口响应(1000 并发)平均/峰值 | ≤500ms / ≤1s,稳定性≥99.9% |
### 2.4 对膳食建议模块的直接结论
膳食建议不是"给一份通用食谱",而是要做一个**数据驱动的个性化推荐引擎 + 移动端落地页**,做到:
- **合规**:钠、嘌呤、热量严格按慢病等级限值;
- **个性**:口味/地区/班次三维度适配,改良而非替代;
- **联动**:读取平台健康数据,回写打卡/反馈,形成闭环。
---
## 三、模块业务定位与上下游关系
### 3.1 在体重管理模块中的位置
膳食建议是体重管理主页(`weight-main.html`)右侧"建议入口"之一,与"运动建议""报告"并列。主页的"吃打卡"卡片(今日摄入 kcal)与膳食建议共享同一套热量/营养数据底座。
```
体重管理主页 weight-main.html
├── 吃/动/体重 今日打卡
│ └── 吃打卡 eat-checkin.html ──► 消费记录 / 今日已摄入 ←──┐
├── 减重进度 / 吃动平衡 │
├── 体重记录 / BMI │
└── 建议入口
├── 膳食建议 diet-advice.html ◄── 本文档核心 ──────────┘
├── 运动建议 exercise-advice.html
└── 报告 report-detail.html
```
### 3.2 上下游数据来源(已落地页面 → 字段)
| 来源页面 | 提供的字段 | 用于哪一层 |
|---|---|---|
| `basic-info.html`(基础信息) | 身高(cm)、体力活动等级(5 档) | 第一层 BMR / 活动系数 |
| `weight-checkin.html` / `indicators-diseases.html`(体重指标) | 最新体重(kg)、BMI | 第一层 BMR |
| `indicators-diseases.html`(指标慢病) | 收缩压/舒张压、血尿酸、血糖、血脂;慢病确诊列表(高血压、肾病、糖尿病…) | 第二层慢病分级 / 合并调整 |
| `eat-checkin.html`(吃打卡) | 今日各餐已摄入 kcal、碳水/脂肪/蛋白质;菜品克数记录 | "已摄入/还可摄入"展示 + 钠/嘌呤累计 |
| `diet-advice.html`(本页引导) | 所在地区、口味偏好、上班时间、规避食材 | 第三层个性化适配 |
| 智能餐线系统(外部) | 近 6 个月消费记录(脱敏:菜品类型+频次) | 第三层口味偏好提取/校准 |
> 年龄、性别由员工档案/身份证自动计算,不要求员工在膳食页手填。
### 3.3 数据流转闭环
```
档案/体检/打卡/偏好 ─► 算法接口(三层) ─► 个性化食谱 ─► 膳食建议页展示
▲ │
│ 员工标记"不喜欢"/替换菜品/反馈 │
└────────────────────────────────────────────────────────┘
```
员工在膳食建议页的"不喜欢食材"标记、对菜品的替换/反馈,会回写偏好库,下次调用接口自动剔除——这是项目方案明确要求的"个性化调整"能力。
---
## 四、个性化膳食建议生成逻辑(数据如何结合)
### 4.1 总体架构:"三层规则 + AI 推理"
项目方案指定采用混合架构,本模块按此落地:
```
输入数据 → 第一层 基础营养层(固定公式,确定性)
→ 第二层 慢病管控层(AI 动态调整阈值优先级)
→ 第三层 个性化适配层(AI 推理 + 规则库,生成食谱)
→ 输出:当日三餐+加餐 / 一周食谱 / 慢病提醒
```
- 第一层无需模型,确定性计算,保证合规底线;
- 第二层用模型按"慢病组合"调整营养阈值与优先级;
- 第三层用模型 + 规则库(地区食材库、口味标签、菜品营养标注)生成可执行的个性化食谱。
### 4.2 数据输入清单
#### 4.2.1 系统自动获取(员工无感)
| 字段 | 来源 | 用途 |
|---|---|---|
| 用户ID(哈希化) | 登录态脱敏 | 全链路标识 |
| 身高 | `basic-info.html` | BMR |
| 体重 | 最近一次 `weight-checkin.html` | BMR |
| 年龄/性别 | 员工档案 | BMR 公式选择 |
| 体力活动等级 | `basic-info.html`5 档) | 活动系数 |
| 收缩压/舒张压 | `indicators-diseases.html` | 高血压分级 |
| 血尿酸 | `indicators-diseases.html` | 高尿酸分期 |
| 血糖/血脂 | `indicators-diseases.html` | 合并慢病判断 |
| 慢病确诊(高血压/肾病/糖尿病…) | `indicators-diseases.html` 慢性病 tab | 第二层合并调整 |
| 智能餐线消费记录 | 餐线系统脱敏(菜品类型+频次) | 口味偏好提取/校准 |
| 今日已摄入 kcal/营养 | `eat-checkin.html` | 热量缺口与"还可摄入"展示 |
#### 4.2.2 问卷/页面采集(员工主动填写)
在膳食建议页**首次进入引导**中采集(详见 5.2):
| 字段 | 取值 | 用途 |
|---|---|---|
| 所在地区 | 西安/榆林/延安/汉中/安康/其他 | 地区食材库匹配 |
| 口味偏好 | 清淡/辛辣/咸鲜/酸甜 | 口味适配 |
| 上班时间 | 正常白班/早班/晚班/倒班 | 场景适配(餐次热量分配) |
| 规避食材 | 羊肉/海鲜/动物内脏/香菜/沙棘… +自定义 | 排除特定食材 |
#### 4.2.3 外部数据(AI/医学团队预整理,非实时调用)
| 资料 | 来源 | 用途 |
|---|---|---|
| 西北/陕北/陕南地区常见食材库 | 地方疾控《居民膳食报告》+ 本地餐饮协会 | 地区匹配,目标占比≥70% |
| 餐品嘌呤等级(高/中/低) | 团队预标注 | 第二层嘌呤分级 |
| 餐品钠含量(mg/100g) | 团队预标注 | 第二层钠计算 |
| 菜品-口味标签映射 | 团队预标注 | 第三层从消费记录提取口味 |
| 菜品碳水/脂肪/蛋白质/ GI | 团队预标注 | 宏量分配、糖尿病低GI |
#### 4.2.4 数据校验规则(接口前置)
| 字段 | 校验 |
|---|---|
| 血尿酸 | 1501000 μmol/L,超限返回"数据异常" |
| 口味偏好 | 仅枚举;"微辣"等非标值自动映射为"辛辣" |
| 身高 | 100250 cm |
| 体重 | 30300 kg |
| 年龄 | 1870 岁 |
| 血压 | 收缩压 60250 / 舒张压 30150 mmHg |
### 4.3 第一层:基础营养计算(确定性公式)
**BMRMifflin-St Jeor**
```
男:BMR = 10×体重(kg) + 6.25×身高(cm) - 5×年龄 + 5
女:BMR = 10×体重(kg) + 6.25×身高(cm) - 5×年龄 - 161
```
> 注:项目方案给出的是企业版公式(男性+166、女性不变),落地时与平台 `basic-info.html` 现有口径对齐,二选一并在文档固化。
**活动系数**(与 `basic-info.html` 体力活动 5 档一一对应)
| 员工选项 | 系数 |
|---|---|
| 久坐不运动 | 1.2 |
| 久坐运动或久站 | 1.375 |
| 体力劳动者 | 1.55 |
| 久站+运动 | 1.725 |
| 健身+体力劳动 | 1.9 |
**总热量**
```
总热量 = BMR × 活动系数 - 300(固定热量缺口,对应减重目标)
```
**三大宏量供能比(固定)**:蛋白质 15% / 碳水 55% / 脂肪 30%(÷4、÷4、÷9 得克数)。
### 4.4 第二层:慢病管控(AI 动态调整)
#### 4.4.1 高血压 → 钠控制
| 等级 | 判定 | 钠上限/日 | ≈盐 |
|---|---|---|---|
| 正常 | SBP<140 且 DBP<90 | 无特殊限制 | — |
| 1 级 | SBP 140159 或 DBP 9099 | ≤2000mg | ≈5g |
| 2 级 | SBP≥160 或 DBP≥100 | ≤1500mg | ≈3.75g |
| 合并肾病 | 任意级+肾病 | ≤1200mg | ≈3g |
约束:**每餐钠不超过日上限 40%**,防止单次超标。
#### 4.4.2 高尿酸 → 嘌呤控制
| 分期 | 判定 | 嘌呤上限/日 | 处理 |
|---|---|---|---|
| 无症状期 | 血尿酸 420600 μmol/L | ≤300mg | 直接排除动物内脏、沙丁鱼 |
| 急性发作期 | >600 或近期发作 | ≤150mg | 海鲜类一并排除 |
| 痛风石 | 已确诊痛风石 | ≤100mg | 仅保留极低嘌呤食材 |
#### 4.4.3 合并慢病 → AI 调整优先级
| 组合 | 调整 |
|---|---|
| 高血压 + 高尿酸 | 优先控钠和嘌呤;钾 2500→2800mg/日 |
| 高尿酸 + 肾病 | 优先控嘌呤和蛋白质;蛋白质 1.2→0.8g/kg |
| 高血压 + 糖尿病 | 碳水中低 GI 占比≥60%;钠按等级控制 |
> 第二层的输出是"营养阈值集合 + 优先级",交给第三层作为生成约束。
### 4.5 第三层:个性化适配(AI 推理 + 规则库)
#### 4.5.1 口味适配(改良而非替代)
- 从消费记录提取高频菜品 → 匹配口味标签;
- 例:高频"油泼面"→辛辣 → 推荐"低盐油泼面"(钠减少 30%),**而非强制清淡菜**;
- 原则:保留风味,仅降低钠/嘌呤/热量。
#### 4.5.2 地区适配
- 食谱生成时优先从对应地区食材库选材,**本地食材占比≥70%**;
- 西安/陕北→杂粮、羊肉(改良做法)、土豆、菠菜;陕南→米食、水产(改良) 等;
- 早餐优先"杂粮粥+全麦馒头"而非"白粥+包子"。
#### 4.5.3 场景适配(按上班时间分配餐次热量)
| 上班时间 | 策略 |
|---|---|
| 正常白班 | 早/午/晚 = 30%/40%/30% |
| 早班 | 早餐上调至 35%,凌晨餐推荐低 GI 主食 |
| 晚班 | 晚餐为主餐 40%,夜间加餐推荐低 GI(燕麦/荞麦)+高蛋白(卤牛肉),避免血糖波动 |
| 倒班 | 按当日实际班次动态调整,优先保证蛋白质稳定 |
### 4.6 端到端数据结合示例(走查)
> **画像**45 岁男,身高 175cm,体重 72.5kg,体力劳动者,收缩压 145、血尿酸 526,辛辣口味,西安地区,正常白班,不吃羊肉。
| 步骤 | 数据结合 | 结果 |
|---|---|---|
| ①第一层 | BMR=1900 × 1.55 - 300 | 总热量 2645 kcal |
| ②第二层 | SBP 145→高血压 1 级;尿酸 526→无症状期 | 钠≤2000mg/日,嘌呤≤300mg/日;剔除动物内脏/沙丁鱼 |
| ③第三层·口味 | 辛辣→保留西北风味但降盐 | "低盐油泼面"(钠-30% |
| ③第三层·地区 | 西安→西北食材库≥70% | 杂粮粥、全麦馒头、土豆烧牛肉(牛肉焯水去嘌呤) |
| ③第三层·场景 | 正常白班 | 早/午/晚=30/40/30 |
| ③第三层·规避 | 不吃羊肉 | 自动剔除含羊肉菜品 |
| ④展示 | 叠加 eat-checkin 今日已摄入 1486 | 还可摄入 1159,热量缺口 300 |
输出即 `diet-advice.html` 上所见:慢病提醒横幅 + 热量目标卡 + 钠/嘌呤进度 + 三餐推荐 + 一周食谱。
---
## 五、移动端页面交互与展示设计
> 已在 `diet-advice.html` 落地原型,以下为交互/展示规范,供开发方 1:1 实现。
### 5.1 页面结构总览(自上而下)
| 区块 | 作用 | 数据来源 |
|---|---|---|
| ① 偏好标签行 | 一眼看到当前个性化维度 | 引导采集的 region/taste/schedule |
| ② 慢病提醒横幅 | 红色/黄色突出慢病约束与自动剔除动作 | 第二层 + `warning` |
| ③ 每日热量目标卡 | 大数字+进度条,BMR×系数、已摄入/还可摄入、缺口 | 第一层 + eat-checkin |
| ④ 营养素分配卡 | 蛋白质/碳水/脂肪环形进度 + 钠/嘌呤慢病管控条 | 第一层宏量 + 第二层阈值 |
| ⑤ 今日三餐推荐 | 早/午/晚/加餐 tab,每道菜图标+名称+标签+份量+烹饪建议+kcal | 第三层 `meals` |
| ⑥ 一周食谱概览 | 7 天切换,每天四餐合计 | `weekly_plan` |
| ⑦ 不喜欢食材 | 标签开关 + 自定义,即时刷新推荐 | 偏好回写 |
| ⑧ 膳食注意事项 | 分层:慢病管控/通用健康/地区适配 | 第二层 rule + 静态内容 |
### 5.2 首次引导:偏好设置(覆盖层)
**触发**:首次进入或点击右上"修改偏好"。引导覆盖层占满,主内容隐藏。
| 序号 | 问题 | 控件 | 必填 |
|---|---|---|---|
| 1 | 所在地区 | 底部 sheet 单选(西安/榆林/延安/汉中/安康/其他) | 必选 |
| 2 | 口味偏好 | chip 单选(清淡/辛辣/咸鲜/酸甜) | 必选 |
| 3 | 上班时间 | chip 单选(正常白班/早班/晚班/倒班) | 必选 |
| 4 | 规避食材 | chip 多选(羊肉/海鲜/动物内脏/香菜/沙棘/其他)+ 自定义 | 选填 |
- 底部提交按钮:未填齐必选时置灰"请先填写必选项",填齐后高亮"开始推荐";
- "修改偏好"回填上次选择,支持局部调整后重新生成。
### 5.3 各区块交互细节
**① 偏好标签行**:三个 pill(地区·口味·班次),点击无动作仅展示;地区变更后⑧地区适配文案随之更新。
**② 慢病提醒横幅**
- 有合并慢病/超标→红色(warn);仅提示→黄色;
- 文案突出"已自动剔除"的具体食材(如"已剔除动物内脏、沙丁鱼"),让员工感知到个性化。
**③ 热量目标卡**
- 大数字=每日推荐摄入;副标题=BMR × 活动系数(标注档位名);
- 进度条=已摄入/目标;下方"还可摄入 X 千卡(热量缺口 300kcal"
- 已摄入数据来自 `eat-checkin.html` 当日累计,实时联动。
**④ 营养素 + 慢病管控**
- 三个环形:蛋白质/碳水/脂肪(目标克数 + 供能比);
- 下方两条慢病进度:钠(橙红渐变)、嘌呤(黄橙渐变),显示"当前/上限 mg"+ 状态(✓安全 / △注意 / ✗超标);
- 状态色:安全绿、注意黄、超标红,超标时点击可跳转注意事项。
**⑤ 今日三餐推荐**
- 卡片式,每道菜:图标(主食/蔬菜/肉/汤 色块) + 名称 + 徽章(低钠/低嘌呤/本地食材)+ 份量描述 + 💡烹饪建议 + 右侧 kcal;
- tab 切换早/午/晚/加餐,带"AI 推荐理由"副标题(拼出"辛辣口味·西安·正常白班");
- **交互**:点击菜品→展开详细烹饪步骤与食材称重参考(项目方案要求的"100g 鸡胸肉≈手掌大小"图示);
- **替换**:菜品右滑/长按→"换一道",基于同营养档位重选,剔除规避食材。
**⑥ 一周食谱**:7 天日期切换,选中天显示四餐合计 kcal 与菜品清单;支持"导入今日打卡"一键把某餐写入 `eat-checkin`
**⑦ 不喜欢食材**:标签即时开关,新增/取消后立即重渲染当前餐次;自定义食材用输入框;提示"已标记 N 项,今日食谱已自动排除"。
**⑧ 注意事项**:三层分组——🏥慢病管控(限钠控盐、低嘌呤)、🥗通用健康(少食多餐、饮水、食材多样)、🌍地区适配(本地食材优先文案)。
### 5.4 状态与异常处理
| 场景 | 处理 |
|---|---|
| 必要数据缺失(如未填体力活动) | 引导跳转 `basic-info.html` 补全,膳食页显示"完善基础信息后生成专属方案"占位 |
| 体检数据过期(>1 年) | 横幅提示"体检数据为 X 年,建议更新",仍按历史值降级生成 |
| 接口超时/无网络 | 展示上次缓存食谱 + 离线提示(见 5.5) |
| 钠/嘌呤当日累计超标 | 横幅变红 + 推荐里自动剔除超标食材 + 注意事项高亮 |
### 5.5 离线缓存
项目方案明确要求适配部分车间无 WiFi 场景:
- 接口返回后本地缓存当日食谱与一周食谱;
- 无网络时展示缓存版,顶部标注"离线数据,可能非最新";
- 偏好/不喜欢食材标记本地暂存,联网后回写。
---
## 六、所需准备的资料清单
> 按"谁准备 / 何时用"分类,全部到位后方可启动开发与模型微调。
### 6.1 数据类(算法/平台方提供)
| # | 资料 | 来源/责任方 | 用途 | 隐私处理 |
|---|---|---|---|---|
| D1 | 员工基础档案(身高/年龄/性别) | 健康平台 | 第一层 BMR | 仅取计算字段 |
| D2 | 体重打卡记录 | `weight-checkin.html` | BMR、趋势 | — |
| D3 | 年度体检报告(血压/血尿酸/血糖/血脂) | 体检系统→`indicators-diseases.html` | 第二层慢病分级 | API 取核心字段,不存完整体检 |
| D4 | 慢病确诊清单(高血压/肾病/糖尿病…) | `indicators-diseases.html` 慢病 tab | 第二层合并调整 | — |
| D5 | 智能餐线近 6 个月消费记录 | 餐线系统/营养监控平台 | 第三层口味提取 | 脱敏:仅菜品类型+频次,剔除姓名/工号 |
| D6 | 吃打卡菜品库与当日记录 | `eat-checkin.html` | 已摄入/钠/嘌呤累计 | — |
| D7 | 企业 500 条员工健康数据(含慢病类型) | 平台脱敏导出 | 模型微调1(慢病适配) | 用户ID哈希化 |
| D8 | 员工口味/地区饮食数据样本 | 问卷/消费记录 | 模型微调2(个性化适配) | 同上 |
### 6.2 内容/知识库类(AI/医学团队预整理)
| # | 资料 | 内容要求 | 用途 |
|---|---|---|---|
| K1 | 西北/陕北/陕南地区食材库 | 莜面、土豆、菠菜、羊肉、小米、全麦粉、沙棘果…,含季节标注 | 地区匹配≥70% |
| K2 | 餐品嘌呤等级表 | 高/中/低三级,覆盖常见菜品 | 嘌呤分级排除 |
| K3 | 餐品钠含量表 | mg/100g,覆盖常见菜品与调料 | 钠计算 |
| K4 | 菜品-口味标签映射 | 油泼面→辛辣 等 | 口味适配 |
| K5 | 菜品营养库 | 每 100g 的碳水/脂肪/蛋白质/kcal/GI | 宏量分配、糖尿病低GI |
| K6 | 烹饪改良话术库 | "牛肉焯水去嘌呤""香料替盐"等 | 烹饪建议展示 |
| K7 | 食材称重参考图示 | 100g 鸡胸≈手掌、100g 米饭≈拳头… | 份量参考展示 |
| K8 | 《高血压/高尿酸膳食指导》权威条款 | 作为合规校验基线 | 验收符合率≥95% |
### 6.3 设计/素材类(产品/设计提供)
| # | 资料 | 说明 |
|---|---|---|
| S1 | 膳食建议页高保真稿 | 基于 `diet-advice.html` 细化,含菜品图、称重图 |
| S2 | 菜品图标/缩略图素材 | 主食/蔬菜/肉/汤四类色块 + 实物图 |
| S3 | 引导覆盖层插画 | hero 区"定制专属膳食方案"配图 |
| S4 | 状态/空态/异常态图 | 数据缺失、离线、超标等 |
### 6.4 技术对接类(算法团队交付)
| # | 资料 | 形式 | 说明 |
|---|---|---|---|
| T1 | 算法 API 接口文档 | RESTful/HTTPS/POST/JSON | 请求/响应字段、错误码、Postman 示例 |
| T2 | 规则配置文件 | XML | 非技术人员可改:地区食材库/营养阈值/口味维度 |
| T3 | 《模型使用手册》 | 文档 | 接口调用 + 规则配置教程 + 维护周期(季度更新食材库、半年更新阈值) |
| T4 | 《数据对接规范》 | 文档 | 输入输出格式 + 校验规则(见 4.2.4) |
| T5 | 《测试报告》 | 文档 | ≥10 类场景 + 性能测试(响应/并发/稳定性) |
| T6 | 《维护手册》 | 文档 | 常见配置错误案例与解决方案 |
### 6.5 资料准备优先级(建议排期)
1. **先阻塞模型**:D7、D8(微调数据)+ K1–K5(知识库)→ 第 6–15 工作日;
2. **并行页面**S1S4 + 复用现有 `diet-advice.html` 原型 → 第 15 工作日;
3. **后阻塞对接**:T1 接口文档先出 → 第 15 工作日联调;T2–T6 随交付;
4. **持续**:D5 餐线记录、K8 合规基线贯穿验收。
---
## 七、验收标准(映射项目方案)
### 7.1 功能验收
| 验收项 | 方法 | 合格标准 |
|---|---|---|
| 膳食建议合规性 | 随机抽 20 条食谱对照《膳食指导》 | 符合率≥95% |
| 口味/地区适配 | 30 名员工(覆盖口味/地区)评分 1–5 分 | 平均≥4.2 分(≈92% |
| 钠/嘌呤计算 | 复算抽检 | 偏差率≤8% |
| 接口响应 | Jmeter 1000 并发 | 平均≤500ms,无≥3s 超时 |
| 体系对接 | 平台改 10 条数据看油田体系同步 | 成功率100%,延迟≤1h |
| 个性化剔除 | 标记规避食材后刷新 | 含该食材菜品 100% 不出现 |
### 7.2 交付物验收
| 交付物 | 方法 | 标准 |
|---|---|---|
| AI 模型 + 接口 | 调 10 条数据 | 完整度100%,偏差≤8% |
| 4 类技术资料(T3–T6) | 抽 3 个步骤由开发方执行 | 成功率100%,无歧义 |
| 测试报告(T5) | 复现 5 场景核对输入-输出-偏差 | 100% 一致 |
| 规则配置文件(T2) | 改阈值/食材库后验证生效 | 100% 生效 |
---
## 八、附:与现有原型的差异/待补点
> 基于 `diet-advice.html` 现状,列出落地时需补齐的差距。
| 现状 | 待补 |
|---|---|
| BMR/热量为 mock 常量 | 接入 `basic-info.html` 真实身高/活动等级,按 4.3 公式计算 |
| 已摄入 1486 为写死 | 接 `eat-checkin.html` 当日累计,且 eat-checkin 菜品库需补钠/嘌呤字段以支撑慢病进度条 |
| 三餐数据按口味预置 4 套静态库 | 改为调算法接口动态生成,支持规避/替换 |
| 慢病分级(高血压1级/无症状期)写死 | 接 `indicators-diseases.html` 血压/尿酸/慢病自动分级 |
| 无菜品详情/称重参考图 | 补 K7 素材与点击展开交互 |
| 无离线缓存 | 增加本地缓存与离线态提示 |
| 无"换一道"替换 | 增加同营养档位重选交互 |
| 一周食谱静态 | 接口 `weekly_plan` 动态下发 |
---
*本需求文档与 `AI-REQUIREMENTS.md`(面向 AI 工程师的算法/API 细则)互补:本文档侧重"诉求—数据结合—移动端交互—资料清单"的产品整体视角,算法实现细节以 `AI-REQUIREMENTS.md` 为准。*