# interview_assistance_system **Repository Path**: SwordOffer/interview_assistance_system ## Basic Information - **Project Name**: interview_assistance_system - **Description**: 本科毕设——基于SpringBoot的智能辅助面试系统 - **Primary Language**: Java - **License**: AGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-03-21 - **Last Updated**: 2026-03-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: Java, vue2, SpringBoot, 智普GLM, deepseek ## README # 基于SpringBoot的智能辅助面试系统 ## 致谢 本项目在开发过程中参考了 [SnailClimb/interview-guide](https://gitee.com/SnailClimb/interview-guide) 项目,感谢作者的开源贡献,帮助我快速完成了本科毕业设计的开发工作。 --- ## 项目简介 智能辅助面试系统是一个基于 AI 大模型的面试辅助平台,旨在帮助求职者进行简历优化、模拟面试和试题练习,同时为企业用户提供智能化的岗位发布和简历筛选服务。系统集成 DeepSeek-V3.2 和智谱 GLM 大语言模型,提供智能简历分析、个性化面试问题生成、实时面试评估、智能简历匹配等功能,为求职者和企业用户提供全方位的面试准备和招聘支持。 本项目为本科毕业设计作品,基于若依(RuoYi)前后端分离版本二次开发。 --- ## 功能特性 ### 核心功能 #### 求职者端功能 | 功能模块 | 功能描述 | |---------|---------| | **AI 简历分析** | 上传简历文件(支持 PDF/Word/TXT),AI 自动解析并生成详细分析报告,包含多维度评分、优点总结和改进建议 | | **简历库管理** | 管理所有上传的简历,查看 AI 评分、分析报告,支持基于简历发起模拟面试 | | **模拟面试** | 基于简历内容生成针对性面试问题,支持实时答题,面试结束后生成 AI 评估报告 | | **试题练习** | 根据简历生成个性化选择题,涵盖项目经历、MySQL、Redis、Java 基础、并发、Spring 等技术领域 | | **AI 智能助手** | 基于 DeepSeek-V3.2 的对话助手,支持模拟面试、简历分析、面试技巧咨询等功能,支持深度思考模式展示推理过程 | | **面试记录** | 查看过往面试表现和历史记录,便于复盘总结 | #### 企业端功能(新增) | 功能模块 | 功能描述 | |---------|---------| | **岗位发布管理** | 企业用户可发布招聘岗位信息,包括岗位标题、岗位描述、任职要求、薪资待遇等,支持岗位状态管理(启用/停用) | | **智能简历筛选** | 基于 Embedding + LLM 的两阶段智能简历筛选匹配功能,自动匹配岗位与候选人简历 | | **面试邀请** | 企业可向匹配度高的候选人发送面试邀请邮件,包含面试时间、地点、联系人等信息 | ### 技术亮点 - **SSE 流式传输**:简历分析和面试评估支持 Server-Sent Events 实时推送,用户可实时查看 AI 分析过程 - **异步处理**:简历解析和 AI 分析采用异步执行,避免长时间阻塞请求 - **多 AI 模型支持**:集成 DeepSeek 和智谱 GLM 两种大模型,提供灵活选择 - **多格式简历解析**:使用 Apache Tika 支持 doc、docx、pdf 等多种简历格式 - **个性化题目生成**:基于用户简历内容生成针对性的面试问题和练习题 - **Embedding + LLM 双阶段匹配**:简历筛选采用向量召回 + 大模型深度分析的两阶段模式,兼顾效率与准确性 - **深度思考模式**:AI 助手支持展示思考推理过程,提高回答透明度 --- ## 系统功能模块介绍 ### 求职者端功能模块 #### 上传简历 支持上传 PDF、Word、TXT 格式的简历文件,上传后系统自动解析简历内容并调用 AI 进行智能分析。 **分析维度**: - AI 总评分(0-100) - 项目经验评分(0-40) - 技能匹配度评分(0-20) - 内容完整性评分(0-15) - 结构清晰度评分(0-15) - 表达专业性评分(0-10) - 简历摘要 - 优点总结 - 改进建议 #### 简历库 管理所有上传的简历,支持以下操作: - 查看简历列表和 AI 评分 - 查看详细分析报告 - 基于简历发起模拟面试 - 删除简历 #### 模拟面试 基于简历内容生成针对性面试问题: - 根据简历自动生成面试题目 - 实时答题,支持文本输入 - 面试结束后生成 AI 评估报告 - 支持查看历史面试记录 #### 试题练习 基于简历内容生成个性化选择题,帮助用户巩固技术知识: **题目类型分布**: - 项目经历(20%) - MySQL(20%) - Redis(20%) - Java 基础(10%) - Java 集合(10%) - Java 并发(10%) - Spring(剩余比例) **功能特点**: - 自动评分 - 正确率统计 - 练习历史记录 #### AI 助手 基于 DeepSeek-V3.2 的智能对话助手,提供以下功能: - 模拟面试对话 - 简历分析咨询 - 面试技巧指导 - 技术问题解答 - 深度思考模式(展示 AI 推理过程) #### 面试记录 查看过往的面试历史记录,包括: - 面试时间 - 面试评分 - 面试评估报告 ### 企业端功能模块 #### 岗位发布管理 企业用户可以发布和管理招聘岗位: - **新增岗位**:填写岗位标题、岗位描述、任职要求、薪资待遇等信息 - **编辑岗位**:修改已发布的岗位信息 - **状态管理**:支持启用/停用岗位 - **删除岗位**:删除不需要的岗位 **岗位信息字段**: - 岗位标题 - 岗位描述(工作职责、团队介绍、公司福利等) - 任职要求(学历要求、工作年限、技能要求等) - 薪资待遇 #### 智能简历筛选 基于 AI 技术的简历智能筛选匹配功能: **两阶段匹配流程**: 1. **Embedding 召回阶段**: - 将岗位信息和简历内容转换为向量表示 - 计算向量相似度,召回 Top-N 候选简历 - 快速筛选出潜在匹配的简历 2. **LLM 深度分析阶段**: - 对召回的简历进行深度分析 - 分析维度包括: - **技能匹配**:已匹配技能和缺失技能 - **经验匹配**:工作年限是否符合要求 - **学历匹配**:学历是否符合要求 - **候选人优势**:候选人的亮点 - **候选人不足**:需要关注的方面 - **推荐理由**:综合评价 **匹配结果展示**: - Embedding 相似度分数(0-100) - LLM 综合匹配度(0-100) - 匹配等级(强烈推荐/待定/不推荐) - 详细分析报告(可展开查看) #### 面试邀请 企业可向匹配度高的候选人发送面试邀请邮件: - 选择匹配的候选人 - 填写面试信息(时间、地点、联系人、联系电话) - 系统自动发送面试邀请邮件到候选人邮箱 --- ## 项目展示 > 可在此处添加系统截图 --- ## 技术栈 ### 后端技术 | 技术 | 版本 | 说明 | |------|------|------| | Spring Boot | 2.5.15 | 核心框架 | | Spring Security | 5.7.14 | 安全认证框架 | | MyBatis | - | ORM 持久层框架 | | MySQL | - | 主数据库 | | Redis | - | 缓存中间件(Token 存储、数据缓存) | | Druid | 1.2.27 | 阿里数据库连接池 | | JWT | 0.9.1 | Token 生成与解析 | | Quartz | - | 定时任务调度 | | Swagger3 | 3.0.0 | API 文档 | | Apache Tika | - | 文档解析(简历文件) | | DeepSeek API | - | AI 大模型服务(主要) | | 智谱 GLM API | - | AI 大模型服务(备用) | | JavaMail | - | 邮件发送服务 | ### 前端技术 | 技术 | 版本 | 说明 | |------|------|------| | Vue.js | 2.6.12 | 前端框架 | | Element UI | 2.15.14 | UI 组件库 | | Vuex | 3.6.0 | 状态管理 | | Vue Router | 3.4.9 | 路由管理 | | Axios | 0.28.1 | HTTP 客户端 | | ECharts | 5.6.0 | 图表库 | | Quill | 2.0.2 | 富文本编辑器 | | Sass | 1.32.13 | CSS 预处理器 | --- ## 项目结构 ### 后端项目结构 ``` interview_assistance_api/ ├── graduation-admin/ # Web 服务入口模块(主模块) │ └── src/main/java/com/sias/web/ │ ├── controller/ # 控制器层 │ └── core/config/ # 核心配置 ├── graduation-common/ # 通用工具模块 │ └── src/main/java/com/sias/common/ │ ├── annotation/ # 自定义注解 │ ├── config/ # 通用配置 │ ├── constant/ # 常量定义 │ ├── core/ # 核心类(AjaxResult、分页等) │ ├── enums/ # 枚举类 │ ├── exception/ # 异常处理 │ ├── filter/ # 过滤器 │ └── utils/ # 工具类 ├── graduation-framework/ # 核心框架模块 │ └── src/main/java/com/sias/framework/ │ ├── aspectj/ # AOP 切面 │ ├── config/ # 框架配置 │ ├── datasource/ # 数据源配置 │ ├── interceptor/ # 拦截器 │ ├── manager/ # 异步管理器 │ ├── security/ # Spring Security 安全配置 │ └── web/ # Web 服务(Token、权限、登录等) ├── graduation-system/ # 系统模块 │ └── src/main/java/com/sias/system/ │ ├── domain/ # 系统实体类 │ ├── mapper/ # MyBatis Mapper 接口 │ └── service/ # 系统服务层 ├── graduation-quartz/ # 定时任务模块 ├── graduation-generator/ # 代码生成模块 ├── graduation-dsapi/ # DeepSeek/GLM API 服务模块(核心 AI 模块) │ └── src/main/java/com/sias/dsapi/ │ ├── config/ # AI API 配置 │ ├── service/ # AI 服务 │ │ ├── api/ # API 调用服务(DeepSeek、GLM、Embedding) │ │ └── impl/ # LLM 服务适配器 │ └── util/ # 工具类 │ └── src/main/resources/prompts/ # Prompt 模板文件 ├── graduation-interview/ # 面试核心业务模块 │ └── src/main/java/com/sias/interview/ │ ├── config/ # 面试模块配置 │ ├── controller/ # 面试控制器 │ │ ├── JobInfoController.java # 岗位发布控制器 │ │ ├── ResumeScreenController.java # 简历筛选控制器 │ │ ├── ResumeInfoController.java # 简历管理控制器 │ │ ├── InterviewController.java # 模拟面试控制器 │ │ └── ... # 其他控制器 │ ├── domain/ # 面试实体类 │ │ ├── JobInfo.java # 岗位信息实体 │ │ ├── ResumeScreen.java # 简历筛选记录实体 │ │ ├── ResumeInfo.java # 简历信息实体 │ │ └── ... # 其他实体 │ ├── mapper/ # 面试 Mapper │ ├── service/ # 面试服务 │ │ ├── ResumeMatchService.java # 简历匹配服务(Embedding + LLM) │ │ ├── EmailService.java # 邮件发送服务 │ │ ├── async/ # 异步服务 │ │ ├── file/ # 文件解析服务 │ │ └── impl/ # 服务实现 │ └── utils/ # 面试工具类 ├── sql/ # SQL 脚本 │ ├── ry_20250522.sql # 系统表结构及初始化数据 │ └── quartz.sql # 定时任务表结构 ├── pom.xml # Maven 父 POM └── Readme.md # 项目说明文档 ``` ### 前端项目结构 ``` interview_assistance_ui/ ├── public/ # 静态资源目录 │ ├── index.html # 入口 HTML │ └── styles/ # 全局样式 ├── src/ # 源代码目录 │ ├── api/ # API 接口定义 │ │ ├── interview/ # 面试业务 API │ │ │ ├── jobInfo.js # 岗位发布 API │ │ │ ├── resumeScreen.js # 简历筛选 API │ │ │ └── ... # 其他 API │ │ ├── monitor/ # 系统监控 API │ │ ├── system/ # 系统管理 API │ │ └── tool/ # 工具 API │ ├── assets/ # 静态资源 │ │ ├── icons/ # SVG 图标 │ │ ├── images/ # 图片资源 │ │ └── styles/ # 全局样式文件 │ ├── components/ # 公共组件 │ ├── directive/ # 自定义指令 │ ├── layout/ # 布局组件 │ ├── mixins/ # Vue 混入 │ ├── plugins/ # 插件 │ ├── router/ # 路由配置 │ ├── store/ # Vuex 状态管理 │ │ └── modules/ # Store 模块 │ ├── utils/ # 工具函数 │ ├── views/ # 页面视图 │ │ ├── index.vue # 首页 │ │ ├── interview/ # 面试相关页面 │ │ │ ├── job-info/ # 岗位发布管理 │ │ │ ├── resume-screen/ # 简历筛选匹配 │ │ │ ├── resume-info/ # 简历库 │ │ │ ├── resume-upload/ # 简历上传 │ │ │ ├── resume-analysis-report/ # 简历分析报告 │ │ │ ├── interview-answer/ # 模拟面试答题 │ │ │ ├── interview-evaluate/ # 面试评估报告 │ │ │ ├── interview-record/ # 面试记录 │ │ │ ├── practice/ # 试题练习 │ │ │ └── assistant/ # AI 助手 │ │ └── ... # 其他页面 │ ├── App.vue # 根组件 │ ├── main.js # 入口文件 │ ├── permission.js # 权限控制 │ └── settings.js # 系统设置 ├── .env.development # 开发环境配置 ├── .env.production # 生产环境配置 ├── babel.config.js # Babel 配置 ├── package.json # 项目依赖配置 └── vue.config.js # Vue CLI 配置 ``` --- ## 环境要求 ### 后端环境 - **JDK**: 1.8+ - **MySQL**: 5.7+ / 8.0+ - **Redis**: 6.0+ - **Maven**: 3.6+ - **Node.js**: 12.0+(如需前端开发) ### 前端环境 - **Node.js**: 12.0+ - **npm**: 6.0+ 或 **yarn**: 1.22+ --- ## 安装部署 ### 1. 数据库配置 ```sql -- 创建数据库 CREATE DATABASE graduation DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; -- 导入 SQL 脚本 USE graduation; SOURCE /path/to/interview_assistance_api/sql/graduation.sql; ``` ### 2. 后端配置与启动 ```bash # 克隆项目 git clone # 进入后端项目目录 cd api # 修改数据库配置(graduation-admin/src/main/resources/application-druid.yml) spring: datasource: druid: master: url: jdbc:mysql://localhost:3306/graduation username: root password: your_password # 修改 Redis 配置(graduation-admin/src/main/resources/application.yml) spring: redis: host: localhost port: 6379 password: your_redis_password # 修改 AI 服务配置(graduation-admin/src/main/resources/application.yml) deepseek: api-key: your_deepseek_api_key base-url: https://api.deepseek.com model: deepseek-chat # 修改智谱 GLM 配置(可选) glm: api-key: your_glm_api_key base-url: https://open.bigmodel.cn/api/paas/v4 # 修改邮件服务配置(用于发送面试邀请) spring: mail: host: smtp.example.com port: 465 username: your_email@example.com password: your_email_password # 修改文件上传路径(graduation-admin/src/main/resources/application.yml) graduation: profile: /path/to/upload-file # 编译打包 mvn clean package -DskipTests # 启动服务 java -jar graduation-admin/target/graduation-admin.jar ``` 后端服务默认运行在 `http://localhost:9090` ### 3. 前端配置与启动 ```bash # 进入前端项目目录 cd interview_assistance_ui # 安装依赖 npm install # 建议使用国内镜像加速 npm install --registry=https://registry.npmmirror.com # 开发环境运行 npm run dev ``` 前端服务默认运行在 `http://localhost:90` ### 4. 生产环境构建 ```bash # 构建测试环境 npm run build:stage # 构建生产环境 npm run build:prod ``` --- ## API 接口说明 ### 简历相关接口 | 接口路径 | 方法 | 功能 | |----------|------|------| | `/interview/upload` | POST | 上传简历并启动异步分析 | | `/interview/parseResult/{taskId}` | GET | 获取简历解析结果(轮询) | | `/interview/stream/{taskId}` | GET | SSE 流式获取简历分析结果 | | `/interview/resumeInfo/list` | GET | 查询简历列表 | | `/interview/report/get/{resumeId}` | GET | 根据简历 ID 获取分析报告 | ### 模拟面试接口 | 接口路径 | 方法 | 功能 | |----------|------|------| | `/interview/api/sessions` | POST | 创建面试会话 | | `/interview/api/submit-answer` | POST | 提交面试答案 | | `/interview/api/complete/{sessionId}` | POST | 完成面试(交卷) | | `/interview/api/report/{sessionId}` | GET | 获取面试评估报告 | | `/interview/api/stream/{sessionId}` | GET | SSE 流式获取面试评估 | ### 试题练习接口 | 接口路径 | 方法 | 功能 | |----------|------|------| | `/interview/practice/start` | POST | 开始新练习 | | `/interview/practice/detail/{practiceId}` | GET | 获取练习详情 | | `/interview/practice/answer` | POST | 保存答案 | | `/interview/practice/submit/{practiceId}` | POST | 提交练习 | | `/interview/practice/result/{practiceId}` | GET | 获取练习结果 | ### 岗位发布接口(企业端) | 接口路径 | 方法 | 功能 | |----------|------|------| | `/interview/jobInfo/list` | GET | 查询岗位列表 | | `/interview/jobInfo/{jobId}` | GET | 获取岗位详情 | | `/interview/jobInfo` | POST | 新增岗位 | | `/interview/jobInfo` | PUT | 修改岗位 | | `/interview/jobInfo/status/{jobId}/{jobStatus}` | PUT | 更新岗位状态 | | `/interview/jobInfo/{jobIds}` | DELETE | 删除岗位 | ### 简历筛选接口(企业端) | 接口路径 | 方法 | 功能 | |----------|------|------| | `/interview/resumeScreen/list` | GET | 查询筛选结果列表 | | `/interview/resumeScreen/match/{jobId}` | POST | 执行简历匹配(Embedding + LLM) | | `/interview/resumeScreen/matchResult/{jobId}` | GET | 获取岗位的匹配结果 | | `/interview/resumeScreen/invite/{screenId}` | POST | 发送面试邀请邮件 | --- ## 默认账号 系统内置管理员账号: | 账号 | 密码 | 角色 | |------|------|------| | admin | admin123 | 管理员 | --- ## 许可证 本项目仅供学习交流使用,请勿用于商业用途。 --- ## 联系方式 如有问题或建议,欢迎通过 Issue 进行反馈。