第一章 绪论

1.1 研究背景与意义

1.1.1 研究背景

  近些年来,高校心理健康服务能力一直处在教育主管部门的政策层面,各个高校都存在着咨询师数量不足、学生需求量大增、预约渠道单一等结构上的压力。传统的心理咨询管理依靠线下排队、电话预约等手段来开展,流程繁杂而且数据保存零散,咨询师和学生之间交流的信息常常会存在断层的情况发生。部分高校虽然已经开始使用信息化工具,但是大多数停留在简单的表单收集上,缺少了完整的业务闭环和数据分析能力[1]。大语言模型技术快速成熟给这一困境提供了一种新的解决途径,国产大模型在中文语义理解、情感识别、多轮对话等方面具有较好的实用性,相关的研究也证明了它在教育场景中应用的可能性[2]。把大模型的能力融入到心理咨询管理系统的当中,在非工作时间里可以给予基本的情感陪伴和信息引导,而且还可以缩减咨询师的重复接待工作量[3]。人工智能同高校心理服务相融合,正在由概念层面转向可以落实到工程实践层面的过程之中,创建起一个功能齐全、角色分明、支持智能问答的高校心理咨询管理系统,有着十分紧迫的现实需求。

1.1.2 研究意义

  本系统建设可以将原本分散在各个地方的预约记录、咨询档案、心理测试结果等数据集中到一个数字化平台上进行存储和追溯,给咨询师制定干预方案提供客观的依据。通义千问大模型接入之后,系统就拥有了全天候智能应答的能力,学生在需要帮助的时候第一时间就能得到引导性的回复,有效地降低了心理求助的心理门槛和时间成本。科普内容模块的分类展示方式把心理健康知识的传播由被动等待变为主动推送,拓宽了服务范围。系统所积累下来的预约数据、测试数据以及咨询记录,可以对学校学生群体的心理状况进行宏观上的判断,给政策的调整提供数据支持。本文以主流开源框架为基础所构建的完整的JavaWeb系统,对同类型的高校信息化建设有一定的借鉴意义。

1.2 国内外研究现状

1.2.1 国内研究现状

  国内高校心理健康信息化建设始于上世纪末,初期主要形式为心理档案电子化,之后逐渐发展成为可以实现在线预约、测评管理等功能的综合平台。近些年来,在人工智能技术政策的推动之下,情感计算、自然语言处理这些技术渐渐渗入到该范畴当中,系统的形态由静态的信息展现转向了动态的智能互动。

  赵岩、李国娟(2026)在黑龙江高教研究中对人工智能赋能高校心理健康教育的优势与风险进行研究,从完善伦理规范、人机协同的角度出发,推进心理健康教育智能化转型,对本系统咨询师介入机制设计有直接的启示作用[4]。张津凡在2026年发表在《甘肃日报》上认为,将人工智能深度嵌入到高校心理健康教育中可以改善服务流程、提高教育精准度,其观点证明了大模型应用于咨询场景是可行的路径[5]。张思思(2026)针对AI辅助高职院校辅导员心理健康管理的实施策略开展研究,在提出情绪识别、智能对话系统、数据可视化这三种应用方式的基础上给出了具体的实践路径,从而给科普推送、预警模块的设计给予方法论上的参照[6]。

1.2.2 国外研究现状

  国外高校心理服务信息化发展得比较早,大体上是把数据作为核心驱动力,用多模态感知技术作为研究方向。人工智能介入心理健康监测的方向已经由原来的单个问卷评估发展为行为建模、生理信号融合和实时预警,研究方法越来越精细,对在线平台的系统架构提出了更高的要求。

  2026年Yan和Zheng在Discover Computing上发表了一篇基于多模态工业物联网数据的高校学生心理健康风险预警系统的研究,使用自适应图神经网络实现实时的风险预测,其跨模态数据融合思路可以为本文心理测试结果和预约行为数据联合分析的设计提供一定的参考[7]。Campos于2026年在npj Mental Health Research上发表综述,对多模态人工智能、在线学习以及青少年心理健康领域的发展进行了梳理,并且指出目前的AI方法对于青少年的覆盖还不全面,给本系统大学生数据积累策略提供参考[8]。2026年Mick出版了专著,对人工智能在学校的心理健康服务中的未来发展进行了研究,提出了咨询师和AI系统合作的伦理框架,该角度影响着本系统中咨询师审核权限以及AI问答边界的设计[9]。

  国外关于多模态数据融合、实时预警机制和伦理框架的研究成果很多。本系统在借鉴其数据分层管理思想的基础上,根据国内高校咨询流程实际操作习惯,把重点放在预约审核闭环、咨询记录保存和大模型问答三者之间的有机融合上,体现出了对本土化应用场景的适应性。

1.3 研究内容

  本文的主要工作就是设计并实现一个基于通义千问大模型的智能客服高校心理咨询管理系统,使用Spring Boot做为后端框架、Vue做为前端技术、MySQL做为数据存储层,采用B/S架构进行开发部署。研究工作按从需求到实现的工作流程进行,即先对学生的、咨询师的、管理员的用户操作诉求进行系统的整理,形成功能边界清楚的需求规格;在此基础上建立系统架构设计、数据库概念模型和逻辑模型,确定各个模块的数据流转关系;然后进入分角色的功能模块实现阶段,包含心理测试管理、科普内容发布和审核、咨询师预约全流程、咨询记录增删改查、通义千问大模型接口集成。本研究的重点是业务逻辑的完整闭环和大模型能力的工程化落地,性能调优、高并发场景处理等运维层面的内容不在本次研究范围内。最终将得到一套可以本地运行的系统原型和完整的设计文档。整体上按照软件工程规范来组织各个章节的内容,用需求驱动的设计、设计驱动的实现的技术路线进行组织,给后面的功能扩展留出了合理的结构空间。

第二章 相关技术介绍

