6.0 KiB
Guía de Instalación - API de Moderación
Verificar Requisitos Previos
La API de Moderación requiere que ya tengas instalados y funcionando:
1. RabbitMQ
Debe estar ejecutándose con una instancia ya configurada:
# Verificar conexión
telnet localhost 5672
2. MongoDB
Debe estar ejecutándose y accesible:
# Verificar conexión
mongosh --eval "db.version()"
3. Python 3.8+
python --version
4. Dependencias del Proyecto
Las dependencias ya están en requirements.txt:
pip install -r requirements.txt
Instalación de la API de Moderación
Paso 1: Actualizar dependencias (si es necesario)
La API utiliza las siguientes librerías (ya incluidas en requirements.txt):
fastapi- Framework webuvicorn- Servidor ASGIpydantic- Validación de datospika- Cliente de RabbitMQpymongo- Driver de MongoDB
Si necesitas instalarlas manualmente:
pip install fastapi uvicorn pydantic pika pymongo
Paso 2: Verificar estructura de directorios
Asegúrate que existan los siguientes directorios:
src/
├── domain/
│ └── moderations.py ✓ Creado
├── application/
│ ├── ports/
│ │ └── moderation_repository.py ✓ Creado
│ └── services/
│ └── moderation_services.py ✓ Creado
├── consumers/
│ └── moderation_consumer.py ✓ Creado
└── infrastructure/
├── adapters/
│ └── moderation_repository_mongo.py ✓ Creado
└── api/
└── moderations/ ✓ Creado
├── __init__.py
├── app.py
├── router.py
├── moderations.py
├── schemas.py
└── root.py
Paso 3: Actualizar archivo principal
El archivo src/main.py ya fue actualizado para incluir:
- ✓ Importación de la API de Moderación
- ✓ Función
run_moderations_api() - ✓ Función
run_moderations_consumer() - ✓ Threads para ejecutar ambos componentes
Paso 4: Configurar MongoDB (si es necesario)
Si MongoDB no está configurado, crea las colecciones:
// En mongosh o cliente MongoDB
use voxpopuli
// Las colecciones se crearán automáticamente al insertar datos
// Pero puedes pre-crearlas si lo prefieres:
db.createCollection("moderation_actions")
db.createCollection("moderation_logs")
// Crear índices para mejor rendimiento
db.moderation_actions.createIndex({ "action_id": 1 })
db.moderation_actions.createIndex({ "moderator_id": 1 })
db.moderation_actions.createIndex({ "target_id": 1 })
db.moderation_logs.createIndex({ "action_id": 1 })
Paso 5: Configurar RabbitMQ (si es necesario)
La cola se crea automáticamente, pero si quieres pre-crearla:
# Acceder a RabbitMQ Management Console
# http://localhost:15672 (usuario: guest, password: guest)
# O via CLI:
rabbitmqctl declare_queue moderation_queue -d true
Ejecutar la API
Opción 1: Ejecutar todo (Recomendado)
python src/main.py
Esto iniciará automáticamente:
- API de Usuarios (8000)
- API de Reportes (8001)
- API de Notificaciones (8002)
- API de Moderación (8003) ← NUEVA
- Todos los consumidores (incluyendo Moderación)
Opción 2: Ejecutar solo la API de Moderación
cd src
python -c "from infrastructure.api.moderations.app import create_app; import uvicorn; app = create_app(); uvicorn.run(app, host='0.0.0.0', port=8003)"
Verificar que funciona
1. Health Check
curl http://localhost:8003/health
Respuesta esperada:
{
"status": "healthy",
"service": "Moderation API"
}
2. Información de la API
curl http://localhost:8003/
3. Documentación Interactiva
Abre en tu navegador:
- http://localhost:8003/docs (Swagger UI)
- http://localhost:8003/redoc (ReDoc)
4. Probar un endpoint
curl -X POST http://localhost:8003/moderation/reports/delete \
-H "Content-Type: application/json" \
-d '{
"moderator_id": 1,
"report_id": "test-report-123",
"reason": "Contenido inapropiado",
"description": "Test description"
}'
Solucionar Problemas
Error: "Connection refused" a RabbitMQ
Error: [Errno 111] Connection refused
Solución:
- Verifica que RabbitMQ esté ejecutándose
- Verifica el host y puerto en
core/config.py
Error: "ConnectionFailure" a MongoDB
Error: ServerSelectionTimeoutError
Solución:
- Verifica que MongoDB esté ejecutándose
- Verifica la configuración de conexión en
infrastructure/adapters/persistence/mongodb.py
Error: "Port 8003 already in use"
Error: [Errno 48] Address already in use
Solución:
Cambia el puerto en main.py:
def run_moderations_api():
uvicorn.run(
app_moderations,
host=ConfSettings.host,
port=8004, # Cambiar puerto aquí
...
)
Los eventos no se procesan
Causas posibles:
-
Consumer no está ejecutándose
- Verifica que
run_moderations_consumer()esté ejecutándose - Revisa los logs del consumer
- Verifica que
-
Cola no existe
- Se crea automáticamente al enviar el primer evento
- Verifica en RabbitMQ Management Console
-
MongoDB no está guardando datos
- Verifica que
moderation_actionscolección exista - Revisa permisos de MongoDB
- Verifica que
Logs
Los logs se guardarán en:
src/logs/
Para ver logs en tiempo real:
tail -f src/logs/moderation_consumer.log
Próximos Pasos
- Integrar autenticación JWT para moderadores
- Crear dashboard para visualizar acciones
- Agregar notificaciones a usuarios afectados
- Implementar auditoría más detallada
- Agregar rate limiting por moderador
Contacto y Soporte
Para problemas con la instalación:
- Revisa logs en
src/logs/ - Verifica configuración en
src/core/config.py - Consulta MODERATION_API.md para arquitectura
- Revisa MODERATION_API_EXAMPLES.json para ejemplos