关注

基于 Spring AI 的心理健康智能陪伴与情绪分析系统 基于SpringAi的心理健康助手

基于SpringAi的心理健康助手
在这里插入图片描述

项目包含:
源码+ 数据库+ 部署文档
在这里插入图片描述

技术架构:
后端:springboot/mybatisplus/jwt/SpringSecurity/SpringAI
前端:vue/element-plus/nodejs/axios/pinia/vite
数据库:mysql8

在这里插入图片描述

用户模块:用户登录;用户注册;密码找回;用户退出;个人信息查询;个人信息修改;密码修改;用户增删改查;用户统计;用户状态管理
在这里插入图片描述

情绪日记模块:情绪日记增删改查;根据日期查询日记;情绪日记分页查询;情绪统计分析;AI情绪分析;手动触发AI分析;批量AI分析
知识文章模块:知识文章增删改查;文章发布;文章下线;文章阅读;文章状态更新;批量删除文章;文章统计;分页查询文章
知识分类模块:知识分类增删改查;分类树查询;分页查询分类
心理咨询模块:创建咨询会话;流式AI对话;会话增删改查;会话消息查询;会话情绪分析;会话标题更新

在这里插入图片描述

用户收藏模块:收藏文章;取消收藏;收藏状态查询;收藏列表查询;收藏统计
文件管理模块:简单文件上传;业务文件上传;临时文件上传;文件删除;批量文件删除;文件信息查询;文件下载;临时文件确认;过期文件清理;文件上传配置查询
数据分析模块:综合数据分析;情绪热力图;系统概览;情绪趋势;咨询统计;用户活跃度

在这里插入图片描述

AI任务管理模块:AI任务分页查询;队列统计;任务重试;批量任务重试

🧠 心语智伴:基于 Spring AI 的心理健康智能陪伴与情绪分析系统

📖 项目概述

本系统是一款专为现代人心理健康打造的 AI 情感陪伴与专业辅助平台。它创新性地将 Spring AI 大模型框架Vue3 + Element Plus 前后端分离架构深度融合,构建了“情绪记录 + AI 对话 + 专业分析 + 知识科普”的四位一体解决方案。系统能够自动识别用户日记/对话中的 焦虑、抑郁、压力、孤独、愤怒、喜悦 等情绪状态,提供实时心理疏导建议,并支持流式 AI 对话、情绪趋势可视化、风险预警干预、知识库管理及后台任务队列调度。通过 Java (SpringBoot/Spring AI) + Vue3 的全栈技术实现,为个人用户提供温暖陪伴,为心理咨询师/机构提供高效管理工具,为科研机构提供情绪数据支撑。


🚀 核心功能矩阵

1. 💬 智能 AI 心理咨询助手

  • 流式对话体验
    • 基于 Spring AI + Stream API 实现打字机效果回复,提升交互自然度。
    • 支持多轮上下文记忆,理解用户历史对话内容。
    • 可切换不同人格设定(如“暖心姐姐”、“理性导师”、“幽默朋友”)。
  • 深度情绪洞察
    • 自动分析对话文本,识别主导情绪及强度(0-100 分)。
    • 生成个性化疏导建议(如深呼吸练习、认知重构技巧、行动清单)。
    • 高风险信号检测(自杀倾向、严重抑郁),触发紧急干预流程。
  • 会话管理
    • 创建/删除/重命名咨询会话。
    • 查看历史对话记录,支持关键词搜索。
    • 导出对话记录为 PDF 或 TXT 格式。

2. 📔 情绪日记与智能分析

  • 便捷记录入口
    • 文字输入框 + 表情选择器 + 生活指标评分(睡眠、压力、饮食、运动)。
    • 支持语音转文字输入(可选扩展)。
  • AI 深度解读
    • 手动触发或定时自动分析日记内容。
    • 输出情绪标签云、情绪强度曲线、潜在心理问题提示。
    • 生成改善建议报告(含具体行动方案)。
  • 数据统计看板
    • 情绪日历热力图:直观展示每日情绪波动。
    • 情绪流动图:折线图呈现近 7/30 天情绪变化趋势。
    • 生活指标关联分析:探索睡眠质量、压力水平与情绪的相关性。

3. 📚 专业知识库与文章管理

  • 结构化知识体系
    • 分类树管理(如“抑郁症专题”、“焦虑症应对”、“人际关系”、“自我成长”)。
    • 文章详情页包含摘要、正文、插图、推荐阅读、收藏按钮。
  • 内容运营后台
    • 管理员发布/编辑/下线文章。
    • 批量操作(删除、移动分类、设置置顶)。
    • 阅读量统计与热门排行。
  • 用户互动功能
    • 收藏喜欢的文章至个人中心。
    • 分享文章链接至社交媒体。
    • 评论与点赞(可选扩展)。

