大学生心理咨询系统
大学生心理咨询系统
基于 Python FastAPI + Vue 3 + MySQL 构建的大学生心理健康咨询与测评平台,为高校学生提供心理健康知识学习、在线咨询、在线测评等一站式服务。
一、项目背景
大学生心理健康问题日益受到高校和社会的高度重视。当前许多高校心理咨询服务存在以下痛点:
- 咨询资源分散,学生难以快速获取心理健康知识和专业帮助
- 传统面对面咨询预约流程繁琐,效率低下
- 心理健康科普内容缺乏系统化、个性化的推送渠道
- 缺乏有效的心理状态自评工具,学生无法及时了解自身心理状况
本系统旨在构建一个集心理健康知识学习、在线预约咨询、在线心理测评、师生互动交流于一体的综合性心理健康服务平台,帮助大学生便捷地获取心理支持,同时为心理咨询师提供高效的管理工具。
二、技术架构
2.1 技术栈
| 层级 | 技术选型 | 说明 |
|---|---|---|
| 前端 | Vue 3 + Vite + Element Plus | 组件化开发,响应式管理后台 |
| 后端 | Python FastAPI + SQLAlchemy | 高性能异步 API 框架,自动生成 OpenAPI 文档 |
| 数据库 | MySQL 8 | 关系型数据库,存储核心业务数据 |
| 认证 | JWT + bcrypt | 无状态身份认证,密码安全加密 |
| 部署 | Docker + Docker Compose | 容器化快速部署 |
| 可视化 | ECharts | 仪表盘数据图表展示 |
2.2 系统架构图
┌─────────────────────────────────────────────────────────────┐
│ 用户端浏览器 │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ 学生端 │ │ 老师端 │ │ 管理端 │ │
│ └────┬─────┘ └────┬─────┘ └────┬─────┘ │
└──────────────┼───────────────┼───────────────┼────────────┘
│ │ │
┌────▼─────────────▼───────────────▼────┐
│ Nginx 反向代理 │
└────────────────┬────────────────────┘
│ /api/*
┌─────────────────▼────────────────────┐
│ FastAPI 后端服务 │
│ ┌─────────────────────────────────┐ │
│ │ Router → Service → ORM → DB │ │
│ └─────────────────────────────────┘ │
└────────────────┬────────────────────┘
│
┌────────────────▼────────────────────┐
│ MySQL 数据库 │
└─────────────────────────────────────┘
2.3 项目目录结构
xinlijiankang/
├── backend/ # FastAPI 后端
│ ├── app/
│ │ ├── main.py # 应用入口,路由注册,中间件配置
│ │ ├── config.py # 环境变量配置(数据库、JWT密钥等)
│ │ ├── database.py # SQLAlchemy 异步数据库连接
│ │ ├── models/ # ORM 模型层
│ │ │ ├── user.py # 用户、角色(学生/咨询师)模型
│ │ │ ├── notification.py # 通知公告模型
│ │ │ ├── knowledge.py # 心理健康知识模型
│ │ │ ├── exam.py # 测评试卷、题目、答题记录模型
│ │ │ ├── appointment.py # 预约咨询模型
│ │ │ └── message.py # 留言板模型
│ │ ├── schemas/ # Pydantic 数据验证层
│ │ ├── routers/ # API 路由层
│ │ │ ├── auth.py # 登录注册 /api/auth/*
│ │ │ ├── users.py # 用户管理 /api/admin/users/*
│ │ │ ├── dictionary.py # 字典管理 /api/admin/dictionary/*
│ │ │ ├── notifications.py # 通知公告 CRUD
│ │ │ ├── knowledge.py # 心理健康知识 CRUD
│ │ │ ├── exam.py # 试卷与题目管理、在线答题
│ │ │ ├── appointments.py # 咨询预约 /api/counselors/*
│ │ │ ├── messages.py # 留言板 /api/messages/*
│ │ │ └── dashboard.py # 仪表盘统计 /api/admin/dashboard/*
│ │ └── utils/
│ │ ├── security.py # 密码哈希、JWT Token 生成与验证
│ │ └── deps.py # 依赖注入(获取当前登录用户、角色权限校验)
│ ├── sql/ # 数据库初始化脚本
│ │ ├── 1_schema.sql # 建表脚本(14张表)
│ │ ├── 2_init_data.sql # 初始数据
│ │ └── 3_test_data.sql # 测试数据
│ ├── requirements.txt # Python 依赖
│ └── Dockerfile # 后端 Docker 镜像构建
│
├── frontend/ # Vue 3 前端
│ ├── src/
│ │ ├── api/ # Axios 接口封装
│ │ │ ├── index.js # 请求/响应拦截器(Token注入、错误处理)
│ │ │ └── modules/ # 按模块拆分的接口
│ │ ├── stores/ # Pinia 状态管理
│ │ │ └── app.js # 全局状态(用户信息、Token)
│ │ ├── router/
│ │ │ ├── index.js # 路由配置与守卫
│ │ │ └── routes.js # 菜单与权限按角色动态生成
│ │ ├── views/ # 页面组件
│ │ │ ├── login/ # 登录注册
│ │ │ ├── student/ # 学生端页面
│ │ │ │ ├── home/ # 首页(欢迎、快捷入口、预约概览)
│ │ │ │ ├── notification/ # 通知公告列表与详情
│ │ │ │ ├── knowledge/ # 心理健康知识列表与详情
│ │ │ │ ├── exam/ # 测评中心、答题、记录查看
│ │ │ │ ├── appointment/ # 预约咨询师、我的预约
│ │ │ │ └── message/ # 留言板、我的收藏
│ │ │ ├── counselor/ # 咨询师端页面
│ │ │ │ ├── home/ # 首页(今日预约、待回复留言)
│ │ │ │ ├── appointment/ # 预约管理
│ │ │ │ ├── message/ # 留言回复
│ │ │ └── knowledge/ # 知识发布
│ │ │ └── admin/ # 管理端页面
│ │ │ ├── dashboard/ # 仪表盘(统计卡片、ECharts图表)
│ │ │ ├── user/ # 用户管理(增删改查、启用禁用)
│ │ │ ├── dictionary/ # 字典管理
│ │ │ ├── notification/ # 通知公告管理
│ │ │ ├── knowledge/ # 心理健康知识管理
│ │ │ ├── exam/paper/ # 试卷管理
│ │ │ ├── exam/question/ # 题目管理
│ │ │ ├── appointment/ # 预约管理
│ │ │ └── message/ # 留言管理
│ │ ├── layouts/ # 布局组件
│ │ │ ├── AdminLayout.vue # 管理端侧边栏+头部布局
│ │ │ ├── StudentLayout.vue # 学生端布局
│ │ │ └── CounselorLayout.vue # 咨询师端布局
│ │ └── profile/ # 个人中心(修改密码、个人信息)
│ ├── package.json # npm 依赖
│ └── vite.config.js # Vite 构建配置
│
├── docs/
│ ├── python/ # 自动化部署脚本
│ │ ├── backend/ # 后端构建部署
│ │ └── frontend/ # 前端构建部署
│ └── 开发计划.md # 开发计划与接口设计
│
└── docker-compose.yml # Docker Compose 一键部署
三、数据库设计
系统共 14 张数据表,核心关系如下:
sys_user (用户表,主表)
├── student_info — 学生扩展信息(学号、专业、班级)
├── counselor_info — 咨询师扩展信息(职称、擅长领域、可用时段)
├── exam_record — 测评记录
│ └── exam_answer_detail — 答题详情
├── counselor_appointment — 预约咨询记录
├── counselor_message — 留言板
├── counselor_collection — 咨询师收藏
sys_dictionary — 系统字典(通知分类、学历、预约时段等配置)
exam_paper — 试卷表
└── exam_question — 题目表(选项以 JSON 格式存储,支持单选/多选/判断)
notification_category — 通知分类
└── notification — 通知内容表
health_knowledge — 心理健康知识文章
└── knowledge_category — 知识分类
四、功能模块与页面介绍
4.1 角色体系
系统分为三种角色,各自拥有独立的功能模块和界面:
| 角色 | 登录入口 | 核心功能 |
|---|---|---|
| 管理员 | /admin |
用户管理、仪表盘统计、通知/知识/测评/预约/留言后台管理 |
| 学生 | /student |
首页、通知浏览、知识学习、在线测评、预约咨询、留言板 |
| 心理咨询师 | /counselor |
今日预约、留言回复、知识发布 |
4.2 登录与认证
- 登录页:
/login,支持学生/咨询师/管理员三种角色登录 - 注册页:
/register,学生自主注册,咨询师由管理员创建 - 认证机制:JWT 无状态 Token,登录成功后自动存储至 Pinia 与 localStorage
- 路由守卫:未登录自动跳转登录页,角色不匹配自动跳转对应首页
- 默认账号:
admin/admin123
4.3 管理端(管理员)
仪表盘 — 展示系统核心指标统计卡片(用户总数/学生数/咨询师数/预约总数/测评总数/留言总数),以及 ECharts 可视化图表(测评分数分布饼图、用户注册趋势折线图)。
用户管理 — 分页展示所有用户(学生/咨询师),支持按角色筛选、关键词搜索,启用/禁用账号,编辑用户信息。
字典管理 — 维护系统配置数据,如通知分类(系统通知/活动公告/心理健康讲座)、学历(本科/硕士/博士)、预约时段等。
通知公告 — 分类管理 + 通知内容发布(富文本),支持标题、内容、阅读量统计,学生端按分类浏览。
心理健康知识 — 分类管理 + 文章发布(标签、作者、阅读量),学生端支持分类浏览和关键词搜索。
试卷与题目管理 — 管理员创建试卷、设置时间限制和总分,录入题目(单选题/多选题/判断题),选项以 JSON 格式存储。
预约管理 — 查看所有学生的咨询预约记录及状态分布。
留言管理 — 查看所有师生留言及回复状态。
4.4 学生端
首页 — 欢迎语、快捷入口(通知/知识/测评/预约/留言/收藏)、最近预约概览表格。
通知公告 — 按分类筛选通知列表,点击查看详情,含阅读量统计。
心理知识 — 按分类浏览知识文章列表,支持关键词搜索,点击查看文章详情。
在线测评 — 试卷列表,进入答题计时作答,提交后自动评分,可查看历史测评记录及详情。
预约咨询 — 浏览可预约咨询师列表(含简介和擅长方向),选择时段发起预约,查看我的预约及状态变更(待确认/已确认/已完成/已取消)。
留言板 — 向咨询师发送留言,查看咨询师回复,管理我的收藏咨询师。
4.5 咨询师端
首页 — 今日预约概览表格、待回复留言数量卡片统计。
预约管理 — 查看被预约的记录,确认/拒绝预约,处理完成。
留言管理 — 查看学生留言列表,对留言进行回复。
知识发布 — 发布和管理心理健康知识文章。
4.6 个人中心
三端共用:/profile,修改个人密码和个人信息(用户名、真实姓名、手机号、邮箱)。
五、快速开始
5.1 环境要求
- Python 3.9+(后端)
- Node.js 16+(前端)
- MySQL 8.0+(数据库)
- Docker(可选,用于容器化部署)
5.2 数据库初始化
# 登录 MySQL,创建数据库
mysql -u root -p
CREATE DATABASE xinlijiankang DEFAULT CHARACTER SET utf8mb4;
# 执行建表和数据脚本
USE xinlijiankang;
SOURCE backend/sql/1_schema.sql;
SOURCE backend/sql/2_init_data.sql;
SOURCE backend/sql/3_test_data.sql;
5.3 后端启动
cd backend
# 安装依赖
pip install -r requirements.txt
# 修改 .env 中的数据库连接信息
# DATABASE_URL=mysql+aiomysql://root:your_password@localhost:3306/xinlijiankang
# 启动服务(热重载)
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
访问 API 文档:http://localhost:8000/docs
5.4 前端启动
cd frontend
# 安装依赖
npm install
# 开发模式启动
npm run dev
访问应用:http://localhost:5173
5.5 Docker Compose 部署(推荐)
# 一键构建并启动所有服务
docker-compose up -d --build
# 查看日志
docker-compose logs -f
# 停止服务
docker-compose down
六、API 概览
| 模块 | 方法 | 路径 | 说明 |
|---|---|---|---|
| 认证 | POST | /api/auth/login |
用户登录 |
| 认证 | POST | /api/auth/register |
用户注册 |
| 认证 | GET | /api/auth/me |
获取当前用户信息 |
| 仪表盘 | GET | /api/admin/dashboard/stats |
统计数据 |
| 仪表盘 | GET | /api/admin/dashboard/chart |
图表数据 |
| 用户 | GET | /api/admin/users |
用户分页列表 |
| 用户 | POST | /api/admin/users |
创建用户 |
| 字典 | GET | /api/admin/dictionary |
字典列表 |
| 通知 | GET | /api/notifications |
学生端通知列表 |
| 知识 | GET | /api/knowledge |
学生端知识列表 |
| 试卷 | GET | /api/exam/papers |
可做试卷列表 |
| 咨询师 | GET | /api/counselors |
可预约咨询师列表 |
| 预约 | POST | /api/appointments |
创建预约 |
| 留言 | POST | /api/messages |
发送留言 |
七、总结与展望
7.1 已完成功能
本系统完整实现了大学生心理咨询平台的核心功能,覆盖论文要求的所有业务场景:
- 三角色体系:管理员、心理咨询师、学生,各角色拥有独立的功能模块和界面
- 用户认证:JWT 无状态认证,bcrypt 密码加密,前后端路由权限双重控制
- 通知公告:分类管理、内容发布、学生端按分类浏览
- 心理知识:文章发布、标签管理、分类浏览、关键词搜索
- 在线测评:试卷管理、多题型题目、限时作答、自动评分
- 预约咨询:咨询师时段管理、预约发起、状态流转(待确认→已确认→已完成/已取消)
- 留言板:师生一对一留言、咨询师回复
- 收藏功能:学生收藏感兴趣的咨询师
- 数据可视化:管理端仪表盘统计与 ECharts 图表
- 自动化部署:Docker + Docker Compose 一键部署,前后端独立构建
7.2 未来展望
- 实时聊天:将留言板升级为 WebSocket 实时在线聊天,提供更即时的心理咨询服务
- 心理量表:引入更多标准化心理测评量表(如 SCL-90、SDS、SAS),丰富测评维度
- AI 辅助:接入大语言模型,为学生提供初步的心理疏导和问题分类建议
- 数据看板:为咨询师提供来访学生的心理状态趋势分析,辅助咨询决策
- 移动端适配:开发小程序或 H5 移动端,提升学生使用便捷性
- 预约提醒:接入邮件/短信通知,提醒学生和咨询师即将到来的预约
- 满意度评价:预约完成后学生对咨询师进行评分和评价,形成服务质量反馈闭环
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)