|
@@ -6,6 +6,7 @@ Pipeline包装器
|
|
|
"""
|
|
"""
|
|
|
|
|
|
|
|
import os
|
|
import os
|
|
|
|
|
+import json
|
|
|
import logging
|
|
import logging
|
|
|
import tempfile
|
|
import tempfile
|
|
|
from typing import Dict, List, Any, Optional
|
|
from typing import Dict, List, Any, Optional
|
|
@@ -62,7 +63,7 @@ class PipelineWrapper:
|
|
|
|
|
|
|
|
logger.info("Pipeline包装器初始化完成")
|
|
logger.info("Pipeline包装器初始化完成")
|
|
|
|
|
|
|
|
- def run_stages_3_to_7(
|
|
|
|
|
|
|
+ async def run_stages_3_to_7(
|
|
|
self,
|
|
self,
|
|
|
features_data: List[Dict[str, Any]]
|
|
features_data: List[Dict[str, Any]]
|
|
|
) -> Dict[str, Any]:
|
|
) -> Dict[str, Any]:
|
|
@@ -131,7 +132,8 @@ class PipelineWrapper:
|
|
|
# 阶段7:相似度分析
|
|
# 阶段7:相似度分析
|
|
|
logger.info("阶段7:相似度分析...")
|
|
logger.info("阶段7:相似度分析...")
|
|
|
try:
|
|
try:
|
|
|
- similarity_results = self.pipeline.similarity_analyzer.run(
|
|
|
|
|
|
|
+ # 在异步环境中直接调用run_async而不是run
|
|
|
|
|
+ similarity_results = await self.pipeline.similarity_analyzer.run_async(
|
|
|
deep_results,
|
|
deep_results,
|
|
|
output_path=os.path.join(self.temp_output_dir, "similarity_analysis_results.json")
|
|
output_path=os.path.join(self.temp_output_dir, "similarity_analysis_results.json")
|
|
|
)
|
|
)
|
|
@@ -139,9 +141,16 @@ class PipelineWrapper:
|
|
|
logger.error(f"阶段7执行失败: {e}", exc_info=True)
|
|
logger.error(f"阶段7执行失败: {e}", exc_info=True)
|
|
|
raise Exception(f"相似度分析失败: {str(e)}")
|
|
raise Exception(f"相似度分析失败: {str(e)}")
|
|
|
|
|
|
|
|
- # 注意:similarity_analyzer.run会自动更新evaluation_results中的comprehensive_score
|
|
|
|
|
- # 所以我们需要重新加载更新后的evaluation_results
|
|
|
|
|
- # 但由于similarity_analyzer已经更新了内存中的evaluation_results,这里直接使用即可
|
|
|
|
|
|
|
+ # 重要:similarity_analyzer.run_async会更新文件中的evaluation_results(添加comprehensive_score)
|
|
|
|
|
+ # 需要重新加载更新后的文件,因为内存中的evaluation_results变量还没有被更新
|
|
|
|
|
+ logger.info("重新加载更新后的评估结果(包含comprehensive_score)...")
|
|
|
|
|
+ evaluated_results_path = os.path.join(self.temp_output_dir, "evaluated_results.json")
|
|
|
|
|
+ if os.path.exists(evaluated_results_path):
|
|
|
|
|
+ with open(evaluated_results_path, 'r', encoding='utf-8') as f:
|
|
|
|
|
+ evaluation_results = json.load(f)
|
|
|
|
|
+ logger.info(f"已重新加载评估结果,包含 {len(evaluation_results)} 个原始特征")
|
|
|
|
|
+ else:
|
|
|
|
|
+ logger.warning(f"评估结果文件不存在: {evaluated_results_path},使用内存中的数据")
|
|
|
|
|
|
|
|
logger.info("=" * 60)
|
|
logger.info("=" * 60)
|
|
|
logger.info("阶段3-7执行完成")
|
|
logger.info("阶段3-7执行完成")
|