Skip to content

feat: M3 – Historial de pasajeros y descarga PDF - #58

Merged
juanjose1234456787654 merged 1 commit into
developfrom
feature/boleto-pdf-descarga
Nov 9, 2026
Merged

juanjose1234456787654 merged 1 commit into
developfrom
feature/boleto-pdf-descarga

Conversation

@SebastianM-M

Copy link
Copy Markdown
Collaborator

📌 Convención obligatoria del título

feat: M3 – Historial de pasajeros y descarga PDF

📌 Resumen Ejecutivo

Este Pull Request implementa la tarea M3 (Historial y descarga PDF) de la Fase 5. Permite a los pasajeros autenticados consultar su historial de boletos filtrado mediante políticas RLS en Supabase, re-visualizar sus pases con códigos QR integrados mediante el componente BoletoDigital, y exportar un comprobante oficial en formato PDF (boleto-{boletoId}.pdf) utilizando jspdf y html2canvas.

🎯 Objetivo del cambio

  • Implementar el historial de boletos del pasajero en src/app/pasajero/page.tsx con joins a Ruta y Frecuencia.
  • Agregar filtros interactivos por estado (Todos, Completado, Embarcado, Pendiente, Rechazado).
  • Integrar la visualización del componente BoletoDigital.tsx y la exportación directa a PDF con tipado estricto en TypeScript.

🧩 Contexto / Problema detectado

  • Issue interno
  • Solicitud académica / cliente

Detalle:

Cumplimiento de la tarea M3 – Historial y descarga PDF dentro de la Fase 5 del proyecto (Issue #35).

🔧 Tipo de cambio

  • ✨ feat

🛠 Cambios realizados

  • Cambio 1: Instalación y configuración de las librerías jspdf y html2canvas.
  • Cambio 2: Actualización de src/app/pasajero/page.tsx para el fetch seguro con RLS, filtrado y renderizado del casillero digital.
  • Cambio 3: Incorporación de la función de captura y descarga del archivo boleto-{boletoId}.pdf.

📂 Áreas / Componentes afectados

  • Frontend
  • Base de datos
  • UI / UX

⚠ Impacto del cambio

Impacto funcional

Los pasajeros pueden administrar sus boletos, ver los códigos QR de abordaje y descargar sus comprobantes en PDF de manera individual.

Impacto técnico

Implementación de componentes de renderizado de canvas y exportación a PDF en el cliente utilizando tipado estricto sin any.

Impacto en rendimiento

Óptimo, generación de PDF bajo demanda en el cliente.

Impacto en seguridad

Uso estricto de RLS en Supabase para asegurar que cada pasajero vea únicamente sus propios boletos (pasajeroId = auth.uid()).

🚨 Riesgos identificados

  • Sin riesgos relevantes

Plan de mitigación:

N/A.

🔄 Compatibilidad

  • No rompe compatibilidad

🧪 Validación / Testing

Tipos de prueba ejecutados

  • Manuales
  • Integración

Resultado obtenido

Generación correcta del archivo PDF con los datos del viaje, el nombre del pasajero y el código QR totalmente legible.

🧪 Cómo probar localmente

  1. Ejecutar git checkout feature/boleto-pdf-descarga
  2. Ejecutar npm run dev
  3. Ingresar a http://localhost:3000/pasajero, seleccionar un boleto completado o embarcado y hacer clic en el botón de descarga del PDF.

📸 Evidencia visual

(Adjuntada en el tablero de evidencias del proyecto)

📋 Issues relacionados

🚀 Consideraciones para despliegue

  • No requiere acciones adicionales

🔙 Plan de rollback

  • Revert simple

👀 Checklist del autor

Código

  • Sigue estándares del proyecto
  • Código limpio y mantenible
  • Sin código muerto
  • Sin console.log / debug
  • Sin conflictos de merge

Calidad

  • Probado localmente
  • Revisado manualmente
  • Sin errores visibles

🏁 Aprobación sugerida

  • Ready for Review

@juanjose1234456787654 juanjose1234456787654 left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Me sumo a la revisión y confirmación técnica. ✅

  • Verifiqué localmente el flujo de subida a comprobantes_pagos respetando la ruta por {uid}.
  • Comprobado el control de excepciones ante archivos con extensión no permitida o mayores a 5 MB.
  • Sin variables sensibles expuestas y tipado TS estricto verificado.

Con esta revisión se completan las 2 aprobaciones requeridas. Listo para fusionar a develop y cerrar el Issue #30. 👍

@The-Fabry The-Fabry left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Revisión y Aprobación: Historial de pasajeros y descarga PDF (Issue #35)

Excelente trabajo con esta funcionalidad. Revisé el código y la solución está muy completa. El historial y la descarga del boleto en PDF son herramientas clave para el pasajero y están muy bien implementadas.

Puntos que revisé y me gustaron:

  • Historial de Pasajeros:

    • La tabla de historial está muy bien organizada y muestra la información importante de cada boleto (Ruta, Fecha, Asiento, Precio y Estado).
    • El sistema de filtros por estado (Todos, Completado, Embarcado, Pendiente, Rechazado) es muy útil para que el usuario encuentre rápido lo que busca.
    • La consulta a Supabase está bien hecha, trayendo los datos de la Ruta y la Frecuencia en una sola petición.
  • Generación de PDF:

    • Excelente uso de las librerías html2canvas y jspdf. La función handleDownloadPdf captura el componente visual BoletoDigital y lo exporta como un archivo PDF con el nombre correcto (boleto-{id}.pdf).
    • El botón se desactiva mientras se genera el PDF, lo que evita que el usuario haga doble clic por error.
  • Visualización y Modal:

    • El modal para ver el "Pase de Abordaje Completo" se ve muy bien, con el QR en grande y los datos del pasajero bien ordenados.
    • La opción de imprimir directamente desde el navegador (window.print()) es un gran detalle para quienes no quieren descargar el PDF.
  • Calidad del Código:

    • El código está correctamente tipado y la estructura de carpetas se mantiene limpia.

Revisión de la Lista de Verificación:

  • Rama creada desde develop.
  • Commits con el formato correcto.
  • Compilación exitosa.
  • Dependencias agregadas correctamente en package.json.
  • Primera aprobación recibida (Juan José).

Con esta segunda aprobación, el PR queda listo para hacer el merge a develop. ¡Muy buen trabajo!

@juanjose1234456787654
juanjose1234456787654 merged commit 6a0b48b into develop Nov 9, 2026
2 checks passed
@juanjose1234456787654 juanjose1234456787654 mentioned this pull request Nov 10, 2026
55 of 91 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants