版本: v1.0 日期: 2026-08-08 状态: 设计稿
将成长TabBar页(growth-main/index.vue)重构为"干预中心",聚焦主动健康闭环中的"干预"环节。核心问题:"我们做了什么,效果如何?"通过每日记录、持续追踪、里程碑、定期调研,追踪干预的执行与成效。
┌──────────────────────────────────┐
│ 📊 今日干预进度卡 │
│ (打卡/饮食/运动/心情/调研进度) │
│ 有未完成项自动提醒 │
├──────────────────────────────────┤
│ 📈 持续追踪 Tab │
│ [饮食] [运动] [睡眠] [心情] [调研]│
│ 各维度历史记录摘要 │
├──────────────────────────────────┤
│ 🏆 里程碑 │
│ 连续打卡/挑战完成/档案完整度 │
├──────────────────────────────────┤
│ 📋 定期调研 │
│ 周期问卷 + 历史记录 + 趋势 │
├──────────────────────────────────┤
│ 活动/商品推荐 (弱化) │
└──────────────────────────────────┘
┌── 今日干预进度 ─────────────────────┐
│ 2026-08-08 星期五 │
│ ✅ 今日打卡 ✔ 已完成 │
│ ☐ 饮食记录 [补录] ← 未完成 │
│ ☐ 运动记录 [补录] │
│ ✅ 心情记录 ✔ 已完成 │
│ ⚠ 本周调研 [开始] ← 待完成 │
│ ────────────────────── │
│ 今日完成 2/5 · 连续打卡 7 天 🔥 │
└──────────────────────────────────────┘
onShow 时检查今日未完成项,有未完成在顶部显示提醒条("今日还有 X 项未记录")healthCheckinList| 项 | 接口 |
|---|---|
| 今日打卡 | healthCheckinList({ memberId, date }) |
| 饮食记录 | getDietDailyRecords({ memberId, date }) |
| 运动记录 | exercise 相关接口 |
| 心情记录 | emotion-checkin 接口 |
| 调研状态 | 新增 survey/status 接口 |
┌── 持续追踪 ──────────────────────────┐
│ [饮食] [运动] [睡眠] [心情] [调研] │
│ ┌─ 饮食记录 (举例) ────────────┐ │
│ │ 08/08 早餐: 全麦面包+牛奶 │ │
│ │ 08/08 午餐: 鸡胸肉沙拉 │ │
│ │ 08/07 晚餐: 清蒸鱼+蔬菜 │ │
│ │ [查看全部 →] │ │
│ └─────────────────────────────┘ │
│ 无数据时: "还没有记录,开始记录吧" │
└───────────────────────────────────────┘
| Tab | 数据来源接口 | 点击跳转 |
|---|---|---|
| 饮食 | getDietDailyRecords |
饮食记录页 |
| 运动 | exercise 接口 | 运动记录页 |
| 睡眠 | sleep 接口 | 作息记录页 |
| 心情 | emotion-checkin 接口 | 心情记录页 |
| 调研 | 新增 survey/list 接口 |
调研问卷页 |
每个 Tab 展示最近 3-5 条记录摘要,点击"查看全部"或记录项跳转对应详情页。
┌── 里程碑 ────────────────────────────┐
│ 🔥 连续打卡 7 天 ✓ │
│ 🎯 完成 "21天挑战" ✓ │
│ 📈 健康档案完整度 60% │
│ [查看全部成就 →] │
└──────────────────────────────────────┘
healthCheckinList 派生周期性问卷,记录行为变化,追踪干预成效。有定时任务属性,到期自动提醒,可补录。
┌── 定期调研 ─────────────────────────┐
│ ⚠ 本周还未完成调研 │
│ "过去一周,你吃了几次不该吃的食物?" │
│ 选项: 0次 / 1-2次 / 3-5次 / 6次以上 │
│ [开始填写] │
│ ───────────────────── │
│ 历史调研记录: │
│ · 上周: 油炸食品 3次 │
│ · 上上周: 含糖饮料 5次 │
└──────────────────────────────────────┘
管理端新增调研模板管理页面(如 SurveyTemplates.vue),支持:
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='定期调研记录';
| 方法 | 路径 | 说明 |
|---|---|---|
| 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 |
查询成员调研历史 |
survey_templates(调研模板)survey_records(调研记录)DatabaseInitializer.runMigrations() 新增迁移195、196(创建上述两表)。
SurveyController(小程序端:status/active/submit/history)AdminSurveyController(管理端:template CRUD + ai-generate)SurveyServiceai-generate 接口调用 LangGraph analysis/run,传入主题/维度,返回结构化题目 JSON。
| 文件 | 改动内容 |
|---|---|
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 |
管理端调研模板管理 |
在 pages.json 的 pages/health 分包新增:
{
"path": "survey-questionnaire",
"style": { "navigationBarTitleText": "定期调研" }
},
{
"path": "survey-history",
"style": { "navigationBarTitleText": "调研记录" }
}