# src/processors/alerts.py
"""
Módulo de procesamiento de alertas.

Implementa el sistema de alertas y notificaciones, incluyendo:
- Detección de condiciones de alerta
- Generación de notificaciones
- Gestión de umbrales
- Envío de alertas por diferentes canales
- Registro de eventos de alerta

Este módulo trabaja en conjunto con los procesadores de datos
para identificar y notificar situaciones que requieren atención.
"""

from datetime import datetime
import logging
from .base import BaseProcessor
from ..config.settings import TEMP_MIN, TEMP_MAX
from ..models.sensor import Sensor

logger = logging.getLogger(__name__)

class AlertProcessor(BaseProcessor):
    """
    Procesador de alertas del sistema.
    
    Gestiona la detección y notificación de condiciones
    que requieren atención o intervención.
    """
    
    def __init__(self, db_name):
        super().__init__(db_name)
        self.alert_conditions = {
            'temp_high': self._check_temp_high,
            'temp_low': self._check_temp_low,
            'sensor_offline': self._check_sensor_offline,
            'rapid_change': self._check_rapid_change
        }
        
    def process_alerts(self, measurements):
        """
        Procesa mediciones en busca de condiciones de alerta.
        
        Args:
            measurements (list): Lista de mediciones a analizar
            
        Returns:
            list: Lista de alertas generadas
        """
        alerts = []
        for measurement in measurements:
            for condition_name, check_func in self.alert_conditions.items():
                if check_func(measurement):
                    alert = self._generate_alert(
                        condition_name, 
                        measurement
                    )
                    alerts.append(alert)
                    self._send_alert(alert)
        return alerts