智能招聘分析推荐与管理系统
系统说明
本系统是一个基于Flask开发的智能招聘平台,集成了AI匹配引擎、数据预测分析和可视化展示功能。系统采用前后端分离架构,支持用户、企业、管理员三种角色,为求职者提供智能职位推荐和简历分析服务,为企业提供高效的招聘管理和人才筛选工具,为管理员提供完善的平台监管能力。系统融合了DeepSeek大语言模型、XGBoost机器学习算法和ECharts数据可视化,打造全流程智能化的招聘生态。

功能说明
用户注册与登录
用户可通过邮箱或手机号完成注册,支持求职者身份认证。系统采用密码哈希加密存储,确保账户安全。登录后用户可完善个人资料,包括头像、性别、出生日期、教育背景、工作经验等信息。支持邮箱验证和手机号验证,提升账户可信度。用户可随时修改密码,设置隐私保护级别,控制个人信息的可见范围。


简历管理
用户可创建多份简历,支持设置默认简历。简历包含基本信息、求职意向、教育背景、工作经历、项目经历、技能证书和自我评价等模块。支持导入附件简历,设置简历公开状态。用户可控制是否对外展示联系方式。系统提供简历模板选择功能,一键生成专业简历。支持简历编辑、删除和设置默认操作,简历更新自动同步到已投递的申请记录中。

职位搜索与推荐
用户支持多维度搜索职位,包括关键词、职位类型、工作地点、薪资范围、经验要求、学历要求等筛选条件。系统集成了AI智能推荐算法,基于多策略融合(内容匹配35%、协同过滤25%、热度20%、时间衰减15%、个性化5%),为用户精准推荐最适合的职位。推荐结果实时更新,展示匹配度评分,支持一键收藏和快速投递。


职位申请与追踪
用户浏览职位详情后可投递简历,系统自动选择默认简历或首个简历。如用户无简历,系统提示先创建简历。用户可在申请记录页面追踪所有申请状态,包括待处理、已查看、面试中、已录用、已入职、已拒绝、已撤回。支持查看企业反馈和面试评价,已录用状态可查看详细信息并确认入职。待处理和已查看状态的申请支持撤回操作。

面试管理
用户可在面试管理页面查看所有面试安排,按状态筛选(待确认、已确认、已完成、已取消)。面试信息包括面试类型(线上/线下/电话)、轮次、时间、地点、面试官信息等。用户可确认或拒绝面试邀请,面试结束后可对面试官和企业进行评分反馈。系统提醒即将开始的面试,支持查看历史面试记录和评价反馈。

消息中心
用户可查看系统通知和私信消息。系统通知包括申请状态变更、面试邀请、录用通知等重要提醒。私信功能支持用户与企业HR一对一沟通,支持发送文本、图片和文件附件。消息标记已读状态,未读消息数量实时统计。支持消息搜索和历史记录查询,方便用户回顾沟通内容。

AI简历分析与职业规划
系统集成DeepSeek大语言模型,提供AI简历分析服务。用户点击"开始分析"后,AI流式输出简历评估结果,包括简历完整性评分、技能匹配度分析、职业竞争力评估、职业发展建议和优化建议。分析结果采用Markdown格式渲染,支持标题、列表、粗体等格式,提升阅读体验。用户可反复分析,追踪简历改进效果。

智能分析报告
系统基于XGBoost机器学习算法生成智能分析报告。报告包含职位热度趋势、薪资分布分析、行业竞争度分析、地域机会分布和技能需求排名等模块。数据可视化采用ECharts图表,支持交互式查看。报告帮助用户了解市场动态,优化求职策略。支持按时间范围筛选数据,生成定制化分析报告。


企业注册与认证
企业可通过企业账号注册并完善企业资料,包括公司名称、所属行业、公司规模、发展阶段、公司地址、官网、简介等。企业需上传营业执照和填写统一社会信用代码进行实名认证。系统管理员审核企业认证申请,通过后企业可正常发布职位。企业可设置HR信息,包括姓名、电话、邮箱和职位,方便求职者联系。

