Ir al contenido

Novedades Floogos — Semana 18, abril–mayo 2026 (27 abr – 3 may)

La semana 18 estuvo centrada en seguridad, interactividad y rendimiento. Los webhooks recibieron un sistema de seguridad completo con limitación de velocidad, filtrado de IP, verificación de firma HMAC y políticas de seguridad reutilizables, junto con una interfaz rediseñada que muestra estadísticas y logs en tiempo real. Los dashboards se volvieron interactivos con acciones al hacer clic y un cajón de acción. DataStore pasó a paginación del lado del servidor para un rendimiento mucho mejor con grandes conjuntos de datos. Los KPIs del dashboard se corrigieron para usar tasas de éxito de ejecución reales.

Ya está disponible un motor de seguridad completo para webhooks. Las políticas de seguridad son configuraciones reutilizables que se pueden asignar a uno o más webhooks. Cada política soporta:

  • Limitación de velocidad — Limita el número de peticiones por ventana de tiempo, de forma global o por dirección IP de origen.
  • Filtrado de IP — Permite o bloquea direcciones IP específicas y rangos CIDR (por ejemplo, 192.168.1.0/24).
  • Verificación HMAC-SHA256 — Valida la autenticidad de las peticiones usando una clave secreta compartida. La firma se compara usando una comparación de igualdad resistente a ataques de tiempo para evitar oráculos temporales. El nombre del header que transporta la firma es configurable.
  • Restricción de método HTTP — Acepta solo métodos específicos (GET, POST, PUT, etc.).
  • Límite de tamaño de payload — Rechaza peticiones cuyo cuerpo supere un tamaño configurado.
  • Restricción por horario — Permite peticiones solo en días específicos de la semana y dentro de un rango horario, con soporte de zonas horarias.

Toda la validación se realiza en una secuencia encadenada sin dependencias externas. La limitación de velocidad se mantiene en memoria con expiración basada en TTL.

Las políticas se crean y gestionan desde el panel de webhooks. Se sugiere un nombre auto-generado basado en la configuración activa. Se puede generar una clave secreta aleatoria de 32 bytes en hexadecimal con un solo clic para la configuración de HMAC.

Cada petición que llega a un webhook ahora se registra automáticamente. Cada entrada de log incluye:

  • Dirección IP de origen
  • Método HTTP
  • Estado de respuesta (allowed / blocked / rate_limited / error)
  • Duración de la petición en milisegundos
  • Cadena User-Agent

La vista de lista de webhooks ahora muestra, para cada webhook: llamadas en las últimas 24 horas, peticiones bloqueadas en las últimas 24 horas y la marca de tiempo de la llamada más reciente.

Un panel expandible por webhook muestra:

  • Resumen de KPIs de 30 días.
  • Gráfico de área de peticiones totales y bloqueadas diarias durante 30 días.
  • Tabla de las últimas 8 peticiones con IP, estado, duración y motivo de bloqueo.

Los widgets de los dashboards ahora soportan acciones configurables al hacer clic. Cuando un usuario hace clic en un widget, puede:

  • Abrir una URL externa (en la misma pestaña, nueva pestaña o un cajón lateral).
  • Abrir otro dashboard de Floogos incrustado en un cajón lateral.
  • Abrir un formulario de Floogos en un iframe incrustado en un cajón lateral.
  • Abrir un cajón de previsualización de datos con contenido de DataStore.

Los widgets de tabla también soportan acciones a nivel de fila, usando un rowIdField configurable para pasar el identificador de la fila seleccionada al destino.

Un nuevo componente DashboardActionDrawer gestiona todos los destinos en modo cajón (dashboards incrustados, formularios en iframe, previsualizaciones de datos).

El panel catálogo izquierdo del Dashboard Builder ahora es contraíble, y el panel de configuración derecho tiene un divisor redimensionable.

Paginación del Lado del Servidor en DataStore

Sección titulada «Paginación del Lado del Servidor en DataStore»

DataStore ahora realiza la paginación, filtrado y búsqueda en el servidor. La API acepta los parámetros limit, offset, search y noTags y devuelve un COUNT junto a los datos. Esto elimina el patrón de consultas N+1 y hace que DataStore sea utilizable con grandes conjuntos de datos sin cargar todos los registros en el navegador.

La interfaz añade búsqueda con debounce, un selector de filtro “sin etiquetas” y una función de exportación que obtiene todas las filas (sin límite de página) para descargar.

Paridad de Funcionalidades en Dashboards Públicos

Sección titulada «Paridad de Funcionalidades en Dashboards Públicos»

Los dashboards públicos (accesibles mediante /public-dashboard/:token) ahora coinciden completamente con la experiencia del editor: las fuentes de datos compartidas se cargan correctamente y el cajón de acción funciona de forma idéntica a la vista autenticada.

Los KPIs del Dashboard Usan la Tasa de Éxito Real

Sección titulada «Los KPIs del Dashboard Usan la Tasa de Éxito Real»

Las tarjetas KPI del dashboard se actualizaron para calcular la tasa de éxito a partir de los registros de ejecución reales en lugar de un valor estimado o fijo. El tutorial también se actualizó para reflejar los nuevos indicadores.

Corrección del Renderizado de Badges de Seguridad

Sección titulada «Corrección del Renderizado de Badges de Seguridad»

Los badges de seguridad en la lista de webhooks no se renderizaban cuando el valor subyacente era TINYINT 0 de MySQL (que JavaScript recibía como el número 0 en lugar de false). La lógica de renderizado ahora gestiona correctamente este caso.

La lista de webhooks se simplificó con un layout más limpio:

  • Las URLs de webhooks y la información de seguridad se movieron a un cajón lateral que se abre al hacer clic en la fila, reduciendo el desorden visual en la lista principal.
  • Los badges de seguridad (Rate, IP, HMAC) ahora se muestran inline en una columna compacta.
  • Un selector desplegable de política permite cambiar la política asignada directamente desde la lista.
  • El sistema de seguridad de webhooks está implementado en services/webhookSecurityService.js sin dependencias de tiempo de ejecución externas.
  • El registro usa una nueva tabla webhook_logs (migración 031). La consulta de la lista de webhooks usa una subconsulta para contar calls_24h y blocked_24h sin una petición separada.
  • Las políticas de seguridad usan una nueva tabla webhook_policies (migración 032) con columnas policy_id y secret_key añadidas a la tabla webhooks.
  • Todas las estadísticas de seguridad y el CRUD de políticas se exponen mediante routes/webhookStats.js: GET /:id/stats, GET /:id/logs y CRUD completo en /policies más PUT /:id/policy.
  • La comparación HMAC usa crypto.timingSafeEqual de Node.js para evitar ataques de oráculo temporal.