Просмотр исходного кода

docs: 成长页面重构为干预中心设计文档(今日进度+持续追踪+里程碑+定期调研)

Sisyphus 1 месяц назад
Родитель
Сommit
b431b88b22
1 измененных файлов с 254 добавлено и 0 удалено
  1. 254 0
      docs/superpowers/specs/2026-08-08-growth-intervention-center-design.md

+ 254 - 0
docs/superpowers/specs/2026-08-08-growth-intervention-center-design.md

@@ -0,0 +1,254 @@
+# 成长页面重构 — 干预中心
+
+**版本:** 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 表(调研模板):**
+```sql
+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 表(调研记录,成员历次答案):**
+```sql
+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.json` 的 `pages/health` 分包新增:
+
+```json
+{
+  "path": "survey-questionnaire",
+  "style": { "navigationBarTitleText": "定期调研" }
+},
+{
+  "path": "survey-history",
+  "style": { "navigationBarTitleText": "调研记录" }
+}
+```
+
+## 11. 保留项
+
+- PageBanner(文案改为"干预 · 记录 · 成长")
+- FamilyMemberStrip 家庭成员选择条
+- DimensionActivities 活动推荐(弱化)
+- 成长档案相关数据(融入里程碑/持续追踪)