From 26b88c6412da49f2152e4c6ea72b85f18fe7451b Mon Sep 17 00:00:00 2001 From: zk Date: Fri, 27 Mar 2026 10:58:12 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=8A=80=E8=83=BD=E8=AE=A1?= =?UTF-8?q?=E7=AE=97=E5=88=86=E8=A7=84=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .kiro/steering/项目结构说明.md | 3 ++- .../main/java/org/jiayunet/service/JobMatchService.java | 9 +++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/.kiro/steering/项目结构说明.md b/.kiro/steering/项目结构说明.md index e66b257..835beaa 100644 --- a/.kiro/steering/项目结构说明.md +++ b/.kiro/steering/项目结构说明.md @@ -267,7 +267,8 @@ offerpie/back-end #### 技能维度(Sskill) - 岗位无要求 → 100分 - 用户无技能 → 0分 -- 匹配公式:`(匹配数量 / 岗位要求数量) × 100` +- 匹配0个 → 0分 +- 匹配≥1个 → 30分保底 + 70分按比例:`30 + (匹配数量 / 岗位要求数量) × 70` ### 核心服务 - **JobService**(client-api):岗位列表查询主流程编排 diff --git a/manager/src/main/java/org/jiayunet/service/JobMatchService.java b/manager/src/main/java/org/jiayunet/service/JobMatchService.java index 55f37ba..43bb3e6 100644 --- a/manager/src/main/java/org/jiayunet/service/JobMatchService.java +++ b/manager/src/main/java/org/jiayunet/service/JobMatchService.java @@ -287,7 +287,7 @@ public class JobMatchService { /** * 计算技能匹配得分(百分制) - *

岗位无要求→100分,用户无技能→0分,匹配公式:(匹配数量 / 岗位要求数量) * 100

+ *

岗位无要求→100分,用户无技能→0分,匹配≥1个→30分保底+70分按比例

*/ private int calculateSkillScore(List jobSkillTagIds, Set 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); } }