2026-08-08-growth-intervention-center-design.md 10 KB

成长页面重构 — 干预中心

版本: v1.0 日期: 2026-08-08 状态: 设计稿

1. 概述

将成长TabBar页(growth-main/index.vue)重构为"干预中心",聚焦主动健康闭环中的"干预"环节。核心问题:"我们做了什么,效果如何?"通过每日记录、持续追踪、里程碑、定期调研,追踪干预的执行与成效。

2. 页面布局

┌──────────────────────────────────┐
│  📊 今日干预进度卡               │
│  (打卡/饮食/运动/心情/调研进度)   │
│  有未完成项自动提醒               │
├──────────────────────────────────┤
│  📈 持续追踪 Tab                 │
│  [饮食] [运动] [睡眠] [心情] [调研]│
│  各维度历史记录摘要               │
├──────────────────────────────────┤
│  🏆 里程碑                       │
│  连续打卡/挑战完成/档案完整度      │
├──────────────────────────────────┤
│  📋 定期调研                     │
│  周期问卷 + 历史记录 + 趋势       │
├──────────────────────────────────┤
│  活动/商品推荐 (弱化)             │
└──────────────────────────────────┘

3. 移除项

  • 现有 8 个功能入口网格(打卡/任务/挑战/饮食/运动/作息/档案/冥想)——功能融入各区块
  • 现有"今日执行概览"卡片——升级为今日干预进度卡
  • 现有"成长档案"孩子选择区块——成员选择条已在上方,成长档案融入其他区块

4. 今日干预进度卡

4.1 结构

┌── 今日干预进度 ─────────────────────┐
│  2026-08-08 星期五                    │
│  ✅ 今日打卡  ✔ 已完成               │
│  ☐ 饮食记录  [补录]  ← 未完成        │
│  ☐ 运动记录  [补录]                  │
│  ✅ 心情记录  ✔ 已完成               │
│  ⚠ 本周调研  [开始]  ← 待完成        │
│  ──────────────────────             │
│  今日完成 2/5 · 连续打卡 7 天 🔥      │
└──────────────────────────────────────┘

4.2 行为

  • 自动提醒: onShow 时检查今日未完成项,有未完成在顶部显示提醒条("今日还有 X 项未记录")
  • 补录: 点击[补录]跳转对应记录页,传日期参数标识补录
  • 调研提醒: 根据调研周期判断是否到期,到期显示[开始]
  • 连续打卡: 调用 healthCheckinList
  • 心情记录: 调用 emotion-checkin 接口
  • 底部:今日完成数/总数 + 连续打卡天数

4.3 数据来源

接口
今日打卡 healthCheckinList({ memberId, date })
饮食记录 getDietDailyRecords({ memberId, date })
运动记录 exercise 相关接口
心情记录 emotion-checkin 接口
调研状态 新增 survey/status 接口

5. 持续追踪 Tab

5.1 结构

┌── 持续追踪 ──────────────────────────┐
│  [饮食] [运动] [睡眠] [心情] [调研]    │
│  ┌─ 饮食记录 (举例) ────────────┐   │
│  │  08/08 早餐: 全麦面包+牛奶    │   │
│  │  08/08 午餐: 鸡胸肉沙拉      │   │
│  │  08/07 晚餐: 清蒸鱼+蔬菜     │   │
│  │  [查看全部 →]                │   │
│  └─────────────────────────────┘   │
│  无数据时: "还没有记录,开始记录吧"   │
└───────────────────────────────────────┘

5.2 各 Tab

Tab 数据来源接口 点击跳转
饮食 getDietDailyRecords 饮食记录页
运动 exercise 接口 运动记录页
睡眠 sleep 接口 作息记录页
心情 emotion-checkin 接口 心情记录页
调研 新增 survey/list 接口 调研问卷页

每个 Tab 展示最近 3-5 条记录摘要,点击"查看全部"或记录项跳转对应详情页。

6. 里程碑

6.1 结构

┌── 里程碑 ────────────────────────────┐
│  🔥 连续打卡 7 天 ✓                  │
│  🎯 完成 "21天挑战" ✓                │
│  📈 健康档案完整度 60%               │
│  [查看全部成就 →]                    │
└──────────────────────────────────────┘

6.2 数据来源

  • 连续打卡天数:healthCheckinList 派生
  • 挑战完成数:挑战接口派生
  • 档案完整度:报告/档案数据派生

7. 定期调研(新功能)

7.1 概念

周期性问卷,记录行为变化,追踪干预成效。有定时任务属性,到期自动提醒,可补录。

