Evolución del Generador de Reportes V1

AzureTerraformFastApiNext.jsPython
Evolución del Generador de Reportes V1

Descripción de proyecto

Desarrollé y mejoré una aplicación web en la nube llamada “Generador de Reportes”, diseñada para crear reportes CSV basados en datos de la PokeAPI. La aplicación cuenta con una arquitectura moderna y desacoplada, integrando tecnologías frontend, backend y servicios en la nube de Azure. Mi rol consistió en extender las funcionalidades del sistema, garantizando su correcto despliegue y operatividad en Azure.

Arquitectura y Tecnologías Clave

  • Frontend: Next.js (React) para una interfaz interactiva y receptiva.
  • Backend: API RESTful construida con FastAPI (Python) y desplegada en Azure App Service.
  • Procesamiento Asíncrono: Azure Functions (Python) con Queue Trigger para manejar tareas en segundo plano.
  • Almacenamiento: Azure Blob Storage (archivos CSV) y Azure Queue Storage (mensajes).
  • Base de Datos: Azure SQL Database para gestionar los reportes y metadatos.
  • Infraestructura como Código (IaC): Terraform para automatizar el despliegue de recursos en Azure.
  • API Externa: Integración con PokeAPI para obtener datos de Pokémon.
  • Funcionalidades Implementadas

    Eliminación Completa de Reportes

  • Frontend: Añadí un botón de eliminación con confirmación modal en la tabla de reportes, conectado a un nuevo endpoint en la API.
  • Backend: Implementé un endpoint DELETE /api/report/{report_id} que elimina registros de la base de datos y los archivos CSV asociados en Blob Storage, manejando errores como registros no encontrados o fallos en la eliminación.
  • Enriquecimiento de Reportes con Detalles de Pokémon

  • Worker (Azure Function): Modifiqué el proceso para realizar llamadas adicionales a la PokeAPI, extrayendo estadísticas base (HP, Ataque, Defensa, etc.) y habilidades de cada Pokémon.
  • CSV: Amplié el DataFrame (Pandas) para incluir nuevas columnas con estos datos, optimizando la representación de listas .
  • Muestreo Aleatorio en Reportes

  • Frontend: Integré un campo de entrada numérica en el formulario para limitar el número de registros en el reporte.
  • Backend: Extendí el endpoint de creación para aceptar el parámetro sample_size y almacenarlo en la base de datos.
  • Worker: Implementé lógica con random.sample() para seleccionar registros aleatorios antes de generar el CSV, manteniendo la integridad de los datos.
  • Habilidades desarrolladas

  • Desarrollo fullstack con Next.js y FastAPI.
  • Integración de servicios en la nube (Azure Functions, Blob Storage, SQL Database).
  • Manejo de datos asíncronos y procesamiento en segundo plano.
  • Automatización de infraestructura con Terraform.
  • Resolución de problemas complejos en entornos distribuidos.
  • Imagenes