4. 👥 用户管理与权限控制

  • 完整用户生命周期
    • 注册/登录(邮箱/手机号验证)、密码找回、退出登录。
    • 个人信息管理(头像、昵称、性别、生日、职业)。
    • 密码修改与安全设置。
  • 精细化权限控制
    • 普通用户:使用所有前端功能,查看个人数据。
    • 管理员:访问后台管理系统,管理用户、文章、任务队列、数据分析。
    • 超级管理员:拥有最高权限,可配置系统参数、管理角色。
  • 安全机制
    • JWT Token 鉴权,防止未授权访问。
    • BCrypt 密码加密存储。
    • 操作日志审计(记录关键操作时间与 IP)。

5. ⚙️ AI 任务队列与异步处理

  • 任务调度中心
    • 后台自动排队处理 AI 分析请求(避免阻塞主线程)。
    • 支持手动触发、定时触发、批量触发分析任务。
    • 任务状态监控(待处理、进行中、已完成、失败)。
  • 容错与重试机制
    • 失败任务自动重试(最多 3 次)。
    • 错误信息记录与告警通知(邮件/短信)。
    • 批量重试功能,快速恢复异常任务。
  • 性能优化
    • 异步处理大量日记/对话分析请求。
    • 资源隔离,确保核心服务稳定性。

6. 📊 全景数据分析驾驶舱

  • 系统概览仪表盘
    • 总用户数、活跃用户数、今日新增日记数、平均情绪得分。
    • 经典热力图 / 多元可视化切换。
  • 情绪可视化中心
    • 情绪日历:颜色深浅代表情绪好坏,一目了然。
    • 情绪流动图:堆叠面积图展示多种情绪随时间的变化。
    • 情绪分布饼图:统计各情绪类别占比。
  • 业务统计分析
    • 咨询会话数量趋势。
    • 文章阅读 TOP10 排行。
    • 用户活跃度分析(日活/周活/月活)。
    • 高风险用户预警列表(需重点关注)。

7. 🗂️ 文件管理与清理策略

  • 灵活上传机制
    • 支持图片、音频、文档等多种格式上传。
    • 临时文件上传(用于草稿、预览),过期自动清理。
    • 业务文件上传(关联日记、文章、会话),永久保存。
  • 智能清理策略
    • 定时任务扫描过期临时文件并删除。
    • 手动批量删除无用文件。
    • 文件信息查询(大小、类型、上传时间、关联业务)。

🏗️ 技术架构蓝图

🎨 前端交互层 (Vue 3)

  • 核心框架Vue 3.2.45 + Vite (快速构建)
  • UI 组件库Element Plus (企业级 UI 组件,适配后台管理系统)
  • 状态管理Pinia (轻量级状态管理)
  • 路由管理Vue Router 4
  • HTTP 客户端Axios (拦截器处理 JWT、错误统一提示)
  • 数据可视化ECharts 5 (绘制热力图、流动图、折线图、饼图)
  • 富文本编辑器WangEditorTinyMCE (用于文章编辑)
  • Markdown 渲染marked + highlight.js (用于知识文章展示)

⚙️ 后端服务层 (SpringBoot + Spring AI)

Java 后端 (SpringBoot 3.x)
  • 核心框架Spring Boot 3.x + Spring MVC + MyBatis-Plus
  • 安全认证Spring Security + JWT (无状态令牌认证)
  • AI 集成Spring AI (对接 DeepSeek/Qwen/GPT 等大模型,支持流式响应)
  • 业务逻辑
    • 用户管理、角色权限控制。
    • 情绪日记 CRUD、AI 分析触发。
    • 知识文章管理、分类树构建。
    • 咨询会话管理、消息持久化。
    • 文件上传下载、临时文件清理。
    • 数据统计与分析接口。
  • 异步任务@Async + ThreadPoolTaskExecutor (处理 AI 分析队列)
  • 定时任务@Scheduled (清理过期文件、自动生成日报)
  • API 设计:RESTful 风格接口,前后端分离通信。

