185 KiB
产品需求文档(PRD)
慢生活智能营养专家 v2.0
📋 文档信息
| 项目 | 内容 |
|---|---|
| 产品名称 | 慢生活智能营养专家 |
| 版本号 | v2.0 |
| 文档版本 | v2.0.0 |
| 创建日期 | 2025-11-20 |
| 更新日期 | 2025-11-20 |
| 产品定位 | 肾病患者智能营养管理平台 |
| 支持平台 | 微信小程序(主)+ Web端(辅) |
| 参考来源 | 慢生活365网站 + Figma设计稿 |
一、产品概述
1.1 产品愿景
打造国内领先的肾病患者专属智能营养管理平台,通过科学计算、AI辅助和个性化服务,帮助患者实现精准营养管理,提高生活质量。
1.2 核心价值主张
"三分钟获得专属营养方案,每日打卡赢积分,AI营养师24小时在线"
- 🎯 专业:基于国家标准《慢性肾脏病患者膳食指导》(2017)
- 🤖 智能:AI驱动的食谱生成和智能问答
- 👨⚕️ 个性化:基于个人健康数据的定制化方案
- 📱 便捷:微信小程序,随时随地使用
- 🍽️ 实用:提供完整一日三餐配餐方案
- 🎁 激励:每日饮食打卡赢积分,养成健康饮食习惯
1.3 产品定位
定位:肾病患者的智能营养助手
差异化竞争优势:
- ✅ 完整配餐方案:不仅计算营养数据,还提供每日早中晚三餐的完整菜谱(含食材清单、用量、图片)
- ✅ 饮食打卡激励:采纳配餐建议后每日打卡上传饮食记录,获得积分奖励,形成正向反馈闭环 ⭐
- ✅ AI智能交互:AI营养师实时问答,支持食物适宜性判断和烹饪建议
- ✅ 视觉设计优秀:现代化UI设计,适合中老年用户操作
- ✅ 数据可视化:健康数据卡片化展示,一目了然
二、目标用户
2.1 用户画像
主要用户群:肾病患者
- 年龄:35-70岁(以50-65岁为主)
- 疾病分期:
- CKD 1-5期患者
- 血液透析患者
- 腹膜透析患者
- 肾移植术后患者
- 典型场景:
- 首次确诊,不知道怎么吃
- 透析患者需要严格控制饮食
- 想自己学会营养计算
- 需要一日三餐的具体指导
次要用户群:患者家属
- 需求:为患者准备合适的饮食
- 关注点:具体菜谱、烹饪方法、食材用量
潜在用户群:营养师/医生
- 需求:为患者提供营养指导工具
- 关注点:计算准确性、报告生成
2.2 用户需求分析
| 需求类型 | 具体需求 | 解决方案 |
|---|---|---|
| 基础需求 | 了解能吃什么、不能吃什么 | 食物百科 + 适宜性标注 |
| 核心需求 | 计算每日营养摄入量 | 智能营养计算器 |
| 高级需求 | 获得具体的一日三餐方案 | ⭐完整配餐展示 |
| 坚持需求 | 记录饮食、养成习惯、获得激励 | ⭐饮食打卡 + 积分奖励 |
| 咨询需求 | 随时咨询饮食问题 | AI营养师问答 |
| 学习需求 | 了解营养知识 | 营养知识库 |
三、产品架构
3.1 信息架构图
慢生活智能营养专家
│
├── 【首页】
│ ├── 用户健康卡片
│ ├── 四大功能入口(2x2网格)
│ │ ├── 🧮 食谱计算器
│ │ ├── 💬 AI营养师
│ │ ├── 🔍 食物百科
│ │ └── 💡 营养知识
│ ├── 食谱推荐(3条)
│ ├── 健康知识(2条)
│ └── 营养方案领取入口
│
├── 【食谱计算器】⭐核心功能
│ ├── 输入表单页
│ │ ├── 性别选择
│ │ ├── 年龄输入
│ │ ├── 身高输入
│ │ ├── 透析状态(是/否)
│ │ ├── 透析类型(血透/腹透)
│ │ ├── 干体重输入
│ │ └── 血肌酐输入
│ └── 计算结果页 ⭐⭐⭐
│ ├── 健康数据卡片(eGFR、BMI、标准体重、CKD分期)
│ ├── 每日营养目标(蛋白质、能量)
│ ├── 食物份数建议(7类食物)
│ ├── ⭐每日营养配餐(创新功能)
│ │ ├── 早餐卡片(时间、菜品、食材、图片)
│ │ ├── 午餐卡片
│ │ └── 晚餐卡片
│ ├── 重要提示(饮食注意事项)
│ ├── ⭐"采纳并开始打卡"按钮(核心转化点)
│ ├── AI生成食谱按钮
│ └── 联系营养师按钮
│
├── 【饮食打卡】⭐⭐⭐新增核心功能
│ ├── 我的营养计划(采纳后自动创建)
│ │ ├── 计划概览(营养目标、配餐方案)
│ │ ├── 打卡日历(连续打卡天数、打卡记录)
│ │ └── 积分统计(累计积分、今日可得)
│ ├── 每日打卡页
│ │ ├── 早餐打卡
│ │ │ ├── 推荐菜品复选框
│ │ │ ├── 实际食用输入
│ │ │ ├── 上传照片(1-3张)
│ │ │ └── 备注说明
│ │ ├── 午餐打卡
│ │ └── 晚餐打卡
│ ├── 打卡提交页
│ │ ├── 今日营养总结(摄入vs目标)
│ │ ├── 营养分析图表
│ │ ├── 健康评分
│ │ └── 提交按钮
│ └── 打卡成功页
│ ├── 获得积分+XX
│ ├── 连续打卡X天
│ ├── 营养达标率
│ └── 分享激励
│
├── 【积分中心】⭐新增
│ ├── 我的积分(总积分、今日获得、使用记录)
│ ├── 积分任务
│ │ ├── 每日打卡(+30分)
│ │ ├── 连续7天打卡(+100分)
│ │ ├── 上传饮食照片(+10分)
│ │ └── 其他任务
│ ├── 积分商城
│ │ ├── 会员权益兑换
│ │ ├── 营养师咨询兑换
│ │ └── 优惠券兑换
│ └── 排行榜(本周/本月打卡之星)
│
├── 【打卡社区】⭐⭐⭐重磅新增(类似小红书)
│ ├── 社区广场(瀑布流展示)
│ │ ├── 筛选Tab(推荐/最新/关注/热门)
│ │ ├── 打卡卡片(封面图+标题+用户+点赞数)
│ │ └── 下拉刷新/上拉加载
│ ├── 打卡详情页
│ │ ├── 饮食照片轮播(1-3张)
│ │ ├── 打卡内容(文字描述、菜品清单)
│ │ ├── 营养数据展示(蛋白质、能量、达标率)
│ │ ├── 标签(#早餐 #低钾 #透析期)
│ │ ├── 互动栏(点赞、评论、收藏、分享)
│ │ ├── 评论列表
│ │ └── 相关推荐
│ ├── 发布打卡页
│ │ ├── 从个人打卡记录选择分享
│ │ ├── 编辑标题和描述
│ │ ├── 选择封面图
│ │ ├── 添加话题标签
│ │ └── 隐私设置(公开/仅关注可见)
│ ├── 用户主页
│ │ ├── 用户头像和资料卡
│ │ ├── 打卡统计(总天数、获赞、收藏)
│ │ ├── 打卡作品网格展示
│ │ ├── 关注/粉丝列表
│ │ └── 成就勋章
│ └── 话题页
│ ├── 话题介绍
│ ├── 话题下的优质内容
│ └── 话题参与人数
│
├── 【AI营养师】⭐创新功能
│ ├── 欢迎消息(AI能力介绍)
│ ├── 常见问题快捷入口(4个)
│ ├── 对话界面
│ │ ├── 用户消息气泡(橙色)
│ │ ├── AI消息气泡(白色)
│ │ └── 打字动画
│ ├── 输入框 + 发送按钮
│ └── 附加功能(图片、语音)
│
├── 【食物百科】
│ ├── 搜索栏
│ ├── 分类横向滚动(8类)
│ ├── 食物列表(图片 + 营养信息)
│ └── 食物详情页
│ ├── 食物图片
│ ├── 营养成分表
│ ├── 适宜性判断
│ └── 食用建议
│
├── 【营养知识】
│ ├── Tab切换(营养素百科/饮食指南/科普文章)
│ ├── 营养素百科(蛋白质、钾、磷、钠等)
│ ├── 饮食指南(按CKD分期)
│ └── 科普文章列表
│
└── 【个人中心】
├── 用户信息卡片
├── 我的健康(健康档案、营养计划、数据报告)
├── 我的食谱(收藏、历史、自定义)
├── 工具与服务(食物搜索、知识库、提醒)
└── 设置(关于我们、反馈、客服)
3.2 页面流程图
启动小程序
↓
【首页】
↓
点击"食谱计算器"
↓
【计算表单页】
├→ 填写个人信息
├→ 填写健康数据
└→ 点击"开始计算"
↓
【计算结果页】⭐
├→ 查看健康数据
├→ 查看营养目标
├→ 查看食物份数
├→ ⭐查看每日配餐(早中晚)
├→ 点击"AI生成食谱"(跳转AI营养师)
├→ 点击"联系营养师"(跳转客服)
└→ 保存/分享结果
四、核心功能详细设计
4.1 食谱计算器(核心功能)⭐⭐⭐
4.1.1 输入表单页
页面标题:食谱计算器
表单字段:
| 字段名称 | 类型 | 必填 | 说明 |
|---|---|---|---|
| 性别 | 单选(男/女) | ✓ | 自定义圆形选择器 |
| 年龄 | 数字输入 | ✓ | 单位:岁 |
| 身高 | 数字输入 | ✓ | 单位:cm |
| 是否透析 | 单选(是/否) | ✓ | - |
| 透析类型 | 单选(血透/腹透) | 条件必填 | 仅在"是否透析=是"时显示 |
| 干体重 | 数字输入 | ✓ | 单位:kg,提示文案:"透析患者请输入透析后的干体重" |
| 血肌酐 | 数字输入 | ✓ | 单位:μmol/L |
UI设计规范:
- 单选按钮:自定义圆形选择器,选中时显示橙色填充圆点
- 输入框:灰色背景(
bg-gray-50),圆角(rounded-xl),右侧显示单位 - 布局:垂直排列,字段间距
space-y-6 - 底部按钮:固定在底部,橙色渐变,圆角按钮"开始计算"
交互说明:
- 点击单选项时,显示选中状态(橙色边框 + 背景)
- 数字输入支持小数点(体重、血肌酐)
- 表单验证:所有必填项填写完成后,按钮才可点击
- 点击"开始计算"后,跳转到结果页
4.1.2 计算结果页 ⭐⭐⭐(最重要)
页面标题:营养计算结果
页面结构:(从上到下)
区域1:健康数据卡片(橙色渐变卡片)
显示4个计算结果:
| 数据项 | 显示格式 | 计算公式 |
|---|---|---|
| eGFR数值 | XX.XX ml/min/1.73²m | CKD-EPI公式(见附录) |
| 标准体重 | XX.X kg | 男:(身高-80)×0.7 女:(身高-70)×0.6 |
| 体重指数 | XX.X | BMI = 体重 / (身高/100)² |
| CKD分期 | CKD X期 / 透析期 | 根据eGFR自动判断 |
UI样式:
- 渐变背景:
from-orange-500 to-orange-600 - 2x2网格布局
- 每个数据卡片:白色半透明背景(
bg-white/10)
区域2:每日营养目标
显示2个关键指标(大数字展示):
| 指标 | 显示格式 | 计算公式 |
|---|---|---|
| 蛋白质摄入 | XX.X 克/天 | 透析期:标准体重 × 1.2 非透析期:标准体重 × 0.8 |
| 能量摄入 | XXXX 千卡/天 | 标准体重 × 35 |
UI样式:
- 1x2网格布局
- 左侧卡片:橙色渐变(蛋白质)
- 右侧卡片:红色渐变(能量)
区域3:食物份数建议
显示7类食物的推荐摄入量:
| 食物类别 | 单位 | 示例份数 |
|---|---|---|
| 谷薯50g | 50g | 5.7 份 |
| 淀粉100g | 100g | 0.77 份 |
| 绿叶蔬菜200g | 200g | 1 份 |
| 瓜果蔬菜200g | 200g | 2 份 |
| 奶类230g | 230g | 1 份 |
| 肉蛋类50/60g | 50/60g | 7 份 |
| 油脂类10g | 10g | 5.7 份 |
UI样式:
- 列表卡片,每行一个食物类别
- 左侧:序号 + 类别名称
- 右侧:橙色Badge显示份数 + "详情"按钮
区域4:每日营养配餐 ⭐⭐⭐(创新功能)
这是本次升级的最大亮点!
显示完整的一日三餐方案,每餐包含:
- 餐次名称(早餐/午餐/晚餐)
- 用餐时间建议
- Emoji图标(🌅/☀️/🌙)
- 菜品数量
- 每道菜的详细信息
早餐示例(7:00-8:00):
🥛 牛奶
└─ 牛奶 120g
🍜 鸡蛋拌面
├─ 面条 90g
├─ 鸡蛋 120g
└─ 葱花 5g
🥒 凉拌黄瓜
└─ 黄瓜 100g
午餐示例(12:00-13:00):
🍚 米饭
└─ 大米 100g
🐟 清蒸鲈鱼
├─ 鲈鱼 120g
├─ 生姜 5g
└─ 葱 5g
🥦 蒜蓉西兰花
├─ 西兰花 150g
├─ 大蒜 5g
└─ 植物油 8g
🍲 冬瓜汤
└─ 冬瓜 150g
晚餐示例(18:00-19:00):
🍚 杂粮饭
├─ 大米 70g
└─ 小米 30g
🍗 香菇炒鸡丁
├─ 鸡胸肉 100g
├─ 香菇 50g
└─ 植物油 8g
🥬 清炒油菜
├─ 油菜 150g
└─ 植物油 5g
🍅 番茄蛋花汤
├─ 番茄 100g
└─ 鸡蛋 60g
UI样式:
- 每餐一个独立大卡片
- 顶部:渐变色Header(早餐橙粉、午餐黄橙、晚餐橙红)
- 菜品卡片:左侧图片(80x80) + 右侧信息(菜名 + 食材列表)
- 食材以小Badge形式展示
区域5:重要提示
显示透析患者的饮食注意事项:
⚠️ 重要提示
• 透析患者需严格控制水分摄入
• 建议低盐饮食(每日少于5g)
• 注意限制高钾食物(香蕉、橙子、土豆等)
• 限制高磷食物(坚果、动物内脏等)
UI样式:橙色左边框警告卡片
区域6:操作按钮
- 主按钮:"✨ 生成AI智能食谱"(橙色渐变,圆角)
- 次按钮:"联系专业营养师"(白色边框)
交互:
- 点击"生成AI智能食谱":跳转到AI营养师页面
- 点击"联系专业营养师":打开客服对话或拨打电话
区域7:温馨提示
💡 温馨提示
以上计算结果仅供参考,具体饮食方案请咨询专业营养师或医生。
每个人的身体状况不同,需要个性化的营养指导。
UI样式:蓝色渐变信息卡片
4.2 AI营养师(创新功能)⭐⭐
4.2.1 功能定位
提供24小时在线的智能营养咨询服务,支持:
- ✅ 食物适宜性判断
- ✅ 饮食问题解答
- ✅ 烹饪方法建议
- ✅ 营养知识科普
4.2.2 页面设计
页面结构:
- 顶部导航栏:标题"AI营养师"
- 消息区域(可滚动)
- 底部输入栏
首次进入:显示欢迎消息
👋您好!我是您的AI营养师助手。
我可以帮您:
• 解答饮食疑问
• 评估食物适宜性
• 提供烹饪建议
• 解读检验报告
有什么想问的吗?
常见问题快捷按钮(4个):
- "我今天想吃香蕉,可以吗?"
- "如何降低蔬菜中的钾含量?"
- "透析患者可以喝牛奶吗?"
- "什么食物含磷比较低?"
4.2.3 对话交互
用户消息样式:
- 橙色渐变气泡(
from-orange-500 to-orange-600) - 白色文字
- 右对齐
- 显示发送时间
AI消息样式:
- 白色气泡 + 灰色边框
- 黑色文字
- 左对齐
- 顶部显示"AI 营养师助手"头像和标签
- 显示发送时间
打字动画:
- 3个灰色小圆点跳动
- 显示时机:用户发送消息后1-2秒
4.2.4 AI回复示例
场景1:询问香蕉
问:我今天想吃香蕉,可以吗?
答:香蕉含钾量较高(每100g约330mg),对于需要控制钾摄入的透析患者来说需要谨慎食用。
建议:
• 如果血钾控制良好,可以少量食用(如半根)
• 透析后食用更安全
• 建议咨询您的主治医生确认
您最近的血钾指标如何呢?
场景2:降低钾含量
问:如何降低蔬菜中的钾含量?
答:降低蔬菜中钾含量的方法:
1️⃣ 切小块浸泡
将蔬菜切成小块,用温水浸泡30分钟以上
2️⃣ 焯水处理
沸水中焯烫2-3分钟后再烹饪
3️⃣ 选择低钾蔬菜
推荐:黄瓜、白菜、冬瓜、丝瓜等
这样可以减少30-50%的钾含量哦!
4.2.5 智能匹配规则
| 关键词 | 触发回复 |
|---|---|
| 香蕉、高钾水果 | 钾含量警告 + 食用建议 |
| 钾、蔬菜、去钾 | 降钾处理方法 |
| 牛奶、乳制品 | 透析患者乳制品指南 |
| 磷、高磷 | 低磷食物推荐 |
| 蛋白质、优质蛋白 | 蛋白质来源建议 |
| 其他 | 通用营养建议 |
4.3 食物百科
4.3.1 功能定位
提供食物营养成分查询和适宜性判断。
4.3.2 页面设计
顶部固定区域:
- 标题栏:"食物百科"
- 搜索栏:带放大镜图标,placeholder"搜索食物名称..."
- 分类横向滚动条:8个分类
分类列表(带Emoji):
- 🌾 谷薯类(45种)
- 🥬 蔬菜类(68种)
- 🍎 水果类(52种)
- 🍖 肉蛋类(38种)
- 🐟 水产类(31种)
- 🥛 奶类(15种)
- 🫘 豆类(22种)
- 🥜 坚果类(18种)
食物列表卡片:
- 左侧:食物图片(80x80,圆角)
- 右侧上方:食物名称 + 分类标签
- 右侧下方:营养成分(最多显示3个)
- 警告标志:慎用食物显示"⚠️"
营养成分颜色标识:
- 🟢 绿色(低):适宜
- 🟡 黄色(中):适量
- 🔴 红色(高):慎用
4.3.3 食物详情页
点击食物卡片后,显示详情页:
【食物图片】(大图)
香蕉
分类:水果类
┌─ 营养成分(每100g)─────┐
│ 蛋白质 1.4g 🟢 │
│ 钾 330mg 🔴 │
│ 磷 28mg 🟡 │
│ 钠 1mg 🟢 │
│ 能量 89kcal │
└──────────────────────┘
┌─ 适宜性判断 ────────────┐
│ ⚠️ 慎用 │
│ │
│ 香蕉含钾量较高,透析患者 │
│ 应谨慎食用或避免。 │
└──────────────────────┘
┌─ 食用建议 ─────────────┐
│ • 非透析期CKD 1-2期患者 │
│ 可适量食用 │
│ • 透析患者建议避免或 │
│ 在血钾正常时少量食用 │
│ • 建议食用时间:透析后 │
└──────────────────────┘
4.4 营养知识
4.4.1 页面结构
Tab切换(3个):
- 营养素百科
- 饮食指南
- 科普文章
4.4.2 营养素百科
显示关键营养素的详细信息:
列表:
- 蛋白质
- 钾
- 磷
- 钠
- 钙
- 水分
- 能量
点击后显示详情:
💪 蛋白质
【作用】
蛋白质是人体必需的营养素,用于:
• 修复组织
• 维持肌肉量
• 支持免疫功能
【肾病患者的特殊要求】
• 非透析期:限制摄入(0.6-0.8g/kg/天)
• 透析期:增加摄入(1.0-1.2g/kg/天)
• 优先选择优质蛋白
【优质蛋白来源】
✅ 鸡蛋、鱼肉、瘦肉、牛奶
【避免食物】
❌ 植物蛋白(豆类、坚果)
4.4.3 饮食指南(按CKD分期)
CKD 1-2期(轻度)
├─ 蛋白质:0.8-1.0 g/kg/天
├─ 能量:30-35 kcal/kg/天
├─ 钾:正常摄入
├─ 磷:正常摄入
└─ 钠:<5g/天
CKD 3-4期(中重度)
├─ 蛋白质:0.6-0.8 g/kg/天
├─ 能量:30-35 kcal/kg/天
├─ 钾:<2000mg/天
├─ 磷:<800mg/天
└─ 钠:<3g/天
CKD 5期(透析期)
├─ 蛋白质:1.0-1.2 g/kg/天
├─ 能量:30-35 kcal/kg/天
├─ 钾:<1500mg/天
├─ 磷:<800mg/天
└─ 钠:<2g/天
4.4.4 科普文章
显示文章列表,每篇文章包含:
- 文章标题
- 摘要(2行)
- 阅读时间
- 阅读量
- 分类标签
示例文章:
- "透析患者的饮食原则"
- "如何科学补充蛋白质"
- "高钾食物有哪些?"
- "降磷攻略:磷结合剂怎么吃?"
- "肾病患者能吃水果吗?"
4.5 个人中心
4.5.1 页面结构
用户信息卡片(顶部):
- 头像
- 昵称
- CKD分期
- 透析状态
功能分区:
1. 我的健康
- 健康档案:查看/编辑个人健康信息
- 营养计划:查看当前营养方案
- 饮食记录:记录每日饮食
- 数据报告:查看营养分析报告
2. 我的食谱
- 收藏的食谱
- 历史食谱
- 自定义食谱
3. 工具与服务
- 食物搜索
- 知识库
- 用药提醒
- 透析提醒
4. 设置
- 关于我们
- 意见反馈
- 联系客服
- 隐私政策
4.6 饮食打卡系统(核心激励功能)⭐⭐⭐
4.6.1 功能定位
核心目标:通过"采纳配餐建议 → 每日打卡上传 → 获得积分奖励"的闭环,提升用户留存和数据价值。
业务价值:
- 📈 提升留存率:每日打卡培养用户习惯,提高DAU和留存
- 📊 收集真实数据:积累大量真实饮食数据,优化AI推荐算法
- 💰 商业化基础:积分体系为会员、咨询等付费服务导流
- 🏥 医疗价值:为医生/营养师提供患者饮食依从性数据
4.6.2 用户流程
【步骤1:采纳配餐】
食谱计算器结果页
↓
点击"采纳并开始打卡"按钮
↓
创建"我的营养计划"(7天周期)
↓
【步骤2:每日打卡】
进入"饮食打卡"页面
↓
选择早餐/午餐/晚餐
↓
勾选实际食用的推荐菜品
↓
(可选)上传饮食照片
↓
(可选)输入备注说明
↓
点击"提交打卡"
↓
【步骤3:获得奖励】
打卡成功页
├─ 获得积分 +30分
├─ 连续打卡天数 +1
├─ 营养达标分析
└─ 分享到朋友圈(额外+10分)
4.6.3 页面设计详解
页面1:计算结果页的转化入口
新增按钮:在计算结果页底部,原有"AI生成食谱"按钮前增加主按钮。
┌──────────────────────────────┐
│ ✨ 采纳并开始打卡 │ ← 主按钮(橙色渐变)
│ 每日打卡赢积分,养成健康习惯 │
└──────────────────────────────┘
┌──────────────────────────────┐
│ 🤖 生成AI智能食谱 │ ← 次按钮(白色边框)
└──────────────────────────────┘
点击后弹窗确认:
╔═════════════════════════════╗
║ 🎉 采纳专属营养方案 ║
╠═════════════════════════════╣
║ ║
║ 您的营养计划已生成: ║
║ • 蛋白质摄入:56.0g/天 ║
║ • 能量摄入:1960kcal/天 ║
║ • 完整三餐配餐方案 ║
║ ║
║ 坚持打卡,可获得: ║
║ ✅ 每日打卡 +30积分 ║
║ ✅ 连续7天 +100积分 ║
║ ✅ 营养分析报告 ║
║ ║
║ ┌─────────┐ ┌─────────┐ ║
║ │ 取消 │ │ 开始打卡 │ ║
║ └─────────┘ └─────────┘ ║
╚═════════════════════════════╝
页面2:我的营养计划页
入口:首页 → 个人中心 → 我的健康 → 营养计划
页面结构:
┌────────────────────────────────┐
│ < 我的营养计划 │ ← 顶部导航
└────────────────────────────────┘
┌────────────────────────────────┐
│ 📊 营养目标 │
│ ┌──────────┐ ┌──────────┐ │
│ │ 蛋白质 │ │ 能量 │ │
│ │ 56.0g/天 │ │ 1960kcal │ │
│ └──────────┘ └──────────┘ │
└────────────────────────────────┘
┌────────────────────────────────┐
│ 📅 打卡日历(本周) │
│ 一 二 三 四 五 六 日 │
│ ✅ ✅ ✅ ⭕ ⭕ ⭕ ⭕ │
│ │
│ 📈 连续打卡:3天 │
│ 🎁 累计积分:90分 │
└────────────────────────────────┘
┌────────────────────────────────┐
│ 🍽️ 今日配餐 │
│ 早餐 (未打卡) → │
│ 午餐 (已打卡) ✅ │
│ 晚餐 (未打卡) → │
└────────────────────────────────┘
┌────────────────────────────────┐
│ [立即打卡] │ ← 主按钮
└────────────────────────────────┘
页面3:每日打卡页 ⭐⭐⭐核心页面(极简版)
设计理念:极简打卡,AI智能分析 - 只需拍照+说话,无需任何手动输入!
入口:
- 营养计划页 → 点击"立即打卡"
- 首页 → 快捷打卡入口
- 定时推送通知 → 点击进入
页面结构:
┌────────────────────────────────┐
│ < 饮食打卡 - 2025年11月20日 │
└────────────────────────────────┘
【Tab切换】 [早餐] [午餐] [晚餐]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🌅 早餐打卡
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┌────────────────────────────────┐
│ 【步骤1:拍摄饮食照片】⭐必填 │
│ │
│ ┌──────┐ ┌──────┐ ┌──────┐ │
│ │ 📷 │ │ 📷 │ │ + │ │
│ │拍照 │ │相册 │ │添加 │ │
│ └──────┘ └──────┘ └──────┘ │
│ │
│ 支持1-3张照片 │
│ 💡 拍清楚一点,AI会自动识别哦 │
└────────────────────────────────┘
【已上传照片预览】
┌────┐ ┌────┐
│图片1│ │图片2│
│ X │ │ X │ ← 点击删除
└────┘ └────┘
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┌────────────────────────────────┐
│ 【步骤2:补充说明】(可选) │
│ │
│ ┌──────────────────────────┐ │
│ │ 说点什么吧(可选)... │ │
│ │ │ │
│ └──────────────────────────┘ │
│ │
│ ┌──────────┐ ┌──────────┐ │
│ │ 🎤 语音 │ │ 💬 文字 │ │
│ │ 录入 │ │ 输入 │ │
│ └──────────┘ └──────────┘ │
│ │
│ 💡 例如:今天吃的比较清淡, │
│ 没有放盐,味道还不错 │
└────────────────────────────────┘
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┌────────────────────────────────┐
│ 【AI自动分析中...】⏳ │
│ AI正在识别您的饮食内容 │
│ 预计需要3-5秒 │
│ [进度条 ████████░░ 80%] │
└────────────────────────────────┘
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
【AI识别结果】(分析完成后显示)
┌────────────────────────────────┐
│ 🤖 AI识别到以下食物: │
│ │
│ ✅ 牛奶 约120ml │
│ ✅ 鸡蛋拌面 约150g │
│ ✅ 黄瓜 约80g │
│ │
│ 识别不准确?[点击修正] │
└────────────────────────────────┘
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
【营养分析】⭐核心价值
┌────────────────────────────────┐
│ 📊 今日早餐营养分析 │
│ │
│ ┌──────────┐ ┌──────────┐ │
│ │ 蛋白质 │ │ 能量 │ │
│ │ 18.8g │ │ 452kcal │ │
│ │ 达标94% │ │ 达标90% │ │
│ │ ✅ 良好 │ │ ✅ 良好 │ │
│ └──────────┘ └──────────┘ │
│ │
│ ┌──────────┐ ┌──────────┐ │
│ │ 钾 │ │ 磷 │ │
│ │ 320mg │ │ 180mg │ │
│ │ ✅ 安全 │ │ ✅ 安全 │ │
│ └──────────┘ └──────────┘ │
│ │
│ 🎯 整体评分:92分(优秀) │
│ │
│ ┌──────────────────────────┐ │
│ │ 📄 查看完整营养分析报告 │ │
│ └──────────────────────────┘ │
└────────────────────────────────┘
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┌────────────────────────────────┐
│ 【AI建议】 │
│ │
│ 💡 营养师点评: │
│ 早餐搭配均衡,蛋白质和能量都达标 │
│ 建议:可以再增加50g蔬菜 │
│ │
│ ⚠️ 注意事项: │
│ • 鸡蛋拌面含磷较高,注意不要 │
│ 连续几天都吃 │
│ • 建议搭配低钾水果(如苹果) │
└────────────────────────────────┘
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┌────────────────────────────────┐
│ [提交打卡] +30积分 │
│ │
│ 提交后可获得: │
│ ✅ 打卡积分 +10分 │
│ ✅ 照片上传 +10分 │
│ ✅ AI分析 +10分 │
└────────────────────────────────┘
核心优化点:
-
极简输入 ⭐⭐⭐
- 只需上传照片(必填)
- 备注说明(可选,支持语音录入)
- 不需要勾选菜品、不需要输入用量、不需要任何手动计算
-
AI智能识别 🤖
- 自动识别照片中的食物种类
- 自动估算食物重量
- 自动计算营养成分(蛋白质、能量、钾、磷、钠等)
- 识别不准可手动修正
-
语音录入 🎤
- 支持语音输入备注说明
- 自动转文字
- 降低老年用户打卡门槛
-
营养分析报告 📊
- AI自动生成营养分析
- 包含营养素达标情况
- AI营养师点评和建议
- 可下载、可分享
技术实现:
// AI识别食物API调用
async function recognizeFoodFromImage(imageUrls) {
// 调用腾讯云/百度AI图像识别API
const response = await wx.request({
url: 'https://api.xxx.com/food-recognition',
method: 'POST',
data: {
images: imageUrls,
user_profile: {
ckd_stage: 'dialysis',
dietary_restrictions: ['low_potassium', 'low_phosphorus']
}
}
});
return {
foods: [
{ name: '牛奶', weight: 120, unit: 'ml', confidence: 0.95 },
{ name: '鸡蛋拌面', weight: 150, unit: 'g', confidence: 0.88 },
{ name: '黄瓜', weight: 80, unit: 'g', confidence: 0.92 }
],
nutrition: {
protein: 18.8,
energy: 452,
potassium: 320,
phosphorus: 180,
sodium: 250
}
};
}
// 语音转文字
async function voiceToText(voiceFilePath) {
const response = await wx.request({
url: 'https://api.xxx.com/voice-recognition',
method: 'POST',
data: {
audio_url: voiceFilePath,
format: 'mp3'
}
});
return response.text; // "今天吃的比较清淡,没有放盐"
}
交互说明:
-
拍照上传:
- 点击"拍照"按钮→调用相机→拍摄→上传
- 点击"相册"按钮→选择照片→上传
- 支持上传1-3张照片
- 显示上传进度
-
语音录入:
- 长按"语音录入"按钮开始录音
- 松开结束录音
- 自动转文字显示
- 可重新录制
-
AI识别流程:
- 点击"提交打卡"→上传照片→AI分析(3-5秒)
- 显示识别结果→用户确认或修正
- 显示营养分析和AI建议
- 确认无误后提交
-
修正识别:
- 点击"识别不准确?点击修正"
- 弹出食物列表,可修改食物名称和重量
- 重新计算营养数据
页面4:打卡成功页
点击"提交打卡"后跳转:
┌────────────────────────────────┐
│ │
│ 🎉 │
│ 打卡成功! │
│ │
│ ┌──────────────────┐ │
│ │ │ │
│ │ + 30 积分 │ │
│ │ │ │
│ └──────────────────┘ │
│ │
│ 🔥 连续打卡 3 天 │
│ 📊 今日营养达标率 92% │
│ │
│ ┌──────────────────────────┐ │
│ │ 早餐 ✅ 蛋白质 18.8g │ │
│ │ 午餐 ⭕ 待打卡 │ │
│ │ 晚餐 ⭕ 待打卡 │ │
│ └──────────────────────────┘ │
│ │
│ 🎁 连续打卡7天可额外获得100积分 │
│ 还差 4 天 │
│ │
│ ━━━━━━━━━━━━━━━━━━━━━━━━━━ │
│ │
│ ⭐⭐⭐【AI营养分析报告】 │
│ │
│ ┌──────────────────────────┐ │
│ │ 📊 查看完整营养分析报告 │ │
│ └──────────────────────────┘ │
│ │
│ ┌──────────┐ ┌──────────┐ │
│ │ 📥 下载 │ │ ➤ 分享 │ │
│ │ 报告 │ │ 报告 │ │
│ └──────────┘ └──────────┘ │
│ │
│ ━━━━━━━━━━━━━━━━━━━━━━━━━━ │
│ │
│ ┌──────────┐ ┌──────────┐ │
│ │ 分享社区 │ │ 继续打卡 │ │
│ │ +20积分 │ │ │ │
│ └──────────┘ └──────────┘ │
└────────────────────────────────┘
新增功能:
- 查看完整营养分析报告 - 进入详细报告页
- 下载报告 - 生成PDF报告,保存到手机
- 分享报告 - 分享到微信好友/朋友圈/社区
页面4.5:AI营养分析报告页 ⭐⭐⭐新增核心页面
入口:
- 打卡成功页 → 点击"查看完整营养分析报告"
- 饮食记录 → 点击某次打卡 → "查看报告"
- 个人中心 → 我的健康 → "营养报告"
页面结构:
┌────────────────────────────────┐
│ < AI营养分析报告 [分享] │
└────────────────────────────────┘
┌────────────────────────────────┐
│ 【报告头部】 │
│ 🤖 慢生活智能营养专家 │
│ │
│ 姓名:张小慢 │
│ 日期:2025年11月20日 早餐 │
│ CKD分期:透析期(腹膜透析) │
└────────────────────────────────┘
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┌────────────────────────────────┐
│ 【饮食照片】 │
│ ┌────┐ ┌────┐ ┌────┐ │
│ │图片1│ │图片2│ │图片3│ │
│ └────┘ └────┘ └────┘ │
└────────────────────────────────┘
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┌────────────────────────────────┐
│ 【AI识别食物清单】 │
│ │
│ 1. 牛奶 120ml │
│ └─ 识别可信度:95% │
│ │
│ 2. 鸡蛋拌面 150g │
│ └─ 识别可信度:88% │
│ └─ 食材:面条90g+鸡蛋60g │
│ │
│ 3. 凉拌黄瓜 80g │
│ └─ 识别可信度:92% │
└────────────────────────────────┘
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┌────────────────────────────────┐
│ 【营养成分分析】⭐核心价值 │
│ │
│ ┌──────────────────────────┐ │
│ │ 营养素 实际 推荐 达标率│ │
│ ├──────────────────────────┤ │
│ │ 蛋白质 18.8g 20.0g 94% │ │
│ │ ████████████░░░░ ✅优秀 │ │
│ │ │ │
│ │ 能量 452 500 90% │ │
│ │ ███████████░░░░░ ✅良好 │ │
│ │ │ │
│ │ 钾 320mg <350mg ✅ │ │
│ │ ████████████░░░░ 安全 │ │
│ │ │ │
│ │ 磷 180mg <200mg ✅ │ │
│ │ ██████████░░░░░░ 安全 │ │
│ │ │ │
│ │ 钠 250mg <300mg ✅ │ │
│ │ ███████████░░░░░ 良好 │ │
│ └──────────────────────────┘ │
│ │
│ 🎯 整体营养评分:92分(优秀) │
└────────────────────────────────┘
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┌────────────────────────────────┐
│ 【营养素详细解读】 │
│ │
│ ✅ 蛋白质:18.8g(达标94%) │
│ 本餐蛋白质摄入接近推荐值,主要 │
│ 来自鸡蛋和牛奶,属于优质蛋白。 │
│ 鸡蛋、牛奶、鱼肉都是透析患者的 │
│ 优质蛋白来源。 │
│ │
│ ✅ 能量:452kcal(达标90%) │
│ 能量摄入略低于推荐值,建议可以 │
│ 增加50g主食(如面包、馒头)。 │
│ │
│ ✅ 钾:320mg(安全范围) │
│ 钾摄入在安全范围内。黄瓜属于低 │
│ 钾蔬菜,透析患者可以放心食用。 │
│ │
│ ✅ 磷:180mg(安全范围) │
│ 磷摄入控制良好。注意鸡蛋黄含磷 │
│ 较高,如果血磷偏高,可以只吃蛋白 │
│ │
│ ✅ 钠:250mg(良好) │
│ 钠摄入良好,继续保持低盐饮食。 │
└────────────────────────────────┘
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┌────────────────────────────────┐
│ 【AI营养师点评】🤖 │
│ │
│ 💡 优点: │
│ • 食物搭配均衡,包含主食、蛋白质 │
│ 和蔬菜 │
│ • 优质蛋白来源充足(鸡蛋+牛奶) │
│ • 钾、磷、钠控制都很好 │
│ │
│ ⚠️ 改进建议: │
│ 1. 能量略低,建议增加50g主食 │
│ 2. 可以再增加50g低钾水果(如苹果)│
│ 3. 鸡蛋拌面注意不要连续多天吃 │
│ │
│ 🎯 下一餐建议: │
│ 午餐可以吃:米饭+清蒸鱼+炒蔬菜 │
│ (具体参考您的个人营养计划) │
└────────────────────────────────┘
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┌────────────────────────────────┐
│ 【注意事项】 │
│ │
│ ⚠️ 透析患者饮食提醒: │
│ • 严格控制水分摄入 │
│ • 低盐饮食(每日<3g) │
│ • 限制高钾食物(香蕉、橙子等) │
│ • 限制高磷食物(坚果、内脏等) │
│ • 透析日适当增加蛋白质摄入 │
└────────────────────────────────┘
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┌────────────────────────────────┐
│ 【报告尾部】 │
│ │
│ 生成时间:2025-11-20 08:15 │
│ 报告编号:R20251120081501 │
│ │
│ 💡 本报告由AI自动生成,仅供参考 │
│ 具体饮食方案请咨询专业营养师 │
│ │
│ 慢生活智能营养专家 │
│ 让每一餐都营养达标 🥗 │
└────────────────────────────────┘
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
【底部操作栏】
┌────────────────────────────────┐
│ [📥 下载PDF] [➤ 分享] [❤️ 收藏] │
└────────────────────────────────┘
报告功能特性:
-
完整专业 📊
- 包含饮食照片、食物清单、营养分析、AI点评
- 报告格式规范,可用于医疗咨询
- 带报告编号,便于追溯
-
可下载 📥
- 生成PDF格式报告
- 保存到手机相册或文件
- 可打印给医生看
-
可分享 ➤
- 分享到微信好友/群聊
- 分享到朋友圈(带小程序卡片)
- 分享到社区(自动生成社区帖子)
- 发送给营养师(用于咨询)
-
AI生成 🤖
- 营养素详细解读(通俗易懂)
- AI营养师点评(优点+改进建议)
- 下一餐建议
- 注意事项提醒
技术实现:
// 生成PDF报告
async function generateNutritionReport(checkInData) {
// 调用后端API生成PDF
const response = await wx.request({
url: 'https://api.xxx.com/generate-report',
method: 'POST',
data: {
check_in_id: checkInData.id,
user_info: {
name: '张小慢',
ckd_stage: '透析期',
dialysis_type: '腹膜透析'
},
foods: checkInData.recognized_foods,
nutrition: checkInData.nutrition_data,
ai_comments: checkInData.ai_analysis
}
});
return {
pdf_url: 'https://cdn.xxx.com/reports/R20251120081501.pdf',
report_id: 'R20251120081501'
};
}
// 分享报告
function shareReport(reportData) {
wx.shareAppMessage({
title: '我的营养分析报告 - 整体评分92分',
path: `/pages/report/report?id=${reportData.report_id}`,
imageUrl: reportData.cover_image
});
}
页面4.6:AI视频生成页 ⭐⭐⭐核心创新功能
入口:
- 打卡成功页 → 勾选"生成AI视频" → 自动跳转
- 打卡历史 → "一键复制打卡" → 勾选"生成AI视频"
- 营养分析报告页 → 点击"生成视频分享"
功能定位: 将用户的饮食打卡内容自动生成精美短视频(15-30秒),可一键分享到微信、抖音、快手、视频号,极大提升内容传播力和产品曝光度。
页面结构:
┌────────────────────────────────┐
│ < AI视频生成中... [关闭] │
└────────────────────────────────┘
┌────────────────────────────────┐
│ 🎬 AI正在为您生成精美视频 │
│ │
│ ┌──────────────────────────┐ │
│ │ │ │
│ │ [视频预览区域] │ │
│ │ │ │
│ │ 🎨 正在渲染中... │ │
│ │ │ │
│ └──────────────────────────┘ │
│ │
│ ━━━━━━━━━━━━━━━━━━━━━━━━━━ │
│ │
│ 【生成进度】 │
│ ████████████░░░░ 75% │
│ │
│ ✅ 照片处理完成 │
│ ✅ 营养数据提取完成 │
│ ✅ 音乐匹配完成 │
│ ⏳ 正在生成视频特效... │
│ │
│ 预计剩余时间:8秒 │
└────────────────────────────────┘
生成完成后:
┌────────────────────────────────┐
│ < AI视频已生成 [编辑] [×] │
└────────────────────────────────┘
┌────────────────────────────────┐
│ 🎉 您的AI视频已生成! │
│ │
│ ┌──────────────────────────┐ │
│ │ │ │
│ │ [视频播放器] │ │
│ │ │ │
│ │ ▶️ 点击播放预览 │ │
│ │ │ │
│ │ 时长:23秒 │ │
│ └──────────────────────────┘ │
│ │
│ ━━━━━━━━━━━━━━━━━━━━━━━━━━ │
│ │
│ 【视频信息】 │
│ 📹 分辨率:1080×1920(竖屏) │
│ 🎵 背景音乐:《健康每一天》 │
│ ✨ 特效:营养数据动画展示 │
│ 💧 水印:慢生活智能营养专家 │
│ │
│ ━━━━━━━━━━━━━━━━━━━━━━━━━━ │
│ │
│ 【一键分享】 │
│ │
│ ┌──────────┐ ┌──────────┐ │
│ │ 📱 微信 │ │ 🎬 抖音 │ │
│ │ 好友 │ │ │ │
│ └──────────┘ └──────────┘ │
│ │
│ ┌──────────┐ ┌──────────┐ │
│ │ 📲 朋友圈│ │ 🎥 快手 │ │
│ │ │ │ │ │
│ └──────────┘ └──────────┘ │
│ │
│ ┌──────────┐ ┌──────────┐ │
│ │ 📺 视频号│ │ 💾 保存 │ │
│ │ │ │ 到相册 │ │
│ └──────────┘ └──────────┘ │
│ │
│ ━━━━━━━━━━━━━━━━━━━━━━━━━━ │
│ │
│ 【视频内容预览】 │
│ 0s - 封面:饮食照片拼图 │
│ 3s - 转场:营养数据卡片展示 │
│ 8s - 动画:蛋白质达标率进度条 │
│ 12s - 动画:能量达标率进度条 │
│ 16s - 文字:AI营养师点评 │
│ 20s - 结尾:二维码+品牌水印 │
│ │
│ [重新生成] [高级编辑] │
└────────────────────────────────┘
AI视频生成逻辑 ⭐核心技术:
- 视频结构设计(15-30秒):
const videoStructure = {
duration: 23, // 总时长(秒)
scenes: [
{
name: '封面',
duration: 3,
content: {
background: 'gradient_green', // 渐变绿色背景
elements: [
{
type: 'photo_grid', // 照片网格
photos: ['photo1.jpg', 'photo2.jpg', 'photo3.jpg'],
layout: '3-column', // 3列布局
animation: 'fade_in' // 淡入动画
},
{
type: 'text',
content: '今日早餐打卡 ✅',
position: 'top',
font_size: 48,
animation: 'slide_down'
},
{
type: 'text',
content: '2025-11-20',
position: 'bottom',
font_size: 32,
color: '#666'
}
]
}
},
{
name: '营养数据展示',
duration: 10,
content: {
background: 'white',
elements: [
{
type: 'nutrition_card',
data: {
protein: { actual: 18.8, target: 20.0, rate: 94 },
energy: { actual: 452, target: 500, rate: 90 },
potassium: { actual: 320, limit: 350, status: 'safe' },
phosphorus: { actual: 180, limit: 200, status: 'safe' }
},
animation: 'card_flip', // 卡片翻转
stagger: 0.5 // 每个卡片间隔0.5秒
},
{
type: 'progress_bar',
label: '蛋白质达标率',
value: 94,
color: '#4CAF50',
animation: 'progress_fill', // 进度条填充动画
duration: 2
},
{
type: 'progress_bar',
label: '能量达标率',
value: 90,
color: '#FF9800',
animation: 'progress_fill',
duration: 2
}
]
}
},
{
name: 'AI点评',
duration: 7,
content: {
background: 'light_blue',
elements: [
{
type: 'avatar',
image: 'ai_nutritionist_avatar.png',
position: 'left',
animation: 'bounce_in'
},
{
type: 'text_bubble',
content: '💡 食物搭配均衡,蛋白质和能量都达标!建议可以再增加50g蔬菜。',
position: 'right',
animation: 'typewriter', // 打字机效果
duration: 5
},
{
type: 'icon',
name: 'thumbs_up',
position: 'bottom_right',
animation: 'scale_bounce'
}
]
}
},
{
name: '结尾页',
duration: 3,
content: {
background: 'gradient_green',
elements: [
{
type: 'text',
content: '🎯 营养评分:92分(优秀)',
font_size: 44,
position: 'center',
animation: 'zoom_in'
},
{
type: 'qrcode',
url: 'https://xxx.com/mini-program',
position: 'bottom',
size: 120
},
{
type: 'text',
content: '慢生活智能营养专家',
position: 'bottom',
font_size: 24,
color: '#666'
}
]
}
}
],
// 背景音乐
background_music: {
name: '健康每一天',
url: 'https://cdn.xxx.com/music/health_everyday.mp3',
volume: 0.3, // 音量30%
fade_in: 1, // 淡入1秒
fade_out: 1 // 淡出1秒
},
// 转场效果
transitions: [
{ from: 0, to: 1, effect: 'fade' },
{ from: 1, to: 2, effect: 'slide_left' },
{ from: 2, to: 3, effect: 'zoom_out' }
],
// 水印
watermark: {
logo: 'https://cdn.xxx.com/logo.png',
position: 'bottom_right',
opacity: 0.6,
size: 80
}
};
- AI视频生成API调用:
/**
* 调用AI视频生成服务
* @param {Object} checkInData - 打卡数据
* @returns {Promise<Object>} 视频URL和元数据
*/
async function generateAIVideo(checkInData) {
wx.showLoading({ title: 'AI生成中...' });
try {
// 调用后端API(集成第三方视频生成服务)
const response = await wx.request({
url: 'https://api.xxx.com/generate-video',
method: 'POST',
data: {
check_in_id: checkInData.record_id,
// 照片数据
photos: checkInData.photos_json, // ['url1', 'url2', 'url3']
// 营养数据
nutrition: {
protein: checkInData.actual_protein,
energy: checkInData.actual_energy,
potassium: checkInData.actual_potassium,
phosphorus: checkInData.actual_phosphorus,
sodium: checkInData.actual_sodium,
target_protein: checkInData.target_protein,
target_energy: checkInData.target_energy,
nutrition_score: checkInData.nutrition_score
},
// AI点评
ai_comments: checkInData.ai_comments_json,
// 用户备注
user_notes: checkInData.notes,
// 视频配置
video_config: {
duration: 'auto', // 自动计算时长(15-30秒)
resolution: '1080x1920', // 竖屏
fps: 30,
format: 'mp4',
music_style: 'light_and_cheerful', // 轻松欢快
include_qrcode: true, // 包含二维码
watermark: true // 包含水印
}
},
timeout: 60000 // 60秒超时
});
wx.hideLoading();
return {
video_id: response.data.video_id,
video_url: response.data.video_url, // CDN地址
cover_url: response.data.cover_url, // 视频封面
duration: response.data.duration, // 实际时长
file_size: response.data.file_size, // 文件大小(MB)
status: 'success'
};
} catch (error) {
wx.hideLoading();
wx.showToast({ title: '生成失败,请重试', icon: 'error' });
return {
status: 'failed',
error: error.message
};
}
}
// 使用示例
const videoResult = await generateAIVideo({
record_id: 12345,
photos_json: ['https://cdn.xxx.com/photo1.jpg', 'https://cdn.xxx.com/photo2.jpg'],
actual_protein: 18.8,
actual_energy: 452,
// ... 其他数据
});
if (videoResult.status === 'success') {
// 跳转到视频预览页
wx.navigateTo({
url: `/pages/video-preview/video-preview?id=${videoResult.video_id}`
});
}
- 第三方AI视频生成服务推荐:
| 服务商 | 优势 | 价格 | API文档 |
|---|---|---|---|
| 剪映开放平台 | 抖音官方,转场特效丰富 | ¥0.2/视频 | https://openapi.lv.com/ |
| 腾讯云智能视频 | 稳定可靠,AI能力强 | ¥0.3/视频 | https://cloud.tencent.com/product/ivpd |
| 阿里云视频AI | 性价比高 | ¥0.15/视频 | https://ai.aliyun.com/video |
| D-ID(国际) | AI数字人视频 | $0.5/视频 | https://www.d-id.com/ |
推荐方案:剪映开放平台(与抖音深度集成,生成的视频可直接分享到抖音)
- 视频分享功能:
// 分享到微信好友
function shareToWechat(videoData) {
wx.shareAppMessage({
title: '我的健康饮食打卡 🥗 营养评分92分!',
path: `/pages/video-preview/video-preview?id=${videoData.video_id}`,
imageUrl: videoData.cover_url
});
}
// 分享到朋友圈
function shareToMoments(videoData) {
wx.shareVideoMessage({
videoPath: videoData.video_url,
thumbPath: videoData.cover_url,
title: '我的健康饮食打卡 🥗'
});
}
// 保存到相册
async function saveToAlbum(videoData) {
// 下载视频到本地
const res = await wx.downloadFile({
url: videoData.video_url
});
// 保存到相册
await wx.saveVideoToPhotosAlbum({
filePath: res.tempFilePath
});
wx.showToast({ title: '已保存到相册', icon: 'success' });
}
// 分享到抖音/快手(跳转外部APP)
function shareToDouyin(videoData) {
// 先保存到相册
saveToAlbum(videoData).then(() => {
wx.showModal({
title: '提示',
content: '视频已保存到相册,即将跳转到抖音APP,您可以在抖音中选择该视频发布。',
confirmText: '打开抖音',
success: (res) => {
if (res.confirm) {
// 跳转到抖音APP(需要配置URL Scheme)
wx.navigateToMiniProgram({
appId: 'douyin_app_id', // 抖音小程序AppID
path: 'pages/video/publish'
});
}
}
});
});
}
核心价值:
-
提升传播力 ⭐⭐⭐
- 视频比图文更有传播力(转发率提升300%+)
- 一键分享到抖音/快手,扩大用户覆盖面
- 视频自带品牌水印,增加产品曝光
-
降低创作门槛 ⭐⭐⭐
- 用户无需任何视频制作技能
- AI自动生成,15-30秒完成
- 专业级视频效果(转场、特效、音乐)
-
增强用户粘性 ⭐⭐⭐
- 打卡变得更有成就感
- 生成的视频可收藏、回看
- 分享到社交平台获得点赞,增强自我激励
-
商业价值 ⭐⭐⭐
- 视频自带品牌水印和二维码,自然引流
- 短视频平台流量巨大,低成本获客
- 优质UGC视频内容,可用于官方营销
积分激励:
| 行为 | 积分 | 说明 |
|---|---|---|
| 生成AI视频 | +20分 | 首次生成视频 |
| 分享视频到微信 | +10分 | 每日上限30分 |
| 分享视频到抖音/快手 | +30分 | 每日上限30分 |
| 视频被点赞100+ | +50分 | 里程碑奖励 |
| 视频被转发50+ | +100分 | 里程碑奖励 |
页面5:打卡历史/数据分析
入口:个人中心 → 我的健康 → 饮食记录
┌────────────────────────────────┐
│ < 我的饮食记录 │
└────────────────────────────────┘
【筛选】 [本周] [本月] [全部]
【本周数据概览】
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📊 打卡统计
• 打卡天数:5/7天
• 打卡次数:13/21次
• 平均达标率:88%
• 获得积分:150分
📈 营养趋势
[蛋白质摄入折线图]
[能量摄入柱状图]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
【打卡记录】
┌────────────────────────────────┐
│ 11月20日(今天) │
│ ✅ 早餐 7:30 达标率 94% │
│ ✅ 午餐 12:15 达标率 89% │
│ ⭕ 晚餐 未打卡 │
│ │
│ [📊 查看详情] [⚡一键复制打卡] │
│ ↓可进入详情页 ↓快速复制 │
└────────────────────────────────┘
┌────────────────────────────────┐
│ 11月19日 │
│ ✅ 早餐 8:00 达标率 92% ⭐高分 │
│ ✅ 午餐 12:30 达标率 95% ⭐高分 │
│ ✅ 晚餐 18:45 达标率 88% │
│ │
│ [📊 查看详情] [⚡一键复制打卡] │
│ ↓可进入详情页 ↓快速复制 │
└────────────────────────────────┘
💡 操作提示:
• 点击"📊 查看详情" → 进入打卡详情页
└─ 详情页内有"⚡一键复制打卡"按钮
└─ 可查看完整营养分析和照片
└─ 可以选择生成AI视频
• 点击"⚡一键复制打卡" → 直接跳转到复制确认页
└─ 快捷方式,适合快速打卡
└─ 30秒完成打卡
⭐新增功能:一键复制打卡
点击"⚡一键复制打卡"按钮后:
┌────────────────────────────────┐
│ < 一键复制打卡 │
└────────────────────────────────┘
【原打卡记录】
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📅 11月19日 早餐
⭐ 达标率:92%(优秀)
🎯 营养评分:88分
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
【选择要复制的内容】
✅ 饮食照片(已勾选)
┌────┐ ┌────┐ ┌────┐
│图片1│ │图片2│ │图片3│
└────┘ └────┘ └────┘
[点击可预览/取消选择]
✅ 备注说明(已勾选,可修改)
┌────────────────────────────────┐
│ 今天吃的比较清淡,没有放盐, │
│ 味道还不错。鸡蛋只吃了蛋白。 │
│ │
│ [点击修改内容] │
└────────────────────────────────┘
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
【新功能】⚡⚡⚡
☐ ⭐ AI自动生成视频作品(推荐)
┌────────────────────────────────┐
│ 🎬 AI视频生成器 │
│ │
│ 将您的打卡内容自动生成 │
│ 精美短视频,可分享到社区! │
│ │
│ ✨ 自动配背景音乐 │
│ ✨ 智能添加营养数据展示 │
│ ✨ 专业转场和特效 │
│ ✨ 一键分享到抖音/快手/视频号 │
│ │
│ 预计生成时间:15-30秒 │
│ │
│ [预览视频样式] │
└────────────────────────────────┘
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┌────────────────────────────────┐
│ [✅ 确认复制并发布] │
│ │
│ 复制后将跳转到打卡页,您可以: │
│ • 修改照片和备注内容 │
│ • 重新拍摄新照片 │
│ • 选择是否生成AI视频 │
└────────────────────────────────┘
⭐⭐⭐完整的"一键打卡"入口流程图:
【3个主要入口】
入口1:打卡历史页 → 直接复制
┌──────────────────────────┐
│ 我的饮食记录 │
│ ┌──────────────────────┐ │
│ │ 11月19日 早餐 │ │
│ │ ✅ 达标率92% ⭐高分 │ │
│ │ [📊 查看详情] │ │
│ │ [⚡一键复制打卡] ←入口1 │ │
│ └──────────────────────┘ │
└──────────────────────────┘
↓
【复制确认页】
↓
【打卡页】(内容已填充)
↓
【发布完成】
入口2:打卡详情页 → 详细查看后复制
┌──────────────────────────┐
│ 我的饮食记录 │
│ [📊 查看详情] ←先点这里 │
└──────────────────────────┘
↓
┌──────────────────────────┐
│ 打卡详情页 │
│ • 完整照片查看 │
│ • 营养数据详情 │
│ • 菜品清单 │
│ ┌──────────────────────┐ │
│ │ ⚡一键复制打卡 ←入口2 │ │
│ └──────────────────────┘ │
└──────────────────────────┘
↓
【复制确认页】
↓
【打卡页】(内容已填充)
↓
【发布完成】
入口3:社区打卡详情页 → 借鉴他人
┌──────────────────────────┐
│ 社区广场 → 他人的打卡 │
│ [点击帖子查看详情] │
└──────────────────────────┘
↓
┌──────────────────────────┐
│ 打卡详情页(他人的) │
│ • 查看他人饮食方案 │
│ • 营养数据参考 │
│ ┌──────────────────────┐ │
│ │ 🎬一键借鉴打卡 ←入口3 │ │
│ └──────────────────────┘ │
└──────────────────────────┘
↓
【借鉴确认页】
(AI自动调整用量)
↓
【打卡页】(需上传自己的照片)
↓
【发布完成】
(原作者+2分,自己+5分)
页面路径说明:
| 页面 | 路径 | 参数 |
|---|---|---|
| 打卡历史页 | /pages/check-in-history/history |
- |
| 打卡详情页(自己的) | /pages/check-in-detail/detail |
?id={recordId}&type=self |
| 打卡详情页(他人的) | /pages/check-in-detail/detail |
?id={recordId}&type=others |
| 复制确认页 | /pages/copy-confirm/confirm |
?from={recordId} |
| 借鉴确认页 | /pages/learn-confirm/confirm |
?from={recordId} |
| 打卡页 | /pages/check-in/check-in |
?from=copy&recordId={id} |
交互说明:
-
一键复制功能(入口1和2):
- 点击任意历史打卡记录的"⚡一键复制打卡"
- 自动复制该次打卡的:
- ✅ 饮食照片(1-3张)
- ✅ 备注说明(可修改)
- 跳转到打卡页面,内容自动填充
- 获得积分:+5分
-
一键借鉴功能(入口3):
- 查看他人的打卡详情页
- 点击"🎬一键借鉴打卡"
- AI自动调整菜品用量(根据你的营养计划)
- 需要上传自己的饮食照片(必须)
- 获得积分:+5分,原作者+2分
-
内容可编辑:
- 照片:可删除、重新选择、添加新照片
- 备注:可直接修改文字内容
- 语音:可重新录制语音备注
-
AI生成视频 ⭐⭐⭐核心创新:
- 用户勾选"AI自动生成视频作品"
- 点击"发布"后,AI自动处理
- 生成时间:15-30秒
- 视频特性:
- 时长:15-30秒短视频
- 自动配背景音乐(轻松、温馨风格)
- 智能展示营养数据(动画效果)
- 专业转场和特效
- 添加"慢生活智能营养专家"水印
4.6.4 积分奖励规则 ⭐
基础积分规则(v2.2优化后)⭐⭐⭐
| 行为 | 积分 | 每日上限 | 说明 |
|---|---|---|---|
| 完成每餐打卡 | +10分 | 30分 | 早中晚各10分 |
| 上传饮食照片 | +10分 | 30分 | 每餐上传照片额外奖励 |
| AI智能分析 | +10分 | 30分 | 使用AI识别和营养分析 |
| 营养达标90%+ | +5分 | 15分 | 每餐达标额外奖励 |
| 生成AI视频 ⭐⭐⭐新增 | +20分 | 60分 | AI自动生成打卡视频 |
| 分享视频到微信 ⭐新增 | +10分 | 30分 | 分享视频到微信好友/朋友圈 |
| 分享视频到抖音/快手 ⭐新增 | +30分 | 30分 | 分享到短视频平台 |
| 一键复制打卡 ⭐新增 | +5分 | 15分 | 从历史记录快速复制打卡 |
| 连续打卡3天 | +50分 | - | 里程碑奖励 |
| 连续打卡7天 | +100分 | - | 里程碑奖励 |
| 连续打卡30天 | +500分 | - | 里程碑奖励 |
| 视频被点赞100+ ⭐新增 | +50分 | - | 视频里程碑奖励 |
| 视频被转发50+ ⭐新增 | +100分 | - | 视频里程碑奖励 |
| 分享打卡记录 | +5分 | 15分 | 每日最多分享3次 |
| 下载营养报告 | +5分 | 15分 | 下载PDF报告 |
| 分享营养报告 | +10分 | 10分 | 分享报告到微信 |
| 邀请好友打卡 | +50分 | - | 好友完成首次打卡后获得 |
单次打卡最高可得积分(v2.2):
- 基础打卡:10分
- 上传照片:10分
- AI分析:10分
- 营养达标:5分
- 生成AI视频:20分 ⭐新增
- 一键复制:5分 ⭐新增
- 合计:60分/餐(原35分,提升71%)
额外积分:
- 下载报告:5分
- 分享报告:10分
- 分享视频到微信:10分 ⭐新增
- 分享视频到抖音/快手:30分 ⭐新增
- 单次打卡最高可得:115分(原50分,提升130%)
积分获取示例:
场景1:普通打卡(不生成视频)
基础打卡 +10分
上传照片 +10分
AI分析 +10分
营养达标 +5分
下载报告 +5分
━━━━━━━━━━━━━━━━
合计:40分
场景2:完整打卡(生成视频+分享)⭐推荐
基础打卡 +10分
上传照片 +10分
AI分析 +10分
营养达标 +5分
生成AI视频 +20分
分享视频到抖音 +30分
下载报告 +5分
━━━━━━━━━━━━━━━━
合计:90分(提升125%)
场景3:一键复制打卡(快速打卡)
一键复制 +5分
基础打卡 +10分
上传照片 +10分
AI分析 +10分
营养达标 +5分
━━━━━━━━━━━━━━━━
合计:40分(节省时间90%)
会员倍率加成
| 会员等级 | 积分倍率 | 月费 |
|---|---|---|
| 普通用户 | 1.0x | 免费 |
| 高级会员 | 1.5x | ¥29.9 |
| 年度会员 | 2.0x | ¥199(立省159) |
积分兑换商城(优化后)⭐
| 商品 | 所需积分 | 价值 | 说明 |
|---|---|---|---|
| 免费咨询次数(图文) ⭐新增 | 100分 | ¥19 | 向专业营养师提问,1次提问+3次追问 |
| 免费咨询次数(语音/视频) ⭐新增 | 300分 | ¥49 | 与营养师语音/视频通话15分钟 |
| AI营养师不限次咨询(24小时) ⭐新增 | 50分 | ¥9.9 | 24小时内AI营养师无限次提问 |
| 7天高级会员 | 300分 | ¥9.9 | 会员权益(积分倍率1.5x) |
| 30天高级会员 | 1000分 | ¥29.9 | 会员权益(积分倍率1.5x) |
| 专业营养师1对1深度咨询(30分钟) | 2000分 | ¥199 | 包含个性化营养方案制定 |
| 个性化食谱定制(7天) | 800分 | ¥79 | 营养师定制7天食谱 |
| 营养报告深度解读 | 200分 | ¥29 | 营养师解读您的打卡报告 |
| 优惠券-20元 | 400分 | ¥20 | 商城购物通用 |
| 实物礼品(低钠盐、低磷米等) | 1500分 | - | 适合肾病患者的健康食品 |
重点推荐 ⭐:
-
免费咨询次数(图文) - 100积分
- 最实惠的选择
- 连续打卡3天即可获得(30×3+50=140分)
- 适合快速咨询简单问题
- 24小时内营养师回复
-
免费咨询次数(语音/视频) - 300积分
- 连续打卡10天即可获得(30×10+100=400分)
- 更深入的交流
- 可以展示饮食照片获得即时反馈
- 预约制,营养师实时在线
-
AI营养师不限次咨询 - 50积分
- 打卡2天即可获得(30×2=60分)
- 适合频繁提问的用户
- AI即时回复,无需等待
积分消耗核心价值:
打通"打卡赚积分 → 兑换咨询服务 → 获得专业指导 → 更好地打卡"的完整闭环!
打卡赚积分
↓
兑换免费咨询
↓
向营养师提问
↓
获得专业指导
↓
改善饮食习惯
↓
更好地打卡(更高分、更达标)
↓
赚更多积分
咨询服务流程:
-
兑换咨询次数
- 积分中心 → 积分商城 → 选择咨询服务
- 点击"立即兑换"
- 扣除积分,获得咨询次数
-
发起咨询(图文)
- AI营养师页面 → 点击"人工营养师"
- 选择要咨询的问题类型
- 上传相关照片/报告
- 提交问题
- 24小时内收到营养师回复
-
预约咨询(语音/视频)
- AI营养师页面 → 点击"预约视频咨询"
- 选择时间段
- 营养师确认
- 到时间自动发起视频通话
营养师咨询典型场景:
场景1:血钾偏高怎么办?
用户:我最近血钾5.8,医生说偏高了,
饮食应该怎么调整?
营养师:您好,血钾5.8确实偏高了。建议:
1. 蔬菜切小块浸泡30分钟再煮
2. 避免高钾水果(香蕉、橙子)
3. 主食选择米饭,少吃土豆
4. 查看您的打卡记录,我帮您分析...
场景2:打卡报告看不懂
用户:今天的营养报告显示磷超标了,
但我不知道哪个菜磷高
营养师:让我看看您的报告...鸡蛋含磷较高,
建议只吃蛋白不吃蛋黄。另外坚果、
动物内脏都要避免...
场景3:想增加蛋白质摄入
用户:医生说我营养不良,要增加蛋白质,
有什么好的食物推荐吗?
营养师:透析患者需要优质蛋白,推荐:
1. 鸡蛋白(去黄,低磷)
2. 鱼肉(清蒸最好)
3. 瘦肉(少量)
每天建议...
4.6.5 数据结构设计
营养计划表(nutrition_plans)
CREATE TABLE nutrition_plans (
plan_id BIGINT PRIMARY KEY AUTO_INCREMENT,
user_id BIGINT NOT NULL,
-- 健康数据
gender VARCHAR(10),
age INT,
height INT,
weight DECIMAL(5,2),
has_dialysis BOOLEAN,
dialysis_type VARCHAR(20),
creatinine DECIMAL(8,2),
-- 计算结果
egfr DECIMAL(5,2),
standard_weight DECIMAL(5,2),
bmi DECIMAL(4,1),
ckd_stage VARCHAR(50),
protein_intake DECIMAL(5,1),
energy_intake INT,
-- 配餐方案(JSON)
meal_plan_json TEXT,
-- 计划状态
status VARCHAR(20), -- active, completed, abandoned
start_date DATE,
end_date DATE, -- 通常为start_date + 7天
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
INDEX idx_user_id (user_id),
INDEX idx_status (status),
INDEX idx_start_date (start_date)
);
打卡记录表(check_in_records)
CREATE TABLE check_in_records (
record_id BIGINT PRIMARY KEY AUTO_INCREMENT,
user_id BIGINT NOT NULL,
plan_id BIGINT NOT NULL,
check_in_date DATE NOT NULL,
meal_type VARCHAR(20) NOT NULL, -- breakfast, lunch, dinner
check_in_time TIMESTAMP,
-- ⭐优化:简化输入,AI智能识别
photos_json TEXT, -- ⭐必填:饮食照片URL数组(1-3张)
notes TEXT, -- 可选:备注说明(支持语音转文字)
voice_url VARCHAR(500), -- ⭐新增:语音备注原始文件URL
-- ⭐新增:AI识别结果
ai_recognized_foods_json TEXT, -- ⭐AI识别的食物列表 [{name, weight, confidence}]
ai_recognition_status VARCHAR(20), -- pending, success, failed
ai_recognition_time TIMESTAMP, -- AI识别完成时间
is_manually_corrected TINYINT DEFAULT 0, -- 用户是否手动修正了AI识别结果
-- 推荐vs实际(保留原有字段,但现在由AI自动填充)
recommended_dishes_json TEXT, -- 推荐菜品(来自营养计划)
actual_dishes_json TEXT, -- 实际食用(由AI识别结果生成)
-- ⭐新增:详细营养统计(AI自动计算)
actual_protein DECIMAL(5,1),
actual_energy INT,
actual_potassium INT, -- ⭐新增:钾 (mg)
actual_phosphorus INT, -- ⭐新增:磷 (mg)
actual_sodium INT, -- ⭐新增:钠 (mg)
target_protein DECIMAL(5,1),
target_energy INT,
compliance_rate INT, -- 整体达标率(%)
-- ⭐新增:营养分析报告
report_id VARCHAR(50), -- ⭐报告编号 (如 R20251120081501)
report_pdf_url VARCHAR(500), -- ⭐PDF报告下载链接
report_generated_at TIMESTAMP, -- 报告生成时间
report_download_count INT DEFAULT 0, -- 报告下载次数
report_share_count INT DEFAULT 0, -- 报告分享次数
-- ⭐新增:AI营养师点评
ai_comments_json TEXT, -- ⭐AI生成的点评 {strengths:[], suggestions:[], next_meal_advice:''}
nutrition_score INT, -- ⭐营养评分(0-100)
-- ⭐⭐⭐新增:AI视频生成(v2.2核心功能)
video_id VARCHAR(50), -- ⭐视频ID
video_url VARCHAR(500), -- ⭐视频CDN地址
video_cover_url VARCHAR(500), -- ⭐视频封面图
video_duration INT, -- ⭐视频时长(秒)
video_file_size DECIMAL(5,2), -- ⭐视频文件大小(MB)
video_status VARCHAR(20), -- ⭐视频状态:pending, generating, success, failed
video_generated_at TIMESTAMP, -- ⭐视频生成完成时间
video_view_count INT DEFAULT 0, -- ⭐视频观看次数
video_like_count INT DEFAULT 0, -- ⭐视频点赞次数
video_share_count INT DEFAULT 0, -- ⭐视频分享次数
is_video_public TINYINT DEFAULT 1, -- ⭐视频是否公开(1=公开,0=私密)
-- 一键复制打卡
copied_from_record_id BIGINT, -- ⭐复制自哪条打卡记录
is_copied TINYINT DEFAULT 0, -- ⭐是否为复制的打卡(1=是,0=否)
-- 积分奖励
points_earned INT DEFAULT 0,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
UNIQUE KEY uk_user_date_meal (user_id, check_in_date, meal_type),
INDEX idx_user_id (user_id),
INDEX idx_plan_id (plan_id),
INDEX idx_check_in_date (check_in_date),
INDEX idx_report_id (report_id), -- ⭐新增:报告ID索引
INDEX idx_nutrition_score (nutrition_score), -- ⭐新增:评分索引(用于排行榜)
INDEX idx_video_id (video_id), -- ⭐⭐⭐新增:视频ID索引
INDEX idx_video_status (video_status), -- ⭐⭐⭐新增:视频状态索引
INDEX idx_copied_from (copied_from_record_id) -- ⭐⭐⭐新增:复制来源索引
);
-- ⭐数据示例
/*
{
"record_id": 12345,
"photos_json": [
"https://cdn.xxx.com/photos/user123/20251120_breakfast_1.jpg",
"https://cdn.xxx.com/photos/user123/20251120_breakfast_2.jpg"
],
"notes": "今天吃的比较清淡,没有放盐",
"voice_url": "https://cdn.xxx.com/voices/user123/20251120_081505.mp3",
"ai_recognized_foods_json": [
{"name": "牛奶", "weight": 120, "unit": "ml", "confidence": 0.95},
{"name": "鸡蛋拌面", "weight": 150, "unit": "g", "confidence": 0.88},
{"name": "黄瓜", "weight": 80, "unit": "g", "confidence": 0.92}
],
"actual_protein": 18.8,
"actual_energy": 452,
"actual_potassium": 320,
"actual_phosphorus": 180,
"actual_sodium": 250,
"report_id": "R20251120081501",
"report_pdf_url": "https://cdn.xxx.com/reports/R20251120081501.pdf",
"nutrition_score": 92,
"ai_comments_json": {
"strengths": [
"食物搭配均衡,包含主食、蛋白质和蔬菜",
"优质蛋白来源充足(鸡蛋+牛奶)",
"钾、磷、钠控制都很好"
],
"suggestions": [
"能量略低,建议增加50g主食",
"可以再增加50g低钾水果(如苹果)"
],
"next_meal_advice": "午餐可以吃:米饭+清蒸鱼+炒蔬菜"
},
"video_id": "V20251120081520",
"video_url": "https://cdn.xxx.com/videos/V20251120081520.mp4",
"video_cover_url": "https://cdn.xxx.com/videos/V20251120081520_cover.jpg",
"video_duration": 23,
"video_file_size": 5.8,
"video_status": "success",
"video_view_count": 156,
"video_like_count": 32,
"video_share_count": 8,
"is_video_public": 1,
"copied_from_record_id": null,
"is_copied": 0,
"points_earned": 55
}
*/
积分记录表(points_transactions)
CREATE TABLE points_transactions (
transaction_id BIGINT PRIMARY KEY AUTO_INCREMENT,
user_id BIGINT NOT NULL,
transaction_type VARCHAR(20), -- earn, spend
source VARCHAR(50), -- check_in, photo, share, streak, exchange
source_id BIGINT, -- 关联的记录ID
points INT NOT NULL, -- 正数为获得,负数为消费
balance_after INT, -- 交易后余额
description VARCHAR(255),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
INDEX idx_user_id (user_id),
INDEX idx_transaction_type (transaction_type),
INDEX idx_created_at (created_at)
);
用户积分表(user_points)
CREATE TABLE user_points (
user_id BIGINT PRIMARY KEY,
total_points INT DEFAULT 0, -- 累计总积分
available_points INT DEFAULT 0, -- 可用积分
used_points INT DEFAULT 0, -- 已使用积分
-- 打卡统计
total_check_ins INT DEFAULT 0,
current_streak INT DEFAULT 0, -- 当前连续打卡天数
longest_streak INT DEFAULT 0, -- 最长连续打卡天数
last_check_in_date DATE,
-- ⭐新增:咨询服务次数
free_consult_text_count INT DEFAULT 0, -- 可用的图文咨询次数
free_consult_voice_count INT DEFAULT 0, -- 可用的语音/视频咨询次数
ai_consult_unlimited_expire_at TIMESTAMP, -- AI不限次咨询过期时间
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
⭐新增:营养师咨询记录表(nutritionist_consultations)
CREATE TABLE nutritionist_consultations (
consultation_id BIGINT PRIMARY KEY AUTO_INCREMENT,
user_id BIGINT NOT NULL,
-- 咨询类型
consult_type VARCHAR(20) NOT NULL, -- text, voice, video
status VARCHAR(20) NOT NULL, -- pending, in_progress, completed, cancelled
-- 问题内容
question_text TEXT, -- 用户提问
question_images_json TEXT, -- 问题相关图片URL数组
related_report_id VARCHAR(50), -- 关联的营养报告ID
related_check_in_id BIGINT, -- 关联的打卡记录ID
-- 营养师回复
nutritionist_id BIGINT, -- 营养师ID
nutritionist_reply TEXT, -- 营养师回复
reply_images_json TEXT, -- 回复相关图片
-- 追问(最多3次)
follow_up_count INT DEFAULT 0,
follow_up_questions_json TEXT, -- 追问和回复记录
-- 语音/视频咨询
call_start_time TIMESTAMP, -- 通话开始时间
call_end_time TIMESTAMP, -- 通话结束时间
call_duration INT, -- 通话时长(秒)
call_recording_url VARCHAR(500), -- 通话录音URL(可选)
-- 费用
points_cost INT DEFAULT 0, -- 消耗积分
cash_cost DECIMAL(10,2) DEFAULT 0, -- 现金支付(元)
-- 评价
user_rating INT, -- 用户评分(1-5星)
user_feedback TEXT, -- 用户反馈
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
replied_at TIMESTAMP, -- 营养师回复时间
INDEX idx_user_id (user_id),
INDEX idx_nutritionist_id (nutritionist_id),
INDEX idx_status (status),
INDEX idx_created_at (created_at)
);
-- ⭐数据示例
/*
{
"consultation_id": 1001,
"user_id": 123,
"consult_type": "text",
"status": "completed",
"question_text": "我最近血钾5.8,医生说偏高了,饮食应该怎么调整?",
"question_images_json": ["https://cdn.xxx.com/reports/R20251120081501.pdf"],
"related_report_id": "R20251120081501",
"nutritionist_id": 88,
"nutritionist_reply": "您好,血钾5.8确实偏高了。建议:\n1. 蔬菜切小块浸泡30分钟再煮\n2. 避免高钾水果(香蕉、橙子)\n3. 主食选择米饭,少吃土豆\n4. 查看您的打卡记录,我帮您分析...",
"follow_up_count": 2,
"follow_up_questions_json": [
{
"question": "那我可以吃西瓜吗?",
"reply": "西瓜属于中等钾含量水果,建议少量食用(每次不超过100g)",
"created_at": "2025-11-20 10:30:00"
},
{
"question": "好的,谢谢!",
"reply": "不客气,祝您身体健康!",
"created_at": "2025-11-20 10:35:00"
}
],
"points_cost": 100,
"user_rating": 5,
"user_feedback": "营养师回复很专业,解决了我的问题!"
}
*/
4.6.6 核心算法
算法1:连续打卡判断
/**
* 判断是否连续打卡
* @param {string} lastCheckInDate - 上次打卡日期 YYYY-MM-DD
* @param {string} todayDate - 今天日期 YYYY-MM-DD
* @returns {boolean} 是否连续
*/
function isConsecutiveCheckIn(lastCheckInDate, todayDate) {
if (!lastCheckInDate) return false;
const last = new Date(lastCheckInDate);
const today = new Date(todayDate);
// 计算日期差(天数)
const diffDays = Math.floor((today - last) / (1000 * 60 * 60 * 24));
return diffDays === 1; // 恰好相差1天
}
/**
* 更新连续打卡天数
*/
function updateCheckInStreak(userId, todayDate) {
const user = getUserPoints(userId);
if (isConsecutiveCheckIn(user.last_check_in_date, todayDate)) {
// 连续打卡,天数+1
user.current_streak += 1;
user.longest_streak = Math.max(user.longest_streak, user.current_streak);
// 检查里程碑奖励
if (user.current_streak === 3) {
awardPoints(userId, 50, 'streak_3', '连续打卡3天奖励');
} else if (user.current_streak === 7) {
awardPoints(userId, 100, 'streak_7', '连续打卡7天奖励');
} else if (user.current_streak === 30) {
awardPoints(userId, 500, 'streak_30', '连续打卡30天奖励');
}
} else if (user.last_check_in_date !== todayDate) {
// 不连续,重置为1
user.current_streak = 1;
}
user.last_check_in_date = todayDate;
updateUserPoints(user);
}
算法2:营养达标率计算
/**
* 计算营养达标率
* @param {number} actual - 实际摄入
* @param {number} target - 目标摄入
* @returns {number} 达标率(0-100)
*/
function calculateComplianceRate(actual, target) {
if (target === 0) return 100;
const rate = (actual / target) * 100;
// 限制在50-150%范围内显示
return Math.min(Math.max(rate, 50), 150);
}
/**
* 判断是否达标(90%-110%为达标)
*/
function isCompliant(actual, target) {
const rate = calculateComplianceRate(actual, target);
return rate >= 90 && rate <= 110;
}
算法3:积分计算
/**
* 计算单次打卡获得的积分
*/
function calculateCheckInPoints(checkInData, userLevel) {
let points = 0;
// 1. 基础打卡积分
points += 10;
// 2. 上传照片奖励
if (checkInData.photos && checkInData.photos.length > 0) {
points += 10;
}
// 3. 营养达标奖励
const proteinCompliant = isCompliant(
checkInData.actual_protein,
checkInData.target_protein
);
const energyCompliant = isCompliant(
checkInData.actual_energy,
checkInData.target_energy
);
if (proteinCompliant && energyCompliant) {
points += 5; // 营养达标额外奖励
}
// 4. 会员倍率加成
const multiplier = getMemberMultiplier(userLevel);
points = Math.floor(points * multiplier);
return points;
}
/**
* 获取会员积分倍率
*/
function getMemberMultiplier(userLevel) {
const multipliers = {
'free': 1.0,
'premium': 1.5,
'annual': 2.0
};
return multipliers[userLevel] || 1.0;
}
4.6.7 推送通知策略
推送时机
| 时间 | 推送内容 | 目标 |
|---|---|---|
| 早上7:00 | "早安!记得吃早餐并打卡哦 🌅" | 提醒早餐打卡 |
| 中午11:30 | "午餐时间到啦!今天吃什么?🍱" | 提醒午餐打卡 |
| 晚上17:30 | "晚餐准备好了吗?记得打卡哦 🌙" | 提醒晚餐打卡 |
| 晚上21:00 | "今天还有X餐未打卡,快来记录吧" | 提醒补卡 |
| 连续打卡2天 | "再坚持1天就能获得50积分啦!💪" | 激励继续 |
| 断签后第2天 | "好久不见!继续打卡赢积分吧 🎁" | 召回用户 |
推送模板
// 早餐提醒
{
title: "早安!记得吃早餐哦 🌅",
content: "今天推荐:牛奶+鸡蛋拌面,打卡即得10积分",
path: "/pages/check-in/check-in?meal=breakfast"
}
// 连续打卡激励
{
title: "连续打卡{days}天,太棒了!🎉",
content: "再坚持{remaining}天可获得{points}积分奖励",
path: "/pages/nutrition-plan/plan"
}
// 积分到账通知
{
title: "积分到账啦!💰",
content: "打卡成功,获得{points}积分。当前余额:{balance}分",
path: "/pages/points/center"
}
4.6.8 防作弊机制
问题:用户可能虚假打卡或作弊获取积分
防范措施:
-
时间限制
- 早餐:6:00-10:00可打卡
- 午餐:11:00-14:00可打卡
- 晚餐:17:00-21:00可打卡
- 超时可补卡但不获得积分
-
照片验证(可选,高级功能)
- AI识别上传照片是否为食物
- 检测图片是否为网络图片
- 照片EXIF信息验证拍摄时间
-
异常检测
- 单日打卡次数超过3次预警
- 连续多天营养数据完全一致(疑似复制)
- 积分获取速度异常(单日超过100分)
-
人工审核
- 兑换高价值商品时人工审核历史记录
- 用户投诉机制
- 黑名单管理
4.7 积分中心
4.7.1 我的积分页
┌────────────────────────────────┐
│ < 我的积分 │
└────────────────────────────────┘
┌────────────────────────────────┐
│ 💰 可用积分 │
│ │
│ 1,250 分 │
│ │
│ 今日已获得:30分 │
│ 累计获得:3,500分 │
│ 已使用:2,250分 │
└────────────────────────────────┘
【积分明细】 [收入] [支出]
┌────────────────────────────────┐
│ 今天 14:30 │
│ 午餐打卡 │
│ +15分 ✅ │
└────────────────────────────────┘
┌────────────────────────────────┐
│ 今天 07:45 │
│ 早餐打卡(上传照片) │
│ +15分 ✅ │
└────────────────────────────────┘
4.7.2 积分商城
入口:积分中心 → 积分商城
商品分类:
- 会员权益
- 咨询服务
- 优惠券
- 实物礼品
4.7.3 打卡排行榜
规则:
- 本周/本月打卡次数排名
- 前10名额外奖励
- 每周一重置排名
4.8 打卡社区系统(类似小红书)⭐⭐⭐重磅新增
4.8.1 功能定位
核心理念:将个人打卡记录转化为可分享的UGC内容,打造肾病患者的饮食分享社区。
产品价值:
- 📸 内容生产:用户打卡记录变成优质内容,降低UGC门槛
- 👥 社交连接:患者之间互相学习、点赞、评论、关注
- 🎯 激励增强:社交认同感增强打卡动力
- 📊 数据价值:优质内容吸引新用户,提高转化率
- 💰 商业化:为KOL孵化、广告变现打基础
对标产品:
- 小红书:内容社区模式
- Keep运动社区:运动打卡分享
- 薄荷健康:饮食记录社区
4.8.2 核心功能架构
打卡社区
│
├── 社区广场(Feed流)
│ ├── 推荐Tab(算法推荐)
│ ├── 最新Tab(时间排序)
│ ├── 关注Tab(关注用户的内容)
│ └── 热门Tab(高互动内容)
│
├── 内容详情页
│ ├── 图片轮播
│ ├── 文字内容
│ ├── 营养数据卡片
│ ├── 互动操作(点赞/评论/收藏/分享)
│ └── 相关推荐
│
├── 发布流程
│ ├── 选择打卡记录
│ ├── 编辑内容
│ ├── 添加标签
│ └── 发布
│
├── 用户主页
│ ├── 个人资料
│ ├── 打卡作品集
│ ├── 关注/粉丝
│ └── 成就勋章
│
└── 互动系统
├── 点赞
├── 评论(含回复)
├── 收藏
└── 分享
4.8.3 页面设计详解
页面1:社区广场(瀑布流)
入口:
- 首页底部Tab"社区"(新增)
- 打卡成功页"分享到社区"按钮
- 个人中心"我的打卡作品"
页面结构:
┌────────────────────────────────┐
│ 🏠 社区广场 [发布+] │ ← 顶部导航
└────────────────────────────────┘
【筛选Tab】 [推荐] [最新] [关注] [热门]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
【瀑布流布局】(2列)
┌──────────┐ ┌──────────┐
│ 图片 │ │ 图片 │
│ │ │ │
├──────────┤ ├──────────┤
│ 🥗 早餐打 │ │ 🍱 午餐低 │
│ 卡第7天│ │ 钾配餐 │
│ │ │ │
│ 👤 张小慢 │ │ 👤 李大康 │
│ ❤️ 128 │ │ ❤️ 256 │
└──────────┘ └──────────┘
┌──────────┐ ┌──────────┐
│ 图片 │ │ 图片 │
│ │ │ │
├──────────┤ ├──────────┤
│ 🍲 透析餐 │ │ 🥛 低磷早 │
│ 分享 │ │ 餐食谱 │
│ │ │ │
│ 👤 王老师 │ │ 👤 慢生活 │
│ ❤️ 89 │ │ ❤️ 512 │
└──────────┘ └──────────┘
[下拉刷新/上拉加载更多]
卡片信息:
- 封面图(4:3比例,取打卡照片第一张)
- 标题(自动生成或用户编辑)
- 用户头像和昵称
- 点赞数
- 标签(最多2个)
交互:
- 点击卡片→进入详情页
- 长按卡片→快速操作(收藏/不感兴趣)
- 下拉刷新
- 上拉加载更多(每页20条)
页面2:打卡详情页
页面结构:
┌────────────────────────────────┐
│ < 打卡详情 ⋮ │ ← 顶部导航(返回+更多)
└────────────────────────────────┘
┌────────────────────────────────┐
│ 【用户信息栏】 │
│ 👤 张小慢(透析3年) │
│ 📅 2025-11-20 12:30 │
│ [+ 关注] │
└────────────────────────────────┘
┌────────────────────────────────┐
│ 【图片轮播】1/3 │
│ ┌──────────────────────────┐ │
│ │ │ │
│ │ 饮食照片 │ │
│ │ │ │
│ └──────────────────────────┘ │
│ ● ○ ○ │ ← 指示器
└────────────────────────────────┘
┌────────────────────────────────┐
│ 【标题】 │
│ 🥗 早餐打卡第7天!终于坚持下来了 │
│ │
│ 【标签】 │
│ #早餐 #低钾饮食 #透析期 │
└────────────────────────────────┘
┌────────────────────────────────┐
│ 【正文】 │
│ 今天的早餐:牛奶+鸡蛋拌面+黄瓜 │
│ 照片不是很好看但营养达标啦~ │
│ 分享给大家参考 │
└────────────────────────────────┘
┌────────────────────────────────┐
│ 【营养数据卡片】 │
│ ┌──────────┐ ┌──────────┐ │
│ │ 蛋白质 │ │ 能量 │ │
│ │ 18.8g │ │ 452kcal │ │
│ │ 达标94% │ │ 达标90% │ │
│ └──────────┘ └──────────┘ │
│ │
│ 🎯 整体营养达标率:92% │
└────────────────────────────────┘
┌────────────────────────────────┐
│ 【菜品清单】(可折叠) │
│ ☑️ 牛奶 120g │
│ ☑️ 鸡蛋拌面 (面条90g+鸡蛋120g) │
│ ☑️ 凉拌黄瓜 100g │
└────────────────────────────────┘
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
【⭐⭐⭐核心功能:一键打卡入口】
// 场景1:查看【自己的】打卡详情页
┌────────────────────────────────┐
│ 【快速操作】 │
│ ┌──────────────────────────┐ │
│ │ ⚡ 一键复制打卡 │ │
│ │ 快速复用这份饮食方案 │ │
│ └──────────────────────────┘ │
│ │
│ 点击后可以: │
│ ✅ 复制照片和备注到新打卡 │
│ ✅ 修改内容后重新发布 │
│ ✅ 可选生成AI视频 │
│ ✅ 获得5积分奖励 │
│ │
│ 💡 适用场景: │
│ • 今天吃的和之前某天一样 │
│ • 想复用高分打卡记录 │
│ • 快速打卡不想重新拍照 │
└────────────────────────────────┘
// 场景2:查看【他人的】打卡详情页(社区内容)
┌────────────────────────────────┐
│ 【一键借鉴】 │
│ ┌──────────────────────────┐ │
│ │ 🎬 一键借鉴打卡 │ │
│ │ 学习这份营养方案 │ │
│ └──────────────────────────┘ │
│ │
│ 点击后可以: │
│ ✅ 复制菜品清单到我的打卡 │
│ ✅ 根据我的情况调整用量 │
│ ✅ AI生成适合我的食谱 │
│ ✅ 获得5积分奖励 │
│ │
│ 💡 适用场景: │
│ • 看到他人的优质打卡想学习 │
│ • 发现适合自己的饮食方案 │
│ • 需要新的饮食灵感 │
└────────────────────────────────┘
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┌────────────────────────────────┐
│ 【互动栏】 │
│ ❤️ 128 💬 23 ⭐ 45 ➤ 分享 │
└────────────────────────────────┘
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┌────────────────────────────────┐
│ 【评论区】 │
│ 💬 共23条评论 │
│ │
│ 👤 李大康 2小时前 │
│ 太棒了!我也要学习这样吃 │
│ ❤️ 12 💬 回复 │
│ │
│ 👤 王老师 3小时前 │
│ 坚持得很好,营养搭配合理👍 │
│ ❤️ 8 💬 回复 │
│ │
│ [查看全部23条评论] │
└────────────────────────────────┘
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┌────────────────────────────────┐
│ 【相关推荐】 │
│ 更多透析期早餐打卡 → │
│ │
│ [卡片1] [卡片2] [卡片3] │
└────────────────────────────────┘
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
【底部评论输入栏】
┌────────────────────────────────┐
│ [说点什么...] [发送] │
└────────────────────────────────┘
核心元素:
-
用户信息栏
- 头像(圆形,48px)
- 昵称 + 个人标签(如"透析3年")
- 发布时间
- 关注按钮(已关注则显示"已关注")
-
图片轮播
- 支持1-3张照片
- 左右滑动切换
- 底部指示器
- 双击图片放大
-
营养数据卡片
- 蛋白质、能量摄入
- 达标率显示(90%+绿色,<90%橙色)
- 整体营养评分
-
互动栏
- 点赞(红色❤️,点击有动画)
- 评论(显示数量)
- 收藏(星标⭐)
- 分享(微信好友/朋友圈)
-
评论区
- 显示前2-3条评论
- 支持点赞评论
- 支持回复评论
- "查看全部评论"进入评论详情页
-
⭐一键打卡入口(核心功能)
场景A:自己的打卡详情页
- 按钮文案:"⚡ 一键复制打卡"
- 按钮样式:绿色渐变,大按钮,醒目
- 点击后流程:
1. 弹出确认页面(复制内容预览) 2. 用户可以选择要复制的内容: ☑️ 饮食照片(1-3张) ☑️ 备注说明(可修改) ☐ AI生成视频(可选) 3. 点击"确认复制并发布" 4. 跳转到打卡页,内容已自动填充 5. 用户可修改内容 6. 点击"发布"完成打卡 7. 获得积分:一键复制+5分
场景B:他人的打卡详情页(社区内容)
- 按钮文案:"🎬 一键借鉴打卡"
- 按钮样式:蓝色渐变,大按钮
- 点击后流程:
1. 弹出确认页面 2. 显示: • 原作者的菜品清单 • AI自动调整提示:"已根据您的情况调整用量" 3. 用户可以: ☑️ 复制菜品清单 ☑️ AI自动调整为适合我的用量 ☐ 上传自己的饮食照片(必须) ☐ 添加自己的备注 4. 点击"确认并发布" 5. 完成打卡 6. 获得积分:借鉴打卡+5分 7. 原作者获得:被借鉴+2分
技术实现:
/** * 判断打卡详情页的场景 */ function getCheckInDetailScene(recordId, currentUserId) { const record = getCheckInRecordById(recordId); if (record.user_id === currentUserId) { // 场景A:查看自己的打卡 return { scene: 'self', buttonText: '⚡ 一键复制打卡', buttonColor: 'green', action: 'copyOwnCheckIn' }; } else { // 场景B:查看他人的打卡 return { scene: 'others', buttonText: '🎬 一键借鉴打卡', buttonColor: 'blue', action: 'learnFromOthers' }; } } /** * 一键复制自己的打卡 */ function copyOwnCheckIn(recordId) { const record = getCheckInRecordById(recordId); // 复制数据 const copiedData = { photos_json: record.photos_json, // 照片URL数组 notes: record.notes, // 备注说明 copied_from_record_id: recordId, // 记录复制来源 is_copied: 1 // 标记为复制的打卡 }; // 保存到临时存储 wx.setStorageSync('tempCheckInData', copiedData); // 跳转到打卡页 wx.navigateTo({ url: '/pages/check-in/check-in?from=copy&recordId=' + recordId }); } /** * 一键借鉴他人的打卡 */ function learnFromOthers(recordId, currentUserId) { const record = getCheckInRecordById(recordId); // 获取用户自己的营养计划 const myPlan = getNutritionPlan(currentUserId); // AI自动调整菜品用量 const adjustedDishes = adjustDishesForUser( record.actual_dishes_json, myPlan ); // 准备借鉴数据 const learnedData = { dishes_json: adjustedDishes, // AI调整后的菜品清单 reference_record_id: recordId, // 参考来源 reference_user_id: record.user_id, // 原作者ID is_learned_from_others: 1 // 标记为借鉴的打卡 }; // 保存到临时存储 wx.setStorageSync('tempCheckInData', learnedData); // 跳转到打卡页 wx.navigateTo({ url: '/pages/check-in/check-in?from=learn&recordId=' + recordId }); } /** * AI调整菜品用量(根据用户的营养计划) */ function adjustDishesForUser(originalDishes, userPlan) { return originalDishes.map(dish => { // 根据用户的目标蛋白质和能量,按比例调整用量 const ratio = userPlan.target_protein / calculateTotalProtein(originalDishes); return { ...dish, amount: Math.round(dish.amount * ratio), adjusted: true, // 标记为AI调整过的 original_amount: dish.amount // 保留原始用量供参考 }; }); }
页面3:发布打卡到社区
触发时机:
- 打卡成功页点击"分享到社区"
- 饮食记录页选择某次打卡,点击"分享"
- 社区广场点击右上角"发布+"
发布流程:
步骤1:选择打卡记录(如果从打卡成功页进入则跳过)
↓
步骤2:编辑内容
├─ 选择封面图(从打卡照片中选择)
├─ 编辑标题(可使用AI生成建议标题)
├─ 编辑正文描述
├─ 添加话题标签(#早餐 #低钾饮食等)
└─ 隐私设置(公开/仅关注可见/私密)
↓
步骤3:预览确认
↓
步骤4:发布成功
├─ 获得积分 +20分
└─ 跳转到社区广场或详情页
编辑页面设计:
┌────────────────────────────────┐
│ < 分享打卡记录 [发布] │
└────────────────────────────────┘
┌────────────────────────────────┐
│ 【封面图选择】 │
│ ┌────┐ ┌────┐ ┌────┐ │
│ │图1●│ │图2○│ │图3○│ │
│ └────┘ └────┘ └────┘ │
│ 点击选择封面图 │
└────────────────────────────────┘
┌────────────────────────────────┐
│ 【标题】 │
│ 🥗 早餐打卡第7天! │
│ [AI帮你写标题 ✨] │
└────────────────────────────────┘
┌────────────────────────────────┐
│ 【正文】 │
│ ┌──────────────────────────┐ │
│ │分享一下你的打卡心得吧~... │ │
│ │ │ │
│ │ │ │
│ └──────────────────────────┘ │
│ [AI帮你写描述 ✨] │
└────────────────────────────────┘
┌────────────────────────────────┐
│ 【添加话题】 │
│ #早餐 #低钾饮食 #透析期 │
│ [+ 添加话题] │
│ │
│ 推荐话题: │
│ #打卡挑战 #营养达标 #今日食谱 │
└────────────────────────────────┘
┌────────────────────────────────┐
│ 【营养数据预览】(自动带入) │
│ 蛋白质:18.8g 能量:452kcal │
│ 营养达标率:92% │
└────────────────────────────────┘
┌────────────────────────────────┐
│ 【隐私设置】 │
│ ○ 公开(所有人可见) │
│ ○ 仅关注可见 │
│ ○ 私密(仅自己可见) │
└────────────────────────────────┘
┌────────────────────────────────┐
│ 提示:分享到社区可获得20积分 │
└────────────────────────────────┘
AI辅助生成功能 ⭐:
-
AI生成标题建议(3-5个):
- "早餐打卡第7天!坚持就是胜利💪" - "透析患者的低钾早餐,营养满分!" - "营养师推荐的早餐搭配,你也可以试试" -
AI生成描述建议:
今天的早餐包括牛奶120g、鸡蛋拌面和凉拌黄瓜。 营养搭配合理,蛋白质和能量都达标了! 分享给同样需要控制饮食的慢友们参考。
页面4:用户主页
入口:
- 点击任意内容的用户头像
- 个人中心"我的打卡作品"
- 关注列表
页面结构:
┌────────────────────────────────┐
│ < 用户主页 ⋮ │
└────────────────────────────────┘
┌────────────────────────────────┐
│ 【用户资料卡】 │
│ ┌────────┐ │
│ │ 头像 │ 张小慢 │
│ │ 80px │ 透析3年 | CKD 5期 │
│ └────────┘ │
│ │
│ 简介:坚持健康饮食,享受慢生活 │
│ │
│ [✏️ 编辑资料] [+ 关注] │
└────────────────────────────────┘
┌────────────────────────────────┐
│ 【数据统计】 │
│ ┌──────┐ ┌──────┐ ┌──────┐ │
│ │ 128 │ │ 256 │ │ 89 │ │
│ │ 作品 │ │ 获赞 │ │ 粉丝 │ │
│ └──────┘ └──────┘ └──────┘ │
└────────────────────────────────┘
┌────────────────────────────────┐
│ 【成就勋章】 │
│ 🏆 连续打卡7天 🎖️ 获赞100+ │
│ ⭐ 营养达标王 💎 早起达人 │
└────────────────────────────────┘
【Tab切换】 [作品 128] [收藏 45] [点赞 312]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
【作品网格展示】(3列)
┌────┐ ┌────┐ ┌────┐
│图片 │ │图片 │ │图片 │
│❤️12│ │❤️45│ │❤️89│
└────┘ └────┘ └────┘
┌────┐ ┌────┐ ┌────┐
│图片 │ │图片 │ │图片 │
│❤️34│ │❤️67│ │❤️23│
└────┘ └────┘ └────┘
资料卡元素:
- 头像(可点击放大)
- 昵称 + 个人标签(疾病状态、CKD分期)
- 个人简介(可编辑)
- 编辑资料按钮(自己)或关注按钮(他人)
数据统计:
- 作品数:发布的打卡数量
- 获赞数:所有作品获得的点赞总数
- 粉丝数:关注TA的人数
- (点击可进入详情列表)
成就勋章:
- 根据用户行为自动解锁
- 示例:连续打卡、获赞里程碑、营养达标王等
- 可以设置展示顺序
页面5:话题页
入口:点击任意内容的话题标签
页面结构:
┌────────────────────────────────┐
│ < #早餐 [关注] │
└────────────────────────────────┘
┌────────────────────────────────┐
│ 【话题介绍】 │
│ 🥗 #早餐 │
│ │
│ 分享你的健康早餐搭配 │
│ 让每一天从营养满满开始 │
│ │
│ 📊 1.2k 篇内容 | 5.6k 参与 │
└────────────────────────────────┘
【排序】 [最热] [最新]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
【内容列表】(瀑布流布局)
[与社区广场相同的卡片展示]
常见话题:
#早餐 #午餐 #晚餐
#低钾饮食 #低磷饮食 #低钠饮食
#透析期 #非透析期
#营养达标 #打卡挑战
#优质蛋白 #健康食谱
#新手上路 #经验分享
4.8.4 互动系统设计
点赞功能
交互:
- 点击❤️图标触发点赞
- 点赞动画:心形放大+红色填充
- 取消点赞:再次点击,心形缩小
- 实时更新点赞数
积分奖励:
- 发布内容获得第1个赞:+5分
- 发布内容获得第10个赞:+10分
- 发布内容获得第100个赞:+50分
- 给他人点赞:不消耗积分
评论功能
评论层级:
一级评论(对内容)
├─ 二级评论(回复评论)
└─ 二级评论(回复评论)
评论输入:
- 底部固定输入框
- 支持Emoji
- 支持@用户
- 字数限制:500字
评论展示:
- 默认显示前3条
- 按点赞数排序(热门优先)
- 支持点赞评论
- 支持举报评论
积分奖励:
- 发布评论:+2分(每日上限10条)
- 收到评论:+3分
- 评论被点赞:+1分
收藏功能
交互:
- 点击⭐图标收藏
- 收藏后图标变为实心金色
- 取消收藏:再次点击
我的收藏:
- 个人中心"我的收藏"
- 按收藏时间倒序排列
- 支持批量取消收藏
分享功能
分享渠道:
- 微信好友
- 微信朋友圈
- 复制链接
- 生成海报(带二维码)
分享样式:
┌─────────────────────┐
│ │
│ 【封面图】 │
│ │
│ 标题 │
│ 作者 | 点赞数 │
│ │
│ 慢生活智能营养专家 │
│ [小程序码] │
└─────────────────────┘
积分奖励:
- 分享到朋友圈:+5分(每日上限1次)
- 分享被点击:+2分(每日上限5次)
一键打卡功能 ⭐⭐⭐核心创新
功能定位:
核心理念:将优质打卡内容转化为可复用的模板,用户可以一键借鉴,并通过AI生成食谱制作视频。
产品价值:
- 📉 降低打卡门槛 - 不知道吃什么的用户可以直接借鉴优质内容
- 🎬 AI视频生成 - 自动生成食谱制作过程视频,提供更丰富的内容形式
- 🔄 内容复用 - 优质内容被更多人使用,增加原创者成就感
- 📈 提升打卡率 - 降低决策成本,提高用户打卡频率
- 💰 AI技术展示 - 展现产品的AI能力,提升品牌形象
用户场景:
场景1:新手用户不知道吃什么
看到优质打卡内容
↓
点击"一键打卡"
↓
菜品清单自动复制到今日打卡
↓
AI生成该食谱的制作视频
↓
观看视频学习制作
↓
完成打卡 + 获得积分
场景2:资深用户发现好食谱
浏览社区看到喜欢的食谱
↓
点击"一键打卡"
↓
保存为明天的打卡计划
↓
AI视频保存到"我的收藏"
↓
第二天按照视频制作
↓
完成打卡并分享
功能流程:
【步骤1:触发一键打卡】
内容详情页
↓
点击"🎬 一键借鉴打卡 + 生成AI视频"按钮
↓
【步骤2:选择打卡时间】
弹窗确认:
○ 立即打卡(今天)
○ 明天打卡
○ 加入计划(选择日期)
↓
【步骤3:AI视频生成】
显示加载动画:"AI正在为您生成食谱视频..."
├─ 调用AI视频生成接口
├─ 生成时间:30-60秒
└─ 视频时长:1-3分钟
↓
【步骤4:视频预览】
视频生成成功
├─ 播放视频预览
├─ 显示菜品清单
└─ 显示营养数据
↓
【步骤5:确认打卡】
├─ 可编辑菜品清单
├─ 可添加自己的照片
└─ 点击"确认打卡"
↓
【步骤6:打卡成功】
├─ 获得打卡积分 +10分
├─ 使用借鉴内容额外 +5分
├─ AI视频保存到打卡记录
└─ 原创作者获得"被借鉴"徽章
页面设计:
详情页按钮样式:
┌────────────────────────────────┐
│ 【一键打卡按钮】 │
│ ┌──────────────────────────┐ │
│ │ 🎬 一键借鉴打卡 + AI视频 │ │ ← 主按钮(橙色渐变)
│ │ │ │
│ │ 快速复制营养方案 │ │
│ │ ✅ 复制菜品 ✅ AI视频 │ │
│ │ ✅ 获得积分 │ │
│ └──────────────────────────┘ │
└────────────────────────────────┘
点击后弹窗:
╔═════════════════════════════╗
║ 🎬 一键打卡 ║
╠═════════════════════════════╣
║ ║
║ 借鉴这份营养方案: ║
║ • 牛奶 120g ║
║ • 鸡蛋拌面 215g ║
║ • 凉拌黄瓜 100g ║
║ ║
║ 营养数据: ║
║ 蛋白质 18.8g | 能量 452kcal║
║ ║
║ 【选择打卡时间】 ║
║ ○ 立即打卡(今天) ║
║ ○ 明天打卡 ║
║ ○ 加入计划(选择日期) ║
║ ║
║ ┌─────────────────────┐ ║
║ │ ✨ 生成AI食谱视频 │ ║ ← 勾选框(默认勾选)
║ │ (约1分钟生成时间) │ ║
║ └─────────────────────┘ ║
║ ║
║ ┌─────────┐ ┌─────────┐ ║
║ │ 取消 │ │ 确认打卡 │ ║
║ └─────────┘ └─────────┘ ║
╚═════════════════════════════╝
AI视频生成中:
╔═════════════════════════════╗
║ 🎬 AI视频生成中... ║
╠═════════════════════════════╣
║ ║
║ [进度条 ▓▓▓▓▓░░░░ 60%] ║
║ ║
║ ✨ AI正在为您生成食谱视频 ║
║ ║
║ 当前进度: ║
║ ✅ 分析食材和营养数据 ║
║ ✅ 生成制作步骤 ║
║ 🔄 渲染视频画面... ║
║ ⏳ 添加语音讲解... ║
║ ║
║ 预计剩余时间:30秒 ║
║ ║
║ [后台生成,可关闭此页面] ║
╚═════════════════════════════╝
AI视频预览页:
┌────────────────────────────────┐
│ < AI视频预览 [保存] │
└────────────────────────────────┘
┌────────────────────────────────┐
│ 【视频播放器】 │
│ ┌──────────────────────────┐ │
│ │ │ │
│ │ ▶️ 播放视频 │ │
│ │ │ │
│ │ [00:45 / 02:30] │ │
│ └──────────────────────────┘ │
│ │
│ 🎬 营养早餐制作教程 │
│ 时长:2分30秒 │
└────────────────────────────────┘
┌────────────────────────────────┐
│ 【视频内容大纲】 │
│ 0:00 营养介绍 │
│ 0:15 食材准备 │
│ 0:45 制作步骤1:煮面 │
│ 1:15 制作步骤2:煎蛋 │
│ 1:45 制作步骤3:凉拌黄瓜 │
│ 2:15 摆盘和营养总结 │
└────────────────────────────────┘
┌────────────────────────────────┐
│ 【菜品清单】(可编辑) │
│ ☑️ 牛奶 120g │
│ ☑️ 鸡蛋拌面 215g │
│ ☑️ 凉拌黄瓜 100g │
│ [+ 添加其他食物] │
└────────────────────────────────┘
┌────────────────────────────────┐
│ 【上传实拍照片】(可选) │
│ ┌────┐ ┌────┐ ┌────┐ │
│ │ 📷 │ │ 📷 │ │ + │ │
│ └────┘ └────┘ └────┘ │
└────────────────────────────────┘
┌────────────────────────────────┐
│ [稍后打卡] [立即提交] │
└────────────────────────────────┘
AI视频生成技术方案:
方案1:调用第三方AI视频生成API
推荐服务:
- Runway Gen-3 - 文本/图片生成视频
- HeyGen - AI数字人讲解视频
- D-ID - 静态图片转视频+语音
- 剪映开放平台 - 自动剪辑API
生成流程:
/**
* AI视频生成流程
*/
async function generateRecipeVideo(postData) {
// 步骤1:准备视频素材
const materials = {
images: postData.images, // 饮食照片
dishes: postData.dishes, // 菜品清单
nutrition: postData.nutrition, // 营养数据
steps: generateCookingSteps(postData.dishes) // AI生成制作步骤
};
// 步骤2:生成视频脚本
const script = await generateVideoScript(materials);
/*
script = {
scenes: [
{
duration: 5,
type: 'intro',
text: '今天为您介绍一份营养均衡的早餐',
image: materials.images[0]
},
{
duration: 8,
type: 'ingredients',
text: '需要准备:牛奶120g、面条90g、鸡蛋120g...',
image: materials.images[1]
},
// ... 更多场景
],
totalDuration: 150 // 2分30秒
};
*/
// 步骤3:调用AI视频生成API
const videoRequest = {
scenes: script.scenes.map(scene => ({
image: scene.image,
text: scene.text,
duration: scene.duration,
voice: 'zh-CN-female-1', // 中文女声
transition: 'fade' // 淡入淡出过渡
})),
bgm: 'light_cooking', // 背景音乐
resolution: '1080x1920', // 竖屏视频
format: 'mp4'
};
const videoUrl = await callVideoGenerationAPI(videoRequest);
// 步骤4:保存视频记录
await saveVideoRecord({
user_id: postData.user_id,
post_id: postData.post_id,
video_url: videoUrl,
duration: script.totalDuration,
script_json: JSON.stringify(script)
});
return {
video_url: videoUrl,
duration: script.totalDuration,
thumbnail: videoRequest.scenes[0].image
};
}
/**
* AI生成制作步骤
*/
async function generateCookingSteps(dishes) {
const prompt = `
根据以下菜品生成详细的制作步骤:
${dishes.map(d => `- ${d.name} ${d.amount}`).join('\n')}
要求:
1. 步骤简洁明了
2. 适合肾病患者(低钾低磷)
3. 包含烹饪技巧
4. 每个步骤30-60秒
`;
// 调用GPT/Claude生成步骤
const steps = await callLLM(prompt);
return steps;
}
成本估算:
- Runway Gen-3:$0.05/秒,2分30秒视频约$7.5
- HeyGen:$0.03/秒,2分30秒视频约$4.5
- D-ID:$0.02/秒,2分30秒视频约$3
- 剪映:$0.01/秒,2分30秒视频约$1.5
优化方案:
- 仅高级会员可生成AI视频(控制成本)
- 或每日限制生成次数(免费用户1次,会员5次)
- 视频缓存:相同内容只生成一次
方案2:本地模板视频合成
技术方案:
- 提前制作视频模板(不同菜品类型)
- 用户选择后,替换文字和图片
- 使用FFmpeg本地合成
优点:
- 成本低(无需调用第三方API)
- 速度快(本地合成5-10秒)
- 可控性强
缺点:
- 灵活性差(模板固定)
- 视频质量不如AI生成
实现示例:
// 使用FFmpeg合成视频
async function createVideoFromTemplate(template, data) {
const ffmpegCommand = `
ffmpeg -i ${template.video} \
-i ${data.image1} \
-i ${data.image2} \
-filter_complex "
[0:v]drawtext=text='${data.title}':x=50:y=50[v1];
[v1][1:v]overlay=0:200[v2];
[v2][2:v]overlay=0:600[out]
" \
-map "[out]" \
output.mp4
`;
await execAsync(ffmpegCommand);
return 'output.mp4';
}
推荐方案:
阶段1(MVP):使用方案2(模板合成),快速上线验证需求
阶段2(优化):使用方案1(AI生成),提供更好的用户体验
积分奖励规则:
| 行为 | 积分 | 说明 |
|---|---|---|
| 使用一键打卡 | +5分 | 借鉴他人内容并打卡 |
| 生成AI视频 | +10分 | 首次生成AI视频奖励 |
| 内容被借鉴 | +3分 | 每次被借鉴 |
| 内容被借鉴10次 | +50分 | 里程碑奖励(优质内容) |
| 内容被借鉴100次 | +500分 | 超级优质内容 |
成就徽章:
- 🏅 被借鉴达人:内容被借鉴10次以上
- 👑 食谱大师:内容被借鉴100次以上
- 🎬 AI视频达人:生成AI视频10次以上
数据统计:
在原创内容下方显示:
┌────────────────────────────────┐
│ 📊 内容数据 │
│ 被借鉴:128次 │
│ 生成AI视频:89次 │
│ 帮助了128位慢友 │
└────────────────────────────────┘
4.8.5 内容推荐算法
推荐Tab算法
推荐策略:
推荐分数 = 内容质量分 × 0.4
+ 用户兴趣分 × 0.3
+ 时效性分 × 0.2
+ 多样性分 × 0.1
内容质量分:
- 有配图:+20分
- 3张图:+10分
- 有营养数据:+15分
- 字数>50字:+10分
- 点赞数:每10个+5分
- 评论数:每5个+10分
- 收藏数:每1个+15分
用户兴趣分:
- 同疾病状态(透析/非透析):+30分
- 同CKD分期:+20分
- 同餐次(早中晚):+15分
- 关注的用户:+50分
- 历史互动过的标签:+10分
时效性分:
- 24小时内:100分
- 1-3天:80分
- 3-7天:60分
- 7天以上:40分
多样性分:
- 避免连续推荐同一用户的内容
- 避免连续推荐同一话题的内容
热门Tab算法
热门分数:
热门分数 = (点赞数 × 1 + 评论数 × 5 + 收藏数 × 10)
/ (发布时间距离现在的小时数 + 2)^1.5
规则:
- 新发布24小时内的内容优先
- 互动率高的内容优先
- 收藏权重最高(说明内容有价值)
4.8.6 内容审核机制
自动审核:
-
敏感词过滤
- 医疗广告词汇
- 政治敏感词汇
- 联系方式(电话、微信号)
-
图片审核
- 调用腾讯云图片审核API
- 检测违规内容、广告、二维码
-
异常检测
- 短时间大量发布(疑似刷屏)
- 重复内容发布
人工审核:
- 被举报内容人工复审
- 热门内容抽查
- 新用户首次发布审核
处理机制:
- 轻微违规:内容下架+警告
- 严重违规:封禁账号+删除所有内容
- 申诉机制:用户可申诉,人工复审
4.8.7 数据库设计
社区内容表(community_posts)
CREATE TABLE community_posts (
post_id BIGINT PRIMARY KEY AUTO_INCREMENT,
user_id BIGINT NOT NULL,
check_in_record_id BIGINT, -- 关联的打卡记录ID
-- 内容
title VARCHAR(100) NOT NULL,
content TEXT,
cover_image VARCHAR(255), -- 封面图URL
images_json TEXT, -- 图片数组JSON
-- 营养数据(快照,避免join查询)
nutrition_data_json TEXT,
-- 标签和话题
tags_json TEXT, -- 标签数组
-- 互动统计
like_count INT DEFAULT 0,
comment_count INT DEFAULT 0,
collect_count INT DEFAULT 0,
share_count INT DEFAULT 0,
view_count INT DEFAULT 0,
quick_checkin_count INT DEFAULT 0, -- ⭐新增:被一键打卡次数
ai_video_count INT DEFAULT 0, -- ⭐新增:生成AI视频次数
-- 推荐权重(算法计算)
recommend_score DECIMAL(10,2) DEFAULT 0,
hot_score DECIMAL(10,2) DEFAULT 0,
-- 状态
status VARCHAR(20) DEFAULT 'published', -- draft, published, deleted, banned
privacy VARCHAR(20) DEFAULT 'public', -- public, followers_only, private
-- 审核
audit_status VARCHAR(20) DEFAULT 'pending', -- pending, approved, rejected
audit_time TIMESTAMP,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
INDEX idx_user_id (user_id),
INDEX idx_status (status),
INDEX idx_created_at (created_at),
INDEX idx_recommend_score (recommend_score),
INDEX idx_hot_score (hot_score)
);
互动记录表(community_interactions)
CREATE TABLE community_interactions (
interaction_id BIGINT PRIMARY KEY AUTO_INCREMENT,
user_id BIGINT NOT NULL,
post_id BIGINT NOT NULL,
interaction_type VARCHAR(20) NOT NULL, -- like, comment, collect, share, view
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
UNIQUE KEY uk_user_post_type (user_id, post_id, interaction_type),
INDEX idx_post_id (post_id),
INDEX idx_user_id (user_id)
);
评论表(community_comments)
CREATE TABLE community_comments (
comment_id BIGINT PRIMARY KEY AUTO_INCREMENT,
post_id BIGINT NOT NULL,
user_id BIGINT NOT NULL,
content TEXT NOT NULL,
-- 回复关系
parent_comment_id BIGINT, -- NULL为一级评论
reply_to_user_id BIGINT, -- @的用户ID
-- 互动统计
like_count INT DEFAULT 0,
-- 状态
status VARCHAR(20) DEFAULT 'published', -- published, deleted, banned
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
INDEX idx_post_id (post_id),
INDEX idx_user_id (user_id),
INDEX idx_parent_comment_id (parent_comment_id)
);
关注关系表(community_follows)
CREATE TABLE community_follows (
follow_id BIGINT PRIMARY KEY AUTO_INCREMENT,
follower_id BIGINT NOT NULL, -- 关注者
followee_id BIGINT NOT NULL, -- 被关注者
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
UNIQUE KEY uk_follower_followee (follower_id, followee_id),
INDEX idx_follower_id (follower_id),
INDEX idx_followee_id (followee_id)
);
AI视频生成记录表(ai_videos)⭐新增
CREATE TABLE ai_videos (
video_id BIGINT PRIMARY KEY AUTO_INCREMENT,
user_id BIGINT NOT NULL,
post_id BIGINT, -- 关联的社区内容ID(如果是从社区内容生成)
check_in_record_id BIGINT, -- 关联的打卡记录ID
-- 视频信息
video_url VARCHAR(500) NOT NULL, -- 视频URL
thumbnail_url VARCHAR(500), -- 缩略图URL
duration INT NOT NULL, -- 视频时长(秒)
resolution VARCHAR(20) DEFAULT '1080x1920', -- 分辨率
file_size BIGINT, -- 文件大小(字节)
-- 视频内容
title VARCHAR(100),
script_json TEXT, -- 视频脚本JSON(场景、文字、时长)
dishes_json TEXT, -- 菜品清单JSON
nutrition_json TEXT, -- 营养数据JSON
-- 生成信息
generation_method VARCHAR(20) DEFAULT 'ai', -- ai, template
ai_provider VARCHAR(50), -- runway, heygen, d-id, jianyng等
generation_cost DECIMAL(10,4), -- 生成成本(美元)
generation_time INT, -- 生成耗时(秒)
-- 使用统计
view_count INT DEFAULT 0, -- 观看次数
download_count INT DEFAULT 0, -- 下载次数
share_count INT DEFAULT 0, -- 分享次数
-- 状态
status VARCHAR(20) DEFAULT 'generating', -- generating, completed, failed
error_message TEXT, -- 失败原因
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
completed_at TIMESTAMP, -- 生成完成时间
INDEX idx_user_id (user_id),
INDEX idx_post_id (post_id),
INDEX idx_status (status),
INDEX idx_created_at (created_at)
);
一键打卡记录表(quick_checkin_records)⭐新增
CREATE TABLE quick_checkin_records (
quick_checkin_id BIGINT PRIMARY KEY AUTO_INCREMENT,
user_id BIGINT NOT NULL, -- 借鉴者
source_post_id BIGINT NOT NULL, -- 借鉴的社区内容ID
source_user_id BIGINT NOT NULL, -- 原创者
-- 借鉴信息
dishes_json TEXT, -- 借鉴的菜品清单(可能有修改)
nutrition_json TEXT, -- 营养数据
is_modified BOOLEAN DEFAULT FALSE, -- 是否修改了菜品清单
-- 打卡信息
checkin_date DATE NOT NULL, -- 打卡日期
meal_type VARCHAR(20) NOT NULL, -- breakfast, lunch, dinner
check_in_record_id BIGINT, -- 生成的打卡记录ID(关联check_in_records表)
-- AI视频
ai_video_id BIGINT, -- 生成的AI视频ID
video_generated BOOLEAN DEFAULT FALSE, -- 是否生成了AI视频
-- 积分奖励
points_earned INT DEFAULT 0, -- 借鉴者获得的积分
points_to_author INT DEFAULT 0, -- 原创者获得的积分
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
completed_at TIMESTAMP, -- 打卡完成时间
INDEX idx_user_id (user_id),
INDEX idx_source_post_id (source_post_id),
INDEX idx_source_user_id (source_user_id),
INDEX idx_checkin_date (checkin_date)
);
表关系说明:
community_posts(社区内容)
↓ 1:N
quick_checkin_records(一键打卡记录)
↓ 1:1
check_in_records(打卡记录)
↓ 1:1
ai_videos(AI视频)
数据流转:
1. 用户在社区看到内容(community_posts)
2. 点击"一键打卡"创建记录(quick_checkin_records)
3. 选择生成AI视频(ai_videos,status='generating')
4. AI视频生成完成(ai_videos,status='completed')
5. 用户确认打卡(check_in_records)
6. 更新一键打卡记录(quick_checkin_records.completed_at)
7. 原创者获得积分和徽章
8. 更新社区内容统计(community_posts被借鉴次数)
4.8.8 运营策略
冷启动策略
官方账号内容:
- 创建10-20个"营养师"官方账号
- 提前准备100+优质打卡内容
- 模拟真实用户行为(点赞、评论)
种子用户激励:
- 前100名发布用户:额外200积分
- 前1000名发布用户:额外50积分
- 优质内容奖励:官方推荐位+100积分
内容激励
创作者等级:
Lv1 新手:发布1-10篇
Lv2 达人:发布11-50篇
Lv3 专家:发布51-100篇
Lv4 大咖:发布100+篇 + 平均获赞50+
等级权益:
- Lv2:解锁话题创建权限
- Lv3:内容优先推荐
- Lv4:认证标识 + 优先审核 + 流量扶持
每月榜单:
- 最受欢迎创作者(按获赞数)
- 最勤奋创作者(按发布数)
- 最佳新人(新注册用户中获赞最多)
- 榜单奖励:实物礼品 + 荣誉勋章
活动运营
定期话题活动:
#21天打卡挑战(每月)
├─ 连续打卡21天并分享到社区
├─ 参与用户瓜分10000积分池
└─ 前10名额外奖励会员
#晒出你的营养早餐(每周)
├─ 分享早餐打卡+话题标签
├─ 评选最佳早餐TOP10
└─ 奖励积分+荣誉勋章
#透析患者的一日三餐(节日)
├─ 肾脏日、营养日等特殊日期
├─ 征集优质内容评奖
└─ 线下活动邀请
五、视觉设计规范
5.1 配色方案
主色调:橙色系
Primary-50: #fff7ed
Primary-100: #ffedd5
Primary-200: #fed7aa
Primary-300: #fdba74
Primary-400: #fb923c
Primary-500: #f97316 // 主色
Primary-600: #ea580c
Primary-700: #c2410c
辅助色
Blue: #3b82f6 // AI功能
Green: #10b981 // 食物百科
Purple: #8b5cf6 // 营养知识
Red: #ef4444 // 警告/慎用
中性色
Gray-50: #f9fafb
Gray-100: #f3f4f6
Gray-200: #e5e7eb
Gray-400: #9ca3af
Gray-600: #4b5563
Gray-900: #111827
5.2 字体规范
| 用途 | 大小 | 粗细 | 颜色 |
|---|---|---|---|
| 页面标题 | 16px | 500 | Gray-900 |
| 区块标题 | 18px | 600 | Gray-900 |
| 正文 | 14px | 400 | Gray-700 |
| 辅助文字 | 12px | 400 | Gray-500 |
| 大数字 | 24-32px | 700 | Primary-700 |
5.3 组件规范
按钮
主按钮:
background: linear-gradient(to right, #f97316, #ea580c);
border-radius: 9999px;
height: 48px;
color: white;
box-shadow: 0 4px 6px rgba(249, 115, 22, 0.3);
次按钮:
background: white;
border: 2px solid #f97316;
border-radius: 9999px;
height: 48px;
color: #f97316;
卡片
标准卡片:
background: white;
border-radius: 16px;
padding: 20px;
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
渐变卡片:
background: linear-gradient(to bottom right, #f97316, #ea580c);
border-radius: 16px;
padding: 20px;
color: white;
输入框
background: #f9fafb;
border: 1px solid #e5e7eb;
border-radius: 12px;
height: 48px;
padding: 0 16px;
5.4 图标规范
- 使用Lucide Icons图标库
- 尺寸:16px(小)、20px(中)、24px(大)
- 颜色:根据场景使用主色或灰色
5.5 间距规范
xs: 4px
sm: 8px
md: 12px
lg: 16px
xl: 20px
2xl: 24px
3xl: 32px
5.6 动画规范
点击缩放:
active:scale-95 {
transform: scale(0.95);
}
transition: transform 0.2s;
悬停放大:
hover:scale-110 {
transform: scale(1.1);
}
transition: transform 0.3s;
六、技术架构
6.1 平台支持
| 平台 | 优先级 | 技术栈 | 说明 |
|---|---|---|---|
| 微信小程序 | 🔴 P0 | WXML + WXSS + JS | 主要平台 |
| Web端 | 🟡 P1 | React + TypeScript + Tailwind | 辅助平台(营养师/PC端) |
| H5 | 🟢 P2 | - | 后续考虑 |
| App | 🟢 P2 | - | 后续考虑 |
6.2 技术选型
微信小程序(当前)
语言:JavaScript
框架:原生小程序
UI:自定义组件
状态管理:Page.data + globalData
存储:wx.storage
Web端(Figma设计)
语言:TypeScript
框架:React 18
UI库:shadcn/ui (Radix UI)
样式:Tailwind CSS 3
状态管理:useState (SPA)
路由:State-based routing
建议方案(多端统一)
方案1:Taro 3.x
- 一套代码,多端运行
- React语法
- 支持小程序、H5、App
方案2:uni-app
- Vue语法
- 生态成熟
- 插件丰富
方案3:独立开发
- 小程序:原生开发(已完成)
- Web:基于Figma设计开发
- 优点:性能最优,体验最好
- 缺点:维护成本高
6.3 后端架构(需开发)
API服务
├── 用户服务
│ ├── 用户注册/登录
│ ├── 健康档案管理
│ └── 用户数据同步
│
├── 计算服务
│ ├── eGFR计算
│ ├── 营养需求计算
│ └── 食物交换份计算
│
├── 食谱服务
│ ├── AI食谱生成
│ ├── 食谱推荐
│ └── 食谱收藏
│
├── AI服务
│ ├── 智能问答(调用LLM API)
│ ├── 食材替换建议
│ └── 烹饪方法生成
│
└── 数据服务
├── 食物营养数据库
├── 知识库内容
└── 用户行为分析
6.4 数据库设计
用户表(users):
user_id, openid, nickname, avatar, gender,
age, height, weight, has_dialysis, dialysis_type,
creatinine, created_at, updated_at
营养计划表(nutrition_plans):
plan_id, user_id, egfr, standard_weight, bmi,
ckd_stage, protein_intake, energy_intake,
created_at
食谱表(recipes):
recipe_id, user_id, meal_type, dishes_json,
total_protein, total_energy, created_at
食物库表(foods):
food_id, name, category, image, nutrients_json,
caution_level, created_at
对话记录表(chat_history):
chat_id, user_id, message, sender, created_at
七、核心计算公式(开发必读)
7.1 eGFR计算(CKD-EPI公式)
/**
* 计算估算肾小球滤过率(eGFR)
* 基于CKD-EPI公式简化版
*/
function calculateEGFR(gender, age, creatinine) {
// creatinine单位:μmol/L,需转换为mg/dL
const creatinineMgDl = creatinine / 88.4;
let egfr;
if (gender === 'male') {
egfr = 175 * Math.pow(creatinineMgDl, -1.154) * Math.pow(age, -0.203);
} else {
egfr = 175 * Math.pow(creatinineMgDl, -1.154) * Math.pow(age, -0.203) * 0.742;
}
return parseFloat(egfr.toFixed(2));
}
7.2 标准体重计算
/**
* 计算标准体重
* 基于东方人体型标准
*/
function calculateStandardWeight(gender, height) {
let standardWeight;
if (gender === 'male') {
standardWeight = (height - 80) * 0.7;
} else {
standardWeight = (height - 70) * 0.6;
}
return parseFloat(standardWeight.toFixed(1));
}
7.3 BMI计算
/**
* 计算体重指数(BMI)
*/
function calculateBMI(weight, height) {
const heightInMeters = height / 100;
const bmi = weight / (heightInMeters * heightInMeters);
return parseFloat(bmi.toFixed(1));
}
/**
* 判断BMI状态
*/
function getBMIStatus(bmi) {
if (bmi < 18.5) return '过轻';
if (bmi >= 18.5 && bmi < 25) return '正常';
if (bmi >= 25 && bmi < 30) return '过重';
return '肥胖';
}
7.4 CKD分期判断
/**
* 判断CKD分期
*/
function getCKDStage(egfr, hasDialysis, dialysisType) {
if (hasDialysis) {
return dialysisType === 'hemodialysis'
? '透析期(血液透析)'
: '透析期(腹膜透析)';
}
if (egfr >= 90) return 'CKD 1期';
if (egfr >= 60) return 'CKD 2期';
if (egfr >= 30) return 'CKD 3期';
if (egfr >= 15) return 'CKD 4期';
return 'CKD 5期';
}
7.5 营养需求计算
/**
* 计算每日蛋白质摄入量(g/天)
*/
function calculateProteinIntake(standardWeight, hasDialysis) {
if (hasDialysis) {
// 透析期:1.0-1.2 g/kg/天
return parseFloat((standardWeight * 1.2).toFixed(1));
} else {
// 非透析期:0.6-0.8 g/kg/天
return parseFloat((standardWeight * 0.8).toFixed(1));
}
}
/**
* 计算每日能量摄入量(kcal/天)
*/
function calculateEnergyIntake(standardWeight) {
// 30-35 kcal/kg/天
return parseFloat((standardWeight * 35).toFixed(0));
}
7.6 食物交换份计算
/**
* 计算食物交换份
* 基于《中国食物成分表》和《慢性肾脏病患者膳食指导》
*/
function calculateFoodPortions(proteinIntake, energyIntake) {
return [
{
category: '谷薯50g',
amount: '50g',
portions: parseFloat((energyIntake / 200).toFixed(1)) // 示例
},
{
category: '淀粉100g',
amount: '100g',
portions: parseFloat((energyIntake / 2000).toFixed(2))
},
{
category: '绿叶蔬菜200g',
amount: '200g',
portions: 1
},
{
category: '瓜果蔬菜200g',
amount: '200g',
portions: 2
},
{
category: '奶类230g',
amount: '230g',
portions: 1
},
{
category: '肉蛋类50/60g',
amount: '50/60g',
portions: parseFloat((proteinIntake / 10).toFixed(0))
},
{
category: '油脂类10g',
amount: '10g',
portions: parseFloat((energyIntake / 300).toFixed(1))
}
];
}
八、开发计划
8.1 MVP版本(v1.0)- 已完成 ✅
时间:已完成 平台:微信小程序
已实现功能:
- ✅ 食谱计算器(表单 + 结果)
- ✅ AI营养师问答
- ✅ 食物百科
- ✅ 营养知识库
- ✅ 个人中心
- ✅ 首页导航
待优化:
- ⚠️ 缺少完整配餐展示
- ⚠️ AI回复逻辑较简单
- ⚠️ UI风格需提升
8.2 v2.0版本(当前目标)⭐
时间:6-8周 重点:融合Figma设计的优秀特性 + 饮食打卡激励系统 + 打卡社区
核心任务:
| 任务 | 优先级 | 工时 | 负责人 |
|---|---|---|---|
| 完整配餐展示 | 🔴 P0 | 3天 | - |
| 饮食打卡系统 ⭐ | 🔴 P0 | 5天 | - |
| 积分激励系统 ⭐ | 🔴 P0 | 3天 | - |
| 打卡社区系统 ⭐⭐⭐ | 🔴 P0 | 10-15天 | - |
| UI视觉升级 | 🔴 P0 | 2天 | - |
| AI对话优化 | 🟡 P1 | 2天 | - |
| 食物库扩充 | 🟡 P1 | 2天 | - |
| 推送通知功能 | 🟡 P1 | 2天 | - |
| 用户反馈收集 | 🟢 P2 | 1天 | - |
详细开发任务:
任务1:完整配餐展示(P0)
- 设计配餐数据结构(JSON格式)
- 创建配餐卡片组件(WXML + WXSS)
- 实现早中晚三餐切换
- 添加菜品图片(优选高质量图片)
- 显示食材清单和用量
- 测试不同设备适配
数据结构设计:
// miniprogram/data/meal-plan.js
module.exports = {
breakfast: {
name: '早餐',
time: '7:00 - 8:00',
icon: '🌅',
color: 'linear-gradient(to right, #fb923c, #ec4899)',
dishes: [
{
id: 1,
name: '牛奶',
image: '/images/foods/milk.jpg',
ingredients: [
{ name: '牛奶', amount: '120g' }
],
nutrition: {
protein: 3.6,
energy: 72
}
},
{
id: 2,
name: '鸡蛋拌面',
image: '/images/foods/egg-noodles.jpg',
ingredients: [
{ name: '面条', amount: '90g' },
{ name: '鸡蛋', amount: '120g' },
{ name: '葱花', amount: '5g' }
],
nutrition: {
protein: 15.2,
energy: 380
}
},
// ...
]
},
lunch: { /* ... */ },
dinner: { /* ... */ }
};
任务2:UI视觉升级(P0)
- 统一配色方案(橙色系)
- 按钮改为渐变样式
- 卡片增加阴影和圆角
- 添加微交互动画
- 优化字体大小和间距
- 测试老年用户友好性
任务3:AI对话优化(P1)
- 扩展关键词匹配规则
- 增加更多场景的回复模板
- 优化回复内容结构
- 添加表情符号和格式化
- 实现打字动画效果
- 测试对话流畅度
任务4:食物库扩充(P1)
- 从公开数据源导入食物数据
- 补充缺失的营养成分
- 添加食物图片(至少200种)
- 标注适宜性等级
- 编写食用建议
- 数据质量审核
任务5:饮食打卡系统(P0)⭐核心功能
前端开发(小程序):
- 计算结果页增加"采纳并开始打卡"按钮
- 创建"我的营养计划"页面
- 营养目标卡片
- 打卡日历组件
- 连续打卡天数显示
- 创建"每日打卡"页面
- 早中晚Tab切换
- 推荐菜品复选框列表
- 实际食用量输入框
- 照片上传组件(3张)
- 备注输入框
- 营养统计实时计算
- 创建"打卡成功"页面
- 积分获得动画
- 连续打卡提示
- 营养达标分析
- 分享功能
- 创建"饮食记录"页面
- 打卡历史列表
- 营养趋势图表
- 数据筛选(本周/本月)
后端开发(API):
- 营养计划表CRUD接口
- 打卡记录提交接口
- 打卡记录查询接口
- 连续打卡计算逻辑
- 营养达标率计算
- 打卡数据统计接口
- 照片上传和存储
数据库设计:
- nutrition_plans表(营养计划)
- check_in_records表(打卡记录)
- user_points表(用户积分)
- points_transactions表(积分流水)
测试:
- 打卡流程完整测试
- 连续打卡逻辑测试
- 断签重置测试
- 照片上传测试
- 性能测试(1000+打卡记录)
任务6:积分激励系统(P0)⭐核心功能
前端开发:
- 创建"积分中心"页面
- 积分余额展示
- 积分明细列表
- 收入/支出筛选
- 创建"积分任务"页面
- 每日任务列表
- 任务完成进度
- 任务奖励说明
- 创建"积分商城"页面
- 商品分类Tab
- 商品卡片列表
- 兑换按钮
- 兑换确认弹窗
- 创建"打卡排行榜"页面
- 本周/本月排行
- 我的排名
- 奖励规则说明
- 首页增加积分入口
- 个人中心显示积分余额
后端开发:
- 积分获得接口(打卡、照片、分享)
- 积分消费接口(兑换商品)
- 积分流水查询接口
- 连续打卡奖励逻辑
- 积分排行榜接口
- 商品兑换记录接口
- 会员倍率加成逻辑
- 防作弊检测
积分商城商品配置:
- 配置会员权益商品(7天/30天)
- 配置咨询服务商品
- 配置优惠券商品
- 实物礼品对接供应商
测试:
- 积分获得正确性测试
- 积分消费扣减测试
- 连续打卡奖励测试
- 兑换流程测试
- 异常行为检测测试
任务7:推送通知功能(P1)
- 集成微信小程序订阅消息
- 配置打卡提醒模板(早中晚)
- 配置积分到账通知模板
- 配置连续打卡激励模板
- 配置断签召回模板
- 用户订阅设置页面
- 推送时机策略实现
- 推送效果数据统计
任务8:打卡社区系统(P0)⭐⭐⭐重磅功能
前端开发(小程序):
- 创建"社区"Tab(底部导航新增)
- 社区广场页面
- 瀑布流布局(左右2列)
- 筛选Tab(推荐/最新/关注/热门)
- 内容卡片组件
- 下拉刷新、上拉加载
- 内容详情页
- 图片轮播组件
- 营养数据卡片
- 互动栏(点赞/评论/收藏/分享)
- 评论列表和输入框
- 相关推荐
- 发布页面
- 选择打卡记录
- 编辑标题和描述
- 选择封面图
- 添加话题标签
- AI生成建议(标题/描述)
- 隐私设置
- 用户主页
- 用户资料卡
- 数据统计(作品/获赞/粉丝)
- 成就勋章
- 作品网格展示
- 关注/粉丝列表
- 话题页
- 话题介绍
- 话题内容列表
- 关注话题
- 评论详情页
- 一级评论列表
- 二级回复列表
- 评论输入框
- 点赞评论
后端开发(API):
- 内容发布接口
- 内容列表接口(分推荐/最新/关注/热门)
- 内容详情接口
- 内容编辑/删除接口
- 点赞接口(内容/评论)
- 评论发布接口
- 评论列表接口
- 收藏接口
- 分享接口
- 关注/取消关注接口
- 用户主页数据接口
- 话题列表/详情接口
- 推荐算法实现
- 热门算法实现
数据库设计:
- community_posts表(社区内容)
- community_interactions表(互动记录)
- community_comments表(评论)
- community_follows表(关注关系)
- community_topics表(话题)
内容审核:
- 集成腾讯云内容安全API
- 敏感词过滤
- 图片审核
- 举报机制
- 人工审核后台
算法优化:
- 推荐算法调优
- 热门算法调优
- 去重策略
- 多样性保证
测试:
- 发布流程测试
- 互动功能测试(点赞/评论/收藏)
- 推荐算法效果测试
- 性能测试(10000+内容)
- 审核机制测试
工时估算:10-15天
任务9:一键打卡 + AI视频生成功能(P0)⭐⭐⭐重磅功能
前端开发(小程序):
- 内容详情页增加"一键打卡"按钮
- 按钮样式设计(渐变色、图标)
- 点击动画效果
- 权限判断(是否已打卡)
- 一键打卡弹窗
- 选择打卡时间(立即/明天/选择日期)
- 显示菜品清单(可编辑)
- 显示营养数据
- 生成AI视频选项(勾选框)
- 确认/取消按钮
- AI视频生成进度页
- 进度条动画
- 生成步骤展示
- 预计剩余时间
- 后台生成提示
- 失败重试机制
- AI视频预览页
- 视频播放器
- 视频大纲展示
- 菜品清单编辑
- 实拍照片上传
- 保存/打卡按钮
- 我的AI视频列表页
- 视频缩略图网格
- 视频时长标识
- 删除/分享功能
- 被借鉴统计展示
- 内容详情页显示被借鉴次数
- 用户主页显示被借鉴总数
- 成就徽章展示
后端开发(API):
- 一键打卡接口
- 复制菜品清单到打卡
- 创建一键打卡记录
- 积分奖励计算
- 原创者通知
- AI视频生成接口
- 视频脚本生成(调用LLM)
- 调用AI视频生成服务
- 视频状态轮询
- 视频URL回调
- 失败重试机制
- 成本统计
- AI视频管理接口
- 视频列表查询
- 视频详情查询
- 视频删除接口
- 视频分享接口
- 被借鉴统计接口
- 更新内容被借鉴次数
- 查询被借鉴排行
- 徽章解锁判断
AI集成:
- 选择AI视频生成服务商
- 对比Runway/HeyGen/D-ID/剪映
- 注册账号和API密钥
- 测试生成效果和成本
- 视频脚本生成
- 集成GPT/Claude API
- 设计Prompt模板
- 生成制作步骤
- 生成配音文本
- 视频合成流程
- 图片预处理(裁剪、压缩)
- 场景时长计算
- 转场效果设置
- 背景音乐添加
- 字幕添加
- 备选方案:模板视频合成
- 制作视频模板(3-5个常见场景)
- 使用FFmpeg本地合成
- 文字和图片替换
数据库设计:
- ai_videos表(AI视频记录)
- quick_checkin_records表(一键打卡记录)
- community_posts表增加字段(被借鉴次数、AI视频次数)
成本控制:
- 会员权限设置
- 免费用户:每日1次AI视频生成
- 高级会员:每日5次
- 年度会员:无限次
- 视频缓存机制
- 相同内容只生成一次
- 缓存24小时
- 成本监控
- 每日生成次数统计
- 每日成本统计
- 超预算预警
测试:
- 一键打卡流程测试
- AI视频生成测试(成功/失败场景)
- 视频播放测试(不同网络环境)
- 积分奖励测试
- 并发测试(多人同时生成)
- 成本测试(单个视频成本)
工时估算:7-10天
8.3 v2.5版本(中期优化)
时间:1个月 重点:后端集成 + 数据持久化
核心功能:
- 🔄 用户登录体系
- 💾 数据云端存储
- 📊 个人营养报告
- 🔔 用药/透析提醒
- 📈 数据趋势分析
8.4 v3.0版本(长期规划)
时间:3-6个月 重点:真实AI集成 + 多端支持
核心功能:
- 🤖 真实AI(调用GPT/Claude API)
- 🌐 Web端开发(基于Figma设计)
- 📱 多端统一(Taro/uni-app重构)
- 👨⚕️ 营养师认证入驻
- 💰 商业化(会员、咨询服务)
九、运营策略
9.1 推广策略
线上渠道:
- 微信社群:肾病患者交流群
- 公众号推文:营养科普 + 小程序入口
- 短视频:抖音/快手科普内容
- 医院合作:医生推荐使用
线下渠道:
- 医院透析中心:海报/传单
- 患者教育讲座:现场演示
- 营养门诊:医生推荐
9.2 内容运营
每周更新:
- 2-3篇营养知识文章
- 5-10个新食谱
- 1个科普视频
节日活动:
- 世界肾脏日(3月第二个周四)
- 全国爱肾日(5月第二个周四)
- 营养周(5月第三周)
9.3 用户激励
积分系统:
- 每日登录:+10分
- 完成计算:+20分
- 分享食谱:+15分
- 咨询AI:+5分
会员体系:
- 免费版:基础功能
- 高级版(¥29.9/月):
- 无限次AI咨询
- 专属营养师
- 个性化报告
- 优先客服
十、风险与应对
10.1 技术风险
| 风险 | 可能性 | 影响 | 应对措施 |
|---|---|---|---|
| AI回复不准确 | 高 | 中 | 人工审核 + 免责声明 |
| 服务器崩溃 | 中 | 高 | 负载均衡 + 备份 |
| 数据泄露 | 低 | 高 | 加密存储 + 权限控制 |
| 小程序审核不通过 | 中 | 中 | 遵守规范 + 资质齐全 |
10.2 医疗风险
重要声明:
⚠️ 医疗免责声明
本小程序提供的营养计算和建议仅供参考,不构成医疗诊断或治疗建议。
• 计算结果基于通用公式,可能不适用于所有个体
• 具体饮食方案应咨询专业营养师或医生
• 如有任何疑问,请及时就医
• 我们不对因使用本服务而导致的任何后果承担责任
风险控制:
- 每个页面显眼位置显示免责声明
- AI回复统一加上"建议咨询医生"
- 不提供药物相关建议
- 不诊断疾病
10.3 合规风险
需要的资质:
- ✅ 互联网信息服务许可证(ICP备案)
- ⚠️ 医疗器械经营许可证(如涉及诊断)
- ⚠️ 食品经营许可证(如涉及食品销售)
合规措施:
- 明确产品定位:营养科普工具,非医疗器械
- 不诊断疾病、不开药方
- 用户协议和隐私政策完善
- 内容审核机制
十一、成功指标(KPI)
11.1 用户指标
| 指标 | v1.0目标 | v2.0目标 | v3.0目标 |
|---|---|---|---|
| 注册用户数 | 1,000 | 10,000 | 100,000 |
| 日活用户(DAU) | 100 | 1,000 | 10,000 |
| 月活用户(MAU) | 500 | 5,000 | 50,000 |
| 用户留存率(7日) | 30% | 40% | 50% |
| 平均使用时长 | 3分钟 | 5分钟 | 8分钟 |
11.2 功能指标
| 指标 | v1.0目标 | v2.0目标 | v3.0目标 |
|---|---|---|---|
| 计算器使用次数/日 | 50 | 500 | 5,000 |
| AI对话轮次/日 | 100 | 1,000 | 10,000 |
| 食谱分享次数/日 | 10 | 100 | 1,000 |
| 食物查询次数/日 | 20 | 200 | 2,000 |
11.3 打卡与积分指标 ⭐新增
| 指标 | v2.0目标 | v2.5目标 | v3.0目标 | 说明 |
|---|---|---|---|---|
| 采纳率 | 20% | 30% | 40% | 计算结果页点击"采纳并开始打卡"的用户占比 |
| 日均打卡用户数 | 100 | 500 | 2,000 | 每天至少打卡1次的用户数 |
| 日均打卡次数 | 200 | 1,000 | 5,000 | 早中晚打卡总次数 |
| 打卡完成率 | 60% | 70% | 80% | 采纳用户中当天完成至少1餐打卡的比例 |
| 连续打卡3天用户数 | 30 | 150 | 600 | - |
| 连续打卡7天用户数 | 10 | 50 | 200 | 核心健康用户 |
| 连续打卡30天用户数 | 2 | 10 | 50 | 超级用户 |
| 照片上传率 | 40% | 50% | 60% | 打卡时上传照片的比例 |
| 营养达标率 | 70% | 75% | 80% | 打卡记录中营养摄入达标(90-110%)的比例 |
| 日均积分发放 | 3,000 | 15,000 | 60,000 | 每日发放的积分总量 |
| 积分兑换率 | 15% | 20% | 25% | 获得积分的用户中进行过兑换的比例 |
| 兑换次数/日 | 5 | 25 | 100 | - |
| 打卡用户留存率(7日) | 50% | 60% | 70% | 打卡用户比普通用户留存率更高 |
| 打卡用户活跃度 | 2x | 2.5x | 3x | 打卡用户DAU/MAU相比普通用户的倍数 |
重点关注指标:
- 🎯 采纳率:核心转化指标,直接影响打卡用户基数
- 🎯 连续打卡7天用户数:健康用户指标,是付费转化的关键人群
- 🎯 打卡用户留存率:验证打卡功能对留存的提升效果
11.4 社区指标 ⭐⭐⭐新增
| 指标 | v2.0目标 | v2.5目标 | v3.0目标 | 说明 |
|---|---|---|---|---|
| 社区内容总量 | 500篇 | 5,000篇 | 50,000篇 | 累计发布的打卡分享内容 |
| 日均内容发布量 | 10篇 | 50篇 | 200篇 | 每日新增内容数 |
| 发布率 | 10% | 15% | 20% | 打卡用户中分享到社区的比例 |
| 日均社区访问用户 | 200 | 1,000 | 5,000 | 每日访问社区的用户数 |
| 人均浏览内容数 | 5篇 | 8篇 | 12篇 | 每个访问用户平均浏览的内容数 |
| 互动率 | 30% | 40% | 50% | 浏览用户中产生互动(点赞/评论/收藏)的比例 |
| 日均点赞数 | 500 | 3,000 | 15,000 | 每日产生的点赞总数 |
| 日均评论数 | 100 | 500 | 2,000 | 每日产生的评论总数 |
| 日均收藏数 | 50 | 300 | 1,500 | 每日产生的收藏总数 |
| 日均分享数 | 20 | 100 | 500 | 每日分享到微信的次数 |
| 内容平均互动数 | 10 | 20 | 50 | 每篇内容平均获得的互动数(点赞+评论+收藏) |
| 优质内容占比 | 20% | 30% | 40% | 获得50+点赞的内容占比 |
| 关注关系数 | 200对 | 2,000对 | 20,000对 | 用户之间的关注关系总数 |
| 人均关注数 | 2人 | 5人 | 10人 | 每个用户平均关注的人数 |
| 创作者数量 | 50人 | 200人 | 1,000人 | 发布过至少3篇内容的用户 |
| 活跃创作者数 | 20人 | 80人 | 400人 | 月发布3篇以上的用户 |
| 社区用户留存率(7日) | 60% | 70% | 80% | 访问过社区的用户7日留存率 |
| 内容审核通过率 | 95% | 96% | 97% | 自动+人工审核后通过的内容比例 |
重点关注指标:
- 🎯 发布率:打卡用户愿意分享的比例,体现内容生产能力
- 🎯 互动率:用户对内容的参与度,体现社区活跃度
- 🎯 优质内容占比:高质量内容的比例,影响用户留存
- 🎯 社区用户留存率:验证社区对留存的提升效果
北极星指标:
社区健康度 = (日均内容发布量 × 10)
+ (人均浏览内容数 × 5)
+ (互动率 × 100)
+ (优质内容占比 × 50)
v2.0目标:≥500分
v2.5目标:≥2000分
v3.0目标:≥8000分
11.5 质量指标
| 指标 | 目标值 |
|---|---|
| 计算准确率 | >99% |
| AI回复准确率 | >90% |
| 用户满意度 | >4.5/5 |
| 页面加载时间 | <2秒 |
| 崩溃率 | <0.1% |
十二、附录
12.1 参考文献
- 《慢性肾脏病患者膳食指导》(WS/T 557-2017)
- 《中国食物成分表》(第6版)
- KDIGO慢性肾脏病评估和管理临床实践指南
- 中国慢性肾脏病营养治疗临床实践指南
- 慢生活365网站:http://www.ishen365.com
12.2 名词解释
| 术语 | 解释 |
|---|---|
| CKD | Chronic Kidney Disease,慢性肾脏病 |
| eGFR | 估算肾小球滤过率,反映肾功能的指标 |
| BMI | Body Mass Index,体重指数 |
| 血肌酐 | 肾功能检查的重要指标,单位μmol/L |
| 干体重 | 透析后的理想体重,去除多余水分后的体重 |
| 食物交换份 | 营养等值交换的食物计量单位 |
| 优质蛋白 | 生物价值高、必需氨基酸齐全的蛋白质 |
12.3 联系方式
产品团队:
- 产品经理:-
- 技术负责人:-
- UI设计师:-
- 营养顾问:-
合作联系:
- 邮箱:-
- 微信:-
- 电话:-
十三、更新日志
v2.2(2025-11-20)⭐⭐⭐重磅功能上线
核心新增 - AI视频生成 + 一键复制打卡:
1️⃣ AI自动生成视频作品 ⭐⭐⭐最重要创新
问题:
- 打卡内容以图文为主,传播力弱
- 用户想分享到抖音/快手,但不会制作视频
- 缺乏创作成就感,打卡动力不足
解决方案: ✅ AI自动生成精美短视频(15-30秒)
- 自动处理饮食照片(网格布局、转场效果)
- 智能展示营养数据(动画进度条、卡片翻转)
- AI营养师点评(文字气泡、打字机效果)
- 自动配背景音乐(轻松欢快风格)
- 添加品牌水印和二维码
✅ 一键分享多平台
- 分享到微信好友/朋友圈
- 分享到抖音/快手/视频号
- 保存到手机相册
✅ 技术实现
- 集成剪映开放平台API
- 视频分辨率:1080×1920(竖屏)
- 生成时间:15-30秒
- 文件大小:5-8MB
核心价值:
- 📈 传播力提升300%+:视频比图文更有传播力
- 🎬 降低创作门槛:AI自动生成,无需任何视频制作技能
- 💰 低成本获客:视频自带品牌水印,短视频平台自然引流
- 🎯 增强粘性:打卡变得更有成就感,分享获得点赞
积分激励:
- 生成AI视频:+20分
- 分享视频到微信:+10分
- 分享视频到抖音/快手:+30分
- 视频被点赞100+:+50分
- 视频被转发50+:+100分
2️⃣ 一键复制打卡 ⭐⭐⭐体验优化
问题:
- 用户每天吃的饭菜相似,重复打卡麻烦
- 老用户积累的优质打卡内容无法复用
- 打卡门槛高,部分用户放弃
解决方案: ✅ 从历史记录一键复制
- 点击任意历史打卡记录的"⚡一键复制打卡"
- 自动复制:饮食照片(1-3张)+ 备注说明
- 跳转到打卡页,内容自动填充
✅ 内容可编辑
- 照片:可删除、重新选择、添加新照片
- 备注:可直接修改文字内容
- 语音:可重新录制语音备注
✅ 智能推荐
- 系统推荐"高分打卡记录"供复制
- 根据时间(早中晚)智能匹配
- 一键复制后可选择是否生成视频
核心价值:
- ⚡ 打卡效率提升90%:从3-5分钟减少到30秒
- 🔄 优质内容复用:高分打卡内容可重复使用
- 📱 老年友好:简化操作,降低学习成本
积分激励:
- 一键复制打卡:+5分
技术更新:
-
数据库优化:
check_in_records表新增10个视频相关字段:video_id(视频ID)video_url(视频CDN地址)video_cover_url(视频封面)video_duration(视频时长)video_view_count(观看次数)video_like_count(点赞次数)video_share_count(分享次数)is_video_public(是否公开)copied_from_record_id(复制来源)is_copied(是否为复制的打卡)
-
新增页面:
- AI视频生成页(生成进度、视频预览、分享功能)
- 一键复制打卡确认页
-
积分规则优化:
- 单次打卡最高可得:115分(原50分,提升130%)
- 新增5种视频相关积分获得方式
-
第三方服务集成:
- 剪映开放平台(视频生成)
- 抖音开放平台(视频分享)
- 快手开放平台(视频分享)
用户影响:
- ✅ 打卡内容可以一键生成精美视频,分享到抖音/快手
- ✅ 历史打卡内容可快速复用,打卡效率大幅提升
- ✅ 积分获取速度提升130%,兑换咨询服务更快
- ✅ 视频传播带来更多新用户,社区更活跃
商业价值:
-
低成本获客 💰
- 视频自带品牌水印和二维码
- 短视频平台流量巨大(日活6亿+)
- 用户自发传播,CAC(获客成本)接近0
-
提升用户粘性 📈
- 打卡变得更有趣(生成视频+分享获赞)
- 一键复制降低门槛,打卡率提升
- 视频内容可收藏回看,增强情感连接
-
UGC内容沉淀 🎬
- 优质UGC视频内容可用于官方营销
- 打卡视频可成为KOL孵化基础
- 为未来视频号/抖音/快手矩阵打基础
v2.1(2025-11-20)⭐⭐⭐体验大优化
核心优化 - 三大体验升级:
1️⃣ 极简打卡流程 ⭐⭐⭐最重要
问题:原打卡流程需要勾选菜品、调整用量,操作繁琐,老年用户难以使用。
优化方案:
- ✅ 简化输入:只需上传照片(1-3张)+ 备注说明(可选)
- ✅ 语音录入:支持语音备注,自动转文字
- ✅ AI智能识别:
- 自动识别照片中的食物种类
- 自动估算食物重量
- 自动计算营养成分(蛋白质、能量、钾、磷、钠)
- 识别不准可手动修正
- ✅ 操作步骤:拍照 → 说话(可选)→ 提交,仅需3步!
技术实现:
- 集成腾讯云/百度AI图像识别API
- 集成语音转文字API
- AI识别准确率目标:>85%
2️⃣ AI营养分析报告 ⭐⭐⭐核心价值
问题:打卡后只显示简单的营养统计,缺乏深度解读和专业指导。
优化方案:
- ✅ 完整报告:包含食物清单、营养分析、AI点评、改进建议
- ✅ 可视化图表:营养素达标率进度条,一目了然
- ✅ 通俗易懂:AI用老百姓能听懂的话解读营养数据
- ✅ 可下载:生成PDF报告,可保存/打印/给医生看
- ✅ 可分享:分享到微信好友/朋友圈/社区
报告内容:
- 饮食照片
- AI识别食物清单
- 营养成分详细分析(蛋白质、能量、钾、磷、钠)
- 营养素详细解读(每个营养素单独说明)
- AI营养师点评(优点+改进建议)
- 下一餐建议
- 注意事项提醒
商业价值:
- 专业报告增强用户信任
- 分享功能带来自然增长
- 为后续付费咨询铺路
3️⃣ 积分兑换营养师咨询 ⭐⭐⭐商业闭环
问题:积分只能兑换会员/优惠券,消费场景单一,用户积分积累后找不到消费动机。
优化方案:
-
✅ 图文咨询(100积分):
- 向专业营养师提问
- 1次提问 + 3次追问
- 24小时内营养师回复
- 连续打卡3天即可获得
-
✅ 语音/视频咨询(300积分):
- 与营养师实时通话15分钟
- 可展示照片获得即时反馈
- 预约制,营养师在线
- 连续打卡10天即可获得
-
✅ AI不限次咨询(50积分):
- 24小时内AI营养师无限次提问
- AI即时回复,无需等待
- 打卡2天即可获得
完整闭环:
打卡赚积分
↓
兑换免费咨询
↓
向营养师提问
↓
获得专业指导
↓
改善饮食习惯
↓
更好地打卡(更高分、更达标)
↓
赚更多积分
商业价值:
- 降低咨询门槛,培养用户付费意愿
- 高频打卡用户积累积分,自然过渡到付费咨询
- 营养师回复质量高,促进用户留存和口碑传播
技术实现:
-
数据库优化:
-
check_in_records表新增字段:photos_json(必填)voice_url(语音备注)ai_recognized_foods_json(AI识别结果)report_id、report_pdf_url(报告)ai_comments_json(AI点评)nutrition_score(营养评分)
-
user_points表新增字段:free_consult_text_count(图文咨询次数)free_consult_voice_count(语音咨询次数)
-
新增
nutritionist_consultations表(营养师咨询记录)
-
-
积分规则优化:
- 新增:AI智能分析 +10分
- 新增:下载营养报告 +5分
- 新增:分享营养报告 +10分
- 单次打卡最高可得:50分(原35分)
-
页面优化:
- 每日打卡页:极简版(只需拍照+说话)
- 新增:AI营养分析报告页(完整专业报告)
- 积分商城:新增营养师咨询兑换选项
用户影响:
- ✅ 打卡体验大幅提升,从"繁琐输入"变为"拍照即可"
- ✅ 获得专业营养分析报告,增强产品价值感
- ✅ 积分有了实用消费场景,打卡动力更强
- ✅ 特别适合老年用户(简单易用,语音录入)
v2.0(2025-11-20)⭐⭐⭐重大更新
核心新增功能:
- 🎉 新增:饮食打卡系统 - 采纳配餐建议后每日打卡上传饮食记录
- 🎁 新增:积分激励系统 - 打卡获得积分,兑换会员/咨询/优惠券
- 📱 新增:打卡社区系统(类似小红书) ⭐⭐⭐
- 瀑布流展示打卡记录
- 点赞、评论、收藏、分享
- 关注/粉丝社交系统
- 话题标签和推荐算法
- 用户主页和成就勋章
- 内容审核和运营机制
- 📊 新增:营养计划管理 - 创建个人营养计划,7天周期管理
- 📸 新增:饮食照片上传 - 支持每餐上传1-3张照片,额外积分奖励
- 🔥 新增:连续打卡激励 - 3天/7天/30天里程碑奖励
- 🏆 新增:打卡排行榜 - 本周/本月打卡之星
- 🛒 新增:积分商城 - 兑换会员、咨询服务、优惠券
- 🔔 新增:推送通知 - 打卡提醒、积分到账、连续打卡激励
UI/UX优化:
- ✅ 新增:完整一日三餐配餐展示(早中晚独立卡片,含食材用量)
- ✅ 新增:底部Tab新增"社区"入口
- ✅ 优化:UI视觉全面升级,参考Figma设计(渐变色、卡片阴影、微动画)
- ✅ 优化:AI对话逻辑更智能(关键词匹配、结构化回复)
技术架构:
- ✅ 新增:详细的视觉设计规范(配色、字体、组件)
- ✅ 新增:多端支持规划(Web端)
- ✅ 新增:8张数据库表设计(营养计划、打卡记录、积分流水、用户积分、社区内容、互动记录、评论、关注关系)
- ✅ 新增:推荐算法和热门算法设计
- ✅ 完善:计算公式和开发文档(连续打卡算法、积分计算算法、推荐算法)
商业化:
- ✅ 新增:会员体系(普通/高级/年度,积分倍率加成)
- ✅ 新增:积分变现路径(兑换会员、咨询服务)
- ✅ 新增:用户激励闭环(计算→采纳→打卡→积分→兑换→留存)
- ✅ 新增:UGC内容社区,为KOL孵化和广告变现打基础
v1.0(2025-11-05)
- ✅ 初版PRD发布
- ✅ 微信小程序前端开发完成
- ✅ 核心功能实现
文档结束
🎯 v2.0核心亮点总结
四大创新功能
-
完整配餐展示 🍽️
- 不仅计算营养数据,还提供每日早中晚三餐的完整菜谱
- 每道菜包含:菜名、食材清单、用量、图片、营养成分
- 超越对标网站,提供真正可执行的饮食方案
-
饮食打卡系统 📅
- 采纳配餐建议后,每日打卡上传饮食记录
- 支持照片上传、备注说明、营养分析
- 连续打卡激励,3/7/30天里程碑奖励
- 核心价值:形成"计算→采纳→打卡→习惯"的正向闭环
-
积分激励系统 🎁
- 打卡获得积分,照片上传额外奖励
- 会员倍率加成(1.0x/1.5x/2.0x)
- 积分兑换会员、咨询服务、优惠券
- 商业价值:为付费转化提供数据支撑和用户基础
-
打卡社区系统(类似小红书) 📱⭐⭐⭐
- 瀑布流展示打卡分享内容(2列布局)
- 完整的社交系统(点赞/评论/收藏/分享/关注)
- 智能推荐算法(推荐/最新/关注/热门)
- 话题标签体系,方便内容发现
- 用户主页、成就勋章、创作者等级
- 社交价值:将个人打卡记录转化为UGC内容,患者之间互相学习和激励
- 商业价值:优质内容吸引新用户,为KOL孵化和广告变现打基础
业务价值
| 维度 | 价值 |
|---|---|
| 用户留存 | 预计7日留存率从30%→50%(打卡用户)→60%(社区用户) |
| 用户活跃 | 打卡用户DAU/MAU是普通用户的2-3倍,社区用户是3-4倍 |
| 数据价值 | 积累真实饮食数据+UGC内容,优化AI推荐算法 |
| 商业转化 | 连续打卡7天用户是付费转化的关键人群 |
| 医疗价值 | 为医生/营养师提供患者饮食依从性数据 |
| 内容价值 | UGC内容降低运营成本,优质内容吸引新用户注册 |
| 社交价值 | 社交连接增强用户粘性,形成网络效应 |
| 品牌价值 | 打造肾病患者专属社区,建立行业壁垒 |
| 变现价值 | 为KOL孵化、品牌广告、电商导流打基础 |
开发建议
第一阶段(2周):核心功能开发
- 完整配餐展示
- 饮食打卡基础功能
- 积分获得和显示
第二阶段(1-2周):完善和优化
- 积分商城
- 推送通知
- 数据分析和排行榜
第三阶段(持续):数据驱动优化
- 根据打卡数据优化AI推荐
- 根据兑换数据调整积分价值
- 根据留存数据优化激励策略
💡 核心洞察:本PRD基于Figma设计稿分析和用户需求深度整合,重点打造"完整配餐展示 + 饮食打卡 + 积分激励"三位一体的产品体验。通过"看得见(配餐方案)→做得到(每日打卡)→有回报(积分激励)"的闭环设计,解决患者"知道怎么吃但坚持不下来"的核心痛点。
🎯 核心指标:采纳率20%、连续打卡7天用户数50人、打卡用户7日留存率50%是v2.0成功的关键指标。
📞 需要帮助? 如有任何问题或建议,欢迎随时联系产品团队。