2026-07-22-active-health-six-stage-design.md 22 KB

主动健康六阶模型 — 项目改进综合设计文档

基准: 健康界 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 顺序逐步实施,也可根据工期并行开发互不影响的模块。