Este proyecto proporciona una API RESTful utilizando FastAPI para consultar y procesar datos de compras de usuarios a través de AWS Athena. La API permite obtener información sobre el estado de los productos comprados por un usuario, el total gastado en un rango de fechas y el ranking de las categorías más compradas.
- Docker
- Python 3.12
- FastAPI
- Uvicorn
- AWS Athena
- Boto3
- DockerHub (para almacenar la imagen)
- Método:
GET - Ruta:
/health
{
"status": "ok",
"message": "API is running"
}- Método:
GET - Ruta:
/estado_historial/{id_usuario} - Descripción: Devuelve el estado de los productos comprados por un usuario en formato JSON, incluyendo los porcentajes de productos entregados, pendientes y cancelados.
GET http://localhost:8000/estado_historial/1id_usuario: El ID del usuario.
{
"id_usuario": 1,
"nombre": "Juan Pérez",
"correo": "juan.perez@correo.com",
"productos_completados": 50,
"productos_pendientes": 20,
"productos_cancelados": 10,
"porcentaje_completados": 50.0,
"porcentaje_pendientes": 20.0,
"porcentaje_cancelados": 10.0
}- Método:
GET - Ruta:
/total_gastado/{id_usuario} - Descripción: Devuelve el total gastado por un usuario en el rango de fechas especificado.
GET http://localhost:8000/total_gastado/1?fecha_inicio=2025-01-25&fecha_fin=2025-09-25id_usuario: El ID del usuario.fecha_inicio: La fecha de inicio en formatoYYYY-MM-DD.fecha_fin: La fecha de fin en formatoYYYY-MM-DD.
{
"id_usuario": 1,
"nombre": "Juan Pérez",
"correo": "juan.perez@correo.com",
"total_gastado": 500.0
}- Método:
GET - Ruta:
/ranking_categorias - Descripción: Devuelve un ranking de las 10 categorías más compradas en base a los pedidos realizados.
GET http://localhost:8000/ranking_categorias[
{
"ranking": 1,
"id_categoria": 1,
"nombre_categoria": "Electrónica",
"total_compras": 150
},
{
"ranking": 2,
"id_categoria": 2,
"nombre_categoria": "Ropa",
"total_compras": 120
},
{
"ranking": 3,
"id_categoria": 3,
"nombre_categoria": "Hogar",
"total_compras": 90
}
]Asegúrate de tener las dependencias necesarias instaladas:
pip install -r requirements.txtEste proyecto usa AWS Athena para ejecutar consultas SQL. Debes asegurarte de que las credenciales de AWS estén configuradas correctamente. Si no tienes las credenciales configuradas, puedes configurarlas usando AWS CLI o configurando las variables de entorno:
export AWS_ACCESS_KEY_ID="your_access_key"
export AWS_SECRET_ACCESS_KEY="your_secret_key"Puedes ejecutar la aplicación localmente usando Uvicorn:
uvicorn main:app --reloadEl servidor estará disponible en http://localhost:8000.
- FastAPI: Framework web para construir APIs.
- Uvicorn: Servidor ASGI para ejecutar FastAPI.
- AWS Athena: Servicio de consultas SQL basado en S3.
- Docker: Contenerización de la aplicación para despliegue.
- boto3: Cliente de Python para interactuar con AWS.