🚀 智聘导航 - 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:用户ID
  • content:内容
  • category:分类(字符串)
  • likes:点赞数
4. ai_analysis_records(AI分析记录表)
  • id:主键
  • user_id:用户ID
  • skills:技能
  • 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
  • 检查防火墙设置

Logo

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

更多推荐