DTIKC
Git
  1. App Services
DTIKC
  • Inicio
  • Modelo de Gestión
    • ITIL 4
    • Gestión por Procesos
    • LEAN, BPM & RAD
    • OKR
    • El Nuevo Paradigma de TI
  • Personas
    • Organigrama Funcional
    • Roles y Matriz RACI
      • Matriz RACI - Mesa de Ayuda (N1)
      • Matriz RACI - Soporte Técnico (N2)
      • Matriz RACI - Infraestructura (N3)
      • Matriz RACI Consolidada de la Dirección de Tecnología e Innovación
    • Descriptivos de Puestos
      • Indice
      • Developer RPA & IA con Python
      • Analista de Operaciones y Mesa de Ayuda N1
      • Especialista de Soporte Técnico Nivel 2
      • Senior de Infraestructura
        • Especialista Senior en Infraestructura N3
        • Especialista Junior en Infraestructura N3
    • Medición y Mejora Continua
      • OKRs Generales
      • OKRs Analista de Operaciones y Mesa de Ayuda N1
      • OKR Especialista de Soporte Técnico N2
  • Procesos de Sistemas
    • Indice
    • Proceso de Control de Versiones con Git
    • Proceso de Ejecución de Proyectos para Desarrolladores de Software
    • Procesos de Mesa de Ayuda N1
    • Procesos de Soporte Técnico N2
    • Procesos de Junior de Infraestructura
    • Procesos de Senior de Infraestructura
  • Especificaciones
    • Devs
      • Patrones de Nombrado (Naming Conventions) en Programación
  • Sistemas
    • Indice
    • Prometeo
    • Pegasus
    • Olympus
    • Andromeda
    • FrontBack
    • OServerLogic
    • CServer
    • FbCotizador
    • Oserver
    • MetCotizadores
    • ClassLibrary
    • APIs
      • Chatbase
      • ApiMetPro_Pendientes_Emitir_Get
    • App Services
      • Documento sin título
  • Manuales Usuarios
    • Procedimiento para Recuperar Contraseña de Acceso a Titan
    • Procedimiento de Alta de Agente IP en Keysi
    • Checklist Mantenimiento Soporte N2
    • Manual de Sistema de Gestión
  • Lineamientos y Politicas
    • Acta de Protocolo Home Office
    • Acta de Compromiso: Excelencia Operativa en la Dirección de Tecnologías e Innovación
    • Modelo de Atención Universal de Soporte Técnico Nivel 2
Git
  1. App Services

Documento sin título

🚀 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)
URL: kronjob.azurewebsites.net
Grupo de Recursos: KC_PROD_OLYMPUS
Plan de Servicio: ASP-KCPRODOLYMPUS-B9da (Premium V2, P1v2)
Región: East US
Sistema Operativo: Linux
Runtime Stack: Node.js 22-lts
IP Virtual: 20.119.8.33
Ú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)
✅ Documentación completa

🎯 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 facturables
Reporte de pólizas de autos
Reportes IP
Reporte MesaIP
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 CRUD

FirestoreService#

Operaciones con Firestore (creación, eliminación, listeners)

HermesService#

Comunicación con API Hermes para generación de PDFs

EmailService#

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
CORS configurado
Validación de entrada (a implementar según necesidad)

📊 Monitoreo#

Logs estructurados con niveles (Pino)
Health check endpoint: GET /health
Métricas de uptime
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
Graceful shutdown

📝 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#

Migración a TypeScript
Tests unitarios y de integración
Documentación OpenAPI/Swagger
Métricas con Prometheus
Rate limiting
Validación de entrada con Joi/Zod
Docker containerization
CI/CD pipeline

🔗 Documentación Adicional (dentro de repositorio)#

Guía de Inicio Rápido
Documentación de Arquitectura
Comandos Útiles
Sistema de Logging con Pino
Checklist de Calidad

📄 Versión e Información#

Versión Actual: 2.0.0
Node.js: >=22.0.0
Estado: ✅ Production Ready
Licencia: ISC
Autor: GrupoKC
Modificado en 2025-12-07 17:42:20
Anterior
ApiMetPro_Pendientes_Emitir_Get
Siguiente
Procedimiento para Recuperar Contraseña de Acceso a Titan
Built with