← Volver a Middleware

ErrorHandlingMiddleware

Middleware para manejo centralizado de errores con notificaciones Telegram y análisis IA

📊 Resumen del Middleware

458
Líneas de Código
3
Servicios Integrados
IA
Análisis Automático
Telegram
Notificaciones

El ErrorHandlingMiddleware es un componente avanzado del sistema RestMaster que proporciona manejo centralizado de errores con capacidades de inteligencia artificial y notificaciones en tiempo real. Este middleware captura errores detallados, los analiza automáticamente y envía notificaciones estructuradas a través de Telegram.

🎯 Funcionalidades Principales

  • Captura de errores: Intercepta excepciones y errores HTTP
  • Análisis IA: Utiliza Gemini AI para sugerir soluciones
  • Notificaciones Telegram: Envía alertas en tiempo real
  • Logging estructurado: Registro detallado con contexto completo
  • Manejo de compresión: Soporte para GZIP y Brotli
  • Captura de cuerpo de petición: Incluye request/response bodies
  • Métricas de rendimiento: Medición de duración de peticiones
  • Múltiples modelos IA: Rotación automática de claves API

🔧 Dependencias y Servicios

Servicios Inyectados por Constructor:

  • RequestDelegate next - Pipeline de middleware
  • ITelegramService - Servicio de notificaciones Telegram
  • ILogger<ErrorHandlingMiddleware> - Logging de eventos
  • IConfiguration - Configuración de la aplicación

🤖 Configuración de IA (Gemini)

  • Múltiples claves: Soporte para rotación de claves API
  • Modelo: gemini-1.5-flash para análisis rápido
  • Fallback: Manejo graceful cuando IA no está disponible
  • Rate limiting: Rotación automática en caso de límites excedidos

📋 Flujo de Procesamiento

🎯 Pipeline de Manejo de Errores

  1. Captura de tiempo: Registra tiempo de inicio de petición
  2. Stream de respuesta: Intercepta el stream de respuesta
  3. Captura de cuerpo: Lee el cuerpo de la petición
  4. Ejecución del pipeline: Continúa con el resto de middlewares
  5. Detección de errores: Identifica códigos de error HTTP
  6. Análisis IA: Genera sugerencias para errores de servidor
  7. Notificación: Envía alerta a Telegram
  8. Respuesta al cliente: Devuelve respuesta de error estructurada

⚠️ Tipos de Errores Manejados

  • Errores HTTP (4xx/5xx): Capturados automáticamente
  • Excepciones no controladas: Interceptadas y procesadas
  • Errores de compresión: Manejo de GZIP/Brotli corruptos
  • Errores de lectura de stream: Fallback graceful
  • Errores de IA: Continuación sin interrumpir el flujo

📊 Códigos de Respuesta

✅ Continuación Normal

Sin errores - continúa el pipeline

El middleware permite que la petición continúe normalmente

⚠️ 4xx - Client Errors

Errores del cliente - alerta Telegram
{ "error": "Client error detected", "statusCode": 400, "path": "/api/articulos/add", "method": "POST" }

❌ 5xx - Server Errors

Errores del servidor - error Telegram + IA
{ "error": "An unexpected error occurred.", "statusCode": 500, "path": "/api/articulos/getall", "method": "GET" }

💥 Excepciones No Controladas

Excepciones - error Telegram + IA + stack trace
{ "error": "An unexpected error occurred.", "exception": "System.NullReferenceException", "message": "Object reference not set to an instance of an object" }

🤖 Análisis de Inteligencia Artificial

🎯 Capacidades de IA (Gemini)

  • Análisis de errores: Identificación de patrones y causas
  • Sugerencias de solución: Código y pasos para resolver
  • Categorización: Clasificación automática de tipos de error
  • Contexto completo: Análisis con request/response bodies
  • Respuesta estructurada: Formato HTML para Telegram

📝 Formato de Respuesta IA

🤖 AI Analysis: 🔍 TYPE: Database connection error ❌ PROBLEM: Connection string is invalid or database is unreachable ✅ SOLUTION: 1. Verify connection string in appsettings.json 2. Check database server status 3. Ensure network connectivity

