diff --git a/employee-app/weight-management/doc/AI-REQUIREMENTS.md b/employee-app/weight-management/doc/AI-REQUIREMENTS.md deleted file mode 100644 index 3461195..0000000 --- a/employee-app/weight-management/doc/AI-REQUIREMENTS.md +++ /dev/null @@ -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类场景测试+性能测试) diff --git a/employee-app/weight-management/doc/膳食建议模块需求文档.md b/employee-app/weight-management/doc/膳食建议模块需求文档.md deleted file mode 100644 index bd4c825..0000000 --- a/employee-app/weight-management/doc/膳食建议模块需求文档.md +++ /dev/null @@ -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 数据校验规则(接口前置) - -| 字段 | 校验 | -|---|---| -| 血尿酸 | 150–1000 μmol/L,超限返回"数据异常" | -| 口味偏好 | 仅枚举;"微辣"等非标值自动映射为"辛辣" | -| 身高 | 100–250 cm | -| 体重 | 30–300 kg | -| 年龄 | 18–70 岁 | -| 血压 | 收缩压 60–250 / 舒张压 30–150 mmHg | - -### 4.3 第一层:基础营养计算(确定性公式) - -**BMR(Mifflin-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 140–159 或 DBP 90–99 | ≤2000mg | ≈5g | -| 2 级 | SBP≥160 或 DBP≥100 | ≤1500mg | ≈3.75g | -| 合并肾病 | 任意级+肾病 | ≤1200mg | ≈3g | - -约束:**每餐钠不超过日上限 40%**,防止单次超标。 - -#### 4.4.2 高尿酸 → 嘌呤控制 - -| 分期 | 判定 | 嘌呤上限/日 | 处理 | -|---|---|---|---| -| 无症状期 | 血尿酸 420–600 μ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. **并行页面**:S1–S4 + 复用现有 `diet-advice.html` 原型 → 第 1–5 工作日; -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` 为准。*