💾 数据存储层

  • 关系型数据库MySQL 8.0 (存储用户、日记、文章、会话、文件元数据)
  • 文件存储:本地文件系统 或 阿里云 OSS / 七牛云 (存储上传图片、音频、文档)
  • 缓存 (可选)Redis (会话缓存、热点数据、分布式锁)
  • 消息队列 (可选)RabbitMQ/Kafka (解耦 AI 分析任务,提高吞吐量)

✨ 系统核心优势

🔬 技术创新领先

  • Spring AI 原生集成:利用 Spring 官方 AI 框架,简化大模型调用,支持流式响应、函数调用、向量检索等高级特性。
  • “记录 - 分析 - 干预”闭环:从用户主动记录到 AI 被动分析,再到主动提供建议,形成完整的心理健康管理闭环。
  • 异步任务队列:通过 Java 内置线程池实现 AI 分析任务排队,避免高并发下系统崩溃,保障用户体验。
  • 多维度情绪可视化:结合热力图、流动图、雷达图等多种图表,让用户直观感知情绪变化规律。

🌿 实战应用价值

  • 个人用户:获得随时随地的心理陪伴,及时发现情绪问题,学习科学应对方法。
  • 心理咨询师:借助 AI 预处理客户数据,提高工作效率;通过后台数据了解客户整体状况。
  • 企业 HR/EAP:部署为员工心理健康平台,降低心理压力导致的离职率与生产力损失。
  • 科研机构:积累匿名化情绪数据,支撑心理学、社会学、人工智能交叉研究。

🚀 开发与扩展性

  • 前后端分离:前端 Vue 与后端 SpringBoot 完全解耦,便于独立开发、测试与部署。
  • 模块化设计:各功能模块高度内聚、低耦合,易于增删改查。
  • 插件化架构:轻松替换不同的 AI 模型提供商、添加新的情绪维度、集成第三方服务(如微信登录、短信验证码)。
  • 开源友好:代码结构清晰,注释详尽,适合作为计算机科学与技术、应用心理学方向的毕业设计或创业项目。

💻 简易代码实现

第一步:Spring AI 配置 (application.yml)

spring:
  ai:
    chat:
      client:
        enabled: true
      options:
        model: deepseek-chat # 或 qwen-max, gpt-3.5-turbo
        temperature: 0.7
        max-tokens: 1024
    embedding:
      enabled: false # 如需向量检索可开启

第二步:AI 分析服务 (EmotionAnalysisService.java)

@Service
public class EmotionAnalysisService {

    @Autowired
    private ChatClient chatClient; // Spring AI 提供的聊天客户端

    @Async("aiTaskExecutor")
    public void analyzeDiaryAsync(Long diaryId) {
        try {
            Diary diary = diaryMapper.selectById(diaryId);
            String content = diary.getContent();
            
            // 构造 Prompt
            String prompt = """
                请分析以下用户日记的情绪状态:
                "%s"
                
                请按 JSON 格式返回:
                {
                  "primary_emotion": "主要情绪(焦虑/抑郁/喜悦等)",
                  "intensity": 0-100 的整数,
                  "risk_level": "low/medium/high",
                  "suggestions": ["建议1", "建议2"]
                }
                """.formatted(content);
            
            // 调用大模型
            String response = chatClient.call(prompt);
            
            // 解析 JSON 结果
            EmotionResult result = parseJsonResponse(response);
            
            // 更新日记记录
            diary.setPrimaryEmotion(result.getPrimaryEmotion());
            diary.setEmotionIntensity(result.getIntensity());
            diary.setRiskLevel(result.getRiskLevel());
            diary.setAiSuggestions(JSON.toJSONString(result.getSuggestions()));
            diary.setAnalyzedAt(LocalDateTime.now());
            diaryMapper.updateById(diary);
            
        } catch (Exception e) {
            log.error("AI 分析日记失败: {}", diaryId, e);
            // 记录错误信息,触发重试机制
        }
    }

    private EmotionResult parseJsonResponse(String json) {
        // 使用 Jackson 或 Gson 解析 JSON
        return new ObjectMapper().readValue(json, EmotionResult.class);
    }
}

第三步:Vue 前端情绪日记页面 (DiaryDetail.vue 片段)

