mind-emotion-flow.md 12 KB

用户使用流程图 — 心理与情绪管理

端口说明: 📱 小程序 | 🖥 管理后台 | 📋 规划师端 | ⚙️ 系统自动

分层说明: 🏠 页面 → 🔗 API → ⚙️ Service → 📦 数据实体

flowchart TD
    %% ============ 颜色定义 ============
    classDef page fill:#e3f2fd,stroke:#1565c0,stroke-width:2px
    classDef api fill:#fff3e0,stroke:#f57c00,stroke-width:1px
    classDef service fill:#e8f5e9,stroke:#388e3c,stroke-width:1px
    classDef data fill:#f3e5f5,stroke:#7b1fa2,stroke-width:1px
    classDef external fill:#fce4ec,stroke:#d32f2f,stroke-width:1px,stroke-dasharray:3 2
    classDef actor fill:#e1f5fe,stroke:#0288d1,stroke-width:2px,stroke-dasharray:5 3

    %% ============ 角色 ============
    ROLE_PARENT(("👤 家长")):::actor
    ROLE_CHILD(("👶 孩子")):::actor
    ROLE_SYS(("⚙️ 心理引擎")):::actor

    %% ================================================================
    %% 阶段一:情绪打卡
    %% ================================================================
    subgraph 阶段一[阶段一:情绪打卡]
        direction TB

        P1["🏠 小程序:情绪打卡页"]:::page
        P1 -->|"选择操作"| P1_choice{"记录情绪 / 查看分析"}:::page

        P1_choice -->|"记录情绪"| P1a["🏠 情绪记录表单"]:::page
        P1a -->|"孩子ID, 情绪标签, 评分, 压力值, 照片"| A1["🔗 POST /api/mind/checkin/create"]:::api
        A1 -->|"情绪打卡数据"| S1["⚙️ EmotionCheckinService.createCheckin()"]:::service
        S1 -->|"写入一条情绪打卡记录"| D1["📦 emotion_checkin 表"]:::data

        P1_choice -->|"查看分析"| P1b["🏠 情绪分析面板"]:::page
        P1b -->|"孩子ID, 分页"| A2["🔗 POST /api/mind/checkin/list"]:::api
        A2 -->|"孩子ID, 页码, 每页数"| S2["⚙️ EmotionCheckinService.getCheckinList()"]:::service
        S2 -->|"分页打卡列表"| D1

        P1b -->|"查看最近"| A3["🔗 POST /api/mind/checkin/latest"]:::api
        A3 -->|"孩子ID"| S3["⚙️ EmotionCheckinService.getLatestCheckin()"]:::service
        S3 -->|"最新一条打卡记录"| D1

        P1b -->|"查看趋势"| A4["🔗 POST /api/mind/checkin/trend"]:::api
        A4 -->|"孩子ID, 周期(week/month)"| S4["⚙️ EmotionCheckinService.getTrend()"]:::service
        S4 -->|"情绪趋势数据(效价/激活度)"| D1

        P1b -->|"查看统计"| A5["🔗 POST /api/mind/checkin/stats"]:::api
        A5 -->|"孩子ID"| S5["⚙️ EmotionCheckinService.getStats()"]:::service
        S5 -->|"情绪统计汇总"| D1

        P1b -->|"查看周报"| A6["🔗 POST /api/mind/checkin/weekly-report"]:::api
        A6 -->|"孩子ID"| S6["⚙️ EmotionCheckinService.getWeeklyReport()"]:::service
        S6 -->|"本周情绪报告"| D1
    end

    %% ================================================================
    %% 阶段二:情绪预警
    %% ================================================================
    subgraph 阶段二[阶段二:情绪预警]
        D1 -->|"孩子ID"| P2["🏠 小程序:情绪预警页"]:::page
        P2 -->|"查看筛查告警"| A7["🔗 POST /api/mind/alert/active"]:::api
        A7 -->|"孩子ID"| S7["⚙️ MentalHealthScreenService.getActiveAlerts()"]:::service
        S7 -->|"未解决的筛查告警列表"| D2["📦 emotion_alerts 表(筛查)"]:::data

        P2 -->|"查看打卡告警"| A8["🔗 POST /api/mind/alert/checkin-alerts"]:::api
        A8 -->|"孩子ID"| S8["⚙️ EmotionAlertService.getActiveAlerts()"]:::service
        S8 -->|"打卡检测的情绪告警列表"| D3["📦 emotion_alerts 表(打卡)"]:::data

        P2 -->|"处理告警"| A9["🔗 POST /api/mind/alert/resolve"]:::api
        A9 -->|"告警ID, 来源(screening/checkin)"| S9["⚙️ EmotionAlertService.resolveAlert()"]:::service
        S9 -->|"标记告警为已解决"| D4["📦 emotion_alerts(状态更新)"]:::data
    end

    %% ================================================================
    %% 阶段三:心理筛查
    %% ================================================================
    subgraph 阶段三[阶段三:心理筛查]
        D2 -->|"触发筛查"| P3["🏠 小程序:心理筛查页"]:::page
        P3 -->|"提交问卷(PHQ-9/GAD-7)"| A10["🔗 POST /api/mind/screening/submit"]:::api
        A10 -->|"孩子ID, 类型, 答案列表"| S10["⚙️ MentalHealthScreenService.submitScreen()"]:::service
        S10 -->|"评分, 严重等级, 风险标记, 建议"| D5["📦 mental_health_screens 表"]:::data

        D5 -->|"高风险(中重度以上)"| AUTO_ALERT["⚙️ 自动创建告警 + 推送通知"]:::service
        AUTO_ALERT -->|"告警记录"| D2

        P3 -->|"查看历史"| A11["🔗 POST /api/mind/screening/history"]:::api
        A11 -->|"孩子ID, 类型, 数量限制"| S11["⚙️ MentalHealthScreenService.getScreenHistory()"]:::service
        S11 -->|"筛查历史列表"| D5

        P3 -->|"查看最新"| A12["🔗 POST /api/mind/screening/latest"]:::api
        A12 -->|"孩子ID, 类型"| S12["⚙️ MentalHealthScreenService.getLatestScreen()"]:::service
        S12 -->|"最近一次筛查结果"| D5
    end

    %% ================================================================
    %% 阶段四:神经递质与肠脑洞察
    %% ================================================================
    subgraph 阶段四[阶段四:神经递质与肠脑洞察]
        D1 -->|"菌群报告数据"| P4["🏠 小程序:肠脑洞察页"]:::page
        P4 -->|"查看神经递质"| A13["🔗 POST /api/mind/neurotransmitters"]:::api
        A13 -->|"孩子ID"| S13["⚙️ HealthReportService.getMindRelatedIndicators()"]:::service
        S13 -->|"神经递质与激素, 短链脂肪酸指标"| D6["📦 health_indicators(按类别筛选)"]:::data

        P4 -->|"查看肠脑洞察"| A14["🔗 POST /api/mind/gut-emotion-insight"]:::api
        A14 -->|"孩子ID"| S14["⚙️ HealthReportService.getGutEmotionInsight()"]:::service
        S14 -->|"菌群-情绪关联分析摘要"| D7["📦 数据分析结果(内存中)"]:::data

        P4 -->|"查看EMI报告"| A15["🔗 POST /api/mind/emireport/latest"]:::api
        A15 -->|"孩子ID"| S15["⚙️ EmiReportService.getChildLatestEmiReport()"]:::service
        S15 -->|"完整EMI心理报告"| D8["📦 emi_reports 表"]:::data
    end

    %% ================================================================
    %% 阶段五:管理端操作
    %% ================================================================
    subgraph 阶段五[阶段五:管理端操作]
        D2 -->|"告警数据"| P5["🖥 管理后台:告警管理页"]:::page
        P5 -->|"查看全部告警"| A16["🔗 POST /api/mind/alert/admin/list"]:::api
        A16 -->|"页码, 每页数, 是否已解决"| S16["⚙️ EmotionAlertService.getAdminAlerts()"]:::service
        S16 -->|"分页告警列表"| D2
    end

    %% ================================================================
    %% 角色关联
    %% ================================================================
    ROLE_CHILD -.- P1
    ROLE_CHILD -.- P1a
    ROLE_PARENT -.- P1
    ROLE_PARENT -.- P2
    ROLE_PARENT -.- P3
    ROLE_PARENT -.- P4
    ROLE_SYS -.- AUTO_ALERT
    ROLE_SYS -.- S13
    ROLE_SYS -.- S14

