5757 lines
185 KiB
Markdown
5757 lines
185 KiB
Markdown
# 产品需求文档(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 产品定位
|
||
|
||
**定位**:肾病患者的智能营养助手
|
||
|
||
**差异化竞争优势**:
|
||
1. ✅ **完整配餐方案**:不仅计算营养数据,还提供每日早中晚三餐的完整菜谱(含食材清单、用量、图片)
|
||
2. ✅ **饮食打卡激励**:采纳配餐建议后每日打卡上传饮食记录,获得积分奖励,形成正向反馈闭环 ⭐
|
||
3. ✅ **AI智能交互**:AI营养师实时问答,支持食物适宜性判断和烹饪建议
|
||
4. ✅ **视觉设计优秀**:现代化UI设计,适合中老年用户操作
|
||
5. ✅ **数据可视化**:健康数据卡片化展示,一目了然
|
||
|
||
---
|
||
|
||
## 二、目标用户
|
||
|
||
### 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`
|
||
- 底部按钮:固定在底部,橙色渐变,圆角按钮"开始计算"
|
||
|
||
**交互说明**:
|
||
1. 点击单选项时,显示选中状态(橙色边框 + 背景)
|
||
2. 数字输入支持小数点(体重、血肌酐)
|
||
3. 表单验证:所有必填项填写完成后,按钮才可点击
|
||
4. 点击"开始计算"后,跳转到结果页
|
||
|
||
#### 4.1.2 计算结果页 ⭐⭐⭐(最重要)
|
||
|
||
**页面标题**:营养计算结果
|
||
|
||
**页面结构**:(从上到下)
|
||
|
||
##### 区域1:健康数据卡片(橙色渐变卡片)
|
||
|
||
显示4个计算结果:
|
||
|
||
| 数据项 | 显示格式 | 计算公式 |
|
||
|-------|---------|---------|
|
||
| eGFR数值 | XX.XX ml/min/1.73²m | CKD-EPI公式(见附录) |
|
||
| 标准体重 | XX.X kg | 男:(身高-80)×0.7<br>女:(身高-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<br>非透析期:标准体重 × 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 页面设计
|
||
|
||
**页面结构**:
|
||
1. 顶部导航栏:标题"AI营养师"
|
||
2. 消息区域(可滚动)
|
||
3. 底部输入栏
|
||
|
||
**首次进入**:显示欢迎消息
|
||
|
||
```
|
||
👋您好!我是您的AI营养师助手。
|
||
|
||
我可以帮您:
|
||
• 解答饮食疑问
|
||
• 评估食物适宜性
|
||
• 提供烹饪建议
|
||
• 解读检验报告
|
||
|
||
有什么想问的吗?
|
||
```
|
||
|
||
**常见问题快捷按钮**(4个):
|
||
1. "我今天想吃香蕉,可以吗?"
|
||
2. "如何降低蔬菜中的钾含量?"
|
||
3. "透析患者可以喝牛奶吗?"
|
||
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 页面设计
|
||
|
||
**顶部固定区域**:
|
||
1. 标题栏:"食物百科"
|
||
2. 搜索栏:带放大镜图标,placeholder"搜索食物名称..."
|
||
3. 分类横向滚动条: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个):
|
||
1. 营养素百科
|
||
2. 饮食指南
|
||
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行)
|
||
- 阅读时间
|
||
- 阅读量
|
||
- 分类标签
|
||
|
||
**示例文章**:
|
||
1. "透析患者的饮食原则"
|
||
2. "如何科学补充蛋白质"
|
||
3. "高钾食物有哪些?"
|
||
4. "降磷攻略:磷结合剂怎么吃?"
|
||
5. "肾病患者能吃水果吗?"
|
||
|
||
---
|
||
|
||
### 4.5 个人中心
|
||
|
||
#### 4.5.1 页面结构
|
||
|
||
**用户信息卡片**(顶部):
|
||
- 头像
|
||
- 昵称
|
||
- CKD分期
|
||
- 透析状态
|
||
|
||
**功能分区**:
|
||
|
||
**1. 我的健康**
|
||
- 健康档案:查看/编辑个人健康信息
|
||
- 营养计划:查看当前营养方案
|
||
- 饮食记录:记录每日饮食
|
||
- 数据报告:查看营养分析报告
|
||
|
||
**2. 我的食谱**
|
||
- 收藏的食谱
|
||
- 历史食谱
|
||
- 自定义食谱
|
||
|
||
**3. 工具与服务**
|
||
- 食物搜索
|
||
- 知识库
|
||
- 用药提醒
|
||
- 透析提醒
|
||
|
||
**4. 设置**
|
||
- 关于我们
|
||
- 意见反馈
|
||
- 联系客服
|
||
- 隐私政策
|
||
|
||
---
|
||
|
||
### 4.6 饮食打卡系统(核心激励功能)⭐⭐⭐
|
||
|
||
#### 4.6.1 功能定位
|
||
|
||
**核心目标**:通过"采纳配餐建议 → 每日打卡上传 → 获得积分奖励"的闭环,提升用户留存和数据价值。
|
||
|
||
**业务价值**:
|
||
1. 📈 **提升留存率**:每日打卡培养用户习惯,提高DAU和留存
|
||
2. 📊 **收集真实数据**:积累大量真实饮食数据,优化AI推荐算法
|
||
3. 💰 **商业化基础**:积分体系为会员、咨询等付费服务导流
|
||
4. 🏥 **医疗价值**:为医生/营养师提供患者饮食依从性数据
|
||
|
||
#### 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智能分析** - 只需拍照+说话,无需任何手动输入!
|
||
|
||
**入口**:
|
||
1. 营养计划页 → 点击"立即打卡"
|
||
2. 首页 → 快捷打卡入口
|
||
3. 定时推送通知 → 点击进入
|
||
|
||
**页面结构**:
|
||
|
||
```
|
||
┌────────────────────────────────┐
|
||
│ < 饮食打卡 - 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分 │
|
||
└────────────────────────────────┘
|
||
```
|
||
|
||
**核心优化点**:
|
||
|
||
1. **极简输入** ⭐⭐⭐
|
||
- 只需上传照片(必填)
|
||
- 备注说明(可选,支持语音录入)
|
||
- **不需要勾选菜品、不需要输入用量、不需要任何手动计算**
|
||
|
||
2. **AI智能识别** 🤖
|
||
- 自动识别照片中的食物种类
|
||
- 自动估算食物重量
|
||
- 自动计算营养成分(蛋白质、能量、钾、磷、钠等)
|
||
- 识别不准可手动修正
|
||
|
||
3. **语音录入** 🎤
|
||
- 支持语音输入备注说明
|
||
- 自动转文字
|
||
- 降低老年用户打卡门槛
|
||
|
||
4. **营养分析报告** 📊
|
||
- AI自动生成营养分析
|
||
- 包含营养素达标情况
|
||
- AI营养师点评和建议
|
||
- **可下载、可分享**
|
||
|
||
**技术实现**:
|
||
|
||
```javascript
|
||
// 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. **拍照上传**:
|
||
- 点击"拍照"按钮→调用相机→拍摄→上传
|
||
- 点击"相册"按钮→选择照片→上传
|
||
- 支持上传1-3张照片
|
||
- 显示上传进度
|
||
|
||
2. **语音录入**:
|
||
- 长按"语音录入"按钮开始录音
|
||
- 松开结束录音
|
||
- 自动转文字显示
|
||
- 可重新录制
|
||
|
||
3. **AI识别流程**:
|
||
- 点击"提交打卡"→上传照片→AI分析(3-5秒)
|
||
- 显示识别结果→用户确认或修正
|
||
- 显示营养分析和AI建议
|
||
- 确认无误后提交
|
||
|
||
4. **修正识别**:
|
||
- 点击"识别不准确?点击修正"
|
||
- 弹出食物列表,可修改食物名称和重量
|
||
- 重新计算营养数据
|
||
|
||
##### 页面4:打卡成功页
|
||
|
||
**点击"提交打卡"后跳转**:
|
||
|
||
```
|
||
┌────────────────────────────────┐
|
||
│ │
|
||
│ 🎉 │
|
||
│ 打卡成功! │
|
||
│ │
|
||
│ ┌──────────────────┐ │
|
||
│ │ │ │
|
||
│ │ + 30 积分 │ │
|
||
│ │ │ │
|
||
│ └──────────────────┘ │
|
||
│ │
|
||
│ 🔥 连续打卡 3 天 │
|
||
│ 📊 今日营养达标率 92% │
|
||
│ │
|
||
│ ┌──────────────────────────┐ │
|
||
│ │ 早餐 ✅ 蛋白质 18.8g │ │
|
||
│ │ 午餐 ⭕ 待打卡 │ │
|
||
│ │ 晚餐 ⭕ 待打卡 │ │
|
||
│ └──────────────────────────┘ │
|
||
│ │
|
||
│ 🎁 连续打卡7天可额外获得100积分 │
|
||
│ 还差 4 天 │
|
||
│ │
|
||
│ ━━━━━━━━━━━━━━━━━━━━━━━━━━ │
|
||
│ │
|
||
│ ⭐⭐⭐【AI营养分析报告】 │
|
||
│ │
|
||
│ ┌──────────────────────────┐ │
|
||
│ │ 📊 查看完整营养分析报告 │ │
|
||
│ └──────────────────────────┘ │
|
||
│ │
|
||
│ ┌──────────┐ ┌──────────┐ │
|
||
│ │ 📥 下载 │ │ ➤ 分享 │ │
|
||
│ │ 报告 │ │ 报告 │ │
|
||
│ └──────────┘ └──────────┘ │
|
||
│ │
|
||
│ ━━━━━━━━━━━━━━━━━━━━━━━━━━ │
|
||
│ │
|
||
│ ┌──────────┐ ┌──────────┐ │
|
||
│ │ 分享社区 │ │ 继续打卡 │ │
|
||
│ │ +20积分 │ │ │ │
|
||
│ └──────────┘ └──────────┘ │
|
||
└────────────────────────────────┘
|
||
```
|
||
|
||
**新增功能**:
|
||
1. **查看完整营养分析报告** - 进入详细报告页
|
||
2. **下载报告** - 生成PDF报告,保存到手机
|
||
3. **分享报告** - 分享到微信好友/朋友圈/社区
|
||
|
||
##### 页面4.5:AI营养分析报告页 ⭐⭐⭐新增核心页面
|
||
|
||
**入口**:
|
||
1. 打卡成功页 → 点击"查看完整营养分析报告"
|
||
2. 饮食记录 → 点击某次打卡 → "查看报告"
|
||
3. 个人中心 → 我的健康 → "营养报告"
|
||
|
||
**页面结构**:
|
||
|
||
```
|
||
┌────────────────────────────────┐
|
||
│ < 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] [➤ 分享] [❤️ 收藏] │
|
||
└────────────────────────────────┘
|
||
```
|
||
|
||
**报告功能特性**:
|
||
|
||
1. **完整专业** 📊
|
||
- 包含饮食照片、食物清单、营养分析、AI点评
|
||
- 报告格式规范,可用于医疗咨询
|
||
- 带报告编号,便于追溯
|
||
|
||
2. **可下载** 📥
|
||
- 生成PDF格式报告
|
||
- 保存到手机相册或文件
|
||
- 可打印给医生看
|
||
|
||
3. **可分享** ➤
|
||
- 分享到微信好友/群聊
|
||
- 分享到朋友圈(带小程序卡片)
|
||
- 分享到社区(自动生成社区帖子)
|
||
- 发送给营养师(用于咨询)
|
||
|
||
4. **AI生成** 🤖
|
||
- 营养素详细解读(通俗易懂)
|
||
- AI营养师点评(优点+改进建议)
|
||
- 下一餐建议
|
||
- 注意事项提醒
|
||
|
||
**技术实现**:
|
||
|
||
```javascript
|
||
// 生成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视频生成页 ⭐⭐⭐核心创新功能
|
||
|
||
**入口**:
|
||
1. 打卡成功页 → 勾选"生成AI视频" → 自动跳转
|
||
2. 打卡历史 → "一键复制打卡" → 勾选"生成AI视频"
|
||
3. 营养分析报告页 → 点击"生成视频分享"
|
||
|
||
**功能定位**:
|
||
将用户的饮食打卡内容自动生成精美短视频(15-30秒),可一键分享到微信、抖音、快手、视频号,极大提升内容传播力和产品曝光度。
|
||
|
||
**页面结构**:
|
||
|
||
```
|
||
┌────────────────────────────────┐
|
||
│ < AI视频生成中... [关闭] │
|
||
└────────────────────────────────┘
|
||
|
||
┌────────────────────────────────┐
|
||
│ 🎬 AI正在为您生成精美视频 │
|
||
│ │
|
||
│ ┌──────────────────────────┐ │
|
||
│ │ │ │
|
||
│ │ [视频预览区域] │ │
|
||
│ │ │ │
|
||
│ │ 🎨 正在渲染中... │ │
|
||
│ │ │ │
|
||
│ └──────────────────────────┘ │
|
||
│ │
|
||
│ ━━━━━━━━━━━━━━━━━━━━━━━━━━ │
|
||
│ │
|
||
│ 【生成进度】 │
|
||
│ ████████████░░░░ 75% │
|
||
│ │
|
||
│ ✅ 照片处理完成 │
|
||
│ ✅ 营养数据提取完成 │
|
||
│ ✅ 音乐匹配完成 │
|
||
│ ⏳ 正在生成视频特效... │
|
||
│ │
|
||
│ 预计剩余时间:8秒 │
|
||
└────────────────────────────────┘
|
||
```
|
||
|
||
**生成完成后**:
|
||
|
||
```
|
||
┌────────────────────────────────┐
|
||
│ < AI视频已生成 [编辑] [×] │
|
||
└────────────────────────────────┘
|
||
|
||
┌────────────────────────────────┐
|
||
│ 🎉 您的AI视频已生成! │
|
||
│ │
|
||
│ ┌──────────────────────────┐ │
|
||
│ │ │ │
|
||
│ │ [视频播放器] │ │
|
||
│ │ │ │
|
||
│ │ ▶️ 点击播放预览 │ │
|
||
│ │ │ │
|
||
│ │ 时长:23秒 │ │
|
||
│ └──────────────────────────┘ │
|
||
│ │
|
||
│ ━━━━━━━━━━━━━━━━━━━━━━━━━━ │
|
||
│ │
|
||
│ 【视频信息】 │
|
||
│ 📹 分辨率:1080×1920(竖屏) │
|
||
│ 🎵 背景音乐:《健康每一天》 │
|
||
│ ✨ 特效:营养数据动画展示 │
|
||
│ 💧 水印:慢生活智能营养专家 │
|
||
│ │
|
||
│ ━━━━━━━━━━━━━━━━━━━━━━━━━━ │
|
||
│ │
|
||
│ 【一键分享】 │
|
||
│ │
|
||
│ ┌──────────┐ ┌──────────┐ │
|
||
│ │ 📱 微信 │ │ 🎬 抖音 │ │
|
||
│ │ 好友 │ │ │ │
|
||
│ └──────────┘ └──────────┘ │
|
||
│ │
|
||
│ ┌──────────┐ ┌──────────┐ │
|
||
│ │ 📲 朋友圈│ │ 🎥 快手 │ │
|
||
│ │ │ │ │ │
|
||
│ └──────────┘ └──────────┘ │
|
||
│ │
|
||
│ ┌──────────┐ ┌──────────┐ │
|
||
│ │ 📺 视频号│ │ 💾 保存 │ │
|
||
│ │ │ │ 到相册 │ │
|
||
│ └──────────┘ └──────────┘ │
|
||
│ │
|
||
│ ━━━━━━━━━━━━━━━━━━━━━━━━━━ │
|
||
│ │
|
||
│ 【视频内容预览】 │
|
||
│ 0s - 封面:饮食照片拼图 │
|
||
│ 3s - 转场:营养数据卡片展示 │
|
||
│ 8s - 动画:蛋白质达标率进度条 │
|
||
│ 12s - 动画:能量达标率进度条 │
|
||
│ 16s - 文字:AI营养师点评 │
|
||
│ 20s - 结尾:二维码+品牌水印 │
|
||
│ │
|
||
│ [重新生成] [高级编辑] │
|
||
└────────────────────────────────┘
|
||
```
|
||
|
||
**AI视频生成逻辑** ⭐核心技术:
|
||
|
||
1. **视频结构设计**(15-30秒):
|
||
|
||
```javascript
|
||
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
|
||
}
|
||
};
|
||
```
|
||
|
||
2. **AI视频生成API调用**:
|
||
|
||
```javascript
|
||
/**
|
||
* 调用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}`
|
||
});
|
||
}
|
||
```
|
||
|
||
3. **第三方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/ |
|
||
|
||
**推荐方案**:剪映开放平台(与抖音深度集成,生成的视频可直接分享到抖音)
|
||
|
||
4. **视频分享功能**:
|
||
|
||
```javascript
|
||
// 分享到微信好友
|
||
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'
|
||
});
|
||
}
|
||
}
|
||
});
|
||
});
|
||
}
|
||
```
|
||
|
||
**核心价值**:
|
||
|
||
1. **提升传播力** ⭐⭐⭐
|
||
- 视频比图文更有传播力(转发率提升300%+)
|
||
- 一键分享到抖音/快手,扩大用户覆盖面
|
||
- 视频自带品牌水印,增加产品曝光
|
||
|
||
2. **降低创作门槛** ⭐⭐⭐
|
||
- 用户无需任何视频制作技能
|
||
- AI自动生成,15-30秒完成
|
||
- 专业级视频效果(转场、特效、音乐)
|
||
|
||
3. **增强用户粘性** ⭐⭐⭐
|
||
- 打卡变得更有成就感
|
||
- 生成的视频可收藏、回看
|
||
- 分享到社交平台获得点赞,增强自我激励
|
||
|
||
4. **商业价值** ⭐⭐⭐
|
||
- 视频自带品牌水印和二维码,自然引流
|
||
- 短视频平台流量巨大,低成本获客
|
||
- 优质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. **一键复制功能**(入口1和2):
|
||
- 点击任意历史打卡记录的"⚡一键复制打卡"
|
||
- 自动复制该次打卡的:
|
||
- ✅ 饮食照片(1-3张)
|
||
- ✅ 备注说明(可修改)
|
||
- 跳转到打卡页面,内容自动填充
|
||
- 获得积分:+5分
|
||
|
||
2. **一键借鉴功能**(入口3):
|
||
- 查看他人的打卡详情页
|
||
- 点击"🎬一键借鉴打卡"
|
||
- AI自动调整菜品用量(根据你的营养计划)
|
||
- 需要上传自己的饮食照片(必须)
|
||
- 获得积分:+5分,原作者+2分
|
||
|
||
3. **内容可编辑**:
|
||
- 照片:可删除、重新选择、添加新照片
|
||
- 备注:可直接修改文字内容
|
||
- 语音:可重新录制语音备注
|
||
|
||
4. **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分 | - | 适合肾病患者的健康食品 |
|
||
|
||
**重点推荐** ⭐:
|
||
|
||
1. **免费咨询次数(图文)** - 100积分
|
||
- 最实惠的选择
|
||
- 连续打卡3天即可获得(30×3+50=140分)
|
||
- 适合快速咨询简单问题
|
||
- 24小时内营养师回复
|
||
|
||
2. **免费咨询次数(语音/视频)** - 300积分
|
||
- 连续打卡10天即可获得(30×10+100=400分)
|
||
- 更深入的交流
|
||
- 可以展示饮食照片获得即时反馈
|
||
- 预约制,营养师实时在线
|
||
|
||
3. **AI营养师不限次咨询** - 50积分
|
||
- 打卡2天即可获得(30×2=60分)
|
||
- 适合频繁提问的用户
|
||
- AI即时回复,无需等待
|
||
|
||
**积分消耗核心价值**:
|
||
|
||
打通"打卡赚积分 → 兑换咨询服务 → 获得专业指导 → 更好地打卡"的完整闭环!
|
||
|
||
```
|
||
打卡赚积分
|
||
↓
|
||
兑换免费咨询
|
||
↓
|
||
向营养师提问
|
||
↓
|
||
获得专业指导
|
||
↓
|
||
改善饮食习惯
|
||
↓
|
||
更好地打卡(更高分、更达标)
|
||
↓
|
||
赚更多积分
|
||
```
|
||
|
||
**咨询服务流程**:
|
||
|
||
1. **兑换咨询次数**
|
||
- 积分中心 → 积分商城 → 选择咨询服务
|
||
- 点击"立即兑换"
|
||
- 扣除积分,获得咨询次数
|
||
|
||
2. **发起咨询**(图文)
|
||
- AI营养师页面 → 点击"人工营养师"
|
||
- 选择要咨询的问题类型
|
||
- 上传相关照片/报告
|
||
- 提交问题
|
||
- 24小时内收到营养师回复
|
||
|
||
3. **预约咨询**(语音/视频)
|
||
- AI营养师页面 → 点击"预约视频咨询"
|
||
- 选择时间段
|
||
- 营养师确认
|
||
- 到时间自动发起视频通话
|
||
|
||
**营养师咨询典型场景**:
|
||
|
||
```
|
||
场景1:血钾偏高怎么办?
|
||
用户:我最近血钾5.8,医生说偏高了,
|
||
饮食应该怎么调整?
|
||
营养师:您好,血钾5.8确实偏高了。建议:
|
||
1. 蔬菜切小块浸泡30分钟再煮
|
||
2. 避免高钾水果(香蕉、橙子)
|
||
3. 主食选择米饭,少吃土豆
|
||
4. 查看您的打卡记录,我帮您分析...
|
||
|
||
场景2:打卡报告看不懂
|
||
用户:今天的营养报告显示磷超标了,
|
||
但我不知道哪个菜磷高
|
||
营养师:让我看看您的报告...鸡蛋含磷较高,
|
||
建议只吃蛋白不吃蛋黄。另外坚果、
|
||
动物内脏都要避免...
|
||
|
||
场景3:想增加蛋白质摄入
|
||
用户:医生说我营养不良,要增加蛋白质,
|
||
有什么好的食物推荐吗?
|
||
营养师:透析患者需要优质蛋白,推荐:
|
||
1. 鸡蛋白(去黄,低磷)
|
||
2. 鱼肉(清蒸最好)
|
||
3. 瘦肉(少量)
|
||
每天建议...
|
||
```
|
||
|
||
#### 4.6.5 数据结构设计
|
||
|
||
##### 营养计划表(nutrition_plans)
|
||
|
||
```sql
|
||
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)
|
||
|
||
```sql
|
||
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)
|
||
|
||
```sql
|
||
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)
|
||
|
||
```sql
|
||
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)
|
||
|
||
```sql
|
||
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:连续打卡判断
|
||
|
||
```javascript
|
||
/**
|
||
* 判断是否连续打卡
|
||
* @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:营养达标率计算
|
||
|
||
```javascript
|
||
/**
|
||
* 计算营养达标率
|
||
* @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:积分计算
|
||
|
||
```javascript
|
||
/**
|
||
* 计算单次打卡获得的积分
|
||
*/
|
||
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天 | "好久不见!继续打卡赢积分吧 🎁" | 召回用户 |
|
||
|
||
##### 推送模板
|
||
|
||
```javascript
|
||
// 早餐提醒
|
||
{
|
||
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 防作弊机制
|
||
|
||
**问题**:用户可能虚假打卡或作弊获取积分
|
||
|
||
**防范措施**:
|
||
|
||
1. **时间限制**
|
||
- 早餐:6:00-10:00可打卡
|
||
- 午餐:11:00-14:00可打卡
|
||
- 晚餐:17:00-21:00可打卡
|
||
- 超时可补卡但不获得积分
|
||
|
||
2. **照片验证**(可选,高级功能)
|
||
- AI识别上传照片是否为食物
|
||
- 检测图片是否为网络图片
|
||
- 照片EXIF信息验证拍摄时间
|
||
|
||
3. **异常检测**
|
||
- 单日打卡次数超过3次预警
|
||
- 连续多天营养数据完全一致(疑似复制)
|
||
- 积分获取速度异常(单日超过100分)
|
||
|
||
4. **人工审核**
|
||
- 兑换高价值商品时人工审核历史记录
|
||
- 用户投诉机制
|
||
- 黑名单管理
|
||
|
||
---
|
||
|
||
### 4.7 积分中心
|
||
|
||
#### 4.7.1 我的积分页
|
||
|
||
```
|
||
┌────────────────────────────────┐
|
||
│ < 我的积分 │
|
||
└────────────────────────────────┘
|
||
|
||
┌────────────────────────────────┐
|
||
│ 💰 可用积分 │
|
||
│ │
|
||
│ 1,250 分 │
|
||
│ │
|
||
│ 今日已获得:30分 │
|
||
│ 累计获得:3,500分 │
|
||
│ 已使用:2,250分 │
|
||
└────────────────────────────────┘
|
||
|
||
【积分明细】 [收入] [支出]
|
||
|
||
┌────────────────────────────────┐
|
||
│ 今天 14:30 │
|
||
│ 午餐打卡 │
|
||
│ +15分 ✅ │
|
||
└────────────────────────────────┘
|
||
|
||
┌────────────────────────────────┐
|
||
│ 今天 07:45 │
|
||
│ 早餐打卡(上传照片) │
|
||
│ +15分 ✅ │
|
||
└────────────────────────────────┘
|
||
```
|
||
|
||
#### 4.7.2 积分商城
|
||
|
||
**入口**:积分中心 → 积分商城
|
||
|
||
**商品分类**:
|
||
1. 会员权益
|
||
2. 咨询服务
|
||
3. 优惠券
|
||
4. 实物礼品
|
||
|
||
#### 4.7.3 打卡排行榜
|
||
|
||
**规则**:
|
||
- 本周/本月打卡次数排名
|
||
- 前10名额外奖励
|
||
- 每周一重置排名
|
||
|
||
---
|
||
|
||
### 4.8 打卡社区系统(类似小红书)⭐⭐⭐重磅新增
|
||
|
||
#### 4.8.1 功能定位
|
||
|
||
**核心理念**:将个人打卡记录转化为可分享的UGC内容,打造肾病患者的饮食分享社区。
|
||
|
||
**产品价值**:
|
||
1. 📸 **内容生产**:用户打卡记录变成优质内容,降低UGC门槛
|
||
2. 👥 **社交连接**:患者之间互相学习、点赞、评论、关注
|
||
3. 🎯 **激励增强**:社交认同感增强打卡动力
|
||
4. 📊 **数据价值**:优质内容吸引新用户,提高转化率
|
||
5. 💰 **商业化**:为KOL孵化、广告变现打基础
|
||
|
||
**对标产品**:
|
||
- 小红书:内容社区模式
|
||
- Keep运动社区:运动打卡分享
|
||
- 薄荷健康:饮食记录社区
|
||
|
||
#### 4.8.2 核心功能架构
|
||
|
||
```
|
||
打卡社区
|
||
│
|
||
├── 社区广场(Feed流)
|
||
│ ├── 推荐Tab(算法推荐)
|
||
│ ├── 最新Tab(时间排序)
|
||
│ ├── 关注Tab(关注用户的内容)
|
||
│ └── 热门Tab(高互动内容)
|
||
│
|
||
├── 内容详情页
|
||
│ ├── 图片轮播
|
||
│ ├── 文字内容
|
||
│ ├── 营养数据卡片
|
||
│ ├── 互动操作(点赞/评论/收藏/分享)
|
||
│ └── 相关推荐
|
||
│
|
||
├── 发布流程
|
||
│ ├── 选择打卡记录
|
||
│ ├── 编辑内容
|
||
│ ├── 添加标签
|
||
│ └── 发布
|
||
│
|
||
├── 用户主页
|
||
│ ├── 个人资料
|
||
│ ├── 打卡作品集
|
||
│ ├── 关注/粉丝
|
||
│ └── 成就勋章
|
||
│
|
||
└── 互动系统
|
||
├── 点赞
|
||
├── 评论(含回复)
|
||
├── 收藏
|
||
└── 分享
|
||
```
|
||
|
||
#### 4.8.3 页面设计详解
|
||
|
||
##### 页面1:社区广场(瀑布流)
|
||
|
||
**入口**:
|
||
1. 首页底部Tab"社区"(新增)
|
||
2. 打卡成功页"分享到社区"按钮
|
||
3. 个人中心"我的打卡作品"
|
||
|
||
**页面结构**:
|
||
|
||
```
|
||
┌────────────────────────────────┐
|
||
│ 🏠 社区广场 [发布+] │ ← 顶部导航
|
||
└────────────────────────────────┘
|
||
|
||
【筛选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] │
|
||
└────────────────────────────────┘
|
||
|
||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||
|
||
【底部评论输入栏】
|
||
┌────────────────────────────────┐
|
||
│ [说点什么...] [发送] │
|
||
└────────────────────────────────┘
|
||
```
|
||
|
||
**核心元素**:
|
||
|
||
1. **用户信息栏**
|
||
- 头像(圆形,48px)
|
||
- 昵称 + 个人标签(如"透析3年")
|
||
- 发布时间
|
||
- 关注按钮(已关注则显示"已关注")
|
||
|
||
2. **图片轮播**
|
||
- 支持1-3张照片
|
||
- 左右滑动切换
|
||
- 底部指示器
|
||
- 双击图片放大
|
||
|
||
3. **营养数据卡片**
|
||
- 蛋白质、能量摄入
|
||
- 达标率显示(90%+绿色,<90%橙色)
|
||
- 整体营养评分
|
||
|
||
4. **互动栏**
|
||
- 点赞(红色❤️,点击有动画)
|
||
- 评论(显示数量)
|
||
- 收藏(星标⭐)
|
||
- 分享(微信好友/朋友圈)
|
||
|
||
5. **评论区**
|
||
- 显示前2-3条评论
|
||
- 支持点赞评论
|
||
- 支持回复评论
|
||
- "查看全部评论"进入评论详情页
|
||
|
||
6. **⭐一键打卡入口**(核心功能)
|
||
|
||
**场景A:自己的打卡详情页**
|
||
- 按钮文案:**"⚡ 一键复制打卡"**
|
||
- 按钮样式:绿色渐变,大按钮,醒目
|
||
- 点击后流程:
|
||
```
|
||
1. 弹出确认页面(复制内容预览)
|
||
2. 用户可以选择要复制的内容:
|
||
☑️ 饮食照片(1-3张)
|
||
☑️ 备注说明(可修改)
|
||
☐ AI生成视频(可选)
|
||
3. 点击"确认复制并发布"
|
||
4. 跳转到打卡页,内容已自动填充
|
||
5. 用户可修改内容
|
||
6. 点击"发布"完成打卡
|
||
7. 获得积分:一键复制+5分
|
||
```
|
||
|
||
**场景B:他人的打卡详情页(社区内容)**
|
||
- 按钮文案:**"🎬 一键借鉴打卡"**
|
||
- 按钮样式:蓝色渐变,大按钮
|
||
- 点击后流程:
|
||
```
|
||
1. 弹出确认页面
|
||
2. 显示:
|
||
• 原作者的菜品清单
|
||
• AI自动调整提示:"已根据您的情况调整用量"
|
||
3. 用户可以:
|
||
☑️ 复制菜品清单
|
||
☑️ AI自动调整为适合我的用量
|
||
☐ 上传自己的饮食照片(必须)
|
||
☐ 添加自己的备注
|
||
4. 点击"确认并发布"
|
||
5. 完成打卡
|
||
6. 获得积分:借鉴打卡+5分
|
||
7. 原作者获得:被借鉴+2分
|
||
```
|
||
|
||
**技术实现**:
|
||
|
||
```javascript
|
||
/**
|
||
* 判断打卡详情页的场景
|
||
*/
|
||
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. 饮食记录页选择某次打卡,点击"分享"
|
||
3. 社区广场点击右上角"发布+"
|
||
|
||
**发布流程**:
|
||
|
||
```
|
||
步骤1:选择打卡记录(如果从打卡成功页进入则跳过)
|
||
↓
|
||
步骤2:编辑内容
|
||
├─ 选择封面图(从打卡照片中选择)
|
||
├─ 编辑标题(可使用AI生成建议标题)
|
||
├─ 编辑正文描述
|
||
├─ 添加话题标签(#早餐 #低钾饮食等)
|
||
└─ 隐私设置(公开/仅关注可见/私密)
|
||
↓
|
||
步骤3:预览确认
|
||
↓
|
||
步骤4:发布成功
|
||
├─ 获得积分 +20分
|
||
└─ 跳转到社区广场或详情页
|
||
```
|
||
|
||
**编辑页面设计**:
|
||
|
||
```
|
||
┌────────────────────────────────┐
|
||
│ < 分享打卡记录 [发布] │
|
||
└────────────────────────────────┘
|
||
|
||
┌────────────────────────────────┐
|
||
│ 【封面图选择】 │
|
||
│ ┌────┐ ┌────┐ ┌────┐ │
|
||
│ │图1●│ │图2○│ │图3○│ │
|
||
│ └────┘ └────┘ └────┘ │
|
||
│ 点击选择封面图 │
|
||
└────────────────────────────────┘
|
||
|
||
┌────────────────────────────────┐
|
||
│ 【标题】 │
|
||
│ 🥗 早餐打卡第7天! │
|
||
│ [AI帮你写标题 ✨] │
|
||
└────────────────────────────────┘
|
||
|
||
┌────────────────────────────────┐
|
||
│ 【正文】 │
|
||
│ ┌──────────────────────────┐ │
|
||
│ │分享一下你的打卡心得吧~... │ │
|
||
│ │ │ │
|
||
│ │ │ │
|
||
│ └──────────────────────────┘ │
|
||
│ [AI帮你写描述 ✨] │
|
||
└────────────────────────────────┘
|
||
|
||
┌────────────────────────────────┐
|
||
│ 【添加话题】 │
|
||
│ #早餐 #低钾饮食 #透析期 │
|
||
│ [+ 添加话题] │
|
||
│ │
|
||
│ 推荐话题: │
|
||
│ #打卡挑战 #营养达标 #今日食谱 │
|
||
└────────────────────────────────┘
|
||
|
||
┌────────────────────────────────┐
|
||
│ 【营养数据预览】(自动带入) │
|
||
│ 蛋白质:18.8g 能量:452kcal │
|
||
│ 营养达标率:92% │
|
||
└────────────────────────────────┘
|
||
|
||
┌────────────────────────────────┐
|
||
│ 【隐私设置】 │
|
||
│ ○ 公开(所有人可见) │
|
||
│ ○ 仅关注可见 │
|
||
│ ○ 私密(仅自己可见) │
|
||
└────────────────────────────────┘
|
||
|
||
┌────────────────────────────────┐
|
||
│ 提示:分享到社区可获得20积分 │
|
||
└────────────────────────────────┘
|
||
```
|
||
|
||
**AI辅助生成功能** ⭐:
|
||
|
||
1. **AI生成标题建议**(3-5个):
|
||
```
|
||
- "早餐打卡第7天!坚持就是胜利💪"
|
||
- "透析患者的低钾早餐,营养满分!"
|
||
- "营养师推荐的早餐搭配,你也可以试试"
|
||
```
|
||
|
||
2. **AI生成描述建议**:
|
||
```
|
||
今天的早餐包括牛奶120g、鸡蛋拌面和凉拌黄瓜。
|
||
营养搭配合理,蛋白质和能量都达标了!
|
||
分享给同样需要控制饮食的慢友们参考。
|
||
```
|
||
|
||
##### 页面4:用户主页
|
||
|
||
**入口**:
|
||
1. 点击任意内容的用户头像
|
||
2. 个人中心"我的打卡作品"
|
||
3. 关注列表
|
||
|
||
**页面结构**:
|
||
|
||
```
|
||
┌────────────────────────────────┐
|
||
│ < 用户主页 ⋮ │
|
||
└────────────────────────────────┘
|
||
|
||
┌────────────────────────────────┐
|
||
│ 【用户资料卡】 │
|
||
│ ┌────────┐ │
|
||
│ │ 头像 │ 张小慢 │
|
||
│ │ 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分
|
||
|
||
##### 收藏功能
|
||
|
||
**交互**:
|
||
- 点击⭐图标收藏
|
||
- 收藏后图标变为实心金色
|
||
- 取消收藏:再次点击
|
||
|
||
**我的收藏**:
|
||
- 个人中心"我的收藏"
|
||
- 按收藏时间倒序排列
|
||
- 支持批量取消收藏
|
||
|
||
##### 分享功能
|
||
|
||
**分享渠道**:
|
||
1. 微信好友
|
||
2. 微信朋友圈
|
||
3. 复制链接
|
||
4. 生成海报(带二维码)
|
||
|
||
**分享样式**:
|
||
```
|
||
┌─────────────────────┐
|
||
│ │
|
||
│ 【封面图】 │
|
||
│ │
|
||
│ 标题 │
|
||
│ 作者 | 点赞数 │
|
||
│ │
|
||
│ 慢生活智能营养专家 │
|
||
│ [小程序码] │
|
||
└─────────────────────┘
|
||
```
|
||
|
||
**积分奖励**:
|
||
- 分享到朋友圈:+5分(每日上限1次)
|
||
- 分享被点击:+2分(每日上限5次)
|
||
|
||
##### 一键打卡功能 ⭐⭐⭐核心创新
|
||
|
||
**功能定位**:
|
||
|
||
**核心理念**:将优质打卡内容转化为可复用的模板,用户可以一键借鉴,并通过AI生成食谱制作视频。
|
||
|
||
**产品价值**:
|
||
1. 📉 **降低打卡门槛** - 不知道吃什么的用户可以直接借鉴优质内容
|
||
2. 🎬 **AI视频生成** - 自动生成食谱制作过程视频,提供更丰富的内容形式
|
||
3. 🔄 **内容复用** - 优质内容被更多人使用,增加原创者成就感
|
||
4. 📈 **提升打卡率** - 降低决策成本,提高用户打卡频率
|
||
5. 💰 **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
|
||
|
||
**推荐服务**:
|
||
1. **Runway Gen-3** - 文本/图片生成视频
|
||
2. **HeyGen** - AI数字人讲解视频
|
||
3. **D-ID** - 静态图片转视频+语音
|
||
4. **剪映开放平台** - 自动剪辑API
|
||
|
||
**生成流程**:
|
||
|
||
```javascript
|
||
/**
|
||
* 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:本地模板视频合成
|
||
|
||
**技术方案**:
|
||
1. 提前制作视频模板(不同菜品类型)
|
||
2. 用户选择后,替换文字和图片
|
||
3. 使用FFmpeg本地合成
|
||
|
||
**优点**:
|
||
- 成本低(无需调用第三方API)
|
||
- 速度快(本地合成5-10秒)
|
||
- 可控性强
|
||
|
||
**缺点**:
|
||
- 灵活性差(模板固定)
|
||
- 视频质量不如AI生成
|
||
|
||
**实现示例**:
|
||
|
||
```javascript
|
||
// 使用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算法
|
||
|
||
**推荐策略**:
|
||
```javascript
|
||
推荐分数 = 内容质量分 × 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算法
|
||
|
||
**热门分数**:
|
||
```javascript
|
||
热门分数 = (点赞数 × 1 + 评论数 × 5 + 收藏数 × 10)
|
||
/ (发布时间距离现在的小时数 + 2)^1.5
|
||
```
|
||
|
||
**规则**:
|
||
- 新发布24小时内的内容优先
|
||
- 互动率高的内容优先
|
||
- 收藏权重最高(说明内容有价值)
|
||
|
||
#### 4.8.6 内容审核机制
|
||
|
||
**自动审核**:
|
||
1. **敏感词过滤**
|
||
- 医疗广告词汇
|
||
- 政治敏感词汇
|
||
- 联系方式(电话、微信号)
|
||
|
||
2. **图片审核**
|
||
- 调用腾讯云图片审核API
|
||
- 检测违规内容、广告、二维码
|
||
|
||
3. **异常检测**
|
||
- 短时间大量发布(疑似刷屏)
|
||
- 重复内容发布
|
||
|
||
**人工审核**:
|
||
- 被举报内容人工复审
|
||
- 热门内容抽查
|
||
- 新用户首次发布审核
|
||
|
||
**处理机制**:
|
||
- 轻微违规:内容下架+警告
|
||
- 严重违规:封禁账号+删除所有内容
|
||
- 申诉机制:用户可申诉,人工复审
|
||
|
||
#### 4.8.7 数据库设计
|
||
|
||
##### 社区内容表(community_posts)
|
||
|
||
```sql
|
||
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)
|
||
|
||
```sql
|
||
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)
|
||
|
||
```sql
|
||
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)
|
||
|
||
```sql
|
||
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)⭐新增
|
||
|
||
```sql
|
||
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)⭐新增
|
||
|
||
```sql
|
||
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 运营策略
|
||
|
||
##### 冷启动策略
|
||
|
||
**官方账号内容**:
|
||
1. 创建10-20个"营养师"官方账号
|
||
2. 提前准备100+优质打卡内容
|
||
3. 模拟真实用户行为(点赞、评论)
|
||
|
||
**种子用户激励**:
|
||
- 前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 组件规范
|
||
|
||
#### 按钮
|
||
|
||
**主按钮**:
|
||
```css
|
||
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);
|
||
```
|
||
|
||
**次按钮**:
|
||
```css
|
||
background: white;
|
||
border: 2px solid #f97316;
|
||
border-radius: 9999px;
|
||
height: 48px;
|
||
color: #f97316;
|
||
```
|
||
|
||
#### 卡片
|
||
|
||
**标准卡片**:
|
||
```css
|
||
background: white;
|
||
border-radius: 16px;
|
||
padding: 20px;
|
||
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
|
||
```
|
||
|
||
**渐变卡片**:
|
||
```css
|
||
background: linear-gradient(to bottom right, #f97316, #ea580c);
|
||
border-radius: 16px;
|
||
padding: 20px;
|
||
color: white;
|
||
```
|
||
|
||
#### 输入框
|
||
|
||
```css
|
||
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 动画规范
|
||
|
||
**点击缩放**:
|
||
```css
|
||
active:scale-95 {
|
||
transform: scale(0.95);
|
||
}
|
||
transition: transform 0.2s;
|
||
```
|
||
|
||
**悬停放大**:
|
||
```css
|
||
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)**:
|
||
```sql
|
||
user_id, openid, nickname, avatar, gender,
|
||
age, height, weight, has_dialysis, dialysis_type,
|
||
creatinine, created_at, updated_at
|
||
```
|
||
|
||
**营养计划表(nutrition_plans)**:
|
||
```sql
|
||
plan_id, user_id, egfr, standard_weight, bmi,
|
||
ckd_stage, protein_intake, energy_intake,
|
||
created_at
|
||
```
|
||
|
||
**食谱表(recipes)**:
|
||
```sql
|
||
recipe_id, user_id, meal_type, dishes_json,
|
||
total_protein, total_energy, created_at
|
||
```
|
||
|
||
**食物库表(foods)**:
|
||
```sql
|
||
food_id, name, category, image, nutrients_json,
|
||
caution_level, created_at
|
||
```
|
||
|
||
**对话记录表(chat_history)**:
|
||
```sql
|
||
chat_id, user_id, message, sender, created_at
|
||
```
|
||
|
||
---
|
||
|
||
## 七、核心计算公式(开发必读)
|
||
|
||
### 7.1 eGFR计算(CKD-EPI公式)
|
||
|
||
```javascript
|
||
/**
|
||
* 计算估算肾小球滤过率(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 标准体重计算
|
||
|
||
```javascript
|
||
/**
|
||
* 计算标准体重
|
||
* 基于东方人体型标准
|
||
*/
|
||
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计算
|
||
|
||
```javascript
|
||
/**
|
||
* 计算体重指数(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分期判断
|
||
|
||
```javascript
|
||
/**
|
||
* 判断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 营养需求计算
|
||
|
||
```javascript
|
||
/**
|
||
* 计算每日蛋白质摄入量(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 食物交换份计算
|
||
|
||
```javascript
|
||
/**
|
||
* 计算食物交换份
|
||
* 基于《中国食物成分表》和《慢性肾脏病患者膳食指导》
|
||
*/
|
||
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)
|
||
- [ ] 实现早中晚三餐切换
|
||
- [ ] 添加菜品图片(优选高质量图片)
|
||
- [ ] 显示食材清单和用量
|
||
- [ ] 测试不同设备适配
|
||
|
||
**数据结构设计**:
|
||
|
||
```javascript
|
||
// 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 推广策略
|
||
|
||
**线上渠道**:
|
||
1. 微信社群:肾病患者交流群
|
||
2. 公众号推文:营养科普 + 小程序入口
|
||
3. 短视频:抖音/快手科普内容
|
||
4. 医院合作:医生推荐使用
|
||
|
||
**线下渠道**:
|
||
1. 医院透析中心:海报/传单
|
||
2. 患者教育讲座:现场演示
|
||
3. 营养门诊:医生推荐
|
||
|
||
### 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 医疗风险
|
||
|
||
**重要声明**:
|
||
```
|
||
⚠️ 医疗免责声明
|
||
|
||
本小程序提供的营养计算和建议仅供参考,不构成医疗诊断或治疗建议。
|
||
|
||
• 计算结果基于通用公式,可能不适用于所有个体
|
||
• 具体饮食方案应咨询专业营养师或医生
|
||
• 如有任何疑问,请及时就医
|
||
• 我们不对因使用本服务而导致的任何后果承担责任
|
||
```
|
||
|
||
**风险控制**:
|
||
1. 每个页面显眼位置显示免责声明
|
||
2. AI回复统一加上"建议咨询医生"
|
||
3. 不提供药物相关建议
|
||
4. 不诊断疾病
|
||
|
||
### 10.3 合规风险
|
||
|
||
**需要的资质**:
|
||
- ✅ 互联网信息服务许可证(ICP备案)
|
||
- ⚠️ 医疗器械经营许可证(如涉及诊断)
|
||
- ⚠️ 食品经营许可证(如涉及食品销售)
|
||
|
||
**合规措施**:
|
||
1. 明确产品定位:营养科普工具,非医疗器械
|
||
2. 不诊断疾病、不开药方
|
||
3. 用户协议和隐私政策完善
|
||
4. 内容审核机制
|
||
|
||
---
|
||
|
||
## 十一、成功指标(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 参考文献
|
||
|
||
1. 《慢性肾脏病患者膳食指导》(WS/T 557-2017)
|
||
2. 《中国食物成分表》(第6版)
|
||
3. KDIGO慢性肾脏病评估和管理临床实践指南
|
||
4. 中国慢性肾脏病营养治疗临床实践指南
|
||
5. 慢生活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分
|
||
|
||
---
|
||
|
||
**技术更新**:
|
||
|
||
1. **数据库优化**:
|
||
- `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`(是否为复制的打卡)
|
||
|
||
2. **新增页面**:
|
||
- AI视频生成页(生成进度、视频预览、分享功能)
|
||
- 一键复制打卡确认页
|
||
|
||
3. **积分规则优化**:
|
||
- 单次打卡最高可得:**115分**(原50分,提升130%)
|
||
- 新增5种视频相关积分获得方式
|
||
|
||
4. **第三方服务集成**:
|
||
- 剪映开放平台(视频生成)
|
||
- 抖音开放平台(视频分享)
|
||
- 快手开放平台(视频分享)
|
||
|
||
---
|
||
|
||
**用户影响**:
|
||
- ✅ 打卡内容可以一键生成精美视频,分享到抖音/快手
|
||
- ✅ 历史打卡内容可快速复用,打卡效率大幅提升
|
||
- ✅ 积分获取速度提升130%,兑换咨询服务更快
|
||
- ✅ 视频传播带来更多新用户,社区更活跃
|
||
|
||
---
|
||
|
||
**商业价值**:
|
||
1. **低成本获客** 💰
|
||
- 视频自带品牌水印和二维码
|
||
- 短视频平台流量巨大(日活6亿+)
|
||
- 用户自发传播,CAC(获客成本)接近0
|
||
|
||
2. **提升用户粘性** 📈
|
||
- 打卡变得更有趣(生成视频+分享获赞)
|
||
- 一键复制降低门槛,打卡率提升
|
||
- 视频内容可收藏回看,增强情感连接
|
||
|
||
3. **UGC内容沉淀** 🎬
|
||
- 优质UGC视频内容可用于官方营销
|
||
- 打卡视频可成为KOL孵化基础
|
||
- 为未来视频号/抖音/快手矩阵打基础
|
||
|
||
---
|
||
|
||
### v2.1(2025-11-20)⭐⭐⭐体验大优化
|
||
|
||
**核心优化** - 三大体验升级:
|
||
|
||
#### 1️⃣ 极简打卡流程 ⭐⭐⭐最重要
|
||
**问题**:原打卡流程需要勾选菜品、调整用量,操作繁琐,老年用户难以使用。
|
||
|
||
**优化方案**:
|
||
- ✅ **简化输入**:只需上传照片(1-3张)+ 备注说明(可选)
|
||
- ✅ **语音录入**:支持语音备注,自动转文字
|
||
- ✅ **AI智能识别**:
|
||
- 自动识别照片中的食物种类
|
||
- 自动估算食物重量
|
||
- 自动计算营养成分(蛋白质、能量、钾、磷、钠)
|
||
- 识别不准可手动修正
|
||
- ✅ **操作步骤**:拍照 → 说话(可选)→ 提交,仅需3步!
|
||
|
||
**技术实现**:
|
||
- 集成腾讯云/百度AI图像识别API
|
||
- 集成语音转文字API
|
||
- AI识别准确率目标:>85%
|
||
|
||
#### 2️⃣ AI营养分析报告 ⭐⭐⭐核心价值
|
||
**问题**:打卡后只显示简单的营养统计,缺乏深度解读和专业指导。
|
||
|
||
**优化方案**:
|
||
- ✅ **完整报告**:包含食物清单、营养分析、AI点评、改进建议
|
||
- ✅ **可视化图表**:营养素达标率进度条,一目了然
|
||
- ✅ **通俗易懂**:AI用老百姓能听懂的话解读营养数据
|
||
- ✅ **可下载**:生成PDF报告,可保存/打印/给医生看
|
||
- ✅ **可分享**:分享到微信好友/朋友圈/社区
|
||
|
||
**报告内容**:
|
||
1. 饮食照片
|
||
2. AI识别食物清单
|
||
3. 营养成分详细分析(蛋白质、能量、钾、磷、钠)
|
||
4. 营养素详细解读(每个营养素单独说明)
|
||
5. AI营养师点评(优点+改进建议)
|
||
6. 下一餐建议
|
||
7. 注意事项提醒
|
||
|
||
**商业价值**:
|
||
- 专业报告增强用户信任
|
||
- 分享功能带来自然增长
|
||
- 为后续付费咨询铺路
|
||
|
||
#### 3️⃣ 积分兑换营养师咨询 ⭐⭐⭐商业闭环
|
||
**问题**:积分只能兑换会员/优惠券,消费场景单一,用户积分积累后找不到消费动机。
|
||
|
||
**优化方案**:
|
||
- ✅ **图文咨询**(100积分):
|
||
- 向专业营养师提问
|
||
- 1次提问 + 3次追问
|
||
- 24小时内营养师回复
|
||
- 连续打卡3天即可获得
|
||
|
||
- ✅ **语音/视频咨询**(300积分):
|
||
- 与营养师实时通话15分钟
|
||
- 可展示照片获得即时反馈
|
||
- 预约制,营养师在线
|
||
- 连续打卡10天即可获得
|
||
|
||
- ✅ **AI不限次咨询**(50积分):
|
||
- 24小时内AI营养师无限次提问
|
||
- AI即时回复,无需等待
|
||
- 打卡2天即可获得
|
||
|
||
**完整闭环**:
|
||
```
|
||
打卡赚积分
|
||
↓
|
||
兑换免费咨询
|
||
↓
|
||
向营养师提问
|
||
↓
|
||
获得专业指导
|
||
↓
|
||
改善饮食习惯
|
||
↓
|
||
更好地打卡(更高分、更达标)
|
||
↓
|
||
赚更多积分
|
||
```
|
||
|
||
**商业价值**:
|
||
- 降低咨询门槛,培养用户付费意愿
|
||
- 高频打卡用户积累积分,自然过渡到付费咨询
|
||
- 营养师回复质量高,促进用户留存和口碑传播
|
||
|
||
---
|
||
|
||
**技术实现**:
|
||
|
||
1. **数据库优化**:
|
||
- `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` 表(营养师咨询记录)
|
||
|
||
2. **积分规则优化**:
|
||
- 新增:AI智能分析 +10分
|
||
- 新增:下载营养报告 +5分
|
||
- 新增:分享营养报告 +10分
|
||
- 单次打卡最高可得:50分(原35分)
|
||
|
||
3. **页面优化**:
|
||
- 每日打卡页:极简版(只需拍照+说话)
|
||
- 新增: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核心亮点总结
|
||
|
||
### 四大创新功能
|
||
|
||
1. **完整配餐展示** 🍽️
|
||
- 不仅计算营养数据,还提供每日早中晚三餐的完整菜谱
|
||
- 每道菜包含:菜名、食材清单、用量、图片、营养成分
|
||
- 超越对标网站,提供真正可执行的饮食方案
|
||
|
||
2. **饮食打卡系统** 📅
|
||
- 采纳配餐建议后,每日打卡上传饮食记录
|
||
- 支持照片上传、备注说明、营养分析
|
||
- 连续打卡激励,3/7/30天里程碑奖励
|
||
- **核心价值**:形成"计算→采纳→打卡→习惯"的正向闭环
|
||
|
||
3. **积分激励系统** 🎁
|
||
- 打卡获得积分,照片上传额外奖励
|
||
- 会员倍率加成(1.0x/1.5x/2.0x)
|
||
- 积分兑换会员、咨询服务、优惠券
|
||
- **商业价值**:为付费转化提供数据支撑和用户基础
|
||
|
||
4. **打卡社区系统(类似小红书)** 📱⭐⭐⭐
|
||
- 瀑布流展示打卡分享内容(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成功的关键指标。
|
||
|
||
> 📞 **需要帮助?** 如有任何问题或建议,欢迎随时联系产品团队。
|