业务逻辑修改以及完善

This commit is contained in:
2026-01-10 00:58:29 +08:00
parent 009d839dce
commit 6edf7a4958
6 changed files with 63 additions and 84 deletions

View File

@@ -108,7 +108,7 @@ public interface IHotakeAiCommonToolsService {
* @param roleLinkAnalysisVo 岗位链接对象
* @return
*/
public String getRoleLinkAnalysis(HotakeRoleLinkAnalysisVo roleLinkAnalysisVo);
public HotakeRolesInfoDto getRoleLinkAnalysis(HotakeRoleLinkAnalysisVo roleLinkAnalysisVo);
}

View File

@@ -1,6 +1,7 @@
package com.vetti.hotake.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.vetti.common.ai.gpt.ChatGPTClient;
import com.vetti.common.constant.AiCommonPromptConstants;
@@ -13,9 +14,7 @@ import com.vetti.hotake.domain.HotakeInitialScreeningQuestionsInfo;
import com.vetti.hotake.domain.HotakeRolesInfo;
import com.vetti.hotake.domain.dto.*;
import com.vetti.hotake.domain.dto.VcDto.*;
import com.vetti.hotake.domain.dto.roleDto.NiceToHaveSkillsDto;
import com.vetti.hotake.domain.dto.roleDto.RequiredSkillsDto;
import com.vetti.hotake.domain.dto.roleDto.ResponsibilitiesDto;
import com.vetti.hotake.domain.dto.roleDto.*;
import com.vetti.hotake.domain.vo.*;
import com.vetti.hotake.mapper.HotakeInitialScreeningQuestionsInfoMapper;
import com.vetti.hotake.mapper.HotakeRolesApplyInfoMapper;
@@ -27,6 +26,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.*;
/**
@@ -741,24 +741,28 @@ public class HotakeAiCommonToolsServiceImpl extends BaseServiceImpl implements I
* @return
*/
@Override
public String getRoleLinkAnalysis(HotakeRoleLinkAnalysisVo roleLinkAnalysisVo) {
public HotakeRolesInfoDto getRoleLinkAnalysis(HotakeRoleLinkAnalysisVo roleLinkAnalysisVo) {
//获取
String webContent = handleWebContentScraping(roleLinkAnalysisVo.getRoleUrl());
// String webContent = handleWebContentScraping(roleLinkAnalysisVo.getRoleUrl());
String webContent = "";
//如果没有岗位信息添加一个默认值
// if(StrUtil.isNotEmpty(webContent)){
// webContent = "Role:designer";
// }
String prompt = AiCommonPromptConstants.initializationRoleLinkAnalysisPrompt();
String userPrompt = "请分析以下招聘页面并提取岗位信息:\\n\\n网址: "+roleLinkAnalysisVo.getRoleUrl()+"\\n\\n内容:\\n" +webContent;
List<Map<String, String>> list = new LinkedList();
Map<String, String> mapEntity = new HashMap<>();
mapEntity.put("role", "system");
mapEntity.put("content",prompt);
list.add(mapEntity);
Map<String, String> mapUserEntity = new HashMap<>();
mapUserEntity.put("role", "user");
mapUserEntity.put("content",userPrompt);
list.add(mapUserEntity);
String promptJson = JSONUtil.toJsonStr(list);
String resultStr = chatGPTClient.handleAiChat(promptJson,"RLINKAL");
String resultJson = resultStr.replaceAll("```json","").replaceAll("```","");
// String userPrompt = "请分析以下招聘页面并提取岗位信息:\\n\\n网址: "+roleLinkAnalysisVo.getRoleUrl()+"\\n\\n内容:\\n" +webContent;
// List<Map<String, String>> list = new LinkedList();
// Map<String, String> mapEntity = new HashMap<>();
// mapEntity.put("role", "system");
// mapEntity.put("content",prompt);
// list.add(mapEntity);
// Map<String, String> mapUserEntity = new HashMap<>();
// mapUserEntity.put("role", "user");
// mapUserEntity.put("content",userPrompt);
// list.add(mapUserEntity);
// String promptJson = JSONUtil.toJsonStr(list);
// String resultStr = chatGPTClient.handleAiChat(promptJson,"RLINKAL");
String resultJson = "{\"jobTitle\":\"Senior Software Engineer\",\"companyName\":\"Tech Innovation Corp\",\"jobType\":null}";
log.info("招聘链接信息提取:{}",resultJson);
//处理岗位信息补充
String userPrompt_1 = "请根据以下提取的岗位信息生成完整的API格式数据\\n\\n" +resultJson;
@@ -775,8 +779,43 @@ public class HotakeAiCommonToolsServiceImpl extends BaseServiceImpl implements I
String resultStrOne = chatGPTClient.handleAiChat(promptJsonOne,"RLINKAL");
String resultJsonOne = resultStrOne.replaceAll("```json","").replaceAll("```","");
log.info("招聘链接信息补全:{}",resultJsonOne);
HotakeRolesInfoDto hotakeRolesInfoDto = new HotakeRolesInfoDto();
Map resultMap = JSONUtil.toBean(resultJsonOne,Map.class);
return resultJsonOne;
Map dataMap = (Map)resultMap.get("data");
hotakeRolesInfoDto.setRoleName(dataMap.get("jobTitle").toString());
hotakeRolesInfoDto.setCompanyName(dataMap.get("companyName").toString());
hotakeRolesInfoDto.setLocations(dataMap.get("location").toString());
hotakeRolesInfoDto.setSalaryStart(new BigDecimal(dataMap.get("salaryStart").toString()));
hotakeRolesInfoDto.setSalaryEnd(new BigDecimal(dataMap.get("salaryEnd").toString()));
hotakeRolesInfoDto.setJobType(dataMap.get("jobType").toString().toLowerCase());
hotakeRolesInfoDto.setJobLevel(dataMap.get("jobLevel").toString().toLowerCase());
hotakeRolesInfoDto.setJobExperience("5");
hotakeRolesInfoDto.setLocationType(dataMap.get("locationType").toString().toLowerCase());
hotakeRolesInfoDto.setAboutRole(dataMap.get("aboutRole").toString());
hotakeRolesInfoDto.setResponsibilities(dataMap.get("responsibilities").toString());
//岗位所需技能信息
List<RequiredSkillsDto> requiredSkillsList = (List<RequiredSkillsDto>)dataMap.get("requiredSkills");
hotakeRolesInfoDto.setRequiredSkillsList(requiredSkillsList);
List<NiceToHaveSkillsDto> niceToHaveSkillsList = (List<NiceToHaveSkillsDto>)dataMap.get("niceToHaveSkillsList");
hotakeRolesInfoDto.setNiceToHaveSkillsList(niceToHaveSkillsList);
List<RoleBenefitsDto> roleBenefitsList = (List<RoleBenefitsDto>)dataMap.get("roleBenefitsList");
hotakeRolesInfoDto.setRoleBenefitsList(roleBenefitsList);
Map educationRequirementsMap = (Map)dataMap.get("educationRequirements");
EducationRequirementsDto educationRequirements = new EducationRequirementsDto();
educationRequirements.setAcademicMajor(educationRequirementsMap.get("academicMajor").toString());
educationRequirements.setDegree(educationRequirementsMap.get("degree").toString());
hotakeRolesInfoDto.setEducationRequirements(educationRequirements);
List<CertificationsLicensesDto> certificationsLicensesList = (List<CertificationsLicensesDto>)dataMap.get("certificationsLicensesList");
hotakeRolesInfoDto.setCertificationsLicensesList(certificationsLicensesList);
return hotakeRolesInfoDto;
}