Dashboard Principal
El Dashboard es el centro de comando que muestra métricas clave en tiempo real. Cada indicador se actualiza cada 30 segundos mediante conexión WebSocket con el motor de IA.
📊 Tarjetas KPI Principales
1. Compliance Rate (Tasa de Cumplimiento)
Valor mostrado:
94.2%
Significado: Porcentaje de empleados que cumplen con todos los
protocolos de seguridad en tiempo real.
Compliance Rate = (Empleados sin violaciones / Total empleados activos) × 100
✓ Verde (>90%): Excelente | ⚠ Amarillo (75-90%): Atención | ✗ Rojo (<75%): Crítico
2. Active Employees (Empleados Activos)
Valor mostrado:
1,420
Significado: Número de empleados detectados por el sistema en las
últimas 2 horas.
Conteo de IDs únicos detectados por cámaras con timestamp < 2 horas
3. Active Alerts (Alertas Activas)
Valor mostrado:
03
Significado: Incidentes de seguridad pendientes de resolución.
COUNT(incidents WHERE status = 'Active' OR status = 'Under Review')
📈 Gráfica: Tendencia de Cumplimiento
Tipo: Área (Area
Chart)
Actualización: Cada 2 horas
Rango Y: 70% - 100%
• Eje X: Hora del día (08:00 - 18:00)
• Eje Y: Porcentaje de cumplimiento
• Gradiente: Azul cian (#00f2ff) con opacidad degradada
💡 Interpretación: Caídas por debajo del 85% indican necesidad de intervención inmediata. El sistema genera alertas automáticas.
🔮 Gráfica: Predicción de Riesgo (IA)
Tipo: Línea punteada (Dashed Line
Chart)
Motor: Red Neuronal LSTM (Long Short-Term
Memory)
Horizonte: 5 horas futuras
1. Entrada: Historial de incidentes últimas 48h
2. Variables: Hora del día, zona, fatiga promedio, clima
3. Modelo: LSTM con 3 capas ocultas (128, 64, 32 neuronas)
4. Salida: Probabilidad de incidente (0-100%)
⚠️ Alerta AI: Cuando la predicción supera 35%, el sistema recomienda rotación de personal o pausas adicionales.
❤️ Telemetría: Frecuencia Cardíaca Promedio
Tipo: Línea escalonada (Step Line
Chart)
Fuente: Sensores biométricos opcionales (smartwatches,
bandas)
Rango normal: 60-90 BPM
Avg Heart Rate = SUM(heart_rate_readings) / COUNT(active_sensors)
Filtros aplicados:
• Excluye lecturas > 200 BPM (ruido)
• Excluye lecturas < 40 BPM (sensor desconectado)
• Promedio móvil de 5 minutos
🚨 Umbral de alerta: >100 BPM sostenido por 10+ minutos = Posible estrés térmico o sobreesfuerzo
⚡ Gráfica: Nivel de Fatiga por Sector
Tipo: Barras (Bar
Chart)
Método: Análisis de video con IA (detección de bostezos, parpadeo
lento)
Escala: 0-100 (0=Alerta, 100=Fatiga extrema)
Fatigue Score = (Yawn_Count × 15) + (Slow_Blink_Rate × 10) + (Posture_Slouch × 8)
Colores:
• Azul cian: Fatiga < 40% (Normal)
• Rojo: Fatiga > 40% (Requiere rotación)
💡 Acción recomendada: Zona B (45%) requiere rotación en 15 minutos según protocolo NOM-019-STPS-2011
🛡️ Índice de Vitalidad General
Valor mostrado:
88%
Significado: Métrica compuesta de salud y bienestar de la fuerza laboral
Vitality Index = (0.4 × Compliance) + (0.3 × (100 - Avg_Fatigue)) + (0.2 × Heart_Health) + (0.1 × Sleep_Quality)
Donde:
• Heart_Health = 100 si HR entre 60-80, penaliza si >90
• Sleep_Quality = Dato autoreportado en app móvil (opcional)
Reportes & Análisis
📊 KPIs de Seguridad Industrial
1. TRIR (Total Recordable Incident Rate)
Valor: 0.85 por 200,000
horas
Estándar OSHA: Métrica oficial de seguridad laboral
TRIR = (Total incidentes registrables × 200,000) / Total horas trabajadas
Ejemplo:
17 incidentes × 200,000 / 4,000,000 horas = 0.85
✓ Excelente: <1.0 | ⚠ Promedio: 1.0-3.0 | ✗ Crítico:>3.0
2. LTI (Lost Time Injury Rate)
Valor:
0.12
Significado: Incidentes que resultaron en días perdidos
LTI = Incidentes con tiempo perdido / Total empleados × 100
3. MTTR (Mean Time To Resolution)
Valor: 14.2
horas
Significado: Tiempo promedio para resolver un incidente
MTTR = SUM(resolution_time) / COUNT(resolved_incidents)
resolution_time = resolved_at - created_at
4. PPE Compliance (Cumplimiento EPP)
Valor:
98.4%
Detección: Visión por computadora (YOLO v8)
1. Detectar persona en frame
2. Clasificar EPP: casco, chaleco, guantes, lentes
3. PPE_Score = Elementos detectados / Elementos requeridos × 100
4. Compliance = AVG(PPE_Score de todos los empleados)
📍 Densidad de Incidentes por Zona
Tipo: Gráfica de
barras
Propósito: Identificar zonas de alto riesgo
• Eje X: Zonas (A, B, C, D, E)
• Eje Y: Número de incidentes
• Color: Azul cian, opacidad aumenta si >15 incidentes
Interpretación:
Zona B (19 incidentes) = Requiere auditoría de seguridad
🎯 Espectro de Riesgo (Pie Chart)
Tipo: Gráfica circular (donut)
Total
eventos: 100
• Low (Verde #39ff14): 45% - Violaciones menores
• Medium (Naranja #ffae00): 30% - Requiere atención
• High (Rojo #ff3131): 15% - Intervención inmediata
• Critical (Rosa #9d174d): 10% - Peligro inminente
Clasificación automática por IA:
Basada en tipo de violación, historial del empleado, zona
🧠 Asesoría Estratégica IA
Motor: Google Gemini 1.5
Pro
Actualización: Cada 15 minutos
1. Recopilación de contexto: Incidentes activos, compliance, zonas críticas
2. Prompt a Gemini: "Analiza estos datos y genera 3 insights accionables"
3. Clasificación de severidad: Low, Medium, High, Critical
4. Recomendación de cursos: Si aplica, sugiere capacitación específica
Ejemplo de insight:
"Zona B muestra 85% compliance (15% bajo promedio). Recomendación: Auditoría de EPP y curso de refuerzo LOTO."
Gestión de Incidentes
⚠️ Clasificación de Severidad
Low: Sin EPP no crítico (guantes, lentes)
Medium: Sin chaleco reflectante, zona de precaución
High: Sin casco, maquinaria en movimiento
Critical: Zona prohibida, riesgo de caída >2m, fuego/químicos
Factores de escalamiento:
• Historial del empleado: +1 nivel si >3 incidentes previos
• Hora del día: +1 nivel si turno nocturno
• Zona: +1 nivel si zona de alto riesgo
📸 Captura de Evidencia
Cada incidente genera un "frame" (captura de pantalla) con timestamp y metadatos.
• Timestamp: ISO 8601 (2024-05-20T09:15:32Z)
• Camera ID: Identificador único de cámara
• Employee ID: Detectado por reconocimiento facial
• Violation Type: Clasificación automática
• Bounding Box: Coordenadas del objeto faltante (EPP)
• Confidence Score: 0-100% (precisión del modelo)
Arquitectura del Sistema
🏗️ Stack Tecnológico
Frontend: React 19 + TypeScript + Tailwind CSS
Backend: Supabase (PostgreSQL + Realtime + Auth)
IA/ML: Google Gemini 1.5 Pro (insights), YOLO v8 (detección EPP), MediaPipe (biometría)
Gráficas: Recharts (React wrapper de D3.js)
Actualización: WebSocket (latencia <100ms)< /p>
🔄 Frecuencia de Actualización
• KPI Cards: 30 segundos (WebSocket push)
• Compliance Chart: 2 horas (batch update)
• Predictive Risk: 15 minutos (modelo re-entrenado)
• Heart Rate: 30 segundos (sensor directo)
• Fatigue Bars: 5 minutos (procesamiento de video)
• AI Insights: 15 minutos (API call a Gemini)