"""Report generation service — PDF reports via Jinja2 + Plotly/Kaleido + WeasyPrint.""" import asyncio import base64 import tempfile from datetime import datetime from src.backend.utils.tempo import to_local, utcnow from pathlib import Path import plotly.graph_objects as go import plotly.io as pio from jinja2 import Environment, FileSystemLoader from sqlalchemy import and_, select from sqlalchemy.ext.asyncio import AsyncSession from weasyprint import HTML from src.backend.config import settings from src.backend.models.orm.measurement import Measurement from src.backend.models.orm.recipe import Recipe, RecipeVersion from src.backend.models.orm.setting import SystemSetting from src.backend.models.orm.task import RecipeSubtask, RecipeTask from src.backend.models.orm.user import User from src.backend.services.spc_service import ( compute_capability, compute_control_chart, compute_histogram, compute_summary, ) # Kaleido 1.x aggiunge alla pagina di render uno