import db import slicer_utils import config import os from typing import List def process_order_slicing(order_id: int): """ Background task to compute accurate print time and filament usage for all files in an order. """ files = db.execute_query("SELECT id, file_path FROM order_files WHERE order_id = %s", (order_id,)) if not files: return for f in files: file_path = f['file_path'] if not os.path.exists(file_path): continue file_ext = os.path.splitext(file_path)[1].lower() if file_ext == '.stl': result = slicer_utils.slice_model(file_path) if result and result.get('success'): db.execute_commit( "UPDATE order_files SET print_time = %s, filament_g = %s WHERE id = %s", (result.get('print_time_str'), result.get('filament_g'), f['id']) )