|
@@ -732,15 +732,20 @@ class AIReviewEngine(BaseReviewer):
|
|
|
max_concurrent=concurrent_workers
|
|
max_concurrent=concurrent_workers
|
|
|
)
|
|
)
|
|
|
logger.info(" 组件初始化完成")
|
|
logger.info(" 组件初始化完成")
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
|
|
|
|
|
# 3. 执行审查
|
|
# 3. 执行审查
|
|
|
logger.info("\n[4/5] 开始执行审查...")
|
|
logger.info("\n[4/5] 开始执行审查...")
|
|
|
logger.info(f" 使用模型: {llm_client.model_type}")
|
|
logger.info(f" 使用模型: {llm_client.model_type}")
|
|
|
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()
|
|
|
|
|
|
|
+ review_results_df = pd.DataFrame(review_results)
|
|
|
|
|
+ df_section_label = review_results_df['section_label'].str.split('->').str[0]
|
|
|
|
|
+ review_results_df['title'] = df_section_label
|
|
|
|
|
+ review_results_df.to_csv(Path('temp') / 'document_temp' / '2_spec_review_results.csv', encoding='utf-8-sig', index=False)
|
|
|
|
|
+ review_results_flag = review_results_df["chapter_classification"].unique().tolist()
|
|
|
|
|
+
|
|
|
# with open(r'temp\document_temp\1_spec_review_results.json', 'w', encoding='utf-8') as f:
|
|
# 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)
|
|
# json.dump(review_results, f, ensure_ascii=False, indent=4)
|
|
|
# 统计结果
|
|
# 统计结果
|
|
@@ -754,16 +759,15 @@ class AIReviewEngine(BaseReviewer):
|
|
|
processed_results = analyzer.process_results(review_results)
|
|
processed_results = analyzer.process_results(review_results)
|
|
|
spec_summary_csv_path = Path('temp') / 'document_temp' / '3_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 = pd.DataFrame(summary_rows)
|
|
|
summary_rows = summary_rows[summary_rows['标签'].isin(review_results_flag)]
|
|
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.to_csv(str(spec_summary_csv_path), encoding='utf-8-sig', index=False)
|
|
|
summary_rows = summary_rows.to_dict('records')
|
|
summary_rows = summary_rows.to_dict('records')
|
|
|
# 生成缺失要点 JSON 列表,便于前端消费
|
|
# 生成缺失要点 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 {
|
|
@@ -776,7 +780,7 @@ class AIReviewEngine(BaseReviewer):
|
|
|
},
|
|
},
|
|
|
"success": True,
|
|
"success": True,
|
|
|
"execution_time": execution_time
|
|
"execution_time": execution_time
|
|
|
- }
|
|
|
|
|
|
|
+ }
|
|
|
except Exception as e:
|
|
except Exception as e:
|
|
|
execution_time = time.time() - start_time
|
|
execution_time = time.time() - start_time
|
|
|
error_msg = f"{name} 审查失败: {str(e)}"
|
|
error_msg = f"{name} 审查失败: {str(e)}"
|