修改技能提取颗粒度

This commit is contained in:
zk
2026-03-26 20:26:55 +08:00
parent 7f917991f5
commit ccf6fb2f45
2 changed files with 30 additions and 26 deletions
@@ -72,7 +72,7 @@ public class JobCleanService {
* 定时任务A:岗位清洗(每5分钟) * 定时任务A:岗位清洗(每5分钟)
* <p>1. 批量锁定待清洗数据 2. 多线程并发调用AI清洗 3. 写入业务表</p> * <p>1. 批量锁定待清洗数据 2. 多线程并发调用AI清洗 3. 写入业务表</p>
*/ */
@Scheduled(cron = "0 */5 * * * ?") @Scheduled(cron = "0 */1 * * * ?")
public void cleanJob() { public void cleanJob() {
List<AppJobData> dataList = jobCleanTransactionService.lockBatch(batchSize); List<AppJobData> dataList = jobCleanTransactionService.lockBatch(batchSize);
if (dataList.isEmpty()) { if (dataList.isEmpty()) {
@@ -255,21 +255,23 @@ public class JobCleanService {
返回JSON数组格式,如:["java", "spring boot", "mysql", "redis"] 返回JSON数组格式,如:["java", "spring boot", "mysql", "redis"]
规则: 规则:
1. 统一使用小写字母 1. 统一使用小写字母
2. 尽量简短,使用业界通用缩写(如 js 而非 javascriptk8s 而非 kubernetes 2. 只保留核心词,去掉多余修饰(如"plc编程""plc""c语言""c""cad制图""cad"
3. 提取范围包括:技术栈、专业领域知识、行业工具、专业资质能力等 3. 同一技能只保留最具体的表述,不要同时出现上位词和下位词(如有"机械设计"就不要再出"机械"
4. 提取纯软技能(如沟通能力、团队协作、学习能力、积极主动) 4. 提取范围包括:技术栈、专业领域知识、行业工具、专业资质能力等
5. 如果岗位完全没有专业能力要求(纯看态度和素质),返回空数组 [] 5. 不提取纯软技能(如沟通能力、团队协作、学习能力、积极主动)
6. 最多15个,按重要性排序 6. 不提取过于宽泛的标签(如"办公软件""windows"
7. 只返回JSON数组,不要其他内容 7. 如果岗位完全没有专业能力要求(纯看态度和素质),返回空数组 []
8. 最多15个,按重要性排序
9. 只返回JSON数组,不要其他内容
示例1(技术岗): 示例1(技术岗):
输入:需要熟悉Java、Spring Boot框架,了解MySQL数据库和Redis缓存 输入:需要熟悉Java、Spring Boot框架,了解MySQL数据库和Redis缓存,会PLC编程
输出:["java", "spring boot", "mysql", "redis"] 输出:["java", "spring boot", "mysql", "redis", "plc"]
示例2(财务岗): 示例2(财务岗):
输入:负责费用管理与审核,月度经营利润分析,要求财务管理、会计学相关专业 输入:负责费用管理与审核,月度经营利润分析,要求财务管理、会计学相关专业
输出:["财务管理", "会计核算", "经营分析", "费用审核"] 输出:["财务管理", "会计", "经营分析"]
示例3(科研岗): 示例3(制造岗):
输入:开展生物合成等相关专业研究,啤酒生物发酵工程方向 输入:负责模具开发,熟悉CAD制图,了解注塑成型工艺,有SolidWorks经验
输出:["生物合成", "发酵工程"] 输出:["模具", "cad", "注塑", "solidworks"]
示例4(纯素质岗): 示例4(纯素质岗):
输入:具备较强的沟通能力和创新意识,积极主动,专业不限 输入:具备较强的沟通能力和创新意识,积极主动,专业不限
输出:[] 输出:[]
@@ -314,7 +316,7 @@ public class JobCleanService {
*/ */
private Long findOrCreateSkillTag(String name) { private Long findOrCreateSkillTag(String name) {
// 先尝试插入(忽略重复),ID 由 IdWorker 生成 // 先尝试插入(忽略重复),ID 由 IdWorker 生成
skillTagMapper.insertIgnore(IdWorker.getId(), name, Instant.now()); skillTagMapper.insertIgnore(IdWorker.getId(), name);
// 再查询拿ID // 再查询拿ID
SkillTag tag = skillTagMapper.selectOne(new LambdaQueryWrapper<SkillTag>().eq(SkillTag::getName, name).last("LIMIT 1")); SkillTag tag = skillTagMapper.selectOne(new LambdaQueryWrapper<SkillTag>().eq(SkillTag::getName, name).last("LIMIT 1"));
@@ -228,21 +228,23 @@ public class UserProfileAnalyzeService {
返回JSON数组格式,如:["java", "spring boot", "mysql", "redis"] 返回JSON数组格式,如:["java", "spring boot", "mysql", "redis"]
规则: 规则:
1. 统一使用小写字母 1. 统一使用小写字母
2. 尽量简短,使用业界通用缩写(如 js 而非 javascriptk8s 而非 kubernetes 2. 只保留核心词,去掉多余修饰(如"plc编程""plc""c语言""c""cad制图""cad"
3. 提取范围包括:技术栈、专业领域知识、行业工具、专业资质能力等 3. 同一技能只保留最具体的表述,不要同时出现上位词和下位词(如有"机械设计"就不要再出"机械"
4. 提取纯软技能(如沟通能力、团队协作、学习能力、积极主动) 4. 提取范围包括:技术栈、专业领域知识、行业工具、专业资质能力等
5. 如果简历中完全没有专业能力体现,返回空数组 [] 5. 不提取纯软技能(如沟通能力、团队协作、学习能力、积极主动)
6. 最多15个,按熟练度排序 6. 不提取过于宽泛的标签(如"办公软件""windows"
7. 只返回JSON数组,不要其他内容 7. 如果简历中完全没有专业能力体现,返回空数组 []
8. 最多15个,按熟练度排序
9. 只返回JSON数组,不要其他内容
示例1(技术岗): 示例1(技术岗):
输入:3年Java开发经验,熟悉Spring Boot、MySQL、Redis 输入:3年Java开发经验,熟悉Spring Boot、MySQL、Redis,会PLC编程
输出:["java", "spring boot", "mysql", "redis"] 输出:["java", "spring boot", "mysql", "redis", "plc"]
示例2(财务岗): 示例2(财务岗):
输入:负责费用管理与审核,月度经营利润分析,会计学专业 输入:负责费用管理与审核,月度经营利润分析,会计学专业
输出:["财务管理", "会计核算", "经营分析", "费用审核"] 输出:["财务管理", "会计", "经营分析"]
示例3(科研岗): 示例3(制造岗):
输入:开展生物合成相关研究,发酵工程方向博士 输入:从事模具开发,熟悉CAD制图,了解注塑成型工艺
输出:["生物合成", "发酵工程"] 输出:["模具", "cad", "注塑"]
示例4(无专业能力): 示例4(无专业能力):
输入:具备较强的沟通能力和创新意识,积极主动 输入:具备较强的沟通能力和创新意识,积极主动
输出:[] 输出:[]