基于大语言模型的个性化职业规划与智能企业匹配系统
智聘导航 - AI职业规划平台摘要 智聘导航是一个基于大语言模型的智能职业规划系统,通过AI技术为用户提供个性化职业分析和企业匹配服务。平台采用Vue+Spring Boot技术栈,集成通义千问大模型,核心功能包括: AI职业分析 - 根据用户背景生成专业职业规划报告并推荐匹配企业 企业库管理 - 支持多维度企业筛选,管理员可维护企业数据 社区交流 - 提供求职经验分享和互动功能 用户系统 - 基
🚀 智聘导航 - AI驱动的智能职业规划平台
基于大语言模型的个性化职业规划与智能企业匹配系统
📖 项目简介
智聘导航是一个集成了AI大模型技术的智能职业规划平台,旨在帮助求职者进行个性化的职业分析和企业匹配。系统通过分析用户的技能、经验、教育背景和职业目标,利用通义千问大模型生成专业的职业规划报告,并智能推荐匹配的企业和岗位。
核心价值
- ✨ AI智能分析:基于通义千问大模型,深度分析用户背景,生成个性化职业规划报告
- 🎯 精准匹配:智能匹配最适合的企业和岗位,提高求职成功率
- 🏢 企业数据库:汇集优质企业信息,支持多维度筛选和搜索
- 👥 社区交流:用户可分享求职经验,互相学习成长
- 📊 历史记录:保存每次分析记录,方便回顾和对比
✨ 功能特性
1. AI职业分析
- 📝 填写技能特长、项目经验、教育背景、职业目标
- 🤖 调用通义千问API生成专业职业规划报告(Markdown格式)
- 🏢 智能推荐3-5家匹配企业
- 💾 自动保存分析记录,支持历史查看和删除
2. 企业库管理
- 🔍 支持按行业、规模、地点筛选企业
- 📋 展示企业详细信息:技术栈、岗位、薪资范围、公司描述
- ➕ 管理员功能:添加新企业信息
- 🗑️ 管理员功能:删除企业信息
3. 社区交流
- 💬 发布评论,支持分类:面试技巧、职业规划、行业资讯、求职心得
- 👍 点赞功能,支持互动
- 🔍 按分类筛选评论
- 📅 显示评论发布时间和作者信息
4. 用户系统
- 🔐 用户注册/登录(JWT认证)
- 👤 角色管理:普通用户(role=0)、管理员(role=1)
- 🔒 基于角色的权限控制(RBAC)
🛠️ 技术栈
前端技术
- 框架:Vue 2.6.11
- 路由:Vue Router 3.2.0
- 状态管理:Vuex 3.6.2
- UI组件:Element UI 2.15.6
- 样式:Tailwind CSS 2.2.17
- HTTP客户端:Axios 0.25.0
- Markdown渲染:marked 4.3.0
- 构建工具:Vue CLI 4.5.0
后端技术
- 框架:Spring Boot 2.5.9
- ORM:MyBatis-Plus 3.5.1
- 数据库:MySQL 8.0+
- 认证:JWT (java-jwt 3.19.0)
- HTTP客户端:OkHttp 4.11.0
- JSON处理:Jackson 2.17.0
- 工具类:Hutool、Apache Commons Lang3
AI集成
- 大模型:阿里云通义千问(qwen-plus)
- API模式:DashScope兼容模式(OpenAI兼容)
- 调用方式:OkHttp直接调用REST API
开发工具
- 后端构建:Maven 3.6+
- 前端构建:npm/yarn
- IDE推荐:IntelliJ IDEA / VS Code
📁 项目结构
ai_project/
├── ai_front/ # 前端项目
│ ├── src/
│ │ ├── components/ # 公共组件
│ │ │ └── Header.vue # 导航栏组件
│ │ ├── views/ # 页面组件
│ │ │ ├── Home.vue # 首页
│ │ │ ├── AIAnalysis.vue # AI分析页面
│ │ │ ├── Companies.vue # 企业库页面
│ │ │ ├── Community.vue # 社区页面
│ │ │ ├── Login.vue # 登录页面
│ │ │ └── CompanyAdd.vue # 添加企业页面(管理员)
│ │ ├── router/ # 路由配置
│ │ ├── utils/ # 工具类
│ │ │ └── request.js # Axios封装
│ │ └── main.js # 入口文件
│ └── package.json
│
├── ai_end/ # 后端项目
│ ├── src/main/java/com/hello/springboot/
│ │ ├── controller/ # 控制器层
│ │ │ ├── AiController.java # AI分析接口
│ │ │ ├── AiAnalysisRecordController.java # 历史记录接口
│ │ │ ├── CompanyController.java # 企业接口
│ │ │ ├── CommentController.java # 评论接口
│ │ │ └── UserController.java # 用户接口
│ │ ├── service/ # 服务层
│ │ │ ├── impl/
│ │ │ │ └── AiAnalysisServiceImpl.java # AI分析实现
│ │ │ └── ...
│ │ ├── entity/ # 实体类
│ │ │ ├── User.java
│ │ │ ├── Company.java
│ │ │ ├── Comment.java
│ │ │ └── AiAnalysisRecord.java
│ │ ├── mapper/ # 数据访问层
│ │ ├── config/ # 配置类
│ │ │ ├── CorsConfig.java # 跨域配置
│ │ │ ├── InterceptorConfig.java # 拦截器配置
│ │ │ └── OpenAiConfig.java # AI配置
│ │ └── utils/ # 工具类
│ │ └── TokenUtils.java # JWT工具
│ ├── src/main/resources/
│ │ └── application.yml # 配置文件
│ └── pom.xml # Maven依赖
│
└── README.md # 项目文档
🚀 快速开始
环境要求
- JDK:1.8+
- Node.js:14.0+
- MySQL:8.0+
- Maven:3.6+
- 通义千问API Key:需要阿里云DashScope账号
1. 克隆项目
git clone <your-repo-url>
cd ai_project
2. 数据库配置
2.1 创建数据库
CREATE DATABASE ai_project CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
2.2 执行SQL脚本
执行以下SQL文件创建表结构:
ai_end/ai_project.sql- 用户表、企业表、评论表ai_end/ai_analysis_records.sql- AI分析记录表
3. 后端配置
3.1 修改数据库配置
编辑 ai_end/src/main/resources/application.yml:
spring:
datasource:
url: jdbc:mysql://localhost:3306/ai_project?serverTimezone=GMT%2b8
username: root # 修改为你的数据库用户名
password: 123456 # 修改为你的数据库密码
server:
port: 9090 # 后端服务端口
3.2 配置通义千问API
在 application.yml 中配置你的API Key:
dashscope:
api-key: sk-your-api-key-here # 替换为你的通义千问API Key
base-url: https://dashscope.aliyuncs.com/compatible-mode/v1
model: qwen-plus
💡 获取API Key:访问 阿里云DashScope控制台 申请API Key
3.3 启动后端服务
cd ai_end
mvn clean install
mvn spring-boot:run
后端服务将在 http://localhost:9090 启动
4. 前端配置
4.1 安装依赖
cd ai_front
npm install
4.2 配置API地址
检查 ai_front/src/utils/request.js 中的 baseURL:
const service = axios.create({
baseURL: 'http://localhost:9090', // 确保与后端端口一致
timeout: 20000
})
4.3 启动前端服务
npm run serve
前端服务将在 http://localhost:8080 启动
5. 访问应用
打开浏览器访问:http://localhost:8080
📸 项目截图
1. 首页

