Volver a la wiki

Feature: Avisos del requisito 24/7 del Sentinel

Resumen

Comunicación clara y contextual sobre el requisito 24/7 de la monitorización con Sentinel. El sistema avisa de forma persistente (tranquila) en varios sitios clave cuando Sentinel está activo, y muestra un aviso destacado (warning/naranja) cuando no hay monitorización 24/7 porque no hay un agente Primary asignado en un dispositivo siempre encendido — incluyendo, desde la task #190, el propio menú lateral (sidebar) de Sentinel Mode, que se despliega solo para que el aviso no pase desapercibido.

Enfoque del diseño: “Informar siempre, alarmar al faltar” — el usuario siempre sabe el estado de su monitorización 24/7, sin necesidad de expandir paneles ocultos.

Implementación

Nuevos estilos CSS

Archivo modificado: static/css/components.css

Se añadieron 92 líneas de CSS nuevo con los siguientes componentes de UI:

.info-note — Nota informativa tranquila

.alert — Aviso destacado (warning)

.sentinel-caption + .fleet-caption — Leyendas persistentes

.badge-primary — Etiqueta “Primary”

.sentinel-header-dot.off — Indicador en la cabecera

JavaScript — Lógica de avisos

Función principal: _renderFleetSentinelNotice(fleet) en static/js/base.js

// Fleet Manager modal (tarea #182)
function _renderFleetSentinelNotice(fleet) {
    const el = document.getElementById('fleet-sentinel-notice');
    if (!el) return;
    
    // State A: ¿hay algún agente online con Sentinel activo?
    const sentinelActive = Array.isArray(fleet) && 
        fleet.some(a => a.status === 'online' && a.sentinel_active);
    
    if (sentinelActive) {
        // Mostrar nota tranquila
        el.innerHTML = `<div class="info-note">...</div>`;
    } else {
        // Mostrar alerta naranja
        el.innerHTML = `<div class="alert">...</div>`;
    }
}

Llamada en el flujo:

En Observatory Agent (static/js/pages/observatory/ObservatoryAgent.js):

Archivo modificado: static/js/pages/observatory/ObservatorySentinel.js

Antes, el aviso de “24/7 monitoring is off” solo vivía en el widget Agent Fleet del overview; el menú lateral (sidebar) de Sentinel Mode no decía nada si el usuario no lo desplegaba. La task #190 cierra ese hueco:

Cambios en templates HTML

templates/base.html

templates/monitoring/observatory.html

Comportamiento

State A: Sentinel activo (hay agente Primary online con sentinel_active: true)

State B: Sentinel inactivo (no hay Primary o no tiene sentinel_active)

Internacionalización (i18n)

Status: Strings nuevos están marcados con ${t('...')} en JS y {% trans '...' %} en templates.

Deuda documentada:

Deuda técnica asociada

  1. Sidebar auto-expand + aviso destacado — RESUELTO en task #190 (commit c5b104e, v1.85.5). El sidebar Sentinel Mode escucha el evento observatory:fleet-sentinel disparado por ObservatoryAgent.js y reacciona con el aviso + auto-expand + punto naranja, sin una segunda llamada a la API.

  2. I18n ES:

    • Strings nuevos necesitan traducción → Ciclo F4.
  3. Cambios API esperados (out of scope de este PR):

    • /api/agent/fleet debe devolver campo sentinel_active en el objeto agente.
    • Status quo: asumido que ya existe (verificado en local por el autor).

Verificación local

Testeado por el autor (@Esquembri, co-authored por Claude Opus 4.8):

Task #190 (v1.85.5): sidebar auto-expand + aviso + punto de cabecera verificados sobre el dato real del widget Agent Fleet, sin segunda llamada a la API.

Véase también

Subir