Backend actualizada a 1.0.77

🖼️ Logo en la portada del PDF:
Se carga el logo desde checklist.logo_url (configurado en la administración)
Ubicación: Arriba del título, centrado
Tamaño: 40mm x 40mm (tamaño estándar para logos corporativos)
Manejo de errores: Si el logo no carga, continúa generando el PDF sin bloquearse
Si no hay logo configurado, simplemente no se muestra (no rompe el PDF)
📄 Estructura de la portada:
Logo del checklist (si existe)
Título "📋 INFORME DE INSPECCIÓN VEHICULAR"
Número de inspección
Cuadros de información del vehículo e inspección
Resumen de evaluación
This commit is contained in:
2025-11-27 17:15:47 -03:00
parent 416588a327
commit 58672c52d7

View File

@@ -204,7 +204,7 @@ def send_completed_inspection_to_n8n(inspection, db):
# No lanzamos excepción para no interrumpir el flujo normal # No lanzamos excepción para no interrumpir el flujo normal
BACKEND_VERSION = "1.0.76" BACKEND_VERSION = "1.0.77"
app = FastAPI(title="Checklist Inteligente API", version=BACKEND_VERSION) app = FastAPI(title="Checklist Inteligente API", version=BACKEND_VERSION)
# S3/MinIO configuration # S3/MinIO configuration
@@ -1374,7 +1374,23 @@ def generate_inspection_pdf(inspection_id: int, db: Session) -> str:
checklist = db.query(models.Checklist).filter(models.Checklist.id == inspection.checklist_id).first() checklist = db.query(models.Checklist).filter(models.Checklist.id == inspection.checklist_id).first()
# ===== PORTADA ===== # ===== PORTADA =====
elements.append(Spacer(1, 15*mm)) elements.append(Spacer(1, 10*mm))
# Logo del checklist (si existe)
if checklist.logo_url:
try:
logo_resp = requests.get(checklist.logo_url, timeout=10)
if logo_resp.status_code == 200:
logo_bytes = BytesIO(logo_resp.content)
logo_img = RLImage(logo_bytes, width=40*mm, height=40*mm)
logo_table = Table([[logo_img]], colWidths=[40*mm])
logo_table.setStyle(TableStyle([
('ALIGN', (0, 0), (-1, -1), 'CENTER'),
]))
elements.append(logo_table)
elements.append(Spacer(1, 5*mm))
except Exception as e:
print(f"⚠️ Error cargando logo del checklist: {e}")
# Título con diseño moderno # Título con diseño moderno
elements.append(Paragraph("📋 INFORME DE INSPECCIÓN VEHICULAR", title_style)) elements.append(Paragraph("📋 INFORME DE INSPECCIÓN VEHICULAR", title_style))