|
@@ -260,7 +260,7 @@ def _handle_recruitment_task(created_by, data=None):
|
|
# 创建解析任务记录
|
|
# 创建解析任务记录
|
|
parse_task = ParseTaskRepository(
|
|
parse_task = ParseTaskRepository(
|
|
task_name=task_name,
|
|
task_name=task_name,
|
|
- task_status='成功', # 招聘任务不需要实际解析操作,直接设置为成功
|
|
|
|
|
|
+ task_status='待解析', # 招聘任务不需要实际解析操作,直接设置为成功
|
|
task_type='招聘',
|
|
task_type='招聘',
|
|
task_source=task_source,
|
|
task_source=task_source,
|
|
collection_count=len(task_source), # 招聘任务的数据项数量
|
|
collection_count=len(task_source), # 招聘任务的数据项数量
|
|
@@ -858,7 +858,8 @@ def add_single_talent(talent_data, minio_path=None, task_type=None):
|
|
talent_data,
|
|
talent_data,
|
|
talent_data.get('image_path', ''), # 从talent_data获取图片路径
|
|
talent_data.get('image_path', ''), # 从talent_data获取图片路径
|
|
duplicate_check['suspected_duplicates'],
|
|
duplicate_check['suspected_duplicates'],
|
|
- duplicate_check['reason']
|
|
|
|
|
|
+ duplicate_check['reason'],
|
|
|
|
+ task_type=task_type # 传递task_type参数
|
|
)
|
|
)
|
|
|
|
|
|
# 更新origin_source字段,将talent_data提供的origin_source与现有的origin_source进行合并
|
|
# 更新origin_source字段,将talent_data提供的origin_source与现有的origin_source进行合并
|
|
@@ -1080,6 +1081,8 @@ def add_parsed_talents(api_response_data):
|
|
processed_results = []
|
|
processed_results = []
|
|
success_count = 0
|
|
success_count = 0
|
|
failed_count = 0
|
|
failed_count = 0
|
|
|
|
+ success_messages = [] # 收集成功处理的message信息
|
|
|
|
+ failed_messages = [] # 收集失败处理的message信息
|
|
|
|
|
|
# 逐一处理每个结果项
|
|
# 逐一处理每个结果项
|
|
for i, talent_data in enumerate(results):
|
|
for i, talent_data in enumerate(results):
|
|
@@ -1089,22 +1092,26 @@ def add_parsed_talents(api_response_data):
|
|
# 验证人才数据格式
|
|
# 验证人才数据格式
|
|
if not talent_data or not isinstance(talent_data, dict):
|
|
if not talent_data or not isinstance(talent_data, dict):
|
|
failed_count += 1
|
|
failed_count += 1
|
|
|
|
+ error_msg = '人才数据格式无效,必须是字典格式'
|
|
processed_results.append({
|
|
processed_results.append({
|
|
'index': i,
|
|
'index': i,
|
|
'success': False,
|
|
'success': False,
|
|
- 'message': '人才数据格式无效,必须是字典格式'
|
|
|
|
|
|
+ 'message': error_msg
|
|
})
|
|
})
|
|
|
|
+ failed_messages.append(f"第{i+1}条记录: {error_msg}")
|
|
logging.warning(f"第 {i+1} 条记录人才数据格式无效")
|
|
logging.warning(f"第 {i+1} 条记录人才数据格式无效")
|
|
continue
|
|
continue
|
|
|
|
|
|
# 检查必要字段
|
|
# 检查必要字段
|
|
if not talent_data.get('name_zh'):
|
|
if not talent_data.get('name_zh'):
|
|
failed_count += 1
|
|
failed_count += 1
|
|
|
|
+ error_msg = '人才数据缺少必要字段name_zh'
|
|
processed_results.append({
|
|
processed_results.append({
|
|
'index': i,
|
|
'index': i,
|
|
'success': False,
|
|
'success': False,
|
|
- 'message': '人才数据缺少必要字段name_zh'
|
|
|
|
|
|
+ 'message': error_msg
|
|
})
|
|
})
|
|
|
|
+ failed_messages.append(f"第{i+1}条记录: {error_msg}")
|
|
logging.warning(f"第 {i+1} 条记录缺少name_zh字段")
|
|
logging.warning(f"第 {i+1} 条记录缺少name_zh字段")
|
|
continue
|
|
continue
|
|
|
|
|
|
@@ -1134,21 +1141,25 @@ def add_parsed_talents(api_response_data):
|
|
logging.error(f"更新parsed_talents记录状态失败: {str(update_error)}")
|
|
logging.error(f"更新parsed_talents记录状态失败: {str(update_error)}")
|
|
|
|
|
|
success_count += 1
|
|
success_count += 1
|
|
|
|
+ talent_message = talent_result.get('message', f'成功处理人员: {talent_data.get("name_zh", "未知")}')
|
|
|
|
+ success_messages.append(f"第{i+1}条记录: {talent_message}")
|
|
processed_results.append({
|
|
processed_results.append({
|
|
'index': i,
|
|
'index': i,
|
|
'success': True,
|
|
'success': True,
|
|
'error': None,
|
|
'error': None,
|
|
- 'message': f'成功处理人员: {talent_data.get("name_zh", "未知")}'
|
|
|
|
|
|
+ 'message': talent_message
|
|
})
|
|
})
|
|
logging.debug(f"成功处理第 {i+1} 条记录")
|
|
logging.debug(f"成功处理第 {i+1} 条记录")
|
|
else:
|
|
else:
|
|
failed_count += 1
|
|
failed_count += 1
|
|
|
|
+ error_msg = talent_result.get('message', '处理失败')
|
|
processed_results.append({
|
|
processed_results.append({
|
|
'index': i,
|
|
'index': i,
|
|
'success': False,
|
|
'success': False,
|
|
- 'message': talent_result.get('message', '处理失败')
|
|
|
|
|
|
+ 'message': error_msg
|
|
})
|
|
})
|
|
- logging.error(f"处理第 {i+1} 条记录失败: {talent_result.get('message', '未知错误')}")
|
|
|
|
|
|
+ failed_messages.append(f"第{i+1}条记录: {error_msg}")
|
|
|
|
+ logging.error(f"处理第 {i+1} 条记录失败: {error_msg}")
|
|
except Exception as talent_error:
|
|
except Exception as talent_error:
|
|
failed_count += 1
|
|
failed_count += 1
|
|
error_msg = f"处理人才数据异常: {str(talent_error)}"
|
|
error_msg = f"处理人才数据异常: {str(talent_error)}"
|
|
@@ -1157,6 +1168,7 @@ def add_parsed_talents(api_response_data):
|
|
'success': False,
|
|
'success': False,
|
|
'message': error_msg
|
|
'message': error_msg
|
|
})
|
|
})
|
|
|
|
+ failed_messages.append(f"第{i+1}条记录: {error_msg}")
|
|
logging.error(error_msg, exc_info=True)
|
|
logging.error(error_msg, exc_info=True)
|
|
|
|
|
|
except Exception as item_error:
|
|
except Exception as item_error:
|
|
@@ -1167,6 +1179,7 @@ def add_parsed_talents(api_response_data):
|
|
'success': False,
|
|
'success': False,
|
|
'message': error_msg
|
|
'message': error_msg
|
|
})
|
|
})
|
|
|
|
+ failed_messages.append(f"第{i+1}条记录: {error_msg}")
|
|
logging.error(error_msg, exc_info=True)
|
|
logging.error(error_msg, exc_info=True)
|
|
|
|
|
|
# 组装最终结果
|
|
# 组装最终结果
|
|
@@ -1181,24 +1194,35 @@ def add_parsed_talents(api_response_data):
|
|
'processed_time': datetime.now().isoformat()
|
|
'processed_time': datetime.now().isoformat()
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ # 构建详细的message信息
|
|
|
|
+ detailed_message = f"批量处理完成,成功 {success_count} 条,失败 {failed_count} 条"
|
|
|
|
+
|
|
|
|
+ # 添加成功处理的详细信息
|
|
|
|
+ if success_messages:
|
|
|
|
+ detailed_message += f"。成功处理详情: {'; '.join(success_messages)}"
|
|
|
|
+
|
|
|
|
+ # 添加失败处理的详细信息
|
|
|
|
+ if failed_messages:
|
|
|
|
+ detailed_message += f"。失败处理详情: {'; '.join(failed_messages)}"
|
|
|
|
+
|
|
# 根据处理结果返回相应的状态
|
|
# 根据处理结果返回相应的状态
|
|
if failed_count == 0:
|
|
if failed_count == 0:
|
|
return {
|
|
return {
|
|
'code': 200,
|
|
'code': 200,
|
|
'success': True,
|
|
'success': True,
|
|
- 'message': f'批量处理完成,全部 {success_count} 条记录处理成功'
|
|
|
|
|
|
+ 'message': detailed_message
|
|
}
|
|
}
|
|
elif success_count == 0:
|
|
elif success_count == 0:
|
|
return {
|
|
return {
|
|
'code': 500,
|
|
'code': 500,
|
|
'success': False,
|
|
'success': False,
|
|
- 'message': f'批量处理失败,全部 {failed_count} 条记录处理失败'
|
|
|
|
|
|
+ 'message': detailed_message
|
|
}
|
|
}
|
|
else:
|
|
else:
|
|
return {
|
|
return {
|
|
'code': 206, # Partial Content
|
|
'code': 206, # Partial Content
|
|
'success': True,
|
|
'success': True,
|
|
- 'message': f'批量处理部分成功,成功 {success_count} 条,失败 {failed_count} 条'
|
|
|
|
|
|
+ 'message': detailed_message
|
|
}
|
|
}
|
|
|
|
|
|
except Exception as e:
|
|
except Exception as e:
|