大学生心理咨询系统

基于 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 移动端,提升学生使用便捷性
  • 预约提醒:接入邮件/短信通知,提醒学生和咨询师即将到来的预约
  • 满意度评价:预约完成后学生对咨询师进行评分和评价,形成服务质量反馈闭环
Logo

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

更多推荐