修改技能计算分规则
This commit is contained in:
@@ -267,7 +267,8 @@ offerpie/back-end
|
||||
#### 技能维度(Sskill)
|
||||
- 岗位无要求 → 100分
|
||||
- 用户无技能 → 0分
|
||||
- 匹配公式:`(匹配数量 / 岗位要求数量) × 100`
|
||||
- 匹配0个 → 0分
|
||||
- 匹配≥1个 → 30分保底 + 70分按比例:`30 + (匹配数量 / 岗位要求数量) × 70`
|
||||
|
||||
### 核心服务
|
||||
- **JobService**(client-api):岗位列表查询主流程编排
|
||||
|
||||
@@ -287,7 +287,7 @@ public class JobMatchService {
|
||||
|
||||
/**
|
||||
* 计算技能匹配得分(百分制)
|
||||
* <p>岗位无要求→100分,用户无技能→0分,匹配公式:(匹配数量 / 岗位要求数量) * 100</p>
|
||||
* <p>岗位无要求→100分,用户无技能→0分,匹配≥1个→30分保底+70分按比例</p>
|
||||
*/
|
||||
private int calculateSkillScore(List<Long> jobSkillTagIds, Set<Long> userSkillTagSet) {
|
||||
if (jobSkillTagIds == null || jobSkillTagIds.isEmpty()) {
|
||||
@@ -297,6 +297,11 @@ public class JobMatchService {
|
||||
return 0;
|
||||
}
|
||||
long matchedCount = jobSkillTagIds.stream().filter(userSkillTagSet::contains).count();
|
||||
return (int) Math.round((double) matchedCount / jobSkillTagIds.size() * 100);
|
||||
if (matchedCount == 0) {
|
||||
return 0;
|
||||
}
|
||||
// 匹配≥1个:30分保底 + 70分按比例
|
||||
double ratio = (double) matchedCount / jobSkillTagIds.size();
|
||||
return 30 + (int) Math.round(ratio * 70);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user