--- asset_id: MIN-EL-Jesus-20260629-v01 version: v02 tipo: MIN — Minuta del día owner: Jesús sherpa: Jess ratificador: Jesús fecha: 2026-06-29 intellibank: IB-EL-EmpowerLabs subbank: EQ-EL-Equipo proyecto: tribus-rrhh · mejora de performance --- # Minuta del día — Jesús · 2026-06-29 ## Qué se hizo - Arrancó el room bajo WORX con `/arrancaroom` — contexto y perfil del operador cargados. - **Análisis de auditoría de performance** (`Auditoria-home.md`) del proyecto `tribus-rrhh`: - Revisión de `app-routing.module.ts` (50 rutas, todas eager, cero NgModules por página). - Revisión de `angular.json` (budgets en 135 MB inútiles, faltan `vendorChunk` y `buildOptimizer`). - Revisión de `index.html` (sin preconnect a genniux.net, sin skeleton, Stripe síncrono, bug con dos ``). - Revisión de `inicio.component.ts` (6 llamadas API en constructor, no en ngOnInit). - Revisión de `ngsw-config.json` (un solo grupo, timeout 30s, poco granular). - Identificado `congras.gif` (506 KB) activo en `registro-comprador.component.html`. - Creado `data/auditoria/Analisis-factibilidad-home.md` con evaluación completa por ítem. - **Análisis comparativo con rebelocity-club** (`Factibilidad-home.md`): - Verificado qué de la Fase 1 y 2 ya existe en rebelocity-club. - Confirmado plan 100% replicable: mismo stack, mismo API, mismos problemas. - Actualizado `Analisis-factibilidad-home.md` con comparativa y plan de réplica. - **Fase 1 implementada en tribus-rrhh** (7 cambios aplicados, ver detalle abajo): - **Iteración servicio de banners:** resuelto bug que impedía la correcta visualización en dispositivos móviles. - **Junta con Ángeles y Gustavo:** revisión de avances y nuevos ajustes sobre la plataforma de Rebelocity Club. - **Análisis de notificaciones** (`src/app/custom/top-bar` + `src/app/services/notifications.service.ts`): - 12 issues documentados en `data/auditoria/Analisis-notificaciones.md`. - 4 issues de severidad alta: `connect()` sin guard (listeners acumulados), crash por `notifData.last` undefined, `BreakpointObserver` sin `takeUntil`, y `location.replace()` que rompe el modelo SPA. - Issues medios: `playAudio()` crea Audio nuevo por notificación, `validRoutesF()` lanza 4 HTTP calls en cada invocación, 15 subscriptions HTTP sin `takeUntil`. - Issues bajos/mínimos: `window.addEventListener` sin cleanup, `BroadcastChannel` no cerrado, `destroyed$` sin `.complete()`, código muerto del bloque `isBroadcast`, `console.error` en producción. - **Fase 2 implementada en tribus-rrhh**: - `index.html`: preconnect + dns-prefetch a genniux.net, orden fonts corregido, skeleton screen con shimmer (`#342d78`), bug doble `` eliminado, script Stripe restaurado (se había eliminado por error). - `angular.json`: `vendorChunk: true`, `buildOptimizer: true`, `optimization: true`, budgets reales (10 MB warning / 15 MB error). - `src/app/directives/lazy-image.directive.ts`: creada `LazyImageDirective` + declarada en `app.module.ts` — aplica `loading="lazy" decoding="async"` a todas las `` sin atributo loading. - `congras.gif` convertido a WebM con ffmpeg (506 KB → 172 KB, −66%); `registro-comprador.component.html` usa `