From 9ad9432779c808e6ad5b8c8ed16860c052b60940 Mon Sep 17 00:00:00 2001 From: zk Date: Fri, 27 Mar 2026 10:30:54 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=8A=80=E8=83=BD=E6=8F=90?= =?UTF-8?q?=E5=8F=96=E6=96=B9=E6=A1=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .kiro/steering/项目结构说明.md | 4 +-- .../org/jiayunet/service/JobMatchService.java | 4 +-- .../service/UserProfileAnalyzeService.java | 27 ++++++++++--------- 3 files changed, 18 insertions(+), 17 deletions(-) diff --git a/.kiro/steering/项目结构说明.md b/.kiro/steering/项目结构说明.md index 728529d..e66b257 100644 --- a/.kiro/steering/项目结构说明.md +++ b/.kiro/steering/项目结构说明.md @@ -244,11 +244,11 @@ offerpie/back-end ### 整体架构 - **触发时机**:用户访问岗位列表接口(支持筛选条件:地区/岗位类型/行业/工作类型) - **核心流程**:扩展层级筛选 → 查询不感兴趣记录 → 扩展排除列表 → SQL分页查询 → 查询收藏状态 → 批量计算匹配度 → 组装返回 -- **匹配度计算**:教育30% + 经历40% + 技能30%,在Java层批量计算 +- **匹配度计算**:教育30% + 经历30% + 技能40%,在Java层批量计算 ### 匹配度计算规则 -总分公式:`MatchScore = Sedu × 30% + Sexp × 40% + Sskill × 30%` +总分公式:`MatchScore = Sedu × 30% + Sexp × 30% + Sskill × 40%` #### 教育维度(Sedu) - 学校等级分(Srank):1→100, 2→80, 3→60, 4→40 diff --git a/manager/src/main/java/org/jiayunet/service/JobMatchService.java b/manager/src/main/java/org/jiayunet/service/JobMatchService.java index e9e9b37..55f37ba 100644 --- a/manager/src/main/java/org/jiayunet/service/JobMatchService.java +++ b/manager/src/main/java/org/jiayunet/service/JobMatchService.java @@ -71,8 +71,8 @@ public class JobMatchService { int experienceScore = calculateExperienceScore(profile); int skillScore = calculateSkillScore(jobSkillMap.get(job.getId()), userSkillTagSet); - // 加权计算总分:教育30% + 经历40% + 技能30% - int totalScore = (int) Math.round(educationScore * 0.3 + experienceScore * 0.4 + skillScore * 0.3); + // 加权计算总分:教育30% + 经历30% + 技能40% + int totalScore = (int) Math.round(educationScore * 0.3 + experienceScore * 0.3 + skillScore * 0.4); Map map = new HashMap<>(); map.put("educationScore", educationScore); diff --git a/manager/src/main/java/org/jiayunet/service/UserProfileAnalyzeService.java b/manager/src/main/java/org/jiayunet/service/UserProfileAnalyzeService.java index f095d4e..44a0cd9 100644 --- a/manager/src/main/java/org/jiayunet/service/UserProfileAnalyzeService.java +++ b/manager/src/main/java/org/jiayunet/service/UserProfileAnalyzeService.java @@ -224,7 +224,7 @@ public class UserProfileAnalyzeService { */ private void extractSkillTags(Long userId, String profileJson) { String systemPrompt = """ - 你是一个技能提取助手。根据用户简历,提取该用户具备的核心专业能力和工具技能。 + 你是一个技能提取助手。根据用户简历,提取该用户具备的核心专业能力和工具技能,并扩散推断隐含技能。 返回JSON数组格式,如:["java", "spring boot", "mysql", "redis"] 规则: 1. 统一使用小写字母 @@ -233,18 +233,19 @@ public class UserProfileAnalyzeService { 4. 提取范围包括:技术栈、专业领域知识、行业工具、专业资质能力等 5. 不提取纯软技能(如沟通能力、团队协作、学习能力、积极主动) 6. 不提取过于宽泛的标签(如"办公软件"、"windows") - 7. 如果简历中完全没有专业能力体现,返回空数组 [] - 8. 最多15个,按熟练度排序 - 9. 只返回JSON数组,不要其他内容 - 示例1(技术岗): - 输入:3年Java开发经验,熟悉Spring Boot、MySQL、Redis,会PLC编程 - 输出:["java", "spring boot", "mysql", "redis", "plc"] - 示例2(财务岗): - 输入:负责费用管理与审核,月度经营利润分析,会计学专业 - 输出:["财务管理", "会计", "经营分析"] - 示例3(制造岗): - 输入:从事模具开发,熟悉CAD制图,了解注塑成型工艺 - 输出:["模具", "cad", "注塑"] + 7. 扩散提取:除了简历中明确提到的技能,还要推断隐含的基础技能(如提到"spring boot"→补充"java";提到"mybatis"→补充"sql";提到"react"→补充"js") + 8. 如果简历中完全没有专业能力体现,返回空数组 [] + 9. 最多25个,按熟练度排序 + 10. 只返回JSON数组,不要其他内容 + 示例1(技术岗,扩散提取): + 输入:3年Spring Boot开发经验,熟悉MyBatis、Redis + 输出:["spring boot", "java", "mybatis", "redis", "sql", "maven", "git"] + 示例2(财务岗,扩散提取): + 输入:负责费用管理与审核,会计学专业,熟练使用SAP + 输出:["会计", "财务管理", "sap", "excel", "审计"] + 示例3(制造岗,扩散提取): + 输入:从事模具开发,熟悉SolidWorks三维建模 + 输出:["模具", "solidworks", "cad", "机械设计"] 示例4(无专业能力): 输入:具备较强的沟通能力和创新意识,积极主动 输出:[]