|
|
@@ -0,0 +1,590 @@
|
|
|
+# 主动健康六阶模型 — 项目改进综合设计文档
|
|
|
+
|
|
|
+> **基准**: 健康界 2026/06/17《主动健康的六阶模型及其神经生理机制》
|
|
|
+> **项目**: CFClub 家庭健康小程序 (cfc-web 前端 + cfc-admin 后端)
|
|
|
+> **阶段**: P0 (微启动) → P1 (即时反馈 + 智能预警) → P2 (身份重塑 + 家庭互动) → P3 (社区扩散)
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 背景:六阶模型与项目缺口
|
|
|
+
|
|
|
+### 六阶模型
|
|
|
+
|
|
|
+| 阶段 | 核心机制 | 神经基础 |
|
|
|
+|:-----|:---------|:---------|
|
|
|
+| ① 有效启动 | 最小行动单元<1s,零认知负荷 | 前扣带回-默认模式网络转换 |
|
|
|
+| ② 持续坚持 | 即时正向反馈,多巴胺递质系统参与 | 纹状体多巴胺D1受体通路 |
|
|
|
+| ③ 获得感形成 | 阶段性成就显性化,内啡肽/催产素 | 前额叶-边缘系统整合 |
|
|
|
+| ④ 身份重塑 | 从"被动执行者"到"主动健康实践者" | 内侧前额叶自我参照加工 |
|
|
|
+| ⑤ 意见领袖化 | 叙事输出,影响他人 | 颞顶联合区-心智化网络 |
|
|
|
+| ⑥ 社会扩散 | 群体规范形成,家庭为单元扩散 | 镜像神经元-社会脑网络 |
|
|
|
+
|
|
|
+### 项目现状 -> 六阶覆盖
|
|
|
+
|
|
|
+| 原有功能 | 覆盖的阶 | 缺口 |
|
|
|
+|:---------|:---------|:-----|
|
|
|
+| 健康打卡 | ② (部分) | 缺有效启动(阶①) |
|
|
|
+| 身体记录/测评 | — | 无反馈闭环 |
|
|
|
+| 能量系统 | ② (部分) | 无身份标识(阶④) |
|
|
|
+| 五行沙盘/情绪打卡 | — | 无社交扩散(阶⑥) |
|
|
|
+| 家庭关系图 | — | 无家庭健康互动 |
|
|
|
+| 报告上传/AI问答 | — | 无预警/趋势解读 |
|
|
|
+
|
|
|
+### 改进总清单
|
|
|
+
|
|
|
+| 优先级 | 改进项 | 覆盖阶 |
|
|
|
+|:-------|:-------|:-------|
|
|
|
+| **P0** | 微行动系统(最小行为单元) | ① 有效启动 |
|
|
|
+| **P1-1** | 即时多巴胺反馈(动画/声音/AI鼓励) | ② 持续坚持 |
|
|
|
+| **P1-2** | 健康行为智能预警(趋势解读+触发建议) | ② 持续坚持 |
|
|
|
+| **P2-1** | 身份重塑系统(健康等级+称号+叙事) | ④ 身份重塑 |
|
|
|
+| **P2-2** | 家庭健康互动(点赞/挑战/排行) | ⑤ 意见领袖化 |
|
|
|
+| **P3** | 健康社区扩散(家庭圈/分享/荣誉墙) | ⑥ 社会扩散 |
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## P0 — 微启动系统(有效启动)
|
|
|
+
|
|
|
+### 问题
|
|
|
+
|
|
|
+用户注册后的第一道门槛太高——打开小程序面对的是完整的"健康打卡表单",需要填写多项内容,认知负荷大,导致大量用户在首次打开后就流失。
|
|
|
+
|
|
|
+### 设计
|
|
|
+
|
|
|
+#### 1. 微行动概念
|
|
|
+
|
|
|
+定义 12 个预置的"1秒完成"的健康行动:
|
|
|
+
|
|
|
+| 编号 | 微行动 | 交互方式 | 预期完成时间 |
|
|
|
+|:-----|:-------|:---------|:------------|
|
|
|
+| A01 | 喝一杯水 ☕️ | 点击 | < 1s |
|
|
|
+| A02 | 深呼吸 3 次 🫁 | 点击 | < 1s |
|
|
|
+| A03 | 站起来伸个懒腰 🧘 | 点击 | < 1s |
|
|
|
+| A04 | 看远处 10 秒 🌿 | 点击 | < 1s |
|
|
|
+| A05 | 微笑一下 😊 | 点击 | < 1s |
|
|
|
+| A06 | 转转头颈 5 圈 🔄 | 点击 | < 1s |
|
|
|
+| A07 | 握拳放松 3 次 ✊ | 点击 | < 1s |
|
|
|
+| A08 | 喝口水润喉 💧 | 点击 | < 1s |
|
|
|
+| A09 | 眨眨眼 5 次 👁️ | 点击 | < 1s |
|
|
|
+| A10 | 按揉合谷穴 3 下 🖐️ | 点击 | < 1s |
|
|
|
+| A11 | 踮脚尖 5 次 ⬆️ | 点击 | < 1s |
|
|
|
+| A12 | 耸肩放松 3 次 ↕️ | 点击 | < 1s |
|
|
|
+
|
|
|
+#### 2. 前端组件
|
|
|
+
|
|
|
+**`components/MicroActionCard.vue`** — 首页核心组件
|
|
|
+
|
|
|
+```
|
|
|
+┌──────────────────────────────────┐
|
|
|
+│ ☕️ 今天的小行动 · 已完成 0/1 │
|
|
|
+│ │
|
|
|
+│ [喝一杯水] 点击完成 → +1能量 │
|
|
|
+│ │
|
|
|
+│ 3s 倒计时后自动翻转下一项 │
|
|
|
+│ (或点击立即翻转) │
|
|
|
+└──────────────────────────────────┘
|
|
|
+```
|
|
|
+
|
|
|
+- 每次只展示 1 条微行动(降低选择负担)
|
|
|
+- 每天默认配额 **1 次**(首次使用额外赠送 2 次体验配额)
|
|
|
+- 完成后 3s 自动切换到下一条
|
|
|
+- 用户可手动点击立即切换
|
|
|
+- 每日全部完成后卡片变为 ✅ 状态
|
|
|
+
|
|
|
+#### 3. 时间触发机制
|
|
|
+
|
|
|
+在家长端微信订阅消息中增加:
|
|
|
+
|
|
|
+> "您今天的小行动还没完成哦!喝杯水只需要 1 秒钟 ☕️"
|
|
|
+
|
|
|
+推送触发条件:当日 18:00 未完成微行动,且最近 3 天有活跃记录。
|
|
|
+
|
|
|
+#### 4. 与健康打卡的互斥
|
|
|
+
|
|
|
+```
|
|
|
+微行动 (每日1次) 健康打卡 (每日1次)
|
|
|
+ │ │
|
|
|
+ └── 二选一 ──────────────┘
|
|
|
+ │
|
|
|
+ ▼
|
|
|
+ 都计入连续打卡进度
|
|
|
+ 但同日只能完成其中一种
|
|
|
+```
|
|
|
+
|
|
|
+- 完成微行动 = 当日打卡成功(计入连续打卡天数)
|
|
|
+- 完成完整健康打卡 = 当日打卡成功 + 额外数据记录
|
|
|
+- 两者不可同日重复
|
|
|
+
|
|
|
+#### 5. 后端
|
|
|
+
|
|
|
+| 文件 | 说明 |
|
|
|
+|:-----|:------|
|
|
|
+| `entity/MicroAction.java` | 微行动定义表 |
|
|
|
+| `entity/MicroActionRecord.java` | 用户完成记录表 |
|
|
|
+| `mapper/MicroActionMapper.java` | |
|
|
|
+| `mapper/MicroActionRecordMapper.java` | |
|
|
|
+| `service/MicroActionService.java` | 分配+完成+配额校验 |
|
|
|
+| `controller/MicroActionController.java` | `/api/micro-action/today`, `/api/micro-action/complete` |
|
|
|
+
|
|
|
+#### 6. 现有文件扩展
|
|
|
+
|
|
|
+| 文件 | 改动 |
|
|
|
+|:-----|:------|
|
|
|
+| `store/index.js` | 新增 microAction 模块 |
|
|
|
+| `utils/api.js` | 新增微行动 API |
|
|
|
+| `service/EnergyRuleEngine.java` | 增加微行动 +1 能量规则 |
|
|
|
+| `service/TaskReminderService.java` | 增加微行动定时提醒 |
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## P1-1 — 即时多巴胺反馈系统
|
|
|
+
|
|
|
+### 问题
|
|
|
+
|
|
|
+用户完成健康行为后,只看到"保存成功"或纯文字提示,缺乏即时情感反馈。多巴胺闭环缺失,持行为缺乏"爽点"支撑。
|
|
|
+
|
|
|
+### 设计
|
|
|
+
|
|
|
+#### 1. 反馈分层
|
|
|
+
|
|
|
+| 层级 | 响应速度 | 内容来源 | 使用场景 |
|
|
|
+|:-----|:---------|:---------|:---------|
|
|
|
+| **L1 即时反馈** | < 200ms | CSS动画 + 预设文案 | 每次点击"完成"/"打卡" |
|
|
|
+| **L2 深度反馈** | 异步 | AI 生成 (Dify) | 每日摘要/每周报告 |
|
|
|
+
|
|
|
+#### 2. L1 即时反馈触发点
|
|
|
+
|
|
|
+| 触发动作 | 动画 | 文案 | 音效 |
|
|
|
+|:---------|:-----|:-----|:-----|
|
|
|
+| 完成微行动 | ✅ 绿色勾缩放 + 能量+1飞入 | "太棒了!🎉" | 叮当声 |
|
|
|
+| 健康打卡 | 能量粒子迸发 | "今天又是健康的一天!" | 叮当声 |
|
|
|
+| 运动记录 | 运动图标脉冲 | "今天动了 XX 分钟!💪" | 轻快音 |
|
|
|
+| 睡眠记录 | 月亮图标动画 | "优质睡眠!😴" | 轻快音 |
|
|
|
+| 饮水记录 | 水杯灌满 | "补水成功 💧" | 轻快音 |
|
|
|
+| 里程碑达成 | 全屏彩带 (Canvas) | "连续7天!🔥" | 上升音阶 |
|
|
|
+| 首次使用 | 引导光晕 | "你的健康之旅开始了!" | 叮当声 |
|
|
|
+
|
|
|
+#### 3. 预设文案库
|
|
|
+
|
|
|
+| 阶段 | 文案 |
|
|
|
+|:-----|:-----|
|
|
|
+| 第1天 | "第一步!最有意义的一步 🎉" |
|
|
|
+| 连续3天 | "连续3天!你已经超过了50%的新手 💪" |
|
|
|
+| 连续7天 | "一周了!习惯正在形成 🌱" |
|
|
|
+| 连续14天 | "两周!坚持就是你的超能力 ⚡" |
|
|
|
+| 连续21天 | "21天法则!习惯几乎自动化了 🔥" |
|
|
|
+| 连续30天 | "一个月!你是健康行动派 🏆" |
|
|
|
+| 首次运动 | "运动让大脑更聪明 🧠" |
|
|
|
+| 首次睡眠记录 | "好睡眠是最好的免疫力 😴" |
|
|
|
+| 恢复打卡(断后) | "欢迎回来!每一次重启都是勇敢的 🌟" |
|
|
|
+
|
|
|
+#### 4. 前端技术方案
|
|
|
+
|
|
|
+- **CSS Animation** 为主(微信小程序兼容)
|
|
|
+- **Canvas** 仅用于里程碑彩带效果(1.5s,30粒子)
|
|
|
+- **`wx.createInnerAudioContext()`** 播放音效(< 1s, 体积 < 50KB)
|
|
|
+- 所有动画资源预加载,打包为 base64 或雪碧图,避免网络延迟
|
|
|
+
|
|
|
+#### 5. AI 深度反馈 (L2)
|
|
|
+
|
|
|
+通过已有 `Dify AI Gateway` 每天 22:00 定时任务:
|
|
|
+
|
|
|
+> "你是一个温暖的家庭健康教练。根据以下用户数据,生成1-2句鼓励语(不超过50字):[当日行为数据]"
|
|
|
+
|
|
|
+展示位置:次日首次打开小程序时的"早安健康摘要"横幅。
|
|
|
+
|
|
|
+#### 6. 涉及文件
|
|
|
+
|
|
|
+**前端**:
|
|
|
+
|
|
|
+| 文件 | 说明 |
|
|
|
+|:-----|:------|
|
|
|
+| `components/FeedbackToast.vue` | **新建** — L1即时反馈弹层 |
|
|
|
+| `components/MilestoneCelebration.vue` | **新建** — 全屏彩带动画组件 |
|
|
|
+| `components/DailySummary.vue` | **新建** — AI每日摘要卡片 |
|
|
|
+| `utils/feedback-presets.js` | **新建** — 预设文案+音效映射表 |
|
|
|
+| `utils/feedback-engine.js` | **新建** — 反馈触发引擎 |
|
|
|
+| `store/feedback.js` | **新建** — 反馈状态模块 |
|
|
|
+| `pages/index/index.vue` | 嵌入 DailySummary |
|
|
|
+
|
|
|
+**后端**:
|
|
|
+
|
|
|
+| 文件 | 说明 |
|
|
|
+|:-----|:------|
|
|
|
+| `service/DailyFeedbackService.java` | **新建** — 每日AI反馈生成 |
|
|
|
+| `controller/DailyFeedbackController.java` | **新建** — `/api/feedback/today` |
|
|
|
+| `entity/DailyFeedback.java` | **新建** — `daily_feedback` 表 |
|
|
|
+| `mapper/DailyFeedbackMapper.java` | **新建** |
|
|
|
+| `service/AiGateway.java` | 扩展 — 新增 health-coach prompt 类型 |
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## P1-2 — 健康行为智能预警
|
|
|
+
|
|
|
+### 问题
|
|
|
+
|
|
|
+用户行为数据已入库,但系统不做任何解读。数据只是"死记录",用户不知道自己的行为趋势是好是坏,也不知道该改进什么。
|
|
|
+
|
|
|
+### 设计
|
|
|
+
|
|
|
+#### 1. 预警规则(6条)
|
|
|
+
|
|
|
+| ID | 条件 | 预警文案 | 行动建议 |
|
|
|
+|:----|:-----|:---------|:---------|
|
|
|
+| R001 | 连续3天睡眠评分↓ | "您已连续3天睡眠质量下降" | "睡前1小时放下手机,喝杯温牛奶" |
|
|
|
+| R002 | 连续5天无运动 | "您已经5天没有运动了" | "站起来走3分钟就是好的开始!" |
|
|
|
+| R003 | 饮水<500ml 连续2天 | "近2天饮水量偏低" | "每1小时喝一杯水,设置定时提醒" |
|
|
|
+| R004 | 运动强度突增>50% | "今天运动量比平时多一半" | "适当拉伸,不要过度训练" |
|
|
|
+| R005 | 连续7天无打卡 | "您已经7天没有健康打卡" | "从最小的动作开始:喝一杯水 ☕️" |
|
|
|
+| R006 | 今日未打卡(18:00) | "今天的健康打卡还没完成哦" | "点我完成今日微行动" |
|
|
|
+
|
|
|
+#### 2. 引擎架构
|
|
|
+
|
|
|
+```
|
|
|
+定时任务 (cron: 0 0 8,12,18 * * ?)
|
|
|
+ │
|
|
|
+ ▼
|
|
|
+HealthAlertEngine.evaluate(userId)
|
|
|
+ ├── 读取近X天记录
|
|
|
+ ├── 逐条匹配规则
|
|
|
+ ├── 去重 (同规则24h内不重复)
|
|
|
+ └── 生成 HealthAlert 记录
|
|
|
+ │
|
|
|
+ ▼
|
|
|
+前端拉取 GET /api/health/alert
|
|
|
+ │
|
|
|
+ ▼
|
|
|
+首页预警横幅展示
|
|
|
+```
|
|
|
+
|
|
|
+#### 3. 前端展示
|
|
|
+
|
|
|
+首页微行动卡片下方:
|
|
|
+
|
|
|
+```
|
|
|
+┌──────────────────────────────────┐
|
|
|
+│ ⚠️ 健康小提醒 │
|
|
|
+│ 您已连续3天睡眠质量下降 │
|
|
|
+│ 今晚试试:睡前1小时放下手机 │
|
|
|
+│ [我知道了] │
|
|
|
+└──────────────────────────────────┘
|
|
|
+```
|
|
|
+
|
|
|
+- 最多展示 2 条(按严重程度)
|
|
|
+- 点击"我知道了" → `POST /api/health/alert/dismiss` → 24h内不再展示
|
|
|
+
|
|
|
+#### 4. 涉及文件
|
|
|
+
|
|
|
+**后端**:
|
|
|
+
|
|
|
+| 文件 | 说明 |
|
|
|
+|:-----|:------|
|
|
|
+| `service/HealthAlertEngine.java` | **新建** — 规则引擎 |
|
|
|
+| `service/HealthAlertService.java` | **新建** — CRUD + 去重 |
|
|
|
+| `controller/HealthAlertController.java` | **新建** — `/api/health/alert` |
|
|
|
+| `entity/HealthAlert.java` | **新建** — `health_alerts` 表 |
|
|
|
+| `mapper/HealthAlertMapper.java` | **新建** |
|
|
|
+
|
|
|
+**前端**:
|
|
|
+
|
|
|
+| 文件 | 说明 |
|
|
|
+|:-----|:------|
|
|
|
+| `components/HealthAlertBanner.vue` | **新建** — 预警横幅 |
|
|
|
+| `pages/index/index.vue` | 嵌入横幅 |
|
|
|
+| `store/health-alert.js` | **新建** — 预警状态 |
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## P2-1 — 身份重塑系统
|
|
|
+
|
|
|
+### 问题
|
|
|
+
|
|
|
+用户完成健康行为后看到的只是打卡次数增加、能量值变化,没有"我是谁"的身份认同——缺少从"执行者"到"健康践行者"的身份跃迁感。
|
|
|
+
|
|
|
+### 设计
|
|
|
+
|
|
|
+#### 1. 等级体系(5级)
|
|
|
+
|
|
|
+| 等级 | 称号 | 所需健康积分 | 视觉标识 |
|
|
|
+|:-----|:-----|:------------|:---------|
|
|
|
+| L1 | 健康探索者 🌱 | 0 | 绿色幼苗徽章 |
|
|
|
+| L2 | 健康践行者 🌿 | 100 | 绿叶徽章 |
|
|
|
+| L3 | 家庭健康官 🏡 | 300 | 房屋徽章 |
|
|
|
+| L4 | 健康达人 ⭐ | 700 | 金星徽章 |
|
|
|
+| L5 | 健康领航者 👑 | 1500 | 皇冠徽章 |
|
|
|
+
|
|
|
+#### 2. 综合健康积分公式
|
|
|
+
|
|
|
+```
|
|
|
+健康积分 =
|
|
|
+ 打卡(每次+2, 上限每日1次) +
|
|
|
+ 微行动(每次+1, 上限每日1次) +
|
|
|
+ 运动记录(每次+3, 上限每日1次) +
|
|
|
+ 睡眠记录(每次+2, 上限每日1次) +
|
|
|
+ 饮水记录(每次+1, 上限每日3次) +
|
|
|
+ 饮食记录(每次+2, 上限每日1次) +
|
|
|
+ 健康报告上传(每次+10) +
|
|
|
+ 连续打卡加成(连续7天+5, 连续30天+20) +
|
|
|
+ 互动积分(点赞他人+1, 被赞+1)
|
|
|
+```
|
|
|
+
|
|
|
+**与 Energy 能量的关系**:
|
|
|
+
|
|
|
+| | 健康积分 (Health Score) | 能量 (Energy) |
|
|
|
+|:--|:-----------------------|:--------------|
|
|
|
+| 用途 | 等级晋升(不可消费) | 兑换心愿/任务(可消费) |
|
|
|
+| 来源 | 长期健康行为积累 | 健康行为+互动 |
|
|
|
+| 重置 | 永不重置 | 可重置/消耗 |
|
|
|
+
|
|
|
+#### 3. 展示位置
|
|
|
+
|
|
|
+- **首页侧边/抽屉** — 用户头像旁显示称号徽章
|
|
|
+- **个人中心页** — 完整等级+进度条+健康故事时间线
|
|
|
+- **健康打卡页** — 称号徽章
|
|
|
+
|
|
|
+#### 4. "我的健康故事"时间线
|
|
|
+
|
|
|
+从用户行为数据自动生成:
|
|
|
+
|
|
|
+```
|
|
|
+🏁 2026/06/01 — 开始了健康之旅的第一步
|
|
|
+🔥 第7天 — 突破了第一周!
|
|
|
+📋 第一次上传健康报告
|
|
|
+🌟 晋升为"健康践行者"!
|
|
|
+🏆 连续30天!坚韧不拔!
|
|
|
+👨👩👧👦 第一次为家人点赞
|
|
|
+```
|
|
|
+
|
|
|
+时间线事件存储在 `health_timeline` 表,行为触发生成。
|
|
|
+
|
|
|
+#### 5. 涉及文件
|
|
|
+
|
|
|
+**后端**:
|
|
|
+
|
|
|
+| 文件 | 说明 |
|
|
|
+|:-----|:------|
|
|
|
+| `entity/HealthLevel.java` | **新建** — 等级定义表 |
|
|
|
+| `entity/HealthTimelineEvent.java` | **新建** — 时间线事件表 |
|
|
|
+| `service/HealthScoreService.java` | **新建** — 积分计算引擎 |
|
|
|
+| `service/HealthLevelService.java` | **新建** — 等级判定+升级通知 |
|
|
|
+| `service/HealthTimelineService.java` | **新建** — 时间线生成 |
|
|
|
+| `controller/HealthScoreController.java` | **新建** — `/api/health/score` |
|
|
|
+| `controller/HealthTimelineController.java` | **新建** — `/api/health/timeline` |
|
|
|
+
|
|
|
+**前端**:
|
|
|
+
|
|
|
+| 文件 | 说明 |
|
|
|
+|:-----|:------|
|
|
|
+| `components/HealthBadge.vue` | **新建** — 等级称号组件 |
|
|
|
+| `components/HealthTimeline.vue` | **新建** — 健康故事时间线组件 |
|
|
|
+| `pages/profile/profile.vue` | 展示等级+进度+时间线 |
|
|
|
+| `store/health-score.js` | **新建** — 积分/等级状态 |
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## P2-2 — 家庭健康互动
|
|
|
+
|
|
|
+### 问题
|
|
|
+
|
|
|
+现有"家庭关系图"只是静态结构展示,家庭功能完全是信息传递,没有任何健康行为层面的协同和激励。
|
|
|
+
|
|
|
+### 设计
|
|
|
+
|
|
|
+#### 1. 家庭健康排行榜
|
|
|
+
|
|
|
+家长端首页新增区域:
|
|
|
+
|
|
|
+```
|
|
|
+┌──────────────────────────────────┐
|
|
|
+│ 👨👩👧👦 家庭健康榜 │
|
|
|
+│ │
|
|
|
+│ 🥇 妈妈 2,350分 🔥 15天 │
|
|
|
+│ 🥈 爸爸 1,820分 🔥 8天 │
|
|
|
+│ 🥉 小明 980分 🔥 3天 │
|
|
|
+│ │
|
|
|
+│ 全家总积分: 5,150分 │
|
|
|
+│ [查看全家健康详情 →] │
|
|
|
+└──────────────────────────────────┘
|
|
|
+```
|
|
|
+
|
|
|
+- 基于健康积分排名
|
|
|
+- 每个成员显示头像+等级称号+连续打卡天数🔥
|
|
|
+- 角色差异:家长端看到全部成员,儿童端只看到自己排名
|
|
|
+
|
|
|
+#### 2. 点赞系统
|
|
|
+
|
|
|
+```
|
|
|
+用户A完成打卡 → 通知其他家庭成员
|
|
|
+ │
|
|
|
+ ▼
|
|
|
+首页提示 → "妈妈刚刚完成了健康打卡 👍"
|
|
|
+ │
|
|
|
+ ▼
|
|
|
+点击👍 → POST /api/health/interact/like
|
|
|
+ │
|
|
|
+ ▼
|
|
|
+双方收到反馈 (点赞者"点赞成功"+1积分, 被赞者下次打开看到通知)
|
|
|
+```
|
|
|
+
|
|
|
+- 每个行为 24h 内可被点赞 1 次
|
|
|
+- 点赞双方均 +1 健康积分
|
|
|
+
|
|
|
+#### 3. 家庭挑战
|
|
|
+
|
|
|
+| 类型 | 内容 | 期限 | 奖励 |
|
|
|
+|:-----|:-----|:-----|:-----|
|
|
|
+| 全员打卡 | 全员连续打卡3天 | 3天 | +50 积分 |
|
|
|
+| 运动PK | 家庭总运动时长>300min | 7天 | +100 积分 |
|
|
|
+| 健康周 | 全员每日完成微行动 | 7天 | 限时徽章"健康之家" |
|
|
|
+
|
|
|
+流程:
|
|
|
+
|
|
|
+```
|
|
|
+系统发起(每月首日) → 首页挑战卡片
|
|
|
+ → 每日进度更新 → 到期自动结算 → 达标发奖
|
|
|
+```
|
|
|
+
|
|
|
+#### 4. 涉及文件
|
|
|
+
|
|
|
+**后端**:
|
|
|
+
|
|
|
+| 文件 | 说明 |
|
|
|
+|:-----|:------|
|
|
|
+| `controller/FamilyHealthController.java` | **新建** — `/api/health/family/ranking` |
|
|
|
+| `controller/HealthInteractionController.java` | **新建** — `/api/health/interact/like` |
|
|
|
+| `controller/FamilyChallengeController.java` | **新建** — 挑战CRUD/进度/结算 |
|
|
|
+| `service/FamilyHealthScoreService.java` | **新建** — 家庭排行计算 |
|
|
|
+| `service/HealthInteractionService.java` | **新建** — 点赞+通知 |
|
|
|
+| `service/FamilyChallengeService.java` | **新建** — 挑战引擎 |
|
|
|
+| `entity/FamilyChallenge.java` | **新建** — `family_challenge` 表 |
|
|
|
+| `entity/FamilyChallengeProgress.java` | **新建** — `family_challenge_progress` 表 |
|
|
|
+| `entity/HealthInteraction.java` | **新建** — `health_interaction` 表 |
|
|
|
+
|
|
|
+**前端**:
|
|
|
+
|
|
|
+| 文件 | 说明 |
|
|
|
+|:-----|:------|
|
|
|
+| `components/FamilyHealthRanking.vue` | **新建** — 家庭健康榜 |
|
|
|
+| `components/FamilyChallengeCard.vue` | **新建** — 挑战卡片 |
|
|
|
+| `components/HealthLikeButton.vue` | **新建** — 点赞按钮 |
|
|
|
+| `pages/index/index.vue` | 嵌入排行榜+挑战卡片 |
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## P3 — 健康社区扩散
|
|
|
+
|
|
|
+### 问题
|
|
|
+
|
|
|
+家庭健康数据完全封闭——每个家庭只看得到自己,没有社交动力激发用户向他人传递健康行为,六阶模型第⑥阶"社会扩散"缺失。
|
|
|
+
|
|
|
+### 设计
|
|
|
+
|
|
|
+#### 1. 家庭同盟(健康圈)
|
|
|
+
|
|
|
+```
|
|
|
+家庭A(2-6人)── 发起邀请 ──→ 家庭B(2-6人)
|
|
|
+ │ │
|
|
|
+ └────────── 组成健康圈 ─────────┘
|
|
|
+ (6-20人 / 圈)
|
|
|
+ │
|
|
|
+ ▼
|
|
|
+ ┌──────────────────┐
|
|
|
+ │ 圈总积分排行榜 │
|
|
|
+ │ 圈挑战(半月一次) │
|
|
|
+ │ 圈内排行(家庭级) │
|
|
|
+ └──────────────────┘
|
|
|
+```
|
|
|
+
|
|
|
+- 一个家庭最多加入 3 个健康圈
|
|
|
+- 退出冷却期 7 天
|
|
|
+- 排行以"家庭"为单位,不暴露个人数据
|
|
|
+
|
|
|
+#### 2. 圈挑战
|
|
|
+
|
|
|
+| 类型 | 周期 | 规则 |
|
|
|
+|:-----|:-----|:-----|
|
|
|
+| 全员达标赛 | 每周 | 圈内家庭全员打卡 ≥ 5天 |
|
|
|
+| 运动总动员 | 每两周 | 圈内运动时长前3家庭 |
|
|
|
+| 健康新秀榜 | 每月 | 圈内积分增长最快家庭 |
|
|
|
+
|
|
|
+#### 3. 健康足迹分享页
|
|
|
+
|
|
|
+通过微信分享的 H5 页面(只读快照,无需登录):
|
|
|
+
|
|
|
+```
|
|
|
+─────────────────────────────────
|
|
|
+ XX家庭 · 健康足迹
|
|
|
+─────────────────────────────────
|
|
|
+ 妈妈 打卡 30 天 🏆
|
|
|
+ 爸爸 打卡 22 天
|
|
|
+ 小明 微行动 15 次 🎯
|
|
|
+─────────────────────────────────
|
|
|
+ "我们坚持健康打卡30天了!"
|
|
|
+─────────────────────────────────
|
|
|
+ [扫码加入我们一起健康]
|
|
|
+─────────────────────────────────
|
|
|
+```
|
|
|
+
|
|
|
+底部小程序码 → 扫码进入小程序
|
|
|
+
|
|
|
+#### 4. 涉及文件
|
|
|
+
|
|
|
+**后端**:
|
|
|
+
|
|
|
+| 文件 | 说明 |
|
|
|
+|:-----|:------|
|
|
|
+| `controller/HealthCircleController.java` | **新建** — 圈CRUD |
|
|
|
+| `controller/CircleChallengeController.java` | **新建** — 圈挑战管理 |
|
|
|
+| `controller/ShareController.java` | **新建** — 分享页接口 |
|
|
|
+| `service/HealthCircleService.java` | **新建** |
|
|
|
+| `service/CircleChallengeService.java` | **新建** |
|
|
|
+| `service/ShareService.java` | **新建** |
|
|
|
+| `entity/HealthCircle.java` | **新建** — 健康圈表 |
|
|
|
+| `entity/HealthCircleMember.java` | **新建** — 圈成员表(家庭级) |
|
|
|
+| `entity/CircleChallenge.java` | **新建** — 圈挑战表 |
|
|
|
+
|
|
|
+**前端**:
|
|
|
+
|
|
|
+| 文件 | 说明 |
|
|
|
+|:-----|:------|
|
|
|
+| `pages/share/index.vue` | **新建** — 分享H5页面 |
|
|
|
+| `components/CircleRanking.vue` | **新建** — 圈排行组件 |
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 数据表总览
|
|
|
+
|
|
|
+| 优先级 | 表名 | 说明 |
|
|
|
+|:-------|:-----|:------|
|
|
|
+| P0 | `micro_action` | 预定义微行动字典 |
|
|
|
+| P0 | `micro_action_record` | 用户完成记录 |
|
|
|
+| P1-1 | `daily_feedback` | AI每日反馈 |
|
|
|
+| P1-2 | `health_alerts` | 健康预警记录 |
|
|
|
+| P2-1 | `health_level` | 等级定义 |
|
|
|
+| P2-1 | `health_timeline_event` | 健康时间线事件 |
|
|
|
+| P2-2 | `family_challenge` | 家庭挑战 |
|
|
|
+| P2-2 | `family_challenge_progress` | 挑战进度 |
|
|
|
+| P2-2 | `health_interaction` | 点赞记录 |
|
|
|
+| P3 | `health_circle` | 健康圈 |
|
|
|
+| P3 | `health_circle_member` | 圈成员 |
|
|
|
+| P3 | `circle_challenge` | 圈挑战(扩展自家庭挑战) |
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 实现顺序依赖图
|
|
|
+
|
|
|
+```
|
|
|
+P0 微启动 ──────────────────────────────────┐
|
|
|
+ │
|
|
|
+P1-1 即时反馈 ────┐ │
|
|
|
+ ├── (P1-2 预警依赖行为数据) │
|
|
|
+P1-2 智能预警 ────┘ │
|
|
|
+ ├── 所有阶段独立可实施
|
|
|
+P2-1 身份重塑 ────┐ │
|
|
|
+ ├── (P2-2 依赖积分系统) │
|
|
|
+P2-2 家庭互动 ────┘ │
|
|
|
+ │
|
|
|
+P3 社区扩散 ──── 依赖 P2-2 的家庭概念完整 │
|
|
|
+```
|
|
|
+
|
|
|
+**关键原则**:四个阶段之间无阻塞依赖,可按照 P0→P1→P2→P3 顺序逐步实施,也可根据工期并行开发互不影响的模块。
|