diff --git a/lib/estado/estado_alarmas.dart b/lib/estado/estado_alarmas.dart index b6e93fb..02bdc5c 100644 --- a/lib/estado/estado_alarmas.dart +++ b/lib/estado/estado_alarmas.dart @@ -29,6 +29,7 @@ class EstadoAlarmas extends ChangeNotifier { Timer? _vigilancia; final _alarmasVencidasController = StreamController.broadcast(); final Set _ejecucionesEmitidas = {}; + static const _margenDisparoLocal = Duration(seconds: 45); bool _cargando = false; String? _error; @@ -54,7 +55,7 @@ class EstadoAlarmas extends ChangeNotifier { _error = null; notifyListeners(); try { - final config = await servicio.cargar(); + final config = await servicio.recalcularTodas(); _aplicar(config); debugPrint('[PluriWave][alarmas] cargadas=${_alarmas.length} vacaciones=${_vacaciones.length} excepciones=${_excepciones.length}'); await _sincronizarTodas(); @@ -204,6 +205,14 @@ class EstadoAlarmas extends ChangeNotifier { if (!alarma.activa || proxima == null) continue; if (proxima.isAfter(ahora)) continue; final key = '${alarma.id}:${proxima.millisecondsSinceEpoch}'; + final retraso = ahora.difference(proxima); + if (retraso > _margenDisparoLocal) { + _ejecucionesEmitidas.add(key); + debugPrint( + '[PluriWave][alarmas] vencida local ignorada por antigua id=${alarma.id} proxima=${proxima.toIso8601String()} retraso=${retraso.inSeconds}s', + ); + continue; + } if (_ejecucionesEmitidas.add(key)) { debugPrint('[PluriWave][alarmas] vencida local id=${alarma.id} proxima=${proxima.toIso8601String()}'); _alarmasVencidasController.add(alarma);