Evolución del Generador de Reportes
Generador de Reportes es una aplicación web moderna diseñada para crear reportes en formato CSV basados en datos de la PokeAPI (API pública de Pokémon). Su arquitectura en la nube (Azure) permite a los usuarios:
- Solicitar reportes personalizados por tipo de Pokémon.
- Gestionar reportes (visualizar, descargar y eliminar).
- Obtener datos enriquecidos con estadísticas y habilidades.
- Limitar resultados mediante muestreo aleatorio.
Arquitectura de la solución

1. Despliegue del contenedor de la API (FastAPI) desde Azure Container Registries
- Relación: Azure Container Registries (ACR) proporciona la imagen del contenedor para la API desarrollada con FastAPI.
- Función: Automatiza el despliegue y la entrega del backend al entorno de Azure App Services. Permite control de versiones, seguridad y escalabilidad.
2. Despliegue del contenedor del Frontend (Next.js) desde Azure Container Registries
- Relación: El frontend (UI) basado en Next.js descarga su imagen desde Azure Container Registries.
- Función: Se asegura que la UI esté siempre sincronizada con los últimos cambios, permitiendo despliegues continuos y controlados.
3. Comunicación entre la UI (Next.js) y la API (FastAPI)
- Relación: Comunicación directa dentro del mismo App Service Plan.
- Función: La UI realiza llamadas HTTP a la API para consumir datos dinámicos (consultas, reportes, usuarios, etc.).
4. Integración entre la API y Azure SQL Database
- Relación: La API se conecta a Azure SQL para operaciones CRUD.
- Función: Almacena datos persistentes como usuarios, configuraciones, resultados de reportes, etc.
5. Almacenamiento de archivos en Azure Blob Storage y encolado de tareas en Azure Queue Storage
- Relación: La API interactúa con ambos servicios del mismo Storage Account.
- Función:
- Blob Storage: Guarda archivos generados como reportes PDF o plantillas.
- Queue Storage: Encola eventos o tareas para procesamiento posterior.
6. Azure Function escucha la cola y procesa eventos
- Relación: Azure Function está enlazada a Azure Queue Storage.
- Función: Procesa mensajes entrantes de la cola, ejecuta lógica de negocio y actualiza resultados o estados.
7. Azure Function consulta a un servicio externo (PokéAPI)
- Relación: Azure Function actúa como consumidor de una API pública externa.
- Función: Extrae datos desde PokéAPI (útil en pruebas o demo) para integrarlos en los reportes.
8. Azure Function guarda resultados en Azure Blob Storage
- Relación: Después del procesamiento, Azure Function guarda los resultados en Blob Storage.
- Función: Centraliza archivos generados (PDF, Excel, JSON) para consulta o descarga posterior.
Resumen General de Componentes y Servicios Usados
| Componente | Descripción |
|---|---|
| Azure Container Registries | Almacén de contenedores Docker para UI y API. |
| UI (Next.js) | Interfaz de usuario del sistema, renderiza contenido y consume la API. |
| API (FastAPI) | Backend del sistema, maneja lógica de negocio y conexión con base de datos. |
| Azure SQL Database | Base de datos relacional para almacenamiento persistente. |
| Azure Blob Storage | Almacenamiento de archivos como reportes o imágenes. |
| Azure Queue Storage | Comunicación asíncrona y gestión de trabajos pendientes. |
| Azure Function | Procesamiento serverless de tareas basadas en eventos. |
| PokéAPI | API externa usada para consumo de datos de prueba o demo. |
Propósito General del Proyecto
Propósito principal:
Automatizar la extracción, transformación y almacenamiento de datos de APIs externas en formatos listos para análisis, demostrando buenas prácticas en desarrollo full-stack y despliegue en la nube.
Resumen de Funcionalidades Implementadas (Mi Aporte)
1. Eliminación Completa de Reportes (25 pts)
Objetivo: Permitir la eliminación física de reportes (BD + archivos).
Implementación:
-
Frontend (Next.js):
- Nuevo botón de eliminación con diálogo de confirmación en ReportsTable
- Integración con Sonner para notificaciones toast
- Manejo de estados para actualización en tiempo real
- Prop drilling para pasar función de eliminación desde page.js
- Validación visual del estado “completed” para permitir eliminación
-
Backend (FastAPI):
- Nuevo endpoint DELETE
/api/report/{report_id} - Eliminación atómica en Azure SQL Database
- Eliminación del archivo asociado en Azure Blob Storage
- Manejo de errores (404 si no existe, 500 en fallos de Azure)
- Respuesta estandarizada con estado de eliminación
- Transacciones para garantizar consistencia entre BD y Storage
- Validación de permisos y autenticación
- Nuevo endpoint DELETE
Flujo completo:
- Usuario hace clic en ícono de basura
- Frontend muestra diálogo de confirmación
- Al confirmar, llama a API con report_id
- Backend elimina registro en SQL y archivo en Blob Storage
- Frontend actualiza lista de reportes
- Muestra notificación de éxito/error