2.1 SpringBoot框架

  Spring Boot是基于Spring生态系统发展起来的快速开发框架,其主要的设计思想就是用约定优于配置的方式来降低企业级应用的搭建门槛。开发者不需要手动编写大量的XML配置文件,框架会自动完成对Bean的扫描、注入和生命周期的管理,从而使得开发人员可以专注于业务逻辑的实现上。内嵌Tomcat容器的特点使项目打包之后可以直接运行,不需要像传统部署方式那样对外部服务器有依赖,大大缩短了环境配置时间。Spring Boot的自动配置机制和Starter依赖管理方式可以大大提高多模块项目开发效率[10]。

  本系统中Spring Boot负责所有的业务接口路由分发、请求校验和响应封装工作。三类角色对应着Spring Boot分层架构体系中的控制层、服务层和数据访问层,在Spring Boot中分别完成了对它们的组织工作。通义千问大模型的API调用逻辑也被封装成独立的服务组件,挂载到Spring Boot的IoC容器中,和其它业务服务一样使用统一的生命周期管理方式。使用Vue.js、Spring Boot可以较好地解决前端、后端分离项目中稳定性的性能问题[11]。

2.2 Vue前端框架

  Vue是一个采用渐进式架构设计的JavaScript前端框架,它响应式的数据绑定机制使界面状态和底层数据保持一致,不需要开发者手动操作DOM节点。组件化开发模式把页面分成许多个独立的单文件组件,每个组件包含自身的模板、逻辑以及样式,复用性和可维护性比传统的多页面开发要好得多。Vue前端性能优化时使用虚拟DOM,减少真实DOM操作次数,在数据频繁变化的情况下具有较好的渲染效率[12]。

  本系统前端用Vue创建学生端、咨询师端和管理员端三个界面体系,每个端页面使用路由守卫来实现权限隔离,用户角色不同就只能访问不同的路由集合。心理测试作答界面实时计时显示、咨询预约表单动态校验提示、科普内容分类筛选联动等等都是利用Vue响应式特性得到流畅的交互反馈。Vue生态中状态管理工具和HTTP请求库配合使用,可以很好地规范大型单页应用的数据流向[13]。

2.3 MySQL数据库

  MySQL是目前web应用领域最常用的关系型数据库管理系统,具有稳定的事务支持、可以自定义索引、有比较完善的工具生态系统的软件。关系模型天生适合于描述实体间复杂的关联关系,对于本系统中学生、咨询师、预约记录、咨询档案等各方面的业务关联,关系型数据库的外键约束和联表查询功能可以保证数据的一致性。合理地对索引进行设计可以大幅度提高SQL查询语句的执行速度,对于高频的预约列表、测试记录查询来说尤其如此[14]。

  本系统数据库包含心理测试、咨询师信息、预约信息、咨询记录等十几张主要业务表,各个表之间用外键字段进行关联。MySQL的datetime类型字段全部用来存储各类业务操作的时间戳,可以根据时间区间来筛选出咨询记录、预约数据。InnoDB的行级锁机制可以很好地解决数据写入冲突问题,在多个用户同时提交预约申请的时候[15]。

2.4 B/S架构

  B/S架构即浏览器-服务器架构,是目前Web信息系统的主要部署方式。客户端只需要安装标准浏览器就可以访问系统所有的功能,服务端集中处理业务逻辑和数据存储,维护升级的时候只需要在服务端操作,客户端不需要做任何的更新动作。该特点对高校环境来说更加合适,不需要在学生终端设备上安装专门的客户端软件。浏览器是统一接入层,可以屏蔽不同操作系统之间的差异,给系统的跨平台使用打下基础[16]。

  本系统全部采用B/S架构来创建,前端的Vue应用在创建之后就部署到服务端,浏览器利用HTTP协议同后端的Spring Boot服务展开数据交流。用户可以在任意联网设备上访问指定的网址进行登录、预约、测试等各种操作,系统管理员也可以通过同一个浏览器窗口来完成内容审核和数据管理等工作。该架构使本系统具有很强的部署灵活性,可以适应各种校园网络环境实际运维的各种情况。值得注意的是,前后端分离的接口设计方式又使系统各个层次之间具有了独立可替换的能力,为之后的功能更新打下了结构基础[17]。

第三章 系统需求分析

3.1 可行性分析

3.1.1 技术可行性

  本系统使用Spring Boot作为后端核心框架,利用成熟的Spring生态体系来完成接口路由和依赖的管理;前端用Vue框架创建响应式的交互界面;数据层用MySQL关系型数据库进行持久化存储。三类技术都有完善的社区支持和稳定的版本更新,B/S架构的结构清晰、各层职责明确。通义千问大模型支持标准的API接口接入,与Spring Boot服务层的集成路径已经有很多成熟的实践,各个技术组件之间有较好的协同兼容性,在现有的开发环境下已经具备了足够的技术实现基础。

3.1.2 经济可行性

  本系统使用的是开源免费的Spring Boot、Vue、MySQL三个框架,不需要支付商业授权费用,开发环境搭建成本主要是硬件设备和网络资源的配置。通义千问大模型采用API调用计费的方式接入,调用量可以按照实际需要进行弹性控制,不会因为固定的授权费用而产生资金压力。系统部署到一般的服务器上,在人力及硬件投入方面均属于正常范围之内。整体建设成本相比外购商业心理咨询管理软件有明显的优势,经济合理性明显。

3.1.3 操作可行性

  本系统主要面向学生、咨询师和管理员这三个用户群体,界面交互采用常见的列表、表单、详情页等通用结构,页面导航层次简单,操作路径清晰易懂。学生完成预约申请、参加心理测试等主要任务所要经历的交互步骤少,认知负担小。管理员端内容审核、数据筛选操作都带有重置和批量处理的选项,减小了重复操作学习的成本。不同的信息化水平用户群在很短的时间内都能掌握基本的操作步骤,系统整体操作可行性较好。

3.2 功能需求分析

3.2.1 学生角色功能需求

  学生是系统的主要服务对象,功能权限集中在心理健康资源的自主获取、测评参与、咨询预约这三个方面。学生可以浏览心理专栏文章、科普内容、咨询师详细资料,按照关键词、类别、时间、热度等多方面进行筛选。学生可以查看已经发布的心理测试,并在开放时间里进行作答,系统根据配置决定是否允许重复参加。学生可以在咨询预约上对目标咨询师发起预约申请,填写时间、地点和备注之后提交,申请未被受理之前可以主动取消,也可以给咨询师留言、点赞、收藏。学生端设计的主要目的就是降低求助门槛,提高资源获取效率。如图3-1所示。

image 图3-1学生用例图

3.2.2 咨询师角色功能需求

  咨询师在系统里要担负起内容发布和咨询事务处理这两种主要任务。内容发布上咨询师可以创建、提交科普资料,包含视频、封面、正文、类别等,还可以录入自己的专业档案信息供学生端展示,内容提交之后进入管理员审核队列。咨询事务上,咨询师可以对学生提交的预约申请进行审核,决定是否通过或者拒绝,并查阅学生的留言评论。咨询会话结束之后,咨询师会在系统中输入咨询记录,可以按照时间、状态等条件来筛选、修改或者删除历史记录。心理测试添加工作由咨询师来完成,即设置测试名称、测试时长、测试开放区间以及多次答题权限等参数并提交发布。咨询师端设计的主要目的就是支持日常业务操作,减轻手工档案维护工作。如图3-2所示。

image 图3-2咨询师用例图

3.2.3 管理员角色功能需求

  管理员拥有系统的最高操作权限,可以对整个平台的内容进行审核把关,并且可以对数据全局进行管理。管理员可以依据不同的条件对科普资料展开筛选工作,对科普资料实施批量的审核,内容的修改工作以及评论的管理活动,最后还要对不合要求的内容予以删除处理。咨询师信息管理上,管理员会对咨询师提交的档案资料进行审核,也可以修改咨询师信息。预约信息管理中管理员可以对预约审核请求进行批量处理,填写审核回复,查看个人热度统计数据,将预约记录和后续咨询档案关联起来。心理专栏的管理员可以对文章进行发布、编辑和分类设置,并且可以设置置顶和推荐。公告管理由管理员对系统的公告实行全生命周期管理,即发布、修改和删除。管理员端的设计以保证平台内容质量、保证业务流程的规范运行为宗旨。如图3-3所示。

image 图3-3管理员用例图

第四章 系统设计

4.1 系统架构设计

  本系统使用经典的B/S分层架构,把整个结构分成用户界面层、应用服务层、数据持久层和系统支持层这四个层次,各个层次之间的职责边界清楚,数据的流向是单一有序的。用户界面层使用Vue框架实现学生端、咨询师端和管理员端的交互页面,使用Axios发起HTTP请求和后端服务通信。应用服务层使用Spring Boot框架,实现路由分发、业务逻辑处理、权限校验和通义千问大模型API调用等应用功能,各个业务模块以独立的服务组件形式挂载到IoC容器中。数据持久层用MySQL数据库来存放所有的业务数据,表与表之间的关联是通过外键字段来实现的。系统支持层是基础运行环境的配置,给上层服务的正常运转赋予底层支撑。系统架构图如下图4-1所示。

image 图4-1系统架构图

4.2 系统功能结构设计

  本系统从学生、咨询师、管理员三个用户角色出发,分别对每个用户角色的功能进行设计。学生端主要功能有心理测试参与、心理专栏阅读、科普内容浏览、咨询师预约申请等。咨询师端主要对科普内容发布、咨询师信息维护、预约记录审核、咨询档案管理以及心理测试创建进行操作。管理员端主要对全平台内容进行审核和数据管理,主要包括科普内容管理、咨询师信息管理、预约信息管理、心理专栏管理、公告管理等五个方面。各个功能模块通过数据层实现业务闭环,系统功能有内容发布、预约审核、档案保存等所有环节。该系统的功能结构图如图4-2所示。

image 图4-2系统功能结构图

4.3 系统流程设计

4.3.1 心理测试参与流程设计

  学生进入心理测试模块后,系统校验当前测试的开放状态与多次答题权限配置,通过验证的学生方可进入答题界面完成作答,未通过则返回提示。答题完成后系统记录作答结果并生成评分数据,学生查看结果后返回列表。心理测试参与流程图如图4-3所示。

image

图4-3心理测试参与流程图

4.3.2 咨询师预约流程设计

  学生在咨询师详情页选择可约时间段,填写预约地点与备注后提交申请,系统生成待审核预约记录。咨询师登录后对申请进行审核,审核通过则预约状态更新为已确认,拒绝则返回拒绝原因。学生可在未受理前主动取消预约,已确认的预约记录自动关联后续咨询记录模块。咨询师预约流程图如图4-4所示。

image

图4-4咨询师预约流程图

4.3.3 科普内容审核流程设计

  咨询师填写科普标题、选择类别、上传视频及正文内容后提交,内容进入待审核队列。管理员登录后可按标题、类别、审核状态筛选待审核内容,逐条或批量进行审核操作。审核通过的内容向学生端开放展示,未通过的内容返回咨询师端并携带说明。科普内容审核流程图如图4-5所示。

image

图4-5科普内容审核流程图

4.3.4 咨询记录管理流程设计

  咨询师在完成线下或线上咨询后,进入咨询记录管理模块新增记录,填写咨询时间、内容与结果等关键信息后保存。系统校验必填字段完整性,通过校验则记录入库,否则提示补充信息。已保存记录支持编辑与删除操作,管理员端可关联预约信息查阅对应咨询档案。咨询记录管理流程图如图4-6所示。

image

图4-6咨询记录管理流程图

4.3.5 公告发布管理流程设计

  管理员进入公告管理模块,填写公告标题与正文内容后提交,系统校验标题非空。校验通过则公告发布至学生端,学生登录后可在公告列表查阅详情。管理员可对已发布公告进行编辑或删除操作,编辑完成后重新提交保存,删除操作执行后公告从列表中移除。公告发布管理流程图如图4-7所示。

image

图4-7公告发布管理流程图

4.4 数据库设计

4.4.1 概念模型设计

  高校心理咨询管理系统所涉及的数据实体种类繁多,实体之间的关联关系直接映射现实业务流程中各参与方的交互逻辑。概念模型设计的本质是将现实世界的业务对象抽象为信息世界中的实体集合,并通过属性描述实体的特征、通过联系刻画实体间的约束规则。本系统的核心实体包括学生用户、心理咨询师、咨询师信息、预约信息、咨询记录、用户档案、科普内容、心理测试、用户答题与文章,各实体之间存在一对多或多对多的关联关系:一名学生可提交多条预约记录,一名咨询师可对应多条咨询档案,一套心理测试可产生多条作答记录。E-R图作为概念模型的标准可视化工具,能够将上述实体、属性及联系以直观的图形语言表达出来,为后续的逻辑模型转换提供明确依据。基于以上分析,将绘制反映本系统全域数据结构的E-R图,为逻辑模型设计奠定基础[18]。全局E-R模型如图4-8所示。

