Просмотр исходного кода

dev:添加了完整性检查的结果去重逻辑;

ChenJiSheng 1 месяц назад
Родитель
Сommit
1c78ee8741

+ 12 - 5
core/construction_review/component/ai_review_engine.py

@@ -55,6 +55,8 @@ from dataclasses import dataclass
 from enum import Enum
 from enum import Enum
 from typing import Any, Dict, List, Optional, Sequence
 from typing import Any, Dict, List, Optional, Sequence
 
 
+import pandas as pd
+
 from core.base.task_models import TaskFileInfo
 from core.base.task_models import TaskFileInfo
 from core.construction_review.component.infrastructure.milvus import MilvusConfig, MilvusManager
 from core.construction_review.component.infrastructure.milvus import MilvusConfig, MilvusManager
 from core.construction_review.component.infrastructure.parent_tool import (
 from core.construction_review.component.infrastructure.parent_tool import (
@@ -738,25 +740,30 @@ class AIReviewEngine(BaseReviewer):
             logger.info(f"  最大并发数: {concurrent_workers}")
             logger.info(f"  最大并发数: {concurrent_workers}")
             
             
             review_results = await review_pipeline.review(documents, specification)
             review_results = await review_pipeline.review(documents, specification)
-            
+            review_results_flag = pd.DataFrame(review_results)["chapter_classification"].unique().tolist()
+            # with open(r'temp\document_temp\1_spec_review_results.json', 'w', encoding='utf-8') as f:
+            #     json.dump(review_results, f, ensure_ascii=False, indent=4)
             # 统计结果
             # 统计结果
             success_count = sum(1 for r in review_results if isinstance(r.get('review_result', {}), dict) and 'error' not in r.get('review_result', {}))
             success_count = sum(1 for r in review_results if isinstance(r.get('review_result', {}), dict) and 'error' not in r.get('review_result', {}))
             error_count = len(review_results) - success_count
             error_count = len(review_results) - success_count
             logger.info(f"\n  审查完成: 成功 {success_count} 个, 失败 {error_count} 个")
             logger.info(f"\n  审查完成: 成功 {success_count} 个, 失败 {error_count} 个")
 
 
-
             # 6. 使用结果解析处理组件,生成规范覆盖汇总表
             # 6. 使用结果解析处理组件,生成规范覆盖汇总表
             logger.info("\n[5/5] 生成规范要点覆盖汇总表...")
             logger.info("\n[5/5] 生成规范要点覆盖汇总表...")
             analyzer = ResultAnalyzer(str(csv_path))
             analyzer = ResultAnalyzer(str(csv_path))
             processed_results = analyzer.process_results(review_results)
             processed_results = analyzer.process_results(review_results)
-            spec_summary_csv_path = base_dir / 'output' / 'spec_review_summary.csv'
+            spec_summary_csv_path = Path('temp') / 'document_temp' / '3_spec_review_summary.csv'
             summary_rows = analyzer.build_spec_summary(processed_results)
             summary_rows = analyzer.build_spec_summary(processed_results)
             logger.info(f"  规范覆盖汇总结果已保存至: {spec_summary_csv_path}")
             logger.info(f"  规范覆盖汇总结果已保存至: {spec_summary_csv_path}")
-
+            summary_rows = pd.DataFrame(summary_rows)
+            summary_rows = summary_rows[summary_rows['标签'].isin(review_results_flag)]
+            # summary_rows.to_csv(str(spec_summary_csv_path), encoding='utf-8-sig', index=False)
+            summary_rows = summary_rows.to_dict('records')
             # 生成缺失要点 JSON 列表,便于前端消费
             # 生成缺失要点 JSON 列表,便于前端消费
             #missing_issue_json_path = Path(r'temp\document_temp') / 'spec_review_missing_issues.json'
             #missing_issue_json_path = Path(r'temp\document_temp') / 'spec_review_missing_issues.json'
             issues = analyzer.build_missing_issue_list(summary_rows)
             issues = analyzer.build_missing_issue_list(summary_rows)
-
+            # with open(r'temp\document_temp\4_spec_review_missing_issues.json', 'w', encoding='utf-8') as f:
+            #     json.dump(issues, f, ensure_ascii=False, indent=4)
             # 包装成外层格式化期望的结构
             # 包装成外层格式化期望的结构
             execution_time = time.time() - start_time
             execution_time = time.time() - start_time
             return {
             return {

+ 2 - 0
core/construction_review/workflows/ai_review_workflow.py

@@ -502,6 +502,8 @@ class AIReviewWorkflow:
                     state = state,
                     state = state,
                     stage_name = state.get("stage_name", "完整性审查")
                     stage_name = state.get("stage_name", "完整性审查")
                 )
                 )
+                # with open(r"temp\document_temp\4_check_completeness_result.json", "w", encoding="utf-8") as f:
+                #     json.dump(check_completeness_result, f, ensure_ascii=False, indent=4)
 
 
 
 
             # # 4. 执行编制依据审查
             # # 4. 执行编制依据审查