职位发布与管理
认证企业可发布职位,填写职位名称、职位类型、所属部门、薪资范围、工作地点、经验要求、学历要求、职位描述、任职要求、福利待遇等信息。支持设置招聘人数、紧急程度、发布日期和截止日期。职位可设为草稿或直接发布,支持编辑、下架和删除操作。系统自动统计职位浏览量、申请量和收藏量,帮助企业评估职位吸引力。

简历审核与筛选
企业在简历审核页面查看求职者投递的简历,支持关键词搜索和状态筛选。系统展示简历基本信息、申请职位、匹配度评分和申请时间。企业可标记简历状态(待处理、已查看、已联系、已拒绝、已归档),添加备注信息和匹配度评分。支持批量操作和快速筛选,提高审核效率。企业可将优秀简历添加到人才库,建立长期人才储备。

面试邀请与管理
企业可向候选人发起面试邀请,选择面试类型(线上/线下/电话)、面试轮次、面试日期、时间、时长。线上面试需填写会议链接,线下面试需填写详细地址。企业可设置面试官信息(姓名、职位、电话)和确认截止时间。候选人收到邀请后可确认或拒绝,企业可查看确认状态。面试结束后企业可填写评价和反馈,决定是否进入下一轮或直接录用。

录用与入职管理
企业对通过面试的候选人可发起录用或拒绝操作。录用时需填写入职日期、试用期月数、录用薪资和备注信息,系统自动发送录用通知。拒绝时需填写拒绝原因和面试反馈,帮助候选人改进。候选人收到录用通知后可在申请记录页面查看详细信息,确认入职后状态更新为"已入职"。系统支持录用记录查询和统计分析。
人才库管理
企业可将优质简历添加到人才库,按标签分类管理(核心技术、潜力新星、管理人才等)。支持设置人才评级(1-5星)、回应状态(待联系、感兴趣、不感兴趣、已录用)和联系次数。企业可添加公开备注和内部备注,标记重要人才和星标人才。系统记录最后联系时间,方便定期跟进。支持搜索和筛选人才库,快速找到合适的候选人。

数据分析报告
企业可在数据分析页面查看招聘数据报表,包括职位申请趋势、面试转化率、录用率、平均招聘周期等核心指标。支持按职位、部门、时间范围筛选数据。数据可视化采用ECharts图表,支持交互式钻取。分析报告帮助企业评估招聘效果,优化招聘策略。支持导出报表功能,方便管理层查看。

用户管理
管理员可查看所有用户列表,支持搜索和筛选(按角色、状态、注册时间)。可查看用户详细信息,包括基本资料、简历数量、申请记录等。管理员可修改用户状态(激活/禁用),禁用用户需填写禁用原因。支持删除用户和重置密码操作,确保平台安全。提供用户统计数据和趋势分析。

企业管理
管理员可查看所有企业列表,支持搜索和筛选(按行业、规模、认证状态)。可查看企业详细信息,包括基本资料、认证信息、职位数量等。管理员可审核企业认证申请,通过或拒绝认证并填写审核备注。支持禁用违规企业,填写禁用原因。提供企业统计数据和行业分布分析。

职位审核
管理员可查看所有待审核职位,支持搜索和筛选(按企业、职位类型、状态)。可查看职位详细信息,包括职位描述、薪资范围、申请情况等。管理员可审核职位(通过/拒绝),拒绝需填写拒绝原因。支持下架违规职位,维护平台内容质量。提供职位统计数据和分类分析。