image 图4-8全局ER图

  根据系统分析,系统的主要实体有:学生用户、心理咨询师、咨询师信息、预约信息、咨询记录、用户档案、科普内容、心理测试、用户答题、文章,各个实体具体的属性如下图所示。

  (1)学生用户实体主要包括学生用户id、学生姓名、学生学号、用户id、审核状态、学生活跃度、创建时间、更新时间等。如图4-9所示。

image 图4-9学生用户实体属性图

  (2)心理咨询师实体主要包括心理咨询师id、咨询师姓名、咨询师性别、咨询师资质、咨询师活跃度、用户id、审核状态、创建时间、更新时间等。如图4-10所示。

image 图4-10心理咨询师实体属性图

  (3)咨询师信息实体主要包括咨询师信息id、咨询师姓名、咨询师用户、咨询师照片、专业背景、专业能力、从业经历、可约时间、审核状态、点击数、点赞数、收藏数、评论数、创建时间、更新时间等。如图4-11所示。

image 图4-11咨询师信息实体属性图

  (4)预约信息实体主要包括预约信息id、预约地点、预约备注、预约时间、可约时间、咨询师用户、学生用户、咨询师姓名、学生姓名、专业背景、审核状态、审核回复、创建时间、更新时间等。如图4-12所示。

image 图4-12预约信息实体属性图

  (5)咨询记录实体主要包括咨询记录id、咨询师用户、学生用户、咨询师姓名、学生姓名、专业背景、咨询内容、咨询结果、咨询时间、咨询状态、咨询次数、创建时间、更新时间等。如图4-13所示。

image 图4-13咨询记录实体属性图

  (6)用户档案实体主要包括用户档案id、咨询师用户、学生用户、咨询师姓名、学生姓名、专业背景、学生年龄、学生性别、学生手机、家庭背景、成长经历、心理特点、心理变化、创建时间、更新时间等。如图4-14所示。

image 图4-14用户档案实体属性图

  (7)科普内容实体主要包括科普内容id、咨询师用户、咨询师姓名、科普标题、科普类别、科普内容、科普详情、科普封面、科普视频、发布日期、审核状态、点击数、点赞数、收藏数、评论数、创建时间、更新时间等。如图4-15所示。

image 图4-15科普内容实体属性图

  (8)心理测试实体主要包括心理测试id、考试名称、答题时长、开放开始时间、开放结束时间、多次答题、总分、状态、创建时间、更新时间等。如图4-16所示。

image 图4-16心理测试实体属性图

  (9)用户答题实体主要包括用户答题id、考试id、用户id、提交人、答案、分数、客观题得分、主观题得分、评语、评分详情、评分状态、更新时间、创建时间等。如图4-17所示。

image 图4-17用户答题实体属性图

  (10)文章实体主要包括文章id、标题、正文、文章描述、文章分类、标签、来源、封面图、点击数、点赞数、创建时间、更新时间等。如图4-18所示。

image 图4-18文章实体属性图

4.4.2 数据库表设计

  关系数据库的逻辑设计是将概念层的E-R模型转化为可直接在数据库管理系统中实现的关系模式的关键步骤。胡劲在对数据库信息管理系统逻辑架构的研究中指出,逻辑设计阶段需重点关注实体完整性约束、参照完整性约束及数据范式要求,以保障数据的一致性与冗余可控性[19]。本系统在概念模型基础上,将十个核心实体分别映射为独立的数据库表,并通过外键字段建立表间关联。预约信息表通过咨询师用户字段与咨询师信息表形成参照关系,咨询记录表通过学生用户字段与学生用户表建立依赖。各表字段的数据类型依据实际业务含义进行精细化设定,主键统一采用自增整型,时间戳字段覆盖创建时间与更新时间两类节点,状态类字段以varchar存储便于后续业务扩展。整体逻辑结构满足第三范式要求,在保证数据完整性的前提下维持了合理的查询效率。

  (1)学生用户表主要是用来存储学生的基本账户信息。主要包括学生用户id、学生学号、学生姓名、用户id等字段。如表4-1所示。

表4-1学生用户表

序号字段名类型长度备注
1student_user_idint11主键
2student_numbervarchar50学生学号
3student_namevarchar100学生姓名
4user_idint11用户id
5examine_statevarchar16审核状态
6student_activityvarchar50学生活跃度
7create_timedatetime-创建时间
8update_timetimestamp-更新时间

  (2)心理咨询师表主要是用来存储咨询师的基础账户信息。主要包括心理咨询师id、咨询师姓名、用户id、审核状态等字段。如表4-2所示。

表4-2心理咨询师表

序号字段名类型长度备注
1psychological_counselor_idint11主键
2name_of_consultantvarchar100咨询师姓名
3gender_consultantvarchar2咨询师性别
4consultant_qualificationvarchar255咨询师资质
5consultant_activityvarchar50咨询师活跃度
6user_idint11用户id
7examine_statevarchar16审核状态
8create_timedatetime-创建时间
9update_timetimestamp-更新时间

  (3)咨询师信息表主要是用来存储咨询师发布的详细专业信息。主要包括咨询师信息id、咨询师姓名、专业背景、可约时间等字段。如表4-3所示。

表4-3咨询师信息表

序号字段名类型长度备注
1consultant_information_idint11主键
2consultant_userint11咨询师用户
3name_of_consultantvarchar100咨询师姓名
4photo_of_consultantvarchar255咨询师照片
5professional_backgroundvarchar100专业背景
6professional_abilitytext65535专业能力
7working_experiencetext65535从业经历
8available_timevarchar64可约时间
9examine_statevarchar16审核状态
10hitsint11点击数
11praise_lenint11点赞数
12create_timedatetime-创建时间

  (4)预约信息表主要是用来记录学生向咨询师发起的预约申请信息。主要包括预约信息id、预约时间、审核状态、学生用户等字段。如表4-4所示。

表4-4预约信息表