端点明细

情绪打卡

端点 说明 端口 请求数据 响应数据
POST /api/mind/checkin/create 创建情绪打卡 📱小程序 {childId, moodScore, emotionType, stressLevel, arousalLevel, energyLevel, photoUrl, note} EmotionCheckinVO
POST /api/mind/checkin/list 获取打卡列表 📱小程序 {childId, page, size} Page<EmotionCheckinVO>
POST /api/mind/checkin/latest 获取最新打卡 📱小程序 {childId} EmotionCheckinVO
POST /api/mind/checkin/trend 获取情绪趋势 📱小程序 {childId, period(week/month)} EmotionTrendVO
POST /api/mind/checkin/stats 获取情绪统计 📱小程序 {childId} EmotionStatsVO
POST /api/mind/checkin/weekly-report 获取情绪周报 📱小程序 {childId} WeeklyReportVO

情绪预警

端点 说明 端口 请求数据 响应数据
POST /api/mind/alert/active 获取筛查告警 📱小程序 {childId} List<EmotionAlertVO>
POST /api/mind/alert/checkin-alerts 获取打卡告警 📱小程序 {childId} List<EmotionAlertVO>
POST /api/mind/alert/resolve 处理告警 📱小程序 {alertId, source(screening/checkin)} null
POST /api/mind/alert/admin/list 管理端告警列表 🖥管理后台 {page, size, resolved} Page<EmotionAlertVO>

