5.6 KiB
5.6 KiB
Quick Start: API de Notificaciones
🚀 Inicio Rápido
Requisitos Previos
- Docker y Docker Compose instalados
- Python 3.10+ (si ejecutar sin Docker)
- Proyecto VoxPopuli clonado
📦 Opción 1: Con Docker Compose (Recomendado)
1. Levantar todos los servicios
cd c:\Users\Rodo Machenike\Documents\API\VoxPopuli
docker-compose up -d
2. Verificar que todo está corriendo
docker-compose ps
Deberías ver:
- voxpopuli_mysql (3306)
- voxpopuli_mongo (27017)
- voxpopuli_rabbitmq (5672, 15672)
3. Levantar la aplicación Python
# Crear entorno virtual si no existe
python -m venv venv
# Activar entorno virtual
# En Windows:
venv\Scripts\activate
# En Linux/Mac:
source venv/bin/activate
# Instalar dependencias
pip install -r requirements.txt
# Ejecutar la aplicación
python src/main.py
4. Verificar que APIs están funcionando
# Terminal nueva
curl http://localhost:8000/ # Usuarios
curl http://localhost:8001/ # Reportes
curl http://localhost:8002/ # Notificaciones (NUEVA)
✅ Verificar Conexión a RabbitMQ
Acceder al Dashboard de RabbitMQ
- Ir a: http://localhost:15672
- Usuario:
voxpopuli - Contraseña:
voxpopuli_pass
Ver colas
- Queues >
reports_queue- Para eventos de reportes - Queues >
notifications_queue- Para eventos de notificaciones (NUEVA) - Queues >
users_queue- Para eventos de usuarios
🧪 Prueba Rápida del Flujo Completo
1. Crear un usuario
curl -X POST http://localhost:8000/users/ \
-H "Content-Type: application/json" \
-d '{
"nombre": "Juan",
"apellido": "Pérez",
"email": "juan@example.com",
"contraseña": "password123",
"fecha_nacimiento": "1990-01-15"
}'
Guardar el user_id que retorna (ej: 1)
2. Login para obtener token JWT
curl -X POST http://localhost:8000/login \
-H "Content-Type: application/json" \
-d '{
"email": "juan@example.com",
"contraseña": "password123"
}'
Guardar el access_token que retorna
3. Crear un reporte
curl -X POST http://localhost:8001/reports/ \
-H "Authorization: Bearer {access_token}" \
-F "id_usuario=1" \
-F "tipo_reporte=1" \
-F "descripcion=Calle rota en la esquina" \
-F "ubicacion=Calle 5 y Carrera 10"
Guardar el id_reporte que retorna
4. Cambiar estado del reporte (Dispara Notificación)
curl -X PUT http://localhost:8001/reports/{id_reporte}/status \
-H "Authorization: Bearer {access_token}" \
-H "Content-Type: application/json" \
-d '{"estado": "resuelto"}'
5. Verificar que notificación se creó
curl http://localhost:8002/notifications/1 \
-H "Authorization: Bearer {access_token}"
Resultado esperado:
{
"total": 1,
"unread_count": 1,
"notifications": [
{
"id_notificacion": "...",
"id_usuario": 1,
"id_reporte": "...",
"message": "¡Tu reporte ha sido resuelto!",
"fecha": "2024-04-29T...",
"read": false
}
]
}
6. Marcar como leída
curl -X PUT http://localhost:8002/notifications/{notification_id}/read \
-H "Authorization: Bearer {access_token}"
📊 Verificar en Bases de Datos
MongoDB - Ver notificación creada
# Conectar a MongoDB
docker exec -it voxpopuli_mongo mongosh
# En la terminal de MongoDB:
use voxpopuli_notifications
db.notificaciones.find()
RabbitMQ - Ver evento enviado
- Ir a http://localhost:15672
- Queues >
notifications_queue - Debería mostrar mensajes procesados
📝 Logs en Tiempo Real
Ver logs del contenedor de la app
# Si ejecutas en Docker
docker-compose logs -f
# Si ejecutas Python directamente
# Los logs aparecen en la terminal donde ejecutaste python src/main.py
Buscar errores de notificaciones
docker-compose logs -f notifications-consumer # Si estuviera en Docker
# O en los logs de Python cuando ejecutas src/main.py
🔧 Solución de Problemas Rápida
| Problema | Solución |
|---|---|
| Error de conexión a MongoDB | docker-compose up -d mongodb && docker-compose logs mongodb |
| Error de conexión a RabbitMQ | docker-compose up -d rabbitmq && docker-compose logs rabbitmq |
| Notificaciones no se crean | Verificar que notification_consumer.py está ejecutando (ver logs) |
| Token expirado | Crear nuevo token con login |
| No aparecen notificaciones | Verificar unread_count primero con /notifications/{user_id}/unread-count |
📚 Documentos Disponibles
- IMPLEMENTATION_SUMMARY.md - Descripción completa de cambios
- FRONTEND_NOTIFICATIONS_IMPLEMENTATION.md - Guía para implementar frontend
- API_EXAMPLES.json - Ejemplos de requests (actualizado con notificaciones)
- docker-compose.yaml - Servicios disponibles
🎯 Próximos Pasos
- ✅ Backend: Servicios levantados
- ⬜ Frontend: Implementar según
FRONTEND_NOTIFICATIONS_IMPLEMENTATION.md - ⬜ Testing: Pruebas unitarias e integración
- ⬜ Producción: Deploy en servidor
💡 Tips Útiles
- Debugging RabbitMQ: Acceder a http://localhost:15672 para ver estado de colas
- Debugging MongoDB: Usar MongoDB Compass (herramienta GUI)
- Debugging API: Usar Swagger UI en http://localhost:8002/docs
- Health Check: GET http://localhost:8002/ para verificar que la API está viva
📞 Contacto
Si hay dudas o errores:
- Revisar logs:
docker-compose logs -f - Revisar documentación en
IMPLEMENTATION_SUMMARY.md - Verificar endpoints en http://localhost:8002/docs
¡Todo listo! 🚀
La API de Notificaciones está lista para usar.