⚠️ Manejo de Errores de IA

  • Rate limiting: Rotación automática de claves API
  • Fallback graceful: Continúa sin IA si falla
  • Logging detallado: Registra errores de IA
  • Múltiples intentos: Intenta con diferentes claves
  • Timeout handling: No bloquea el flujo principal

📱 Notificaciones Telegram

🎯 Tipos de Notificaciones

  • Alertas (4xx): Errores del cliente - sendAlertMessageAsync
  • Errores (5xx): Errores del servidor - sendErrorMessageAsync
  • Inicialización: Confirmación de servicio disponible
  • Fallos de servicio: Notificación cuando Telegram no está disponible

📋 Información Incluida en Notificaciones

  • Método y ruta: GET /api/articulos/getall
  • Código de estado: 500 Internal Server Error
  • Trace ID: Identificador único de la petición
  • Información del usuario: Claims y autenticación
  • IP y puerto: Información de conexión
  • Duración: Tiempo de procesamiento
  • Headers importantes: User-Agent, Content-Type, etc.
  • Cuerpo de petición: Request body (si está disponible)
  • Cuerpo de respuesta: Response body o stack trace
  • Análisis IA: Sugerencias de solución (si está disponible)

🔍 Características Técnicas

🎯 Características del Middleware

  • Async/Await: Operaciones asíncronas completas
  • Stream Interception: Captura de request/response bodies
  • Compression Support: GZIP y Brotli decompression
  • Multipart Handling: Manejo seguro de formularios multipart
  • Buffering: Habilitación de buffering para múltiples lecturas
  • Error Recovery: Recuperación graceful de errores
  • Performance Monitoring: Medición de duración de peticiones
  • Security Focused: No expone información sensible

⚠️ Consideraciones de Seguridad

  • No captura cuerpos de formularios multipart por seguridad
  • Filtra headers sensibles en logs
  • No expone información de configuración interna
  • Maneja tokens de autenticación de forma segura
  • Protege contra ataques de timing
  • Logging de intentos de acceso anónimo

📝 Patrones de Diseño Utilizados

  • Middleware Pattern: Procesamiento en pipeline
  • Chain of Responsibility: Delegación de responsabilidades
  • Strategy Pattern: Diferentes estrategias según tipo de error
  • Observer Pattern: Notificaciones asíncronas
  • Factory Pattern: Creación de modelos IA
  • Template Method: Estructura común de manejo de errores

📈 Estadísticas de Rendimiento

O(1)
Complejidad Captura
Async
Operaciones
IA
Análisis Automático
Telegram
Notificaciones

Optimizaciones Implementadas:

🔗 Integración con Otros Componentes

🎯 Middleware Relacionados

  • GrafanaLoggingMiddleware: Logging estructurado complementario
  • DayOpenValidationMiddleware: Errores de validación de día
  • JwtLoggingMiddleware: Errores de autenticación
  • SpanishCultureMiddleware: Errores de configuración cultural

📋 Orden de Ejecución Recomendado

  1. SpanishCultureMiddleware: Configuración de cultura
  2. GrafanaLoggingMiddleware: Logging de inicio
  3. JwtLoggingMiddleware: Logging de autenticación
  4. DayOpenValidationMiddleware: Validación de día abierto
  5. ErrorHandlingMiddleware: Manejo de errores (último)

📋 Casos de Uso

🎯 Escenarios de Manejo de Errores

  • Errores de Base de Datos: Captura y analiza errores de conexión
  • Errores de Validación: Procesa errores 400 con contexto
  • Errores de Autenticación: Maneja errores 401/403
  • Errores de Servidor: Analiza errores 500 con IA
  • Excepciones No Controladas: Captura y notifica errores críticos
  • Errores de Compresión: Maneja streams corruptos
  • Timeouts: Detecta y reporta timeouts de operaciones

🔍 Ejemplos de Notificaciones

  • Error de BD: "Database connection failed" + sugerencia IA
  • Validación: "Invalid request parameters" + contexto
  • Autenticación: "Unauthorized access attempt" + IP
  • Servidor: "Internal server error" + stack trace + IA
  • Compresión: "Error decompressing response" + fallback