序号字段名类型长度备注
1appointment_information_idint11主键
2consultant_userint11咨询师用户
3student_userint11学生用户
4appointment_timevarchar50预约时间
5appointment_locationvarchar200预约地点
6appointment_notestext65535预约备注
7name_of_consultantvarchar100咨询师姓名
8student_namevarchar100学生姓名
9examine_statevarchar16审核状态
10examine_replyvarchar255审核回复
11create_timedatetime-创建时间
12update_timetimestamp-更新时间

  (5)咨询记录表主要是用来保存每次心理咨询的完整过程数据。主要包括咨询记录id、咨询时间、咨询内容、咨询结果等字段。如表4-5所示。

表4-5咨询记录表

序号字段名类型长度备注
1consultation_record_idint11主键
2consultant_userint11咨询师用户
3student_userint11学生用户
4name_of_consultantvarchar100咨询师姓名
5student_namevarchar100学生姓名
6consultation_contenttext65535咨询内容
7consultation_resulttext65535咨询结果
8consultation_timedatetime-咨询时间
9consulting_statusvarchar50咨询状态
10number_of_consultationsvarchar50咨询次数
11create_timedatetime-创建时间
12update_timetimestamp-更新时间

  (6)用户档案表主要是用来存储学生的心理健康档案数据。主要包括用户档案id、学生用户、家庭背景、心理特点等字段。如表4-6所示。

表4-6用户档案表

序号字段名类型长度备注
1user_profile_idint11主键
2student_userint11学生用户
3consultant_userint11咨询师用户
4student_namevarchar100学生姓名
5student_agedouble-学生年龄
6student_gendervarchar2学生性别
7student_phonevarchar20学生手机
8family_backgroundtext65535家庭背景
9growth_experiencetext65535成长经历
10psychological_characteristicsvarchar100心理特点
11psychological_changestext65535心理变化
12create_timedatetime-创建时间

  (7)科普内容表主要是用来存储咨询师发布的心理健康科普资料。主要包括科普内容id、科普标题、科普类别、审核状态等字段。如表4-7所示。

表4-7科普内容表

序号字段名类型长度备注
1popular_science_content_idint11主键
2consultant_userint11咨询师用户
3name_of_consultantvarchar100咨询师姓名
4popular_science_titlevarchar100科普标题
5science_communication_categoryvarchar100科普类别
6popular_science_contenttext65535科普内容
7popular_science_covervarchar255科普封面
8popular_science_vuser_ideovarchar255科普视频
9release_datedate-发布日期
10examine_statevarchar16审核状态
11hitsint11点击数
12create_timedatetime-创建时间

  (8)心理测试表主要是用来配置和管理系统中的心理测评试卷。主要包括心理测试id、考试名称、答题时长、开放时间等字段。如表4-8所示。

表4-8心理测试表

序号字段名类型长度备注
1exam_idint11主键
2namevarchar50考试名称
3durationint11答题时长
4open_startdatetime-开放开始时间
5open_enddatetime-开放结束时间
6reuse_statevarchar10多次答题
7scoredouble-总分
8statusvarchar10状态
9create_timetimestamp-创建时间
10update_timetimestamp-更新时间

  (9)用户答题表主要是用来记录学生参与心理测试的作答数据与评分结果。主要包括用户答题id、考试id、用户id、分数等字段。如表4-9所示。

表4-9用户答题表

序号字段名类型长度备注
1user_answer_idint11主键
2exam_idint11考试id
3user_idint11用户id
4nicknamevarchar255提交人
5answerstext65535答案
6scoredouble-分数
7objective_scoredouble-客观题得分
8subjective_scoredouble-主观题得分
9comment_descvarchar255评语
10score_stateint11评分状态
11update_timetimestamp-更新时间

  (10)文章表主要是用来存储心理专栏的文章内容数据。主要包括文章id、标题、正文、文章分类等字段。如表4-10所示。

表4-10文章表

序号字段名类型长度备注
1article_idint11主键
2titlevarchar200标题
3contentlongtext255正文
4descriptiontext65535文章描述
5typevarchar100文章分类
6tagvarchar255标签
7imgvarchar255封面图
8hitsint11点击数
9praise_lenint11点赞数
10create_timetimestamp-创建时间
11update_timetimestamp-更新时间

第五章 系统实现

5.1 学生角色功能实现

5.1.1 心理测试

  心理测试功能主要是对系统中已发布的心理测评内容进行浏览与参与管理。学生进入该模块后,可在测试列表中按名称进行检索,系统根据关键词过滤返回匹配的测试项目。点击某条测试记录,系统展示该测试的总分、开放时间区间等配置详情,学生确认后进入答题界面按题顺序作答,提交完毕后系统记录作答数据并跳转返回列表页。心理测试界面如图5-1所示。

image 图5-1心理测试界面

  核心代码如下:

