add freecad
This commit is contained in:
@@ -358,6 +358,46 @@ async def _save_analysis_metrics(session, stp_file_id, analysis_result):
|
||||
logger.info(f"分析指标保存成功: {metrics.id}")
|
||||
|
||||
|
||||
async def _save_verification_metrics(session, stp_file_id, verification_result):
|
||||
"""保存验证指标到数据库"""
|
||||
from models.database import AnalysisMetrics
|
||||
from sqlalchemy import select
|
||||
|
||||
# 查找现有的分析指标记录
|
||||
result = await session.execute(
|
||||
select(AnalysisMetrics).where(AnalysisMetrics.stp_file_id == stp_file_id)
|
||||
)
|
||||
metrics = result.scalar_one_or_none()
|
||||
|
||||
if metrics:
|
||||
# 更新现有记录
|
||||
metrics.verification_status = verification_result.get("status", "unknown")
|
||||
comparison = verification_result.get("comparison", {})
|
||||
volume_comparison = comparison.get("volume", {})
|
||||
area_comparison = comparison.get("surface_area", {})
|
||||
|
||||
metrics.verification_volume_diff = volume_comparison.get("difference_percent", 0)
|
||||
metrics.verification_area_diff = area_comparison.get("difference_percent", 0)
|
||||
metrics.verification_details = verification_result
|
||||
else:
|
||||
# 创建新记录
|
||||
comparison = verification_result.get("comparison", {})
|
||||
volume_comparison = comparison.get("volume", {})
|
||||
area_comparison = comparison.get("surface_area", {})
|
||||
|
||||
metrics = AnalysisMetrics(
|
||||
stp_file_id=stp_file_id,
|
||||
verification_status=verification_result.get("status", "unknown"),
|
||||
verification_volume_diff=volume_comparison.get("difference_percent", 0),
|
||||
verification_area_diff=area_comparison.get("difference_percent", 0),
|
||||
verification_details=verification_result
|
||||
)
|
||||
session.add(metrics)
|
||||
|
||||
await session.commit()
|
||||
logger.info(f"验证指标保存成功: stp_file_id={stp_file_id}")
|
||||
|
||||
|
||||
async def process_file_core(
|
||||
storage_service: StorageIntegrationService,
|
||||
task_id: str,
|
||||
@@ -633,6 +673,29 @@ async def process_file_core(
|
||||
product_weight=product_weight_g
|
||||
)
|
||||
|
||||
# 9.7 FreeCAD 几何验证
|
||||
await storage_service.update_task_status(
|
||||
db_session, task_id, "processing", 90, "FreeCAD几何验证"
|
||||
)
|
||||
|
||||
verification_result = None
|
||||
try:
|
||||
from services.verification_service import verification_service
|
||||
verification_result = await verification_service.verify_stp_file(file_path)
|
||||
|
||||
# 保存验证结果到数据库
|
||||
if verification_result and analysis_result:
|
||||
await _save_verification_metrics(
|
||||
db_session,
|
||||
stp_file_id,
|
||||
verification_result
|
||||
)
|
||||
|
||||
logger.info(f"FreeCAD验证完成: {verification_result.get('status', 'unknown') if verification_result else 'failed'}")
|
||||
except Exception as ve:
|
||||
logger.warning(f"FreeCAD验证失败(不影响主流程): {ve}")
|
||||
verification_result = {"status": "error", "error": str(ve)}
|
||||
|
||||
# 10. 完成处理
|
||||
await storage_service.update_stp_file_status(db_session, stp_file_id, "completed")
|
||||
await storage_service.update_task_status(
|
||||
|
||||
Reference in New Issue
Block a user