功能说明:
- 展示平台核心价值和服务特色
- 统计数据展示(企业合作、成功案例、用户满意度)
- 快速入口:AI分析、企业库浏览
2. AI职业分析页面


功能说明:
- 📝 填写个人信息:技能、经验、教育背景、职业目标
- 🤖 一键生成AI职业规划报告(Markdown格式,支持富文本渲染)
- 🏢 智能推荐3-5家匹配企业,展示企业详细信息
- 📋 历史分析记录:查看、删除、重新查看历史分析
技术亮点:
- 集成通义千问大模型API
- 将企业数据库作为上下文提供给AI,实现精准推荐
- 支持Markdown格式报告渲染
- 自动保存分析记录到数据库
3. 企业库页面

功能说明:
- 🔍 多维度筛选:行业、规模、地点
- 📋 企业卡片展示:名称、行业、规模、薪资范围、技术栈、岗位
- ➕ 管理员功能:添加新企业(导航栏显示"新增企业信息"菜单)
- 🗑️ 管理员功能:删除企业(企业卡片右上角删除按钮)
4. 社区交流页面

功能说明:
- 💬 发布评论:支持分类(面试技巧、职业规划、行业资讯、求职心得)
- 👍 点赞功能:支持互动
- 🔍 分类筛选:按分类查看评论
- 📅 时间显示:展示评论发布时间
5. 登录页面