7.2 前端展示

┌── 定期调研 ─────────────────────────┐
│  ⚠ 本周还未完成调研                   │
│  "过去一周,你吃了几次不该吃的食物?" │
│  选项: 0次 / 1-2次 / 3-5次 / 6次以上  │
│  [开始填写]                          │
│  ─────────────────────              │
│  历史调研记录:                        │
│  · 上周: 油炸食品 3次                │
│  · 上上周: 含糖饮料 5次              │
└──────────────────────────────────────┘

7.3 调研模板配置(管理端)

管理端新增调研模板管理页面(如 SurveyTemplates.vue),支持:

  • 创建/编辑/删除调研模板
  • 每个模板:标题、一组问题(题目+选项)、周期(周/两周/月)、适用维度
  • 启用/停用

7.4 LangGraph 自动生成

  • 管理端可点"AI生成调研"按钮,调用 LangGraph 根据指定维度/主题自动生成题目
  • 生成结果可编辑后保存为调研模板

7.5 数据模型

survey_templates 表(调研模板):

CREATE TABLE IF NOT EXISTS survey_templates (
  id BIGINT AUTO_INCREMENT PRIMARY KEY,
  title VARCHAR(100) NOT NULL COMMENT '调研标题',
  dimension VARCHAR(20) COMMENT '适用维度',
  questions_json TEXT COMMENT '题目JSON(含选项)',
  cycle_type VARCHAR(20) DEFAULT 'weekly' COMMENT '周期: weekly/biweekly/monthly',
  ai_generated TINYINT(1) DEFAULT 0 COMMENT '是否AI生成',
  enabled TINYINT(1) DEFAULT 1 COMMENT '是否启用',
  created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
  updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='定期调研模板';

survey_records 表(调研记录,成员历次答案):

CREATE TABLE IF NOT EXISTS survey_records (
  id BIGINT AUTO_INCREMENT PRIMARY KEY,
  family_id BIGINT NOT NULL COMMENT '家庭ID',
  member_id BIGINT NOT NULL COMMENT '成员ID',
  template_id BIGINT NOT NULL COMMENT '调研模板ID',
  answers_json TEXT COMMENT '答案JSON',
  submitted_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '提交时间',
  period_start DATE COMMENT '周期开始',
  period_end DATE COMMENT '周期结束',
  INDEX idx_member (member_id),
  INDEX idx_template (template_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='定期调研记录';

7.6 接口

方法 路径 说明
POST /api/admin/survey/template/save 保存调研模板(管理端)
POST /api/admin/survey/template/list 查询调研模板(管理端)
POST /api/admin/survey/template/delete 删除调研模板(管理端)
POST /api/admin/survey/template/ai-generate LangGraph生成调研题目
POST /api/survey/status 查询当前成员的待办调研
POST /api/survey/template/active 查询启用的调研模板(小程序)
POST /api/survey/submit 提交调研答案
POST /api/survey/history 查询成员调研历史

8. 后端改动

8.1 新增表

  • survey_templates(调研模板)
  • survey_records(调研记录)

8.2 迁移

DatabaseInitializer.runMigrations() 新增迁移195、196(创建上述两表)。

8.3 新增 Controller / Service

  • SurveyController(小程序端:status/active/submit/history)
  • AdminSurveyController(管理端:template CRUD + ai-generate)
  • SurveyService

8.4 LangGraph 对接

ai-generate 接口调用 LangGraph analysis/run,传入主题/维度,返回结构化题目 JSON。

9. 前端改动清单

文件 改动内容
pages/growth-main/index.vue 重构:今日干预进度卡 + 持续追踪Tab + 里程碑 + 定期调研
新建 pages/health/survey-questionnaire.vue 调研问卷页(答题+提交)
新建 pages/health/survey-history.vue 调研历史页
utils/api.js 新增调研相关接口
pages.json 注册 survey-questionnaire / survey-history 页面
cfc-web 新建 SurveyTemplates.vue 管理端调研模板管理

10. 页面注册

pages.jsonpages/health 分包新增:

{
  "path": "survey-questionnaire",
  "style": { "navigationBarTitleText": "定期调研" }
},
{
  "path": "survey-history",
  "style": { "navigationBarTitleText": "调研记录" }
}

11. 保留项

  • PageBanner(文案改为"干预 · 记录 · 成长")
  • FamilyMemberStrip 家庭成员选择条
  • DimensionActivities 活动推荐(弱化)
  • 成长档案相关数据(融入里程碑/持续追踪)