Files
VoxPopuli/QUICKSTART_NOTIFICATIONS.md
2026-04-29 12:28:11 -06:00

242 lines
5.6 KiB
Markdown

# 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
```bash
cd c:\Users\Rodo Machenike\Documents\API\VoxPopuli
docker-compose up -d
```
### 2. Verificar que todo está corriendo
```bash
docker-compose ps
```
Deberías ver:
- voxpopuli_mysql (3306)
- voxpopuli_mongo (27017)
- voxpopuli_rabbitmq (5672, 15672)
### 3. Levantar la aplicación Python
```bash
# 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
```bash
# 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
1. Ir a: http://localhost:15672
2. Usuario: `voxpopuli`
3. 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
```bash
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
```bash
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
```bash
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)
```bash
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ó
```bash
curl http://localhost:8002/notifications/1 \
-H "Authorization: Bearer {access_token}"
```
**Resultado esperado:**
```json
{
"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
```bash
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
```bash
# Conectar a MongoDB
docker exec -it voxpopuli_mongo mongosh
# En la terminal de MongoDB:
use voxpopuli_notifications
db.notificaciones.find()
```
### RabbitMQ - Ver evento enviado
1. Ir a http://localhost:15672
2. Queues > `notifications_queue`
3. Debería mostrar mensajes procesados
---
## 📝 Logs en Tiempo Real
### Ver logs del contenedor de la app
```bash
# 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
```bash
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
1. **IMPLEMENTATION_SUMMARY.md** - Descripción completa de cambios
2. **FRONTEND_NOTIFICATIONS_IMPLEMENTATION.md** - Guía para implementar frontend
3. **API_EXAMPLES.json** - Ejemplos de requests (actualizado con notificaciones)
4. **docker-compose.yaml** - Servicios disponibles
---
## 🎯 Próximos Pasos
1. ✅ Backend: Servicios levantados
2. ⬜ Frontend: Implementar según `FRONTEND_NOTIFICATIONS_IMPLEMENTATION.md`
3. ⬜ Testing: Pruebas unitarias e integración
4. ⬜ 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:
1. Revisar logs: `docker-compose logs -f`
2. Revisar documentación en `IMPLEMENTATION_SUMMARY.md`
3. Verificar endpoints en http://localhost:8002/docs
---
**¡Todo listo! 🚀**
La API de Notificaciones está lista para usar.