系统公告
管理员可发布系统公告,支持设置公告标题、内容、优先级和有效期。公告分为普通公告、重要公告和紧急公告,不同优先级显示不同样式。用户登录后可在首页查看公告列表,点击查看详情。管理员可编辑和删除公告,设置公告失效时间。支持公告统计和阅读量分析。
---
数据库设计
users(用户表)
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | Integer | 主键ID |
| username | String(64) | 用户名(唯一) |
| String(120) | 邮箱(唯一) | |
| phone | String(20) | 手机号(唯一) |
| password_hash | String(256) | 密码哈希 |
| role | String(20) | 角色(user/admin) |
| real_name | String(64) | 真实姓名 |
| avatar | String(256) | 头像URL |
| gender | String(10) | 性别 |
| birth_date | Date | 出生日期 |
| location | String(100) | 所在地 |
| education | String(50) | 学历 |
| work_years | Integer | 工作年限 |
| skill_tags | Text | 技能标签(JSON) |
| career_goal | Text | 职业目标 |
| expected_salary | Integer | 期望薪资 |
| expected_location | String(100) | 期望地点 |
| is_active | Boolean | 是否激活 |
| is_verified | Boolean | 是否实名认证 |
| email_verified | Boolean | 邮箱是否验证 |
| phone_verified | Boolean | 手机是否验证 |
| is_banned | Boolean | 是否被禁用 |
| ban_reason | Text | 禁用原因 |
| privacy_settings | Text | 隐私设置(JSON) |
| created_at | DateTime | 创建时间 |
| updated_at | DateTime | 更新时间 |
| last_login_at | DateTime | 最后登录时间 |
companies(公司表)
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | Integer | 主键ID |
| user_id | Integer | 关联用户ID |
| company_name | String(100) | 公司名称 |
| company_name_en | String(100) | 英文名称 |
| short_name | String(50) | 简称 |
| logo | String(256) | Logo URL |
| industry | String(50) | 所属行业 |
| scale | String(50) | 公司规模 |
| stage | String(50) | 发展阶段 |
| location | String(100) | 所在地 |
| address | String(256) | 详细地址 |
| website | String(256) | 官网 |
| description | Text | 公司简介 |
| welfare_tags | Text | 福利标签(JSON) |
| business_license | String(256) | 营业执照 |
| unified_code | String(50) | 统一社会信用代码 |
| legal_representative | String(64) | 法定代表人 |
| registered_capital | String(50) | 注册资本 |
| establish_date | Date | 成立时间 |
| hr_name | String(64) | HR姓名 |
| hr_phone | String(20) | HR电话 |
| hr_email | String(120) | HR邮箱 |
| hr_position | String(50) | HR职位 |
| is_verified | Boolean | 是否认证 |
| verify_status | String(20) | 认证状态 |
| verify_time | DateTime | 认证时间 |
| verify_remark | Text | 认证备注 |
| is_active | Boolean | 是否激活 |
| is_banned | Boolean | 是否被禁用 |
| ban_reason | Text | 禁用原因 |
| created_at | DateTime | 创建时间 |
| updated_at | DateTime | 更新时间 |
jobs(职位表)
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | Integer | 主键ID |
| company_id | Integer | 关联公司ID |
| job_title | String(100) | 职位名称 |
| job_type | String(20) | 职位类型 |
| department | String(50) | 所属部门 |
| salary_min | Integer | 最低薪资 |
| salary_max | Integer | 最高薪资 |
| salary_type | String(20) | 薪资类型 |
| location | String(100) | 工作地点 |
| experience_required | String(50) | 经验要求 |
| education_required | String(50) | 学历要求 |
| job_description | Text | 职位描述 |
| requirements | Text | 任职要求 |
| benefits | Text | 福利待遇 |
| skill_tags | Text | 技能标签(JSON) |
| recruit_count | Integer | 招聘人数 |
| urgency_level | String(20) | 紧急程度 |
| publish_date | DateTime | 发布日期 |
| deadline | DateTime | 截止日期 |
| valid_days | Integer | 有效天数 |
| is_active | Boolean | 是否激活 |
| is_verified | Boolean | 是否审核 |
| verify_status | String(20) | 审核状态 |
| view_count | Integer | 浏览次数 |
| apply_count | Integer | 申请次数 |
| collect_count | Integer | 收藏次数 |
| template_id | Integer | 模板ID |
| is_template | Boolean | 是否模板 |
| created_at | DateTime | 创建时间 |
| updated_at | DateTime | 更新时间 |
resumes(简历表)
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | Integer | 主键ID |
| user_id | Integer | 关联用户ID |
| resume_name | String(100) | 简历名称 |
| template_id | Integer | 模板ID |
| real_name | String(64) | 真实姓名 |
| gender | String(10) | 性别 |
| birth_date | Date | 出生日期 |
| phone | String(20) | 手机号 |
| String(120) | 邮箱 | |
| location | String(100) | 所在地 |
| avatar | String(256) | 头像URL |
| expected_position | String(100) | 期望职位 |
| expected_location | String(100) | 期望地点 |
| expected_salary | Integer | 期望薪资 |
| job_type | String(20) | 职位类型 |
| work_years | Integer | 工作年限 |
| arrival_time | String(50) | 到岗时间 |
| education | Text | 教育背景(JSON) |
| work_experience | Text | 工作经历(JSON) |
| project_experience | Text | 项目经历(JSON) |
| skills | Text | 技能(JSON) |
| skill_tags | Text | 技能标签(JSON) |
| self_evaluation | Text | 自我评价 |
| attachment_url | String(256) | 附件URL |
| attachment_name | String(256) | 附件名称 |
| is_public | Boolean | 是否公开 |
| show_phone | Boolean | 是否展示手机 |
| show_email | Boolean | 是否展示邮箱 |
| is_default | Boolean | 是否默认 |
| is_active | Boolean | 是否激活 |
| view_count | Integer | 查看次数 |
| download_count | Integer | 下载次数 |
| created_at | DateTime | 创建时间 |
| updated_at | DateTime | 更新时间 |
applications(申请记录表)
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | Integer | 主键ID |
| user_id | Integer | 关联用户ID |
| job_id | Integer | 关联职位ID |
| resume_id | Integer | 关联简历ID |
| status | String(20) | 状态 |
| reject_reason | Text | 拒绝原因 |
| match_score | Float | 匹配度评分 |
| applicant_remark | Text | 求职者备注 |
| company_remark | Text | 企业备注 |
| created_at | DateTime | 创建时间 |
| updated_at | DateTime | 更新时间 |
| viewed_at | DateTime | 查看时间 |
| responded_at | DateTime | 回复时间 |
interviews(面试表)
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | Integer | 主键ID |
| user_id | Integer | 关联用户ID |
| job_id | Integer | 关联职位ID |
| application_id | Integer | 关联申请ID |
| company_id | Integer | 关联公司ID |
| interview_type | String(20) | 面试类型 |
| round | Integer | 面试轮次 |
| interview_date | DateTime | 面试日期 |
| duration | Integer | 时长(分钟) |
| location | String(256) | 面试地址 |
| online_link | String(256) | 在线链接 |
| interviewer_name | String(64) | 面试官姓名 |
| interviewer_position | String(50) | 面试官职位 |
| interviewer_phone | String(20) | 面试官电话 |
| status | String(20) | 状态 |
| confirm_deadline | DateTime | 确认截止 |
| user_feedback | Text | 求职者反馈 |
| company_feedback | Text | 企业反馈 |
| company_rating | Integer | 企业评分 |
| user_rating | Integer | 求职者评分 |
| result | String(20) | 面试结果 |
| created_at | DateTime | 创建时间 |
| updated_at | DateTime | 更新时间 |
| confirmed_at | DateTime | 确认时间 |
| completed_at | DateTime | 完成时间 |
messages(消息表)
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | Integer | 主键ID |
| sender_id | Integer | 发送者ID |
| receiver_id | Integer | 接收者ID |
| content | Text | 消息内容 |
| message_type | String(20) | 消息类型 |
| attachment_url | String(256) | 附件URL |
| attachment_name | String(256) | 附件名称 |
| is_read | Boolean | 是否已读 |
| is_deleted | Boolean | 是否删除 |
| created_at | DateTime | 创建时间 |
| read_at | DateTime | 阅读时间 |
favorites(收藏表)
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | Integer | 主键ID |
| user_id | Integer | 关联用户ID |
| job_id | Integer | 关联职位ID |
| remark | Text | 备注信息 |
| created_at | DateTime | 创建时间 |
talent_pools(人才库表)
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | Integer | 主键ID |
| company_id | Integer | 关联公司ID |
| resume_id | Integer | 关联简历ID |
| tags | Text | 标签(JSON) |
| category | String(50) | 人才分类 |
| rating | Integer | 评分(1-5) |
| last_contacted | DateTime | 最后联系 |
| contact_count | Integer | 联系次数 |
| response_status | String(20) | 回应状态 |
| notes | Text | 企业备注 |
| internal_notes | Text | 内部备注 |
| is_important | Boolean | 是否重要 |
| is_starred | Boolean | 是否星标 |
| created_at | DateTime | 创建时间 |
| updated_at | DateTime | 更新时间 |
resume_reviews(简历审核表)
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | Integer | 主键ID |
| company_id | Integer | 关联公司ID |
| resume_id | Integer | 关联简历ID |
| application_id | Integer | 关联申请ID |
| status | String(20) | 审核状态 |
| match_score | Float | 匹配度评分 |
| notes | Text | 备注信息 |
| tags | Text | 标签(JSON) |
| created_at | DateTime | 创建时间 |
| updated_at | DateTime | 更新时间 |
notifications(通知表)
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | Integer | 主键ID |
| user_id | Integer | 关联用户ID |
| title | String(100) | 通知标题 |
| content | Text | 通知内容 |
| type | String(20) | 通知类型 |
| is_read | Boolean | 是否已读 |
| related_type | String(50) | 关联类型 |
| related_id | Integer | 关联ID |
| created_at | DateTime | 创建时间 |
| read_at | DateTime | 阅读时间 |
analytics(数据分析表)
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | Integer | 主键ID |
| company_id | Integer | 关联公司ID |
| user_id | Integer | 关联用户ID |
| date | Date | 统计日期 |
| metric_type | String(50) | 指标类型 |
| metric_value | Float | 指标值 |
| extra_data | Text | 额外数据(JSON) |
| created_at | DateTime | 创建时间 |
announcements(公告表)
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | Integer | 主键ID |
| title | String(100) | 公告标题 |
| content | Text | 公告内容 |
| priority | String(20) | 优先级 |
| target_role | String(20) | 目标角色 |
| is_active | Boolean | 是否激活 |
| start_date | DateTime | 开始日期 |
| end_date | DateTime | 结束日期 |
| view_count | Integer | 浏览次数 |
| created_at | DateTime | 创建时间 |
| updated_at | DateTime | 更新时间 |
tags(标签表)
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | Integer | 主键ID |
| name | String(50) | 标签名称 |
| type | String(20) | 标签类型 |
| usage_count | Integer | 使用次数 |
| created_at | DateTime | 创建时间 |
技术架构
后端技术栈
- Flask 3.0:轻量级Web框架
- SQLAlchemy 2.0:ORM数据库操作
- Flask-Login:用户认证与会话管理
- Flask-Mail:邮件发送功能
- DeepSeek API:大语言模型集成
- XGBoost 2.0:机器学习预测算法
- SQLite:轻量级数据库
前端技术栈
- Bootstrap 5:响应式UI框架
- jQuery:JavaScript库
- ECharts 5:数据可视化图表
- Bootstrap Icons:图标库
核心算法
- 智能推荐算法:多策略融合(内容匹配35%、协同过滤25%、热度20%、时间衰减15%、个性化5%)
- 简历匹配算法:基于TF-IDF的文本相似度计算
- 职位预测算法:XGBoost回归模型预测薪资和匹配度
- 趋势分析算法:时间序列分析职位热度趋势