Generador de Reportes

Resumen del Proyecto

Sistema en la nube para generar y gestionar reportes de Pokémon utilizando datos de la PokeAPI. La aplicación permite crear reportes enriquecidos que incluyen las estadísticas base y habilidades de cada Pokémon, aplicar muestreo aleatorio para obtener conjuntos de datos de tamaño personalizado y eliminar permanentemente reportes tanto de la base de datos como del almacenamiento en la nube. El frontend, desarrollado con Next.js, ofrece una interfaz intuitiva y responsiva. El backend, implementado con FastAPI, gestiona la lógica de negocio y las integraciones, mientras que el procesamiento asíncrono se maneja con Azure Functions en Python. La persistencia de datos se realiza en Azure SQL Database y los archivos CSV se almacenan en Azure Blob Storage. El despliegue y la configuración de la infraestructura se automatizan mediante Terraform. Este proyecto destaca por su arquitectura modular, escalable y robusta, con un manejo eficiente de datos e integración fluida de servicios en la nube.

Tecnologias Clave:

  • Next.js
  • FastAPI
  • Azure Functions
  • Azure SQL
  • Blob Storage
  • Terraform

Implementación Técnica

Eliminar

  • Se agregó la capacidad de eliminar reportes, tanto del frontend (Next.js) como del backend (FastAPI), incluyendo la limpieza de registros asociados en la base de datos (Azure SQL DB) y el almacenamiento (Azure Blob Storage).

Enriquecer Reporte

  • Se mejoró el procesamiento del worker (Azure Function) para incluir datos adicionales de la PokeAPI (como habilidades, tipos y estadísticas) en el CSV generado, asegurando un reporte más detallado y útil.

Muestreo Aleatorio

  • Se añadió un campo numérico ("Número de Registros").
  • Se extendió el endpoint de creación para aceptar el parámetro sample_size y se almacenó en la base de datos.
  • Se implementó lógica para, al procesar el reporte, aplicar muestreo aleatorio (con random.sample()) cuando sample_size es válido, generando un CSV con un subconjunto aleatorio de los datos.

Repositorios y Documentación

URLs de Acceso