<template>
  <div class="diary-detail">
    <el-card>
      <template #header>
        <div class="card-header">
          <span>情绪日记详情</span>
          <el-button @click="triggerAIAnalysis" :loading="analyzing" type="primary">
            {{ analyzed ? '重新分析' : 'AI 分析' }}
          </el-button>
        </div>
      </template>

      <div v-if="diary" class="content">
        <p>{{ diary.content }}</p>
        
        <div v-if="analyzed" class="analysis-result">
          <h4>AI 情绪分析</h4>
          <el-tag :type="getTagType(diary.primaryEmotion)">
            {{ diary.primaryEmotion }}
          </el-tag>
          <el-progress :percentage="diary.emotionIntensity" :color="customColors" />
          
          <div v-if="diary.riskLevel === 'high'" class="warning">
            <el-alert title="高风险预警" type="error" show-icon />
            <p>检测到较高心理风险,请及时寻求专业帮助!</p>
          </div>
          
          <div class="suggestions">
            <h5>改善建议:</h5>
            <ul>
              <li v-for="(suggestion, index) in diary.aiSuggestionsList" :key="index">
                {{ suggestion }}
              </li>
            </ul>
          </div>
        </div>
      </div>
    </el-card>
  </div>
</template>

<script setup>
import { ref, onMounted } from 'vue';
import { useRoute } from 'vue-router';
import axios from 'axios';

const route = useRoute();
const diary = ref(null);
const analyzed = ref(false);
const analyzing = ref(false);

const customColors = [
  { color: '#f56c6c', percentage: 20 },
  { color: '#e6a23c', percentage: 40 },
  { color: '#5cb87a', percentage: 100 },
];

onMounted(async () => {
  const res = await axios.get(`/api/diary/${route.params.id}`);
  diary.value = res.data;
  analyzed.value = !!res.data.analyzedAt;
});

const triggerAIAnalysis = async () => {
  analyzing.value = true;
  try {
    await axios.post(`/api/diary/${diary.value.id}/analyze`);
    ElMessage.success('AI 分析已提交,请稍后刷新查看结果');
    setTimeout(() => location.reload(), 2000);
  } catch (error) {
    ElMessage.error('分析失败,请稍后重试');
  } finally {
    analyzing.value = false;
  }
};

const getTagType = (emotion) => {
  const map = {
    '焦虑': 'warning',
    '抑郁': 'danger',
    '喜悦': 'success',
    '愤怒': 'info',
    '平静': ''
  };
  return map[emotion] || '';
};
</script>

📥 交付清单

  1. 💻 完整源代码
    • 前端:Vue 3 项目源码(含组件、路由、状态管理、ECharts 图表、Axios 封装)。
    • 后端:SpringBoot 项目源码(含 Controller、Service、Mapper、Entity、Config、AI 服务)。
    • 数据库脚本db_plat.sql(含表结构、初始数据、示例文章)。
  2. 📘 结构化技术文档
    • 《系统架构与设计说明书》
    • 《环境安装与部署指南 (Win/Linux)》
    • 《Spring AI 配置与大模型接入教程》
    • 《API 接口文档(Swagger/OpenAPI)》
    • 《异步任务队列与重试机制说明》
    • 《数据库 ER 图与字段字典》
  3. 📖 用户操作手册:详细的功能使用说明与业务流程指南。
  4. 📊 示例数据
    • 测试用户账号、模拟日记数据、示例文章。
    • 开题报告、论文、PPT、任务书等学术文档模板。
  5. 🛠️ 部署工具包
    • Dockerfile(容器化部署)
    • nginx.conf(反向代理配置)
    • startup.sh(一键启动脚本)

🌍 适用场景展望

  • ‍🎓 高校心理辅导中心:为学生提供 24 小时在线心理支持,减轻咨询师工作压力。
  • 🏢 企业 EAP 项目:作为员工福利,帮助缓解职场压力,提升组织幸福感。
  • 🏥 医院精神科/心理门诊:辅助医生进行初筛与随访,跟踪患者情绪变化。
  • 📱 C 端心理健康 App:直接面向大众用户,提供付费订阅制的高级分析与专属顾问服务。
  • 🔬 科研数据采集平台:收集匿名用户情绪数据,支撑情感计算、社会心理学研究。

总结:本系统是**“前沿 AI 技术 + 人文关怀 + 工程实践”在心理健康领域的标杆应用。它不仅解决了传统心理咨询资源稀缺、成本高昂、 stigma 严重的问题,更通过 Spring AI 流式对话多维情绪可视化赋予了系统“共情”与“洞察”的能力。从日常情绪记录深度 AI 分析**,从即时心理疏导长期趋势追踪,全方位守护用户心灵健康。无论是作为商业落地产品还是高水平毕业设计,都具备极高的社会价值与技术含量。让每一次倾诉,都被温柔以待;让每一颗心灵,都有 AI 相伴!

转载自CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/2401_88440984/article/details/159002209

评论

赞0

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--