Преглед на файлове

v0.0.4-debug
- 优化整体大纲完整性审查项为英文字段—> completeness_check
- 禁用核心审查项中的未实现的条纹完整性审查

WangXuMing преди 2 месеца
родител
ревизия
389dc2bd6c

+ 11 - 24
core/construction_review/component/ai_review_engine.py

@@ -237,11 +237,11 @@ class AIReviewEngine(BaseReviewer):
             outline_review_result = None
 
         # 确保目录存在
-        import os
-        os.makedirs("temp/outline_result_temp", exist_ok=True)
+        # import os
+        # os.makedirs("temp/outline_result_temp", exist_ok=True)
 
-        with open("temp/outline_result_temp/outline_result.json","w",encoding="utf-8") as f:
-            json.dump(outline_review_result,f,ensure_ascii=False,indent=4)
+        # # with open("temp/outline_result_temp/outline_result.json","w",encoding="utf-8") as f:
+        # #     json.dump(outline_review_result,f,ensure_ascii=False,indent=4)
         # 返回提取的大纲结果和审查结果
         return {
             'outline_review_result': outline_review_result
@@ -275,22 +275,22 @@ class AIReviewEngine(BaseReviewer):
         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)
+            #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)
         ]
 
 
-        grammar_result, semantic_result, completeness_result = await asyncio.gather(*basic_tasks, return_exceptions=True)
-
+        #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)
+        #completeness_result = self._process_review_result(completeness_result)
 
         return {
             'grammar_check': grammar_result,
             'semantic_check': semantic_result,
-            'completeness_check': completeness_result,
-            'overall_score': self._calculate_basic_score(grammar_result, semantic_result, completeness_result)
+            #'completeness_check': completeness_result,
+            'overall_score': "None"
         }
 
     async def technical_compliance_check(self,trace_id_idx: str, unit_content: Dict[str, Any],
@@ -488,7 +488,7 @@ class AIReviewEngine(BaseReviewer):
 
     # RAG检索增强
 
-    def _calculate_basic_score(self, grammar: Dict, semantic: Dict, completeness: Dict) -> float:
+    def _calculate_basic_score(self, grammar: Dict, semantic: Dict, completeness: Dict =None) -> float:
         """
         计算基础合规性得分
 
@@ -502,19 +502,6 @@ class AIReviewEngine(BaseReviewer):
         """
         return (grammar.get('score', 0) + semantic.get('score', 0) + completeness.get('score', 0)) / 3
 
-    def _calculate_technical_score(self, non_parameter: Dict, parameter: Dict) -> float:
-        """
-        计算技术合规性得分
-
-        Args:
-            non_parameter: 非参数合规性检查结果
-            parameter: 参数合规性检查结果
-
-        Returns:
-            float: 技术合规性平均得分
-        """
-        return (non_parameter.get('compliance_rate', 0) + parameter.get('accuracy', 0)) / 2
-
     async def prep_basis_review(self, review_data: Dict[str, Any], trace_id: str,
                                 state: dict = None, stage_name: str = None) -> Dict[str, Any]:
         """

+ 2 - 2
core/construction_review/component/reviewers/outline_reviewer.py

@@ -219,9 +219,9 @@ class OutlineReviewer:
 
         if json_data and isinstance(json_data, list):
             for item in json_data:
-                overall_completeness_result.append(self.inter_tool._create_issue_item(item, "整体大纲完整性检查"))
+                overall_completeness_result.append(self.inter_tool._create_issue_item(item, "completeness_check"))
         elif json_data and isinstance(json_data, dict):
-            overall_completeness_result.append(self.inter_tool._create_issue_item(json_data, "整体大纲完整性检查"))
+            overall_completeness_result.append(self.inter_tool._create_issue_item(json_data, "completeness_check"))
         #filtered_issues = [r for r in overall_completeness_result if self._is_non_compliant_item(r)]
         # 只统计exist_issue为true的项目数量
         issue_count = sum(1 for item in overall_completeness_result if item.get('exist_issue', False))

+ 40 - 11
core/construction_review/workflows/ai_review_workflow.py

@@ -283,13 +283,16 @@ class AIReviewWorkflow:
                 }
 
 
-
+            await self.core_fun._send_start_review_progress(state, total_units)
             # 2. 执行基础并发审查
             logger.info(f"开始执行并发审查,任务ID: {state['callback_task_id']}")
             successful_results = await self.core_fun._execute_concurrent_reviews(review_chunks, total_units, state)
             logger.info(f"并发审查完成,成功结果: {len(successful_results)}, 任务ID: {state['callback_task_id']}")
 
-            await self.core_fun._send_start_review_progress(state, total_units)
+            
+
+            # 开始大纲审查
+            await self.core_fun._send_start_review_progress(state, total_units,'outline')
             completeness_check = "completeness_check" in  self.task_info.get_review_config_list()
             if not completeness_check:
                 logger.info(f"跳过执行大纲审查")
@@ -300,6 +303,7 @@ class AIReviewWorkflow:
                                                     state, state.get("stage_name", "大纲审查"))
                 
             # 4. 执行编制依据审查
+            #await self.core_fun._send_start_review_progress(state, total_units,'prpe_basis')
             prep_basis_check = "prep_basis_check" in self.task_info.get_review_config_list() or "timeliness_check" in self.task_info.get_review_config_list() or "reference_check" in self.task_info.get_review_config_list()
             prep_basis_review_result = None
             logger.info(f"执行编制依据审查")
@@ -800,7 +804,7 @@ class AIReviewCoreFun:
                 overall_risk="error"
             )
 
-    async def _send_start_review_progress(self, state: AIReviewState, total_units: int) -> None:
+    async def _send_start_review_progress(self, state: AIReviewState, total_units: int = None, review_type : str =None) -> None:
         """
         发送开始审查的进度更新
 
@@ -808,16 +812,41 @@ class AIReviewCoreFun:
             state: AI审查状态
             total_units: 总审查单元数
         """
+
+
         try:
+            
+
             if state["progress_manager"]:
-                await state["progress_manager"].update_stage_progress(
-                    callback_task_id=state["callback_task_id"],
-                    stage_name="AI审查",
-                    current=0,
-                    status="processing",
-                    message=f"开始AI审查,共 {total_units} 个审查单元",
-                    event_type="processing"
-                )
+                if  review_type is "outline":
+                    await state["progress_manager"].update_stage_progress(
+                        callback_task_id=state["callback_task_id"],
+                        stage_name="AI审查",
+                        current=0,
+                        status="processing",
+                        message=f"开始大纲审查",
+                        event_type="processing"
+                    )
+                elif  review_type is "prpe_basis":
+                    await state["progress_manager"].update_stage_progress(
+                        callback_task_id=state["callback_task_id"],
+                        stage_name="AI审查",
+                        current=0,
+                        total=total_units,
+                        status="processing",
+                        message=f"开始编制依据审查",
+                        event_type="processing"
+                    )
+                else:
+                    await state["progress_manager"].update_stage_progress(
+                        callback_task_id=state["callback_task_id"],
+                        stage_name="AI审查",
+                        current=0,
+                        total=total_units,
+                        status="processing",
+                        message=f"开始核心审查,共 {total_units} 个审查单元",
+                        event_type="processing"
+                    )
         except Exception as e:
             logger.warning(f"发送开始进度更新失败: {str(e)}")