心理筛查

端点 说明 端口 请求数据 响应数据
POST /api/mind/screening/submit 提交筛查问卷 📱小程序 {childId, screenType(PHQ-9/GAD-7), answers[]} ScreenResultVO(含评分/严重等级/风险标记)
POST /api/mind/screening/history 获取筛查历史 📱小程序 {childId, screenType, limit} List<ScreenResultVO>
POST /api/mind/screening/latest 获取最新筛查结果 📱小程序 {childId, screenType} ScreenResultVO

神经递质与肠脑洞察

端点 说明 端口 请求数据 响应数据
POST /api/mind/neurotransmitters 获取神经递质指标 📱小程序 {childId} List<HealthIndicator>(神经递质与激素类)
POST /api/mind/gut-emotion-insight 获取肠脑洞察摘要 📱小程序 {childId} {summary, analysis}
POST /api/mind/emireport/latest 获取最新EMI心理报告 📱小程序 {childId} EmiReportDTO

数据实体关系

erDiagram
    Child ||--o{ EmotionCheckin : "一个孩子多条打卡"
    Child ||--o{ MentalHealthScreen : "一个孩子多次筛查"
    Child ||--o{ EmotionAlert : "一个孩子多个告警"
    EmotionCheckin ||--o{ EmotionAlert : "打卡触发低风险告警"
    MentalHealthScreen ||--o{ EmotionAlert : "高风险筛查自动创建告警"

    EmotionCheckin {
        Long id PK
        Long childId FK
        Integer moodScore "效价 1-10"
        String emotionType "joy/sadness/anger/..."
        Integer stressLevel "压力 1-10"
        Integer arousalLevel "激活度 1-10"
        Integer energyLevel "精力 1-10"
        String photoUrl
        String note
        Integer energyAwarded "奖励能量值"
        Date checkinDate
    }

    MentalHealthScreen {
        Long id PK
        Long childId FK
        String screenType "PHQ-9 / GAD-7"
        String answers "JSON 答案数组"
        Integer totalScore
        String severityLevel "正常/轻度/中度/中重度/重度"
        String riskFlags "JSON 风险标记"
        String suggestions "建议文案"
        Date completedAt
    }

    EmotionAlert {
        Long id PK
        Long childId FK
        String source "screening / checkin"
        String alertType
        String severity "high / medium / low"
        String description
        String suggestion
        Boolean resolved
    }

完整性分析

# 维度 评估 说明
1 流程完整性 ✅ 完整 覆盖情绪打卡(6个端点)、情绪预警(4个端点)、心理筛查(3个端点)、神经递质与肠脑洞察(3个端点)共4个阶段,以及管理端告警管理,路径完整
2 异常路径 ⚠️ 部分覆盖 打卡图片查看权限(家长端隐藏孩子照片)已在Service层处理;高风险筛查自动创建告警和微信推送已覆盖
3 端点覆盖 ✅ 完整 16个端点全部映射到流程图中,与代码实际暴露的/api/mind/*一致
4 角色覆盖 ✅ 完整 孩子(创建打卡/查看自身)、家长(查看打卡/预警/筛查/肠脑洞察)、管理端(告警管理)均已覆盖
5 数据实体 ✅ 完整 emotion_checkin表、mental_health_screens表、emotion_alerts表、emi_reports表均在图中映射
6 一致性 ✅ 与代码一致 所有端点路径与实际Controller(EmotionCheckinController、EmotionAlertController、ScreeningController、MindController)中的@PostMapping匹配