Selaa lähdekoodia

docs: 心版块第一阶段实现计划——核心体验闭环补齐+六大补充方向

Xiaogang Liao 4 kuukautta sitten
vanhempi
sitoutus
96e12be9ed
1 muutettua tiedostoa jossa 494 lisäystä ja 0 poistoa
  1. 494 0
      docs/设计/心版块-第一阶段实现计划.md

+ 494 - 0
docs/设计/心版块-第一阶段实现计划.md

@@ -0,0 +1,494 @@
+# 心版块 Phase 1 实现计划
+
+## 概述
+
+心维度(火 #FF6B9D,大爱相随)第一阶段聚焦**核心体验闭环补齐**,整合六大补充内容:八字深化、星盘引入、数字能量、DAN情绪指标深度整合、菌群报告情绪指标、拍照记录情绪。
+
+目标:用户在心版块获得**认识→记录→疏导→成长**的完整体验。
+
+---
+
+## 优先级与依赖关系
+
+```
+      Phase 1a                    Phase 1b                  Phase 1c
+  ┌─────────────────┐      ┌─────────────────┐      ┌─────────────────┐
+  │ A: 情绪打卡(含拍照) │      │ C: 传统文化镜展示  │      │ E: 疏导工具箱MVP  │
+  │ B: Schema修复     │  →  │ D: 菌群情绪指标    │  →  │ F: DAN深度整合    │
+  │ (核心日活 + 基础)  │      │ (三项并行)        │      │ (持续完善)        │
+  └─────────────────┘      └─────────────────┘      └─────────────────┘
+```
+
+| 阶段 | 任务 | 依赖 | 工作量评估 |
+|------|------|------|-----------|
+| 1a-1 | A: 情绪打卡(含拍照) | 无 | 大(后端+前端+存储) |
+| 1a-2 | B: DAN schema修复 | 无 | 小(SQL迁移) |
+| 1b-1 | C: 传统文化镜(八字/星座/灵数) | 无(数据已有) | 中(前端+内容) |
+| 1b-2 | D: 菌群情绪指标打通 | 无(数据已有) | 小(API+前端片段) |
+| 1b-3 | F: DAN情绪指标深度整合 | 依赖 B | 中(DTO+Service+前端) |
+| 1c | E: 疏导工具箱+AI情境感知 | 依赖 A+D+F 上线 | 中(内容+AI prompt) |
+
+---
+
+## 1a-1: 情绪打卡(含拍照)
+
+### 1a-1.1 数据层
+
+**新增表 `emotion_checkin`**
+
+```sql
+CREATE TABLE emotion_checkin (
+    id BIGINT PRIMARY KEY AUTO_INCREMENT,
+    child_id BIGINT NOT NULL,
+    mood_weather VARCHAR(20) NOT NULL COMMENT '天气类比: sunny/cloudy/rainy/stormy/rainbow',
+    emotion_tags VARCHAR(200) COMMENT '情绪标签JSON数组: ["开心","期待"]',
+    photo_url VARCHAR(500) COMMENT '拍照URL(仅自己可见)',
+    note TEXT COMMENT '文字记录',
+    energy_awarded INT DEFAULT 5 COMMENT '本次获得心能量',
+    checkin_date DATE NOT NULL,
+    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
+    updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+    INDEX idx_child_date (child_id, checkin_date),
+    INDEX idx_child_weather (child_id, mood_weather)
+) COMMENT='情绪打卡记录';
+```
+
+**文件:** `cfc-backend/src/main/resources/migration_add_emotion_checkin.sql`
+
+### 1a-1.2 后端
+
+**实体:** `EmotionCheckin.java`
+
+```java
+@TableName("emotion_checkin")
+public class EmotionCheckin implements Serializable {
+    @TableId(type = IdType.AUTO)
+    private Long id;
+    private Long childId;
+    private String moodWeather;      // sunny/cloudy/rainy/stormy/rainbow
+    private String emotionTags;      // JSON array
+    private String photoUrl;
+    private String note;
+    private Integer energyAwarded;
+    private Date checkinDate;
+    private Date createdAt;
+    private Date updatedAt;
+}
+```
+
+**DTO:**
+- `EmotionCheckinDTO` — 创建打卡的请求体(包含 moodWeather/emotionTags/photoUrl/note)
+- `EmotionCheckinVO` — 打卡记录的展示对象(含儿童信息、格式化日期)
+- `EmotionTrendVO` — 趋势数据(按周/月的情绪分布统计)
+
+**Controller:** `EmotionCheckinController.java`
+
+| API | 方法 | 说明 |
+|-----|------|------|
+| `POST /api/mind/checkin/create` | create | 创建打卡,自动奖励心能量 |
+| `POST /api/mind/checkin/list` | list | 打卡记录列表(分页) |
+| `POST /api/mind/checkin/latest` | latest | 获取最近打卡 |
+| `POST /api/mind/checkin/trend` | trend | 情绪趋势(周/月统计) |
+| `POST /api/mind/checkin/stats` | stats | 统计(连续天数/总次数/各天气占比) |
+
+**Service:** `EmotionCheckinService.java`
+
+核心逻辑:
+- `createCheckin()` → 保存记录 → 调用 `EnergyService.awardEnergy(childId, "emotion_checkin", checkinId, 5, "情绪打卡奖励", 0)`
+- `getTrend()` → 按日期分组统计各 moodWeather 出现频率
+- `getStats()` → 连续打卡天数、本月打卡次数、能量累积
+
+**Mapper:** `EmotionCheckinMapper.java`
+
+### 1a-1.3 前端(小程序)
+
+**新页面:** `pages/mind/emotion-checkin.vue`
+
+交互流程:
+1. 顶部:日期显示 + 连续打卡徽章
+2. 天气选择(5个大按钮带图标的 moodWeather):
+   - ☀️ sunny = 心情很好
+   - ⛅ cloudy = 一般般
+   - 🌧️ rainy = 有点难过
+   - ⚡ stormy = 很烦躁
+   - 🌈 rainbow = 特别开心
+3. 情绪标签(可多选):开心/期待/平静/惊喜/难过/生气/紧张/无聊/疲惫/害怕 + 自定义
+4. 拍照按钮 → `uni.chooseImage` 或相机 → 预览+重拍
+5. 文字输入框(可选)
+6. 提交按钮 → 显示「+5心能量」toast + 跳转情绪趋势
+
+**新页面:** `pages/mind/emotion-trend.vue`
+
+显示:
+- 月度情绪热力图(日历图,每天用对应天气颜色标记)
+- 各情绪占比统计(环形图)
+- 连续打卡天数
+- 本月累积心能量
+
+**组件:**
+- `EmotionWeatherPicker.vue` — 天气选择器
+- `EmotionTagPicker.vue` — 标签选择器
+- `EmotionCalendar.vue` — 情绪日历热力图
+
+**API 集成:** 在 `utils/api.js` 添加:
+- `createEmotionCheckin(data)` → POST `/api/mind/checkin/create`
+- `getEmotionCheckinList(params)` → POST `/api/mind/checkin/list`
+- `getEmotionCheckinTrend(params)` → POST `/api/mind/checkin/trend`
+- `getEmotionCheckinStats(params)` → POST `/api/mind/checkin/stats`
+- `getLatestEmotionCheckin(params)` → POST `/api/mind/checkin/latest`
+
+### 1a-1.4 文件上传
+
+- 小程序端:`uni.chooseImage` → `uni.uploadFile` → 后端文件服务
+- 后端:文件上传到配置的存储路径(沿用现有 `config.js` 的上传配置)
+- `EmotionCheckin.photoUrl` 只存储相对路径,前端拼接完整URL
+- **隐私控制**:photoUrl 仅对孩子自己可见,家长端 `/api/mind/checkin/list` 返回的VO中 photoUrl 置空
+
+### 1a-1.5 QA 验证
+
+| 验证项 | 工具 | 步骤 | 预期结果 |
+|--------|------|------|----------|
+| 打卡创建 | curl/Postman | `POST /api/mind/checkin/create` 传 childId=1, moodWeather=sunny, emotionTags=["开心"] | 返回 id > 0, energyAwarded=5 |
+| 拍照上传 | 小程序预览 | 在打卡页点击拍照按钮,拍摄后提交 | photoUrl 非空,相册页可见 |
+| 能量奖励 | curl 查 db | `SELECT energy_balance FROM energy_balance WHERE child_id=1 AND dimension_code='mind'` | 余额增加5 |
+| 趋势统计 | curl | `POST /api/mind/checkin/trend` 传 childId=1, period=month | 返回按日期的 moodWeather 分布 |
+| 家长隐私 | curl | 用 parent role token 调 `/api/mind/checkin/list?childId=1` | 返回的 photoUrl 为 null |
+
+---
+
+## 1a-2: DAN Schema 修复
+
+### 背景
+
+`DanAssessmentResult.java` 实体中定义了 v1.2 EMI 字段和大五人格字段,但 `dan_assessment_results` 表缺少对应的列。
+
+### SQL 迁移
+
+**文件:** `cfc-backend/src/main/resources/migration_fix_dan_schema.sql`
+
+```sql
+-- v1.2 EMI 心理子维度(与 DanAssessmentResult.java 实体 Integer 类型一致)
+ALTER TABLE dan_assessment_results
+    ADD COLUMN emotion_score INT DEFAULT NULL COMMENT '情绪商数 0-100',
+    ADD COLUMN resilience_score INT DEFAULT NULL COMMENT '心理韧性 0-100',
+    ADD COLUMN stress_coping_score INT DEFAULT NULL COMMENT '压力应对 0-100',
+    ADD COLUMN self_awareness_score INT DEFAULT NULL COMMENT '自我认知 0-100';
+
+-- 大五人格
+ALTER TABLE dan_assessment_results
+    ADD COLUMN openness_score INT DEFAULT NULL COMMENT '开放性 0-100',
+    ADD COLUMN conscientiousness_score INT DEFAULT NULL COMMENT '尽责性 0-100',
+    ADD COLUMN extraversion_score INT DEFAULT NULL COMMENT '外向性 0-100',
+    ADD COLUMN agreeableness_score INT DEFAULT NULL COMMENT '宜人性 0-100',
+    ADD COLUMN neuroticism_score INT DEFAULT NULL COMMENT '神经质性 0-100',
+    ADD COLUMN big_five_overall_score INT DEFAULT NULL COMMENT '大五人格综合分 0-100';
+```
+
+### QA 验证
+
+| 验证项 | 工具 | 步骤 | 预期结果 |
+|--------|------|------|----------|
+| 字段写入 | curl + 直连DB | 手工 INSERT 包含新字段的 dan_assessment_results 记录 | 写入成功,无截断错误 |
+| 字段读取 | curl | `SELECT emotion_score, resilience_score, openness_score FROM dan_assessment_results WHERE id=新记录id` | 返回写入的 INT 值 |
+| 服务接口 | curl | `POST /api/emireport/latest` 传 childId | 返回的 EmiReportDTO 含新字段且值正确 |
+| EnergyService 不受影响 | curl | `POST /api/energy/overview` 传 familyId | mind 能量值正常显示,与旧逻辑一致 |
+
+---
+
+## 1b-1: 传统文化镜展示
+
+### 定位
+
+在心版块增加"传统文化镜"标签页,将已有但用户不可见的先天属性数据可视化。
+
+**页面位置:** `pages/mind/index.vue` 在现有双Tab(心理/认知)基础上增加第三个Tab "传统",或作为心版块首页下方的子区域。
+
+**推荐方案:** 心版块首页保留心理Tab为主内容,下方增加「传统文化洞察」卡片区域,点击进入详情页 `pages/mind/traditional-mirror.vue`。
+
+### 八字展示
+
+**数据源:** `FamilyMemberAttributes.eightCharacters` (JSON: `{"year":"甲子","month":"丙寅","day":"戊辰","hour":"壬申"}`) + `FamilyMemberAttributes.wuxingElements` (JSON: `{"wood":30,"fire":45,"earth":60,"metal":25,"water":40}`)
+
+**API 复用:** `POST /api/family/attributes/get` — 已有
+
+**前端组件设计:**
+
+八字卡包含:
+- 四柱竖排显示(年柱/月柱/日柱/时柱 各一列,每列显示天干+地支)
+- 五行能量条(木火土金水 五项水平条形图)
+- 五行比例圆形图
+- 个性化解读(基于五行分布)
+
+### 五行命理解读
+
+**新增表 `bazi_reading_template`:**
+
+```sql
+CREATE TABLE bazi_reading_template (
+    id BIGINT PRIMARY KEY AUTO_INCREMENT,
+    element VARCHAR(20) NOT NULL COMMENT '五行: wood/fire/earth/metal/water',
+    condition VARCHAR(20) NOT NULL COMMENT '状态: strong/weak/balanced',
+    personal_trait TEXT COMMENT '性格特质描述',
+    mind_growth_advice TEXT COMMENT '心理成长建议',
+    daily_tip_template TEXT COMMENT '每日宜忌模板',
+    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
+    UNIQUE KEY uk_element_condition (element, condition)
+) COMMENT='五行命理解读模板';
+```
+
+**解析逻辑:** 在 `FamilyMemberAttributeService` 中新增 `getWuxingReading()` 方法,根据 wuxingElements 中占比最高的元素和占比判断强弱,匹配 `bazi_reading_template`。
+
+### 星座展示
+
+**数据源:** `ZodiacConfig` + `FamilyMemberAttributes.zodiac`
+
+已通过 `ZodiacConfigController` 管理星座配置(含日期范围、元素属性、base分数)。
+
+前端展示:
+- 太阳星座图标 + 名称
+- 元素属性(火/土/风/水)+ 对应的五行类比
+- 星座性格关键字
+- "今日星座运程"(内容可后期通过运营配置)
+
+### QA 验证
+
+| 验证项 | 工具 | 步骤 | 预期结果 |
+|--------|------|------|----------|
+| 八字数据读取 | curl | `POST /api/family/attributes/get` 传 memberId | eightCharacters JSON 含四柱,wuxingElements 含五行百分比 |
+| 前端八字展示 | 小程序预览 | 打开心 > 传统文化镜 | 四柱竖排展示,五行能量条显示正确 |
+| 星座展示 | 小程序预览 | 同上页面 | 显示太阳星座名称、元素、性格关键字 |
+| 生命灵数展示 | 小程序预览 | 同上页面 | 显示灵数(1-9)、称号、特质关键词 |
+
+### 生命灵数展示
+
+**数据源:** `FamilyMemberAttributes.behaviorModifier` JSON 中的 `lifeNumber` (1-9)
+
+**新增表 `numsoul_config`:**
+
+```sql
+CREATE TABLE numsoul_config (
+    number INT PRIMARY KEY COMMENT '灵数1-9',
+    title VARCHAR(50) NOT NULL COMMENT '称号,如"开创者"',
+    keywords VARCHAR(200) COMMENT '性格关键词',
+    mind_growth_advice TEXT COMMENT '心理成长建议',
+    recommended_article_tags VARCHAR(200) COMMENT '关联文章标签',
+    color_hex VARCHAR(7) COMMENT '代表色'
+) COMMENT='生命灵数配置';
+```
+
+**API:** 新增 `POST /api/mind/numsoul/{number}` 或复用 `FamilyAttributeController` 扩展
+
+---
+
+## 1b-2: 菌群情绪指标打通
+
+### 数据链路
+
+```
+HealthReport (菌群报告)
+    → HealthIndicator (category="神经递质与激素")
+        → 血清素/多巴胺/GABA/皮质醇 等指标
+            → 心版块展示
+```
+
+### QA 验证
+
+| 验证项 | 工具 | 步骤 | 预期结果 |
+|--------|------|------|----------|
+| 神经递质指标查询 | curl | `POST /api/mind/neurotransmitters` 传 childId(该 child 已有菌群报告) | 返回 category="神经递质与激素" 的指标列表,含 indicatorName/value/status |
+| 无报告时处理 | curl | `POST /api/mind/neurotransmitters` 传无报告的 childId | 返回空列表,不抛异常 |
+| 前端展示 | 小程序预览 | 打开心首页 | 显示肠脑轴卡片,含神经递质指标和状态图标 |
+| 身维度不受影响 | curl | `POST /api/health/body/detail` 传 childId | 身维度数据正常,不受影响 |
+
+### API 扩展
+
+**在现有 `HealthReportController` 中新增:**
+
+| API | 说明 |
+|-----|------|
+| `POST /api/mind/neurotransmitters` | 获取儿童最新的神经递质类指标 |
+| `POST /api/mind/gut-emotion-insight` | 基于菌群数据的情绪洞察摘要 |
+
+**Service 扩展:** `HealthReportService` 新增方法:
+
+```java
+public List<HealthIndicator> getMindRelatedIndicators(Long childId) {
+    // 获取最新菌群报告中 category="神经递质与激素" 的指标
+    // 按重要性排序返回
+}
+```
+
+### 前端展示
+
+在心版块首页添加「肠脑轴」小卡片区域:
+- 显示关键神经递质指标(最多4项)+ 状态图标
+- 每项显示:名称 + 值 + 状态(正常/偏低/偏高)+ 一句话解读
+- 点击进入详情页或展开详情
+
+**示例展示:**
+```
+🧠 肠脑情绪关联
+┌──────────────────────────────┐
+│ 血清素    76%  ████████  ✅  │
+│ 多巴胺    42%  ████     ⚠️   │
+│ GABA      81%  ████████  ✅  │
+│ 皮质醇    55%  █████     ✅  │
+└──────────────────────────────┘
+```
+
+---
+
+## 1b-3: DAN情绪指标深度整合
+
+### 问题修复
+
+**现状:** `EmiReportService` 已映射大五人格字段,但**未映射 original EMI 四字段**(emotionManagementScore/empathyScore/socialAdaptabilityScore/selfMotivationScore)。`EmiReportDTO` 已包含大五人格字段,只需补充 original EMI 四字段。
+
+**修复:** `EmiReportService.getChildLatestEmiReport()` 补充映射:
+
+```java
+// 补充mapping — original EMI 四字段
+dto.setEmotionManagementScore(result.getEmotionManagementScore());
+dto.setEmpathyScore(result.getEmpathyScore());
+dto.setSocialAdaptabilityScore(result.getSocialAdaptabilityScore());
+dto.setSelfMotivationScore(result.getSelfMotivationScore());
+```
+
+### DTO 扩展
+
+`EmiReportDTO` 补充 original EMI 四字段(大五人格字段已存在):
+
+| 新增字段 | 类型 | 说明 |
+|---------|------|------|
+| emotionManagementScore | Integer | original EMI — 情绪管理 |
+| empathyScore | Integer | original EMI — 同理心 |
+| socialAdaptabilityScore | Integer | original EMI — 社交适应 |
+| selfMotivationScore | Integer | original EMI — 自我激励 |
+
+### QA 验证
+
+| 验证项 | 工具 | 步骤 | 预期结果 |
+|--------|------|------|----------|
+| 字段映射完整性 | curl | `POST /api/emireport/latest` 传 childId | 返回的 DTO 含 emotionManagementScore/empathyScore/socialAdaptabilityScore/selfMotivationScore 且值正确 |
+| 前端展示 | 小程序预览 | 打开心>心理Tab > EMI报告 | 显示新增的情绪管理、同理心等维度 |
+
+### 前端 emotion-report.vue 扩展
+
+- 增加"情绪管理三原色"(emotionManagement + empathy + selfMotivation 的三角形对比图)
+- 增加大五人格的详细解读(每种特质的含义 + 高分/低分描述)
+
+---
+
+## 1c: 疏导工具箱 + AI情境感知
+
+### 疏导工具箱
+
+**前端页面:** `pages/mind/soothe-toolbox.vue`
+
+内容:
+- **呼吸练习**:4-7-8 呼吸法动画引导(吸气4秒→屏息7秒→呼气8秒)
+- **正念练习**:简单的正念引导文本(可配合 Dify AI 语音)
+- **情绪涂鸦**:鼓励孩子在纸上/平板上画下情绪
+- **运动释压**:简单的伸展动作推荐(结合身维度)
+
+### QA 验证
+
+| 验证项 | 工具 | 步骤 | 预期结果 |
+|--------|------|------|----------|
+| 工具箱页面加载 | 小程序预览 | 打开疏导工具箱 | 显示呼吸练习/正念引导/涂鸦/运动 四个模块 |
+| 呼吸动画 | 小程序预览 | 点击呼吸练习 | 4-7-8 呼吸动画引导正常播放 |
+| AI情绪感知 | curl | 先创建3次 rainy 打卡,再发 `POST /api/ai/chat/send` | AI 回复体现对负面情绪的关怀 |
+| 无情绪数据时 | curl | 对无打卡记录的 child 发 `POST /api/ai/chat/send` | 正常对话,不注入情绪上下文 |
+
+### AI情境感知
+
+**修改:** `AIService.java` — 新增 `buildMindContextPrompt()` 方法
+
+当情绪打卡数据可用时,AI 对话自动注入:
+```
+用户最近情绪状态:[摘要]
+连续负面情绪:[是/否]
+建议关怀方向:[根据情绪标签推荐的对话策略]
+```
+
+**触发条件:**
+- `EmotionCheckinService` 检测到连续3天 moodWeather 为 rainy/stormy → 自动建议家长关注
+- AI 对话时注入最近情绪数据作为上下文
+
+---
+
+## 文件变更清单总览
+
+### 后端新增文件
+
+| 文件 | 阶段 | 说明 |
+|------|------|------|
+| `entity/EmotionCheckin.java` | 1a-1 | 情绪打卡实体 |
+| `dto/EmotionCheckinDTO.java` | 1a-1 | 打卡创建请求体 |
+| `dto/EmotionCheckinVO.java` | 1a-1 | 打卡展示对象 |
+| `dto/EmotionTrendVO.java` | 1a-1 | 情绪趋势数据 |
+| `controller/EmotionCheckinController.java` | 1a-1 | 打卡API |
+| `service/EmotionCheckinService.java` | 1a-1 | 打卡业务逻辑 |
+| `mapper/EmotionCheckinMapper.java` | 1a-1 | MyBatis Mapper |
+| `entity/BaziReadingTemplate.java` | 1b-1 | 五行命理解读实体 |
+| `entity/NumSoulConfig.java` | 1b-1 | 灵数配置实体 |
+
+### 后端修改文件
+
+| 文件 | 阶段 | 变更 |
+|------|------|------|
+| `dto/EmiReportDTO.java` | 1b-3 | 增加 original EMI + Big Five 字段 |
+| `service/EmiReportService.java` | 1b-3 | 增加所有字段的映射 |
+| `service/HealthReportService.java` | 1b-2 | 新增 getMindRelatedIndicators() |
+| `service/FamilyMemberAttributeService.java` | 1b-1 | 新增 getWuxingReading() |
+| `service/EnergyService.java` | 1a-1 | 确认打卡→奖能量调用点 |
+| `utils/api.js` (前端) | 1a-1 | 新增打卡/趋势API |
+
+### 前端新增页面
+
+| 页面 | 阶段 | 说明 |
+|------|------|------|
+| `pages/mind/emotion-checkin.vue` | 1a-1 | 情绪打卡页 |
+| `pages/mind/emotion-trend.vue` | 1a-1 | 情绪趋势页 |
+| `pages/mind/traditional-mirror.vue` | 1b-1 | 传统文化镜详情页 |
+| `pages/mind/soothe-toolbox.vue` | 1c | 疏导工具箱 |
+
+### 前端新建组件
+
+| 组件 | 阶段 | 说明 |
+|------|------|------|
+| `components/EmotionWeatherPicker.vue` | 1a-1 | 天气选择器 |
+| `components/EmotionTagPicker.vue` | 1a-1 | 标签选择器 |
+| `components/EmotionCalendar.vue` | 1a-1 | 情绪日历热力图 |
+| `components/WuxingChart.vue` | 1b-1 | 五行能量可视化 |
+| `components/BaziCard.vue` | 1b-1 | 八字展示卡 |
+
+### SQL 迁移
+
+| 文件 | 阶段 | 说明 |
+|------|------|------|
+| `migration_add_emotion_checkin.sql` | 1a-1 | 新建情绪打卡表 |
+| `migration_fix_dan_schema.sql` | 1a-2 | DAN表加字段 |
+| `migration_add_wuxing_reading.sql` | 1b-1 | 命理解读+灵数配置表 |
+
+---
+
+## 执行顺序建议
+
+```
+第1周: [1a-1] 情绪打卡(含拍照)+ [1a-2] DAN schema修复
+         → 核心日活功能上线,基础数据修复
+
+第2周: [1b-1] 传统文化镜展示 + [1b-2] 菌群情绪指标
+         → 八字/星座/灵数可视化,肠脑轴卡片
+         
+第3周: [1b-3] DAN情绪指标深度整合
+         → EMI报告丰富化,大五人格展示
+
+第4周: [1c] 疏导工具箱 + AI情境感知
+         → 呼吸练习、正念引导、AI情感关怀
+```
+
+---
+
+*注:本计划为 Phase 1 核心闭环,Phase 2(亲子互动活动、月度心理成长报告)和 Phase 3(情绪预警、维度联动算法)将在 Phase 1 上线验证后规划。*