功能说明:
- 🔐 用户注册/登录
- 🔒 JWT Token认证
- 👤 角色管理:普通用户、管理员
🔧 技术亮点
1. AI大模型集成
挑战:集成通义千问API,实现智能分析和推荐
解决方案:
- 使用OkHttp直接调用DashScope兼容模式API(避免SDK依赖冲突)
- 构建包含企业数据库的上下文提示词,让AI基于真实数据推荐
- 解析AI返回的JSON格式结果,提取分析报告和推荐企业ID
- 实现兜底机制:如果AI未返回企业ID,使用关键词匹配推荐
核心代码:
// 构建包含企业数据的提示词
private String buildPrompt(AiAnalysisRequest req, List<Company> companies) {
// 格式化企业数据为文本,提供给AI作为上下文
StringBuilder companiesText = new StringBuilder();
for (Company c : companies) {
companiesText.append(String.format("ID:%d, 名称:%s, 行业:%s, 技术栈:%s\n",
c.getId(), c.getName(), c.getIndustry(),
c.getTechStack().toString()));
}
// 构建完整的提示词...
}
2. 依赖冲突解决
挑战:OpenAI Java SDK与Spring Boot的Jackson版本冲突
解决方案:
- 使用
dependencyManagement统一管理Jackson版本(2.17.0) - 显式声明所有Jackson模块版本,避免传递依赖冲突
- 最终采用OkHttp直接调用API,避免SDK依赖问题
3. 前后端分离架构
前端:
- Vue 2 + Vue Router实现SPA
- Axios封装统一请求拦截器(自动添加JWT Token)
- 响应拦截器统一处理错误和数据提取
后端:
- Spring Boot RESTful API
- MyBatis-Plus简化CRUD操作
- JWT拦截器实现统一认证
- 全局异常处理
4. 角色权限控制(RBAC)
实现:
- 用户表
role字段:0=普通用户,1=管理员 - 前端:
Header.vue根据user.role动态显示管理员菜单 - 后端:
JwtInterceptor解析Token获取用户信息 - 管理员功能:添加/删除企业
5. 历史记录功能
实现:
- 创建
ai_analysis_records表存储分析记录 - 分析完成后自动保存记录
- 支持查看历史、删除记录、重新查看详情
📊 数据库设计
核心表结构
1. users(用户表)
id:主键username:用户名(唯一)password:密码(加密)name:昵称role:角色(0=用户,1=管理员)
2. companies(企业表)
id:主键name:企业名称industry:行业scale:规模location:地点salary_range:薪资范围tech_stack:技术栈(JSON)positions:岗位(JSON)description:描述website:官网
3. comments(评论表)
id:主键user_id:用户IDcontent:内容category:分类(字符串)likes:点赞数
4. ai_analysis_records(AI分析记录表)
id:主键user_id:用户IDskills:技能experience:经验education:教育背景career_goal:职业目标analysis_result:分析结果(文本)recommended_company_ids:推荐企业ID(JSON)created_at:创建时间
🔐 API接口文档
认证相关
用户注册
POST /user/register
Body: { username, password, name }
用户登录
POST /user/login
Body: { username, password }
Response: { code, msg, data: { id, username, name, role, token } }
AI分析相关
生成分析报告
POST /ai/analysis
Headers: { Authorization: Bearer {token} }
Body: { skills, experience, education, career_goal }
Response: {
code, msg,
data: {
analysis: "职业规划报告(Markdown)",
companies: [企业列表]
}
}
获取历史记录
GET /ai/records?current=1&size=10
Headers: { Authorization: Bearer {token} }
删除历史记录
DELETE /ai/records/{id}
Headers: { Authorization: Bearer {token} }
企业相关
获取企业列表
GET /company?current=1&size=10&industry=互联网
获取行业列表
GET /company/industries
添加企业(管理员)
POST /company
Headers: { Authorization: Bearer {token} }
Body: { name, industry, scale, location, ... }
删除企业(管理员)
DELETE /company/{id}
Headers: { Authorization: Bearer {token} }
评论相关
获取评论列表
GET /comment?current=1&size=10&category=面试技巧
发布评论
POST /comment
Headers: { Authorization: Bearer {token} }
Body: { content, category }
点赞评论
POST /comment/{id}/like
Headers: { Authorization: Bearer {token} }
🐛 常见问题
1. 后端启动失败:Jackson版本冲突
解决方案:确保pom.xml中已统一Jackson版本为2.17.0
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.fasterxml.jackson</groupId>
<artifactId>jackson-bom</artifactId>
<version>2.17.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
2. AI分析超时
解决方案:
- 检查网络连接
- 确认API Key有效
- 前端已设置20秒超时
3. 跨域问题
解决方案:后端已配置CORS,确保CorsConfig.java正确配置
4. 前端无法连接后端
解决方案:
- 检查
request.js中的baseURL配置 - 确认后端服务已启动(
http://localhost:9090) - 检查防火墙设置
更多推荐



所有评论(0)