目录

一、项目背景

 二、技术介绍

三、功能介绍

四、代码实现

五、系统实现


一、项目背景

青少年心理健康是全民健康的重要组成部分,关乎家庭幸福与国家未来。据我国全国性调查数据显示,6至16岁在校中小学生精神心理障碍患病率约为17.5%,其中焦虑障碍、抑郁障碍最为常见。联合国儿童基金会与WHO联合调查亦指出,全球10至19岁青少年中约20%存在心理健康问题。更值得关注的是,据某省会城市精神专科医院统计,18岁及以下未成年人就诊占比从2019年的9.9%增长至2024年的18.8%,五年间近乎翻番,部分专科医院甚至出现18岁以下住院患者占比达81.95%的极端情况,与2015年成人患者占八成的比例形成鲜明逆转。青少年心理健康问题正呈现令人担忧的“低龄化”与“高发化”双重趋势。

然而,我国儿童青少年精神心理服务资源仍显不足且分布不均。一方面,专业人才严重短缺,儿童精神科医生数量远无法满足社会需求;另一方面,传统心理咨询模式存在隐私顾虑、求助门槛高、时效性差等局限,加之社会普遍存在的认知误区与病耻感,导致大量潜在问题未能得到及时识别与干预。中国科学院院士陆林指出,未来十年我国儿童青少年精神心理问题发生率恐仍将呈上升趋势。

与此同时,人工智能技术的快速发展为心理健康服务提供了新的可能。研究表明,AI技术在青少年心理服务中具有广阔应用前景,可研发智能筛查系统、陪伴机器人及数字疗法等。Spring AI框架的成熟与普及,使得构建具备智能对话、情绪分析与个性化推荐的轻量化心理服务平台成为可行。

基于上述背景,本课题旨在设计并实现基于SpringBoot+Vue3+Spring AI的青少年心理健康管理系统,融合AI智能咨询、情绪日记分析、心理科普与干预等功能,构建“预防—预警—干预”一体化服务体系,为青少年提供便捷、私密、专业的数字心理支持平台,助力缓解当前心理健康服务供需失衡的困境。

 二、技术介绍

本系统采用前后端分离架构模式,支持Windows与Mac双平台运行环境。开发工具选用IntelliJ IDEA,后端基于JDK21与Spring Boot 3.2.4框架构建,利用其自动配置与生态整合能力,显著提升开发效率。数据持久层采用MyBatis-Plus 3.5.9,结合MySQL 8.0+关系型数据库,简化CRUD操作并支持复杂查询。集成Spring AI 1.0.0-M5框架,为智能心理咨询模块提供大语言模型接入能力。安全认证方面,使用JWT 0.12.5实现无状态用户鉴权,保障接口访问安全。此外,引入Hutool 5.8.25工具库简化字符串、日期等常见操作,Knife4j 4.4.0自动生成API文档,便于前后端联调测试。

前端基于Vue 3.x与Vite构建工具,采用组合式API开发模式,提升代码可维护性。Vue Router 4.x实现多页面路由管理,Pinia 2.x作为状态管理方案,实现跨组件数据共享。Element Plus 2.x组件库提供丰富的桌面端UI组件,保证界面美观与交互一致性。Axios封装HTTP请求拦截器,统一处理认证令牌与错误提示。ECharts 5.x用于心理测评数据可视化分析,直观展示用户情绪变化趋势。整体技术选型兼顾开发效率、系统性能与扩展性,为青少年心理健康管理系统的落地提供坚实的技术支撑。

三、功能介绍

用户端功能:
用户认证模块(注册、登录、个人信息管理、修改密码)
心理科普模块(分类浏览、关键词搜索、详情查看、收藏功能、评论功能)
心理测试模块(测试列表、在线答题、自动评分、结果展示、历史记录查看)
心理宣传模块(宣传内容列表、详情查看、收藏功能)
资讯模块(资讯列表、详情查看)
活动模块(活动列表、活动详情、在线报名、我的预约查看)
通知公告模块(公告列表、详情查看)
意见反馈模块(提交反馈、查看我的反馈及回复)
AI智能助手模块(基于Spring AI的智能对话、心理咨询交流、专业心理建议、对话历史记录)
首页模块(轮播图展示、热门活动展示、热门科普展示)
个人中心模块(我的收藏、我的评论、测试记录)
管理端功能:
管理员认证模块(管理员登录、JWT权限验证、个人中心)
数据概览模块(用户/测试/活动/科普/评论/收藏统计、ECharts可视化图表、健康状态分布统计)
心理测试管理模块(测试卷增删改查、测试题管理、选项分值设置、评估阈值配置)
心理分类管理模块(分类增删改查、排序管理)
心理科普管理模块(增删改查、图片上传、分类筛选、热门设置)
心理宣传管理模块(增删改查、图片上传)
资讯管理模块(增删改查、图片上传)
活动管理模块(增删改查、报名人数管理、状态管理、热门设置)
报名管理模块(报名列表、审核通过/拒绝)
轮播图管理模块(增删改查、排序管理、状态管理)
通知公告管理模块(增删改查)
收藏管理模块(查看用户收藏记录)
评论管理模块(评论列表、删除违规评论)
反馈管理模块(查看用户反馈、回复反馈)
用户管理模块(用户查看、用户搜索、状态管理、健康状态显示)
管理员管理模块(管理员账号增删改查)
测试记录管理模块(查看用户测试记录、成绩统计)
三、数据库设计
系统数据库:youth_mental_health
包含18张主表:
主要数据表:
sys_user(用户表)
sys_admin(管理员表)
sys_banner(轮播图表)
sys_notice(通知公告表)
psy_category(心理分类表)
psy_knowledge(心理科普表)
psy_publicity(心理宣传表)
psy_news(资讯表)
psy_test(测试卷表)
psy_question(测试题表)
psy_option(测试选项表)
psy_test_record(测试记录表)
psy_activity(活动表)
psy_registration(活动报名表)
psy_collect(收藏表)
psy_comment(评论表)
psy_feedback(反馈表)
psy_ai_chat(AI对话记录表)
四、项目特色
集成Spring AI智能对话,AI助手可进行专业心理咨询交流,提供心理健康建议
完整的心理测试评估系统,支持自动评分和健康状态判定(健康/良好/建议沟通)
完整的前后端分离架构,代码结构清晰规范
完善的用户权限控制,基于JWT的安全认证机制
清新简洁的UI设计,适合青少年用户群体
完整的活动报名系统,支持报名审核流程
强大的管理后台,支持数据统计和ECharts可视化展示
丰富的心理健康知识库,涵盖多种心理分类
支持图片上传和预览功能
严格的代码规范,采用三层架构,易于维护扩展

