🚀 Cron Jobs Server v2.0#
Stack Tecnológico: Node.js 22+ · Express · Socket.IO · Firebase Admin SDK · Pino Logger · node-cron · Resend🎯 Propósito del Proyecto#
Este sistema es el administrador central de trabajos automatizados para los sistemas de Grupo KC. Su función principal es gestionar dos tipos de tareas:⏰ Trabajos programados por tiempo: Tareas cron que se ejecutan automáticamente en horarios específicos (reportes diarios, envío de emails, sincronizaciones, etc.)
🔌 Trabajos disparados por sockets: Tareas que se ejecutan bajo demanda mediante comunicación en tiempo real a través de Socket.IO
El servidor actúa como un orquestador que coordina la ejecución de trabajos, procesa datos, se comunica con servicios externos (Hermes, Firebase, APIs) y mantiene la sincronización entre los diferentes sistemas de KC.☁️ Despliegue en Azure#
Entorno de Producción: Azure App Service (Linux)Grupo de Recursos: KC_PROD_OLYMPUS
Plan de Servicio: ASP-KCPRODOLYMPUS-B9da (Premium V2, P1v2)
Runtime Stack: Node.js 22-lts
Última Actualización: 7 de diciembre de 2024, 10:43 AM
Dominios Configurados#
Principal: kronjob.azurewebsites.net
Personalizados: cron.gokc.net, ws.gokc.net
⚡ Inicio Rápido#
Descripción (v2.0)#
✅ Arquitectura modular con 20+ archivos organizados
✅ Separación clara de responsabilidades (fácil de entender)
✅ Variables de entorno con .env (configuración flexible)
✅ Logger estructurado con Pino (trazabilidad completa)
✅ Manejo de errores centralizado
✅ Fácil agregar nuevos trabajos o sockets
✅ ESLint y Prettier (código consistente)
🎯 Características Principales#
Express Server: Servidor HTTP con archivos estáticos
Socket.IO: Comunicación en tiempo real
Cron Jobs: Tareas programadas automáticas
Firebase Integration: Firestore para almacenamiento
Email Service: Envío de correos mediante Resend
Hermes Worker: Procesamiento en segundo plano
Pino Logger: Logging estructurado de alto rendimiento
Health Check: Endpoint para monitoreo (GET /health)
Graceful Shutdown: Cierre controlado del servidor
📚 Scripts Disponibles#
🏗️ Arquitectura#
src/
├── config/ # Configuración (Firebase, env vars)
├── controllers/ # Lógica de negocio
├── services/ # Servicios de dominio
├── cron/ # Trabajos programados
├── workers/ # Procesos en segundo plano
├── socket/ # Socket.IO
├── utils/ # Utilidades (logger, errors)
└── app.js # Express app
Capas de la Aplicación#
1.
Presentation Layer (Express, Socket.IO)
2.
Controller Layer (Handlers, Controladores)
3.
Service Layer (Lógica de negocio)
4.
Data Layer (Firebase, APIs externas)
📋 Tareas Programadas (Cron Jobs)#
Trabajos Activos#
Al mediodía (12:00 PM) - Lunes a Viernes: Reporte de detención de pagos
Diariamente a las 4:00 AM:Reporte de pólizas de autos
Cada 5 minutos: Obtención de tickets MesaIP
Trabajos Comentados (Disponibles para activar)#
Cada hora de 8 AM a 7 PM - Lunes a Viernes: Reporte MetPro
Cada lunes a las 3:00 AM: Reporte de accesos Titan
🔌 Socket.IO Events#
Eventos Recibidos#
send-message: Recibe mensajes de usuarios
ticket-insert: Inserción de tickets
bitacora-insert: Inserción de bitácoras
liquidez_imss: Procesar liquidez IMSS
hermes_2: Actualización de consultas Hermes
hermes_kc: Comunicación Hermes KC
hermes_2_request: Solicitud de generación de PDF
sysaid_dashboard: Actualización dashboard Sysaid
sysaid_tickets: Actualización tickets Sysaid
sysaid_tiempo_laboral_por_paso: Actualización tiempo laboral Sysaid
Eventos Emitidos#
notify: Notificaciones broadcast
users-changed: Cambios en usuarios conectados
response_result: Resultados de operaciones
respuesta_sysaid: Respuestas de operaciones Sysaid
🔧 Servicios#
BackendService#
Interacción con API backend para operaciones CRUDFirestoreService#
Operaciones con Firestore (creación, eliminación, listeners)HermesService#
Comunicación con API Hermes para generación de PDFsEmailService#
Envío de correos mediante Resend🔧 Configuración#
Variables de Entorno#
PORT=80
NODE_ENV=development
FIREBASE_DATABASE_URL=https://celeste-app-mx.firebaseio.com
BACKEND_API_URL=https://fb.grupokc.com.mx
HERMES_API_URL=https://hermes.kc.itservices.net
RESEND_API_KEY=tu_api_key_aqui
Firebase#
Colocar el archivo firebase.json con las credenciales de Firebase Admin SDK en la raíz del proyecto.🛡️ Seguridad#
Credenciales en variables de entorno
Firebase Admin SDK con certificado
Validación de entrada (a implementar según necesidad)
📊 Monitoreo#
Logs estructurados con niveles (Pino)
Health check endpoint: GET /health
Azure Application Insights (disponible para configurar)
🛡️ Manejo de Errores#
Captura de excepciones no manejadas
Manejo de rechazos de promesas
Logging estructurado de errores
Reintentos automáticos en operaciones críticas
📝 Mejores Prácticas Implementadas#
✅ Variables de entorno para configuración
✅ Logging estructurado con contexto
✅ Manejo de errores centralizado
✅ Arquitectura modular y escalable
✅ Código ESLint y Prettier compatible
✅ Patrón Singleton para servicios
✅ Async/await para operaciones asíncronas
✅ Graceful shutdown
✅ Health check endpoint
✅ Documentación en código (JSDoc)🚧 Próximas Mejoras#
🔗 Documentación Adicional (dentro de repositorio)#
Versión Actual: 2.0.0
Node.js: >=22.0.0
Estado: ✅ Production Ready
Licencia: ISC
Autor: GrupoKCModificado en 2025-12-07 17:42:20