|
|
@@ -271,28 +271,50 @@ class AIReviewEngine(BaseReviewer):
|
|
|
async def check_with_semaphore(check_func, **kwargs):
|
|
|
async with self.semaphore:
|
|
|
return await check_func(**kwargs)
|
|
|
+
|
|
|
+ basic_tasks = []
|
|
|
|
|
|
- basic_tasks = [
|
|
|
- check_with_semaphore(self.check_grammar, trace_id_idx=trace_id_idx, review_content=review_content, review_references=None, review_location_label=review_location_label, state=state, stage_name=stage_name),
|
|
|
- check_with_semaphore(self.check_semantic_logic, trace_id_idx=trace_id_idx, review_content=review_content, review_references=None, review_location_label=review_location_label, state=state, stage_name=stage_name),
|
|
|
- #check_with_semaphore(self.check_completeness, trace_id_idx=trace_id_idx, review_content=review_content, review_references=None, review_location_label=review_location_label, state=state, stage_name=stage_name)
|
|
|
- ]
|
|
|
+ if 'sensitive_word_check' in self.task_info.get_review_config_list():
|
|
|
+ basic_tasks.append(
|
|
|
+ check_with_semaphore(self.check_grammar, trace_id_idx=trace_id_idx, review_content=review_content, review_references=None, review_location_label=review_location_label, state=state, stage_name=stage_name),
|
|
|
|
|
|
+ )
|
|
|
+ if 'semantic_logic_check' in self.task_info.get_review_config_list():
|
|
|
+ basic_tasks.append(
|
|
|
+ check_with_semaphore(self.check_semantic_logic, trace_id_idx=trace_id_idx, review_content=review_content, review_references=None, review_location_label=review_location_label, state=state, stage_name=stage_name),
|
|
|
|
|
|
- #grammar_result, semantic_result, completeness_result = await asyncio.gather(*basic_tasks, return_exceptions=True)
|
|
|
- grammar_result, semantic_result = await asyncio.gather(*basic_tasks, return_exceptions=True)
|
|
|
- # 使用公共方法处理结果
|
|
|
- grammar_result = self._process_review_result(grammar_result)
|
|
|
- semantic_result = self._process_review_result(semantic_result)
|
|
|
- #completeness_result = self._process_review_result(completeness_result)
|
|
|
+ )
|
|
|
+
|
|
|
+ # 一次性执行所有任务,避免重复协程调用
|
|
|
+ if not basic_tasks:
|
|
|
+ return {
|
|
|
+ "grammar_check": self._process_review_result(None),
|
|
|
+ "semantic_check": self._process_review_result(None),
|
|
|
+ }
|
|
|
+
|
|
|
+ # 执行任务(只执行一次)
|
|
|
+ results = await asyncio.gather(*basic_tasks, return_exceptions=True)
|
|
|
+
|
|
|
+ # 根据配置项分配结果
|
|
|
+ grammar_result = self._process_review_result(None)
|
|
|
+ semantic_result = self._process_review_result(None)
|
|
|
+
|
|
|
+ result_index = 0
|
|
|
+
|
|
|
+ if 'sensitive_word_check' in self.task_info.get_review_config_list():
|
|
|
+ if result_index < len(results):
|
|
|
+ grammar_result = self._process_review_result(results[result_index])
|
|
|
+ result_index += 1
|
|
|
+
|
|
|
+ if 'semantic_logic_check' in self.task_info.get_review_config_list():
|
|
|
+ if result_index < len(results):
|
|
|
+ semantic_result = self._process_review_result(results[result_index])
|
|
|
+ result_index += 1
|
|
|
|
|
|
return {
|
|
|
'grammar_check': grammar_result,
|
|
|
'semantic_check': semantic_result,
|
|
|
- #'completeness_check': completeness_result,
|
|
|
- 'overall_score': "None"
|
|
|
}
|
|
|
-
|
|
|
async def technical_compliance_check(self,trace_id_idx: str, unit_content: Dict[str, Any],
|
|
|
review_location_label: str,state:str,stage_name:str) -> Dict[str, Any]:
|
|
|
"""
|
|
|
@@ -320,22 +342,57 @@ class AIReviewEngine(BaseReviewer):
|
|
|
async with self.semaphore:
|
|
|
return await check_func(**kwargs)
|
|
|
|
|
|
- # 并发执行技术性检查任务,使用新的非参数和参数合规性检查
|
|
|
- technical_tasks = [
|
|
|
- check_with_semaphore(self.check_non_parameter_compliance, trace_id_idx=trace_id_idx, review_content=review_content, review_references=review_references, reference_source=reference_source, review_location_label=review_location_label, state=state, stage_name=stage_name),
|
|
|
- check_with_semaphore(self.check_parameter_compliance, trace_id_idx=trace_id_idx, review_content=review_content, review_references=review_references, reference_source=reference_source, review_location_label=review_location_label, state=state, stage_name=stage_name)
|
|
|
- ]
|
|
|
+ # 根据配置动态创建技术性检查任务
|
|
|
+ technical_tasks = []
|
|
|
+ task_mapping = [] # 任务名称映射
|
|
|
+
|
|
|
+ if 'non_parameter_compliance_check' in self.task_info.get_review_config_list():
|
|
|
+ task_mapping.append('non_parameter_compliance')
|
|
|
+ technical_tasks.append(
|
|
|
+ check_with_semaphore(self.check_non_parameter_compliance, trace_id_idx=trace_id_idx,
|
|
|
+ review_content=review_content, review_references=review_references,
|
|
|
+ reference_source=reference_source, review_location_label=review_location_label,
|
|
|
+ state=state, stage_name=stage_name)
|
|
|
+ )
|
|
|
+
|
|
|
+ if 'parameter_compliance_check' in self.task_info.get_review_config_list():
|
|
|
+ task_mapping.append('parameter_compliance')
|
|
|
+ technical_tasks.append(
|
|
|
+ check_with_semaphore(self.check_parameter_compliance, trace_id_idx=trace_id_idx,
|
|
|
+ review_content=review_content, review_references=review_references,
|
|
|
+ reference_source=reference_source, review_location_label=review_location_label,
|
|
|
+ state=state, stage_name=stage_name)
|
|
|
+ )
|
|
|
+
|
|
|
+ # 一次性执行所有任务,避免重复协程调用
|
|
|
+ if not technical_tasks:
|
|
|
+ return {
|
|
|
+ "non_parameter_compliance": self._process_review_result(None),
|
|
|
+ "parameter_compliance": self._process_review_result(None),
|
|
|
+ }
|
|
|
+
|
|
|
+ # 执行任务(只执行一次)
|
|
|
+ results = await asyncio.gather(*technical_tasks, return_exceptions=True)
|
|
|
+
|
|
|
+ # 根据配置项分配结果
|
|
|
+ non_parameter_result = self._process_review_result(None)
|
|
|
+ parameter_result = self._process_review_result(None)
|
|
|
+
|
|
|
+ result_index = 0
|
|
|
|
|
|
- non_parameter_result, parameter_result = await asyncio.gather(*technical_tasks, return_exceptions=True)
|
|
|
+ if 'non_parameter_compliance_check' in self.task_info.get_review_config_list():
|
|
|
+ if result_index < len(results):
|
|
|
+ non_parameter_result = self._process_review_result(results[result_index])
|
|
|
+ result_index += 1
|
|
|
|
|
|
- # 使用公共方法处理结果
|
|
|
- non_parameter_result = self._process_review_result(non_parameter_result)
|
|
|
- parameter_result = self._process_review_result(parameter_result)
|
|
|
+ if 'parameter_compliance_check' in self.task_info.get_review_config_list():
|
|
|
+ if result_index < len(results):
|
|
|
+ parameter_result = self._process_review_result(results[result_index])
|
|
|
+ result_index += 1
|
|
|
|
|
|
return {
|
|
|
'non_parameter_compliance': non_parameter_result,
|
|
|
- 'parameter_compliance': parameter_result,
|
|
|
- 'overall_score': self._calculate_technical_score(non_parameter_result, parameter_result)
|
|
|
+ 'parameter_compliance': parameter_result
|
|
|
}
|
|
|
|
|
|
def rag_enhanced_check(self, unit_content: Dict[str, Any]) -> Dict[str, Any]:
|