修改bug:招聘者:候选者列表中,工作经验的“年限时长“数据好想不太正确
This commit is contained in:
@@ -154,6 +154,25 @@ public class ResumeTextExtractor {
|
||||
* 3. 设置合理的经验范围限制(1-30年)
|
||||
* 4. 如果无法估算,返回随机的合理值(2-10年)
|
||||
*
|
||||
* TODO: 修复工作年限计算错误 - Bug修复说明
|
||||
* 问题:原有算法直接用 endYear - earliestYear 计算工作年限,
|
||||
* 这会导致将教育时间也计算在内,例如:
|
||||
* - 2006年上大学,2025年工作 = 19年(错误)
|
||||
* - 实际应该是2010年毕业后开始工作,约15年
|
||||
*
|
||||
* 修复方案:
|
||||
* 1. 优先使用AI解析的experienceYear字段(已在AI提示词中修复)
|
||||
* 2. 此方法作为备用估算,采用保守策略:
|
||||
* - 假设教育时间约4年(本科)
|
||||
* - 从最早年份+4年开始计算工作经验
|
||||
* - 这样可以避免将教育时间计入工作年限
|
||||
* 3. 如果年份跨度小于4年,说明可能没有教育经历,直接计算
|
||||
*
|
||||
* 注意:这只是备用估算方法,主要依赖AI解析的准确结果
|
||||
*
|
||||
* 修改日期:2026-02-04
|
||||
* 修改人:sxc
|
||||
*
|
||||
* @param text 简历文本
|
||||
* @return 估算的工作经验年数
|
||||
*/
|
||||
@@ -178,9 +197,25 @@ public class ResumeTextExtractor {
|
||||
int latestYear = years.get(years.size() - 1);
|
||||
int currentYear = Year.now().getValue();
|
||||
|
||||
// 计算工作经验:从最早年份到最新年份(不超过当前年份)
|
||||
// 计算工作经验:从最新年份(不超过当前年份)
|
||||
int endYear = Math.min(latestYear, currentYear);
|
||||
int experience = endYear - earliestYear;
|
||||
|
||||
// TODO: 修复点 - 排除教育时间
|
||||
// 假设教育时间约4年,从最早年份+4年开始计算工作经验
|
||||
// 这样可以避免将大学时间计入工作年限
|
||||
int yearSpan = endYear - earliestYear;
|
||||
int experience;
|
||||
|
||||
if (yearSpan <= 4) {
|
||||
// 如果年份跨度小于等于4年,说明可能没有教育经历或者是短期工作
|
||||
// 直接使用年份差
|
||||
experience = yearSpan;
|
||||
} else {
|
||||
// 年份跨度大于4年,假设前4年是教育时间
|
||||
// 从最早年份+4年开始计算工作经验
|
||||
int workStartYear = earliestYear + 4;
|
||||
experience = endYear - workStartYear;
|
||||
}
|
||||
|
||||
// 限制经验年数在合理范围内(1-30年)
|
||||
return Math.max(1, Math.min(experience, 30));
|
||||
|
||||
Reference in New Issue
Block a user