--- asset_id: MIN-EL-Jesus-20260630-v01 version: v01 tipo: MIN — Minuta del día owner: Jesús sherpa: Jess ratificador: Jesús fecha: 2026-06-30 intellibank: IB-EL-EmpowerLabs subbank: EQ-EL-Equipo proyecto: tribus-rrhh · mejora de performance · notificaciones --- # Minuta del día — Jesús · 2026-06-30 ## Qué se hizo - **Fix `validRoutesF()` en `top-bar.component.ts`:** - Se añadió guard `routesValidated` — las 4 llamadas HTTP de visibilidad de rutas ahora se ejecutan una sola vez por sesión, sin importar cuántas veces se invoque el método - **Fix navegación interna — SPA sin recargas:** - Se reemplazó `location.replace()` por `Router.navigate()` en `showDetails()`, `showMoreDetails()` y `goCluster()` en `top-bar.component.ts` - Se migró `cluster.component.ts` de `snapshot.paramMap` a `paramMap.subscribe()` con `takeUntil` — ahora reacciona al cambiar de cluster sin recarga - Se migró `mi-empresa.component.ts` al mismo patrón — navegar entre proveedores desde el buscador funciona sin full reload - **Sistema de notificaciones — análisis y correcciones:** - Se identificó y corrigió un bug que podía causar cierres inesperados al recibir notificaciones en tiempo real - Se corrigieron fugas de memoria en el sistema de notificaciones que acumulaban recursos con el tiempo - Se resolvió un problema donde al abrir la app en múltiples pestañas se generaban conexiones duplicadas al servidor - Se corrigió un comportamiento que causaba recargas completas de página al navegar desde el buscador - Se arregló la reproducción de sonido de notificaciones, que podía sonar varias veces simultáneamente - Se preparó el servicio de notificaciones para ser compartido con otras apps sin conflictos entre ellas - Se analizó y dejó lista (pendiente de activar) una mejora que reduce conexiones al servidor cuando el usuario tiene varias pestañas abiertas - **Componente `ad-banner` — correcciones:** - Se agregó `takeUntil(this.destroy$)` al subscribe de `serveAd` en `loadNextBanner()` — previene callbacks sobre instancias destruidas - Se añadió `probe.onerror` en `updateBannerMetrics` — el banner queda clicable aunque la imagen falle al cargar - Se aplicó throttle con `requestAnimationFrame` en `onBannerMove` — elimina reflows forzados por cada pixel de movimiento del mouse - Se eliminó `transition: background-image` del CSS — no funciona en ningún browser, el comportamiento real no cambia - Se eliminó getter redundante `activeBanners` y el template apunta directo a `banners` - **Fix congelamiento en `/home` — OnsenUI cargado 3 veces:** - Identificado via Chrome DevTools: `[Onsen UI] Onsen UI is loaded more than once.` en consola - Causa: `angular.json` scripts bundle + 2 paths distintos de import TypeScript → 3 instancias de webpack → registro síncrono de custom elements 3 veces → freeze ~2s - Fix: eliminado `onsenui.min.js` de `angular.json scripts`; añadido `import 'onsenui'` como side-effect único en `app.module.ts`; 6 componentes sin uso de `ons.*` → import eliminado; 6 componentes con uso → `declare var ons: any` (referencia al global) - Resultado: 0 warnings de OnsenUI en consola, carga sin congelamiento - **Fix Stripe bloqueante:** - `