Files
work_dhd_back_end/doc/岗位简历匹配度接口说明.md
2026-01-06 11:23:52 +08:00

242 lines
6.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 岗位简历匹配度接口说明
## 接口地址
```
POST http://work.dhdjy.com/match/calculate
```
## 接口说明
该接口用于计算岗位信息和简历信息的匹配度,采用**硬性条件一票否决 + 软性条件加分**的双层匹配机制,符合公考职位匹配的实际需求。
**返回结果**仅返回匹配度分数0-100分硬性条件不满足时返回0分。
## 匹配机制说明
### 匹配流程
1. **硬性条件检查(一票否决)**
- 首先检查硬性条件,如学历、学位、年龄、专业、性别等
- 任一硬性条件不满足直接返回0分不进行软性条件评分
- 所有硬性条件满足后,进入软性条件评分
2. **软性条件评分100分制**
- 在通过硬性条件筛选的基础上,对软性条件进行评分
- 评分维度包括:专业匹配度、学历层次匹配度、专业资格条件、基层工作经历、其他条件等
- 最终得分范围为 0-100 分
## 请求参数
### 请求方式
- **方法**: POST
- **Content-Type**: application/json 或 application/x-www-form-urlencoded
### 请求参数说明
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| position | object | 是 | 岗位信息对象 |
| resume | object | 是 | 简历信息对象 |
### 请求示例
#### JSON格式请求
```json
{
"position": {
"id": 1,
"base_info": {
"岗位名称": "人工智能与大数据侦察职位一",
"招考单位": "市级公安机关",
"招录人数": "10",
"岗位代码": "45150001"
},
"position_info": {
"岗位名称": "人工智能与大数据侦察职位一",
"招考单位": "市级公安机关",
"招录人数": "10",
"岗位代码": "45150001"
},
"position_require": {
"学历要求": "本科及以上",
"学位要求": "学士及以上",
"年龄要求": "18周岁以上、35周岁以下。",
"专业(学科)类别": "计算机科学与技术类,电气、电子及自动化类",
"其他资格条件": "适合男性。符合人民警察录用条件。",
"专业资格条件": "曾参加人工智能、大数据、计算机领域竞赛,获个人三等奖或团体三等奖及以上。"
}
},
"resume": {
"user_id": 527,
"birth_date": "1995-03-01",
"gender": "男",
"work_experience": "3年基层工作年限",
"education": [
{
"education_level": "硕士研究生",
"degree": "硕士",
"majors_name": "计算机科学与技术"
}
]
}
}
```
## 响应参数
### 成功响应
```json
{
"code": 200,
"msg": "计算成功",
"data": {
"match_score": 90
}
}
```
### 错误响应
```json
{
"code": 400,
"msg": "参数错误:岗位信息和简历信息不能为空",
"data": null
}
```
## 匹配度分数说明
### 分数含义
- **0分**:硬性条件不满足(如年龄超限、专业不匹配、学历不达标等),一票否决
- **1-100分**:通过硬性条件筛选后的软性条件匹配度
### 硬性条件(一票否决)
以下条件不满足时直接返回0分
1. **学历要求**:必须达到或超过岗位要求的学历
2. **学位要求**:必须达到或超过岗位要求的学位
3. **年龄要求**:必须在岗位要求的年龄范围内
4. **专业要求**:专业必须属于岗位要求的专业类别
5. **性别要求**:如果岗位明确要求性别,必须匹配
### 软性条件评分规则100分制
在通过硬性条件筛选后,进行软性条件评分:
1. **专业匹配度40分**
- 专业完全匹配40分
- 专业部分匹配:根据匹配程度评分
2. **学历层次匹配度20分**
- 刚好满足要求15分
- 超过要求一级20分
- 超过要求两级及以上20分
3. **专业资格条件20分**
- 根据专业竞赛获奖、证书等情况评分
- 无要求时给满分
4. **基层工作经历10分**
- 有基层工作经历10分
- 无基层工作经历0分
5. **其他条件10分**
- 根据政治面貌、特殊身份等其他条件评分
- 无要求时给满分
## 使用示例
### 示例1硬性条件不满足
**请求:**
```json
{
"position": {
"position_require": {
"年龄要求": "18周岁以上、35周岁以下。",
"专业(学科)类别": "计算机科学与技术类"
}
},
"resume": {
"birth_date": "1989-03-01",
"education": [
{
"majors_name": "逻辑学"
}
]
}
}
```
**响应:**
```json
{
"code": 200,
"msg": "计算成功",
"data": {
"match_score": 0
}
}
```
**说明**年龄36岁超过35岁上限或专业不匹配硬性条件不满足返回0分。
### 示例2通过硬性条件
**请求:**
```json
{
"position": {
"position_require": {
"学历要求": "本科及以上",
"年龄要求": "18周岁以上、35周岁以下。",
"专业(学科)类别": "计算机科学与技术类"
}
},
"resume": {
"birth_date": "1995-03-01",
"work_experience": "3年基层工作年限",
"education": [
{
"education_level": "硕士研究生",
"degree": "硕士",
"majors_name": "计算机科学与技术"
}
]
}
}
```
**响应:**
```json
{
"code": 200,
"msg": "计算成功",
"data": {
"match_score": 100
}
}
```
**说明**所有硬性条件满足软性条件评分100分。
## 注意事项
1. **硬性条件优先**硬性条件不满足时直接返回0分不进行软性条件评分
2. **匹配度分数**只有在通过硬性条件筛选后才会计算匹配度分数0-100分
3. **数据结构**:专业资格条件评分需要简历中包含相关证书、获奖等信息,当前数据结构暂不支持,需要扩展
4. **专业匹配**:专业匹配基于关键词匹配,实际应用中可能需要更专业的专业分类映射表
## 使用场景
该接口适用于:
- 公考职位与考生简历匹配
- 事业单位招聘匹配
- 其他需要硬性条件筛选的招聘场景