@RequestMapping("/get_obj") public Map<String, Object> obj(HttpServletRequest request) { List resultList = service.selectBaseList(service.select(service.readQuery(request), service.readConfig(request))); if (resultList.size() > 0) { JSONObject jsonObject = new JSONObject(); jsonObject.put("obj",resultList.get(0)); return success(jsonObject);

5.1.2 心理专栏

  心理专栏功能主要是对平台收录的心理健康文章进行检索与阅读操作。学生在专栏列表页输入关键词后,系统过滤文章标题与摘要字段返回匹配结果;未检索时,列表默认展示全部可见文章。点击单篇文章后系统加载全文详情页,学生完整阅读文章内容;侧边栏区域同步展示热门资讯排行,排行数据依据点击数动态更新。心理专栏界面如图5-2所示。

image 图5-2心理专栏界面

  核心代码如下:

@RequestMapping("/get_obj") public Map<String, Object> obj(HttpServletRequest request) { List resultList = service.selectBaseList(service.select(service.readQuery(request), service.readConfig(request))); if (resultList.size() > 0) { JSONObject jsonObject = new JSONObject(); jsonObject.put("obj",resultList.get(0)); return success(jsonObject);

5.1.3 科普内容

  科普内容功能主要是对系统中审核通过的科普资料进行多维度筛选与查阅操作。学生可在搜索框输入标题关键词缩小结果范围,亦可通过类别下拉菜单切换当前展示的内容分类。列表排序方式支持按发布时间、阅读数量、点赞数量三种维度切换,学生选定后系统重新排列内容条目。点击目标条目后,系统加载科普详情页,展示正文、视频及相关信息。科普内容界面如图5-3所示。

image 图5-3科普内容界面

  核心代码如下:

@RequestMapping("/get_hits_list") public Map<String, Object> getHits(HttpServletRequest request) { Map<String,String> paramMap = service.readQuery(request); if (paramMap.get("user_id")==nullparamMap.get("user_id").equals("")){ return this.getList(request); }else {

5.1.4 咨询师信息

  咨询师信息功能主要是对平台入驻咨询师的档案资料进行浏览与互动操作。学生在咨询师列表页点击目标咨询师后,系统加载其专业背景、从业经历、可约时间等完整信息。在详情页中,学生可直接发起预约申请,亦可通过留言区输入文字进行文字咨询,系统将留言记录保存至对应咨询师的留言队列。点赞与收藏操作即时响应,点赞数与收藏数随状态变更同步更新。咨询师信息界面如图5-4所示。

image 图5-4咨询师信息界面

  核心代码如下:

@PostMapping("/add") @Transactional public Map<String, Object> add(HttpServletRequest request) throws IOException { Map<String,Object> paramMap = service.readBody(request.getReader()); paramMap.entrySet().removeIf(entry -> { Object value = entry.getValue(); return value instanceof String && ((String) value).isEmpty(); });

5.1.5 预约咨询师

  预约咨询师功能主要是对学生发起的咨询预约申请进行创建与管理操作。学生在预约表单中选择目标时间段,填写预约地点与备注内容后提交,系统将申请写入预约信息表并置为待审核状态。申请提交后学生可在个人预约记录列表查看当前审核进度,已提交且尚未受理的预约记录支持取消操作,执行取消后系统将对应记录状态更新并从待处理队列中移除。预约咨询师界面如图5-5所示。

image 图5-5预约咨询师界面

  核心代码如下:

@PostMapping("/add") @Transactional public Map<String, Object> add(HttpServletRequest request) throws IOException { Map<String,Object> paramMap = service.readBody(request.getReader()); paramMap.entrySet().removeIf(entry -> { Object value = entry.getValue(); return value instanceof String && ((String) value).isEmpty(); });

5.2 咨询师角色功能实现

5.2.1 科普内容添加

  科普内容添加功能主要是对咨询师发布科普资料的表单填写与提交操作进行支持。咨询师进入添加页面后,可上传本地视频文件至服务端,填写科普标题、从下拉列表中选择科普类别,设定发布日期,并在富文本区域编辑正文内容。完成所有必填项后点击提交,系统将表单数据写入科普内容表并将审核状态置为待审核;点击取消按钮则清空表单并返回列表页,已填写内容不保留。科普内容添加界面如图5-6所示。

image 图5-6科普内容添加界面

  核心代码如下:

@PostMapping("/add") @Transactional public Map<String, Object> add(HttpServletRequest request) throws IOException { Map<String,Object> paramMap = service.readBody(request.getReader()); paramMap.entrySet().removeIf(entry -> { Object value = entry.getValue(); return value instanceof String && ((String) value).isEmpty(); });

5.2.2 咨询师信息添加

  咨询师信息添加功能主要是对咨询师个人资料档案的创建与提交操作进行管理。咨询师进入该页面后,可上传个人照片并填写姓名、专业背景、可约时间、专业能力及从业经历等字段,各文本区域支持较长内容的录入。提交后系统将数据写入咨询师信息表并进入管理员审核队列;取消操作则放弃当前填写内容并返回。咨询师信息添加界面如图5-7所示。

image 图5-7咨询师信息添加界面

  核心代码如下:

@PostMapping("/add") @Transactional public Map<String, Object> add(HttpServletRequest request) throws IOException { Map<String,Object> paramMap = service.readBody(request.getReader()); paramMap.entrySet().removeIf(entry -> { Object value = entry.getValue(); return value instanceof String && ((String) value).isEmpty(); });

5.2.3 预约信息管理

  预约信息管理功能主要是对学生提交的预约申请进行筛选、审核与记录维护操作。咨询师登录后可在筛选区设置查询条件,系统过滤返回符合条件的预约列表;点击重置按钮清空筛选条件并恢复全量显示。点击单条预约记录可查看详细信息及学生留言评论内容。审核操作提供通过与拒绝两种结果选项,咨询师选定后系统更新对应记录的审核状态。不需要的历史预约记录可执行删除操作,系统从列表中移除该记录。预约信息管理界面如图5-8所示。

image 图5-8预约信息管理界面

  核心代码如下:

@GetMapping("/update_examine_state") public String updateExamineState(Long id, String newState) throws IOException { if (!newState.equals("未审核") && !newState.equals("已通过") && !newState.equals("未通过")) { return "非法的审核状态"; } Map<String,String> queryMap = new HashMap<>(); queryMap.put("id",String.valueOf(id));

5.2.4 咨询记录管理

  咨询记录管理功能主要是对历次心理咨询会话的过程数据进行增删改查操作。咨询师可按咨询时间区间或咨询状态设置查询条件,系统过滤返回匹配记录;重置按钮可恢复无条件全量展示。点击单条记录进入详情页可查阅完整咨询内容,编辑操作支持修改咨询结果与状态等字段,修改完成后提交保存。删除操作将记录从数据库中移除,新增操作则打开空白表单供咨询师录入新咨询数据。咨询记录管理界面如图5-9所示。

image 图5-9咨询记录管理界面

  核心代码如下:

if (consultation_record.getNumber_of_consultations()== nullconsultation_record.getNumber_of_consultations().trim().isEmpty()){ throw new IllegalArgumentException("咨询次数不能为空"); } this.addEntity(consultation_record); System.out.println("咨询记录新增成功"); return success(1);

5.2.5 心理测试添加

  心理测试添加功能主要是对新建心理测评试卷的基础配置信息进行录入与提交操作。咨询师在表单中填写测试名称,设定单次答题时长,选择测试的开始日期与结束日期,并配置是否允许学生多次参与作答。启用状态字段控制该测试是否对学生端可见,配置完成后点击提交,系统将试卷信息写入心理测试表;取消操作则放弃当前填写内容并返回列表。心理测试添加界面如图5-10所示。

image 图5-10心理测试添加界面

  核心代码如下:

@PostMapping("/add") @Transactional public Map<String, Object> add(HttpServletRequest request) throws IOException { Map<String,Object> addMap = service.readBody(request.getReader()); if (addMap.get("name")==null){ throw new IllegalArgumentException("名称不能为空"); } addMap.remove("create_time");

5.3 管理员角色功能实现

5.3.1 科普内容管理

  科普内容管理功能主要是对全平台科普资料进行审核、编辑与内容维护操作。管理员可在筛选区按标题关键词、类别及审核状态组合设置查询条件,系统过滤返回目标内容列表;重置按钮清空条件并恢复默认展示。列表支持批量选中并执行批量审核操作,系统批量更新选中记录的审核状态。单条记录支持查看详情、进入编辑页修改内容字段、管理该内容下的用户评论及执行删除操作。新增入口允许管理员在后台直接添加科普资料。科普内容管理界面如图5-11所示。

image 图5-11科普内容管理界面

  核心代码如下:

@GetMapping("/update_examine_state") public String updateExamineState(Long id, String newState) throws IOException { if (!newState.equals("未审核") && !newState.equals("已通过") && !newState.equals("未通过")) { return "非法的审核状态"; } Map<String,String> queryMap = new HashMap<>(); queryMap.put("id",String.valueOf(id));

5.3.2 咨询师信息管理

  咨询师信息管理功能主要是对平台注册咨询师的档案资料进行审核与全生命周期维护操作。管理员可按姓名、专业背景及审核状态组合筛选,系统返回符合条件的咨询师列表;重置操作清空筛选条件。批量审核操作支持同时处理多条待审核记录,系统批量更新审核状态字段。单条记录支持查看完整详情与编辑操作,评论管理子入口允许管理员查阅并管理该咨询师页面下的用户评论;不符合规范的记录可执行删除操作。管理员亦可在后台直接添加新的咨询师信息。咨询师信息管理界面如图5-12所示。

image 图5-12咨询师信息管理界面

  核心代码如下:

@GetMapping("/update_examine_state") public String updateExamineState(Long id, String newState) throws IOException { if (!newState.equals("未审核") && !newState.equals("已通过") && !newState.equals("未通过")) { return "非法的审核状态"; } Map<String,String> queryMap = new HashMap<>(); queryMap.put("id",String.valueOf(id));

5.3.3 预约信息管理

  预约信息管理功能主要是对全平台预约申请记录进行多条件筛选、审核与关联数据管理操作。管理员可按咨询师姓名、预约时间区间及审核状态设置查询条件,重置按钮清空所有筛选项。批量审核操作批量更新选中预约的审核状态,单条审核操作支持填写具体的审核回复内容。详情页中可查阅预约全部信息,个人热度统计入口展示对应咨询师的访问与预约数据,关联咨询记录入口将预约与后续咨询档案进行绑定。不需要的预约记录可执行删除操作。预约信息管理界面如图5-13所示。

image 图5-13预约信息管理界面

  核心代码如下:

@GetMapping("/update_examine_state") public String updateExamineState(Long id, String newState) throws IOException { if (!newState.equals("未审核") && !newState.equals("已通过") && !newState.equals("未通过")) { return "非法的审核状态"; } Map<String,String> queryMap = new HashMap<>(); queryMap.put("id",String.valueOf(id));

5.3.4 预约专栏管理

  预约专栏管理功能主要是对心理专栏文章进行内容配置与发布维护操作。管理员在文章列表页可按关键词搜索目标文章,系统过滤返回匹配结果。新增操作打开文章编辑表单,支持设置文章标题、正文内容、所属分类,并配置是否置顶与是否推荐的属性。编辑操作加载已有文章数据供管理员修改后重新保存;不需要的文章可执行删除操作,系统从专栏列表中移除对应记录。预约专栏管理界面如图5-14所示。

image 图5-14预约专栏管理界面

  核心代码如下:

@PostMapping("/add") @Transactional public Map<String, Object> add(HttpServletRequest request) throws IOException { Map<String,Object> addMap = service.readBody(request.getReader()); if (addMap.get("type")==null){ throw new IllegalArgumentException("分类不能为空"); } if (addMap.get("title")==null){ throw new IllegalArgumentException("标题不能为空"); }

5.3.5 公告管理

  公告管理功能主要是对系统公告的发布、修改与检索进行集中管理操作。管理员在公告列表页可按标题关键词搜索目标公告,系统过滤返回结果。新增操作打开公告表单,管理员填写标题与正文内容后提交,系统将公告写入数据库并对学生端开放展示。编辑操作加载已有公告内容供管理员修改后重新保存;点击查看详情则展示公告完整正文;删除操作将公告从系统中移除。公告管理界面如图5-15所示。

image 图5-15公告管理界面

  核心代码如下:

@PostMapping("/add") @Transactional public Map<String, Object> add(HttpServletRequest request) throws IOException { Map<String,Object> addMap = service.readBody(request.getReader()); if (addMap.get("title")==null){ throw new IllegalArgumentException("标题不能为空"); } addMap.remove("create_time"); addMap.remove("update_time");

第六章 系统测试

6.1 测试目的

  软件测试是在系统上线之前,对系统的各种缺陷进行检测,并对系统的功能逻辑是否正确进行检验的工作。本系统测试目的为对各个角色的功能模块业务规则进行全部的测试,主要验证预约审核流程状态流转是否和设计规格一致,心理测试作答数据的记录和评分逻辑是否形成闭环,大模型智能客服接口响应是否符合预期的交互规范[20]。测试时还要注意边界输入情况下的系统容错处理能力,保证各个浏览器下必填项校验、时间区间冲突检测等约束规则可以稳定触发。对功能模块进行系统的测试,可以在正式上线之前有效地降低上线的风险,保证系统投入使用之后的稳定运行。

6.2 测试方法

  本系统主要使用黑盒测试进行测试,测试人员以最终用户的角度对各个功能模块输入数据,观察系统输出结果,不进行内部代码逻辑的分析。测试用例分为正常数据输入、边界值输入、异常数据输入三种类型,用实际输出和预期结果进行对比来检验功能是否符合需求规格。

  对于预约审核、咨询记录管理等需要多步操作的业务流程进行功能集成测试,保证各个模块的数据流转一致。测试环节按照功能模块顺序进行,每一个模块测试完成后记录测试结论,发现缺陷后反馈修复并重新验证,直到该模块的所有用例都达到预期的结果。

6.3 测试用例

  本节根据系统七大部分主要业务模块分别设计了测试用例,对各个业务模块在典型的使用场景和边界情况下的功能进行了检验,特别注意到了业务规则执行准确与否以及数据处理是否完备的情况。

  (1)心理测试模块测试

  心理测试模块的测试目标是验证测试开放状态校验、多次答题限制及作答数据记录三项核心逻辑是否按设计规格执行,重点关注时间区间约束条件下系统的准入判断是否准确。

表6-1心理测试测试用例表

测试内容测试步骤预期结果实际结果
查看心理测试列表学生登录后进入心理测试模块,查看测试列表正常显示已发布测试列表符合预期
按名称搜索测试在搜索框输入测试名称关键词后提交返回匹配的测试记录符合预期
参与答题点击开放中的测试进入答题界面并完成作答作答数据记录成功,返回结果符合预期
禁用状态测试拦截点击已禁用状态的测试项系统提示不可参与并拦截进入符合预期

  (2)咨询师预约模块测试

  咨询师预约模块的测试目标是验证预约申请提交、取消申请及审核状态流转三个业务环节的执行准确性,重点核查必填字段缺失时系统的校验拦截行为。

表6-2咨询师预约测试用例表

测试内容测试步骤预期结果实际结果
提交预约申请填写完整预约信息后点击提交申请成功写入,状态为待审核符合预期
必填字段为空提交不填写预约时间直接提交系统提示必填项不能为空符合预期
取消待审核预约在预约列表中对待审核记录执行取消操作记录状态更新为已取消符合预期

  (3)科普内容管理模块测试

  科普内容管理模块的测试目标是验证内容审核状态流转、批量操作执行准确性及内容删除功能的数据完整性,关注筛选条件组合查询下返回结果的正确性。

表6-3科普内容管理测试用例表

测试内容测试步骤预期结果实际结果
按审核状态筛选内容在筛选区选择待审核状态后查询仅返回待审核的科普内容符合预期
批量审核操作勾选多条记录后执行批量审核通过所选记录审核状态均更新符合预期
删除科普内容选中一条内容执行删除操作记录从列表中移除符合预期
添加新科普内容填写完整科普信息后提交保存新记录写入并进入待审核队列符合预期

  (4)咨询记录管理模块测试

  咨询记录管理模块的测试目标是验证记录的新增、编辑与删除操作在数据层面的一致性,以及按咨询时间与状态条件筛选的查询准确性。

表6-4咨询记录管理测试用例表

测试内容测试步骤预期结果实际结果
新增咨询记录填写咨询时间、内容、结果后提交新记录成功写入数据库符合预期
按状态筛选记录选择咨询状态条件后执行查询返回符合条件的记录列表符合预期
编辑咨询记录修改已有记录的咨询结果字段后保存修改内容成功更新符合预期
删除咨询记录选中一条记录执行删除记录从列表移除符合预期

  (5)用户档案模块测试

  用户档案模块的测试目标是验证档案数据的完整写入能力及字段内容的正确持久化,重点核查多个文本类字段同时提交时系统的处理准确性。

表6-5用户档案测试用例表

测试内容测试步骤预期结果实际结果
新增学生档案填写学生基本信息及心理特征描述后提交档案数据完整写入符合预期
查看档案详情点击已有档案记录进入详情页正常展示档案全部字段符合预期
编辑档案信息修改心理变化字段内容后保存修改内容成功更新符合预期

  (6)公告管理模块测试

  公告管理模块的测试目标是验证公告的创建、编辑、删除及标题检索功能在数据交互层面的执行准确性,关注标题为空时系统的校验拦截是否触发。

表6-6公告管理测试用例表

测试内容测试步骤预期结果实际结果
添加系统公告填写标题与正文内容后提交公告成功发布至学生端符合预期
标题为空提交不填写标题直接提交公告系统拦截并提示标题必填符合预期
按标题查询公告输入标题关键词后执行搜索返回匹配的公告记录符合预期
删除公告选中一条公告执行删除操作公告从系统中移除符合预期

  (7)预约信息管理模块测试

  预约信息管理模块的测试目标是验证管理员端审核操作的状态更新准确性,以及批量操作与单条审核填写回复两种操作路径下数据写入的正确性。

表6-7预约信息管理测试用例表

测试内容测试步骤预期结果实际结果
按审核状态筛选预约选择待审核状态条件后查询返回待审核预约列表符合预期
单条审核填写回复打开预约详情,填写审核回复后确认审核状态更新,回复内容保存符合预期
批量审核预约勾选多条预约后批量通过所选记录状态批量更新符合预期
删除预约记录选中一条预约执行删除记录从列表移除符合预期

测试结论

  本次测试共涉及心理测试、咨询师预约、科普内容管理、咨询记录管理、用户档案、公告管理、预约信息管理这七个主要业务模块,一共执行了25个测试用例,所有用例的实际结果和预期结果完全一致。

  心理测试模块测试开放状态校验、禁用状态拦截逻辑均按设计要求执行,作答数据存取路径正确,搜索过滤结果也正确。咨询师预约模块中,必填字段为空时系统校验拦截有效,预约记录状态在提交和取消操作后都得到正确的更新。科普内容管理模块批量审核操作批量修改审核状态字段执行结果正确,单条删除之后列表数据也同步删除。咨询记录管理模块中,新增、编辑、删除三种操作对于数据库记录的读写结果都是正确的,根据状态筛选得到的记录集合范围也正确。用户档案模块中多个字段一起提交数据的时候会全部入库,详情页字段显示出来的内容和数据库中显示的一样,编辑后的结果可以被持久化。公告管理模块中,标题为空时系统拦截机制被触发,发布、编辑、删除操作的执行结果都符合预期,按照标题检索返回的结果也正确。预约信息管理模块的批量审核状态批量更新工作完成,单条审核回复内容提交后立刻生效到状态变化时,删除时会把记录从列表中移除。各个模块的测试结果均符合预期,系统的主业务功能可以进行上线

项目分享:大家可自取用于参考学习,获取方式可私信哦!

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