codigo0/docs/archivo/RESUMEN_PWA_ACTUALIZACIONES.md
planetazuzu 2f9fb6e499 chore: limpieza completa del proyecto
- Fase 1: Eliminar archivos innecesarios (logs, builds, node_modules)
- Fase 2: Mover backups y duplicados a revisión:
  - _BACKUP_MD/ (203 archivos)
  - MANUAL_TES_DIGITAL/ (110 archivos)
  - imagenes-pendientes/ (60 archivos)
- Fase 3: Simplificar configuraciones (mover no usadas a config_backup/)
- Fase 4: Consolidar documentación:
  - 13 documentos esenciales → docs/consolidado/
  - 42 documentos → docs/archivo/
  - README.md actualizado
- Fase 5: Organizar scripts (mantener solo esenciales)
- Fase 6: Reinstalación y verificación (npm install + build)
- Corregir clave duplicada 'uso-tensiometro' en image-registry.ts
- Total: 393 archivos movidos a revisión, 5 configuraciones archivadas, 55 documentos organizados
- Build verificado y exitoso
2025-12-23 10:16:35 +01:00

3.5 KiB

Resumen: PWA y Sistema de Actualizaciones

Fecha: 2024-12-19


MEJORAS IMPLEMENTADAS

1. Service Worker Mejorado (public/sw.js)

  • Versión de cache: CACHE_VERSION = 'v1.0.1' (incrementar para forzar actualización)
  • Cache First para assets estáticos (offline-first)
  • Network First para HTML (permite actualizaciones)
  • Cache automático de imágenes en /assets/infografias/
  • Limpieza automática de caches antiguos

2. Sistema de Actualizaciones (src/main.tsx)

  • Registro mejorado: updateViaCache: 'none' (siempre verifica actualizaciones)
  • Verificación periódica: Cada hora
  • Verificación al recuperar foco: Cuando vuelves a la app
  • Detección de nueva versión: Escucha eventos updatefound

3. Hook useServiceWorker (src/hooks/useServiceWorker.ts)

  • Estado del SW: registration, updateAvailable, offline
  • Funciones: updateServiceWorker(), reloadPage()
  • Detección automática de actualizaciones

4. Componente UpdateNotification (src/components/layout/UpdateNotification.tsx)

  • Banner visual cuando hay actualización
  • Botón "Actualizar ahora" para aplicar actualización
  • Botón "Más tarde" para posponer
  • Integrado en App.tsx

5. Manifest Mejorado (public/manifest.json)

  • Iconos adicionales (192x192, 512x512)
  • Configuración completa para instalación PWA

🔄 CÓMO FUNCIONA

Flujo de Actualización

  1. Desarrollo:

    • Cambias código
    • Cambias CACHE_VERSION en sw.js (ej: v1.0.1v1.0.2)
    • Haces build: npm run build
    • Subes a servidor
  2. Usuario abre la app:

    • El navegador detecta que sw.js cambió
    • Descarga la nueva versión del SW
    • La instala en segundo plano
  3. Nueva versión instalada:

    • El hook useServiceWorker detecta updateAvailable = true
    • Se muestra el banner de actualización
    • El usuario puede actualizar ahora o más tarde
  4. Usuario hace clic en "Actualizar ahora":

    • Se envía mensaje SKIP_WAITING al SW
    • El SW se activa inmediatamente
    • Se recarga la página
    • Se crea nuevo cache con nueva versión
    • Se elimina cache antiguo

🧪 VERIFICACIÓN

Test Rápido

# 1. Build actual
npm run build

# 2. Preview
npm run preview

# 3. Abrir en navegador
# 4. DevTools > Application > Service Workers
# Verificar: SW registrado y activo

# 5. Cambiar CACHE_VERSION en public/sw.js
# 6. Build de nuevo
npm run build

# 7. Recargar página en navegador
# Verificar: Aparece banner de actualización

📋 CHECKLIST

  • Service Worker configurado
  • Sistema de actualizaciones implementado
  • Hook useServiceWorker creado
  • Componente UpdateNotification creado
  • Integrado en App.tsx
  • Manifest mejorado
  • Build funciona correctamente
  • Test en navegador (requiere servidor)
  • Test offline (requiere servidor)
  • Test de actualización (requiere servidor)

🎯 PRÓXIMOS PASOS

  1. Probar en servidor real:

    • Desplegar en servidor
    • Verificar que SW se registra
    • Verificar que actualizaciones funcionan
  2. Opcional: Indicador offline:

    • Añadir indicador visual cuando está offline
    • Mostrar en Header o BottomNav
  3. Opcional: Sincronización:

    • Sincronizar datos cuando vuelve la conexión
    • (Requiere backend)

Estado: COMPLETADO - Sistema de actualizaciones implementado y listo para probar