四、代码实现

// AiChatServiceImpl.java
@Service
@Slf4j
public class AiChatServiceImpl implements AiChatService {

    // 注入Spring AI的对话客户端 (基于你技术栈中的Spring AI 1.0.0-M5)
    private final ChatClient chatClient;
    @Autowired
    private ChatRecordMapper chatRecordMapper; // MyBatis-Plus Mapper
    @Autowired
    private RedisTemplate<String, String> redisTemplate;

    // 构造函数注入 (Spring Boot 3.2.4 推荐方式)
    public AiChatServiceImpl(ChatClient.Builder chatClientBuilder) {
        this.chatClient = chatClientBuilder
                .withSystemPrompt("你是一位专业的青少年心理辅导助手,名叫“心语姐姐”。" +
                        "请遵循以下原则:1. 共情优先,不要急于说教;2. 使用温和、鼓励的语气;" +
                        "3. 如果用户提到伤害自己或他人的意图,必须引导其联系家长或心理热线;" +
                        "4. 回答控制在150字以内,适合6-18岁青少年理解。")
                .build();
    }

    @Override
    public ChatResponse chatWithAi(Long userId, String userMessage) {
        // 1. 构建上下文:获取最近5条聊天记录作为记忆 (简易记忆实现)
        List<ChatRecord> history = chatRecordMapper.selectLastFiveByUserId(userId);
        StringBuilder context = new StringBuilder();
        history.forEach(record -> {
            context.append("用户: ").append(record.getUserMessage()).append("\n");
            context.append("助手: ").append(record.getAiResponse()).append("\n");
        });
        context.append("用户: ").append(userMessage);

        // 2. 调用Spring AI核心接口 (采用JDK21虚拟线程进行异步非阻塞处理)
        try (var executor = Executors.newVirtualThreadPerTaskExecutor()) {
            Future<String> future = executor.submit(() -> {
                // 核心调用:通过Spring AI 与底层大模型交互
                return chatClient.prompt()
                        .user(context.toString())
                        .call()
                        .content();
            });
            String aiResponse = future.get(10, TimeUnit.SECONDS);
            
            // 3. 情绪倾向分析 (利用Spring AI的简单分类能力或正则)
            EmotionType emotion = analyzeEmotion(userMessage);
            
            // 4. 异步保存记录 (使用MyBatis-Plus插入)
            ChatRecord record = new ChatRecord();
            record.setUserId(userId);
            record.setUserMessage(userMessage);
            record.setAiResponse(aiResponse);
            record.setEmotionType(emotion.getCode());
            record.setCreateTime(LocalDateTime.now());
            
            // 使用虚拟线程异步保存,不阻塞主流程
            Thread.startVirtualThread(() -> chatRecordMapper.insert(record));
            
            // 5. 风险预警 (如果检测到危机关键词,触发预警逻辑)
            if (containsRiskKeyword(userMessage)) {
                sendAlertToGuardian(userId, userMessage);
                aiResponse = "[温馨提示] 我注意到你有些难过,我已经悄悄告诉了你信任的大人,他们会给你温暖的拥抱。同时,你也可以拨打12355青少年心理热线。\n\n" + aiResponse;
            }
            
            return new ChatResponse(aiResponse, emotion.getDescription());
            
        } catch (Exception e) {
            log.error("AI调用失败", e);
            return new ChatResponse("心语姐姐暂时走神了,稍后再试吧~", "系统繁忙");
        }
    }
    
    // 省略情绪分析、关键词预警的私有方法...
}

五、系统实现

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