Patrón 4: Offline‐First con sincronización - JuanHerreraP/Proyecto-MISO-Solventa-Grupo-11 GitHub Wiki
Problema
El usuario puede necesitar consultar su póliza o guardar una evidencia cuando no tiene conexión. Si Android dependiera siempre del backend, estas funciones quedarían bloqueadas.
Solución
Se utiliza el patrón Offline-First. La aplicación consulta primero el almacenamiento local y sincroniza la información con Solventa cuando existe conexión.
Aplicación en Solventa
La app guarda localmente:
- Pólizas necesarias para la billetera.
- Fecha de la última actualización.
- Borradores de evidencias.
- Operaciones pendientes de sincronización.
Razonamiento
Este patrón permite utilizar funciones importantes de Android en lugares con conexión inestable. También evita que el usuario pierda información mientras reporta un siniestro.
Relación con los ASR
- EC11 – Disponibilidad: permite continuar con funciones limitadas cuando no existe conexión.
- EC08 – Seguridad: protege el acceso a información almacenada localmente.
- EC10 – Integridad: mantiene trazabilidad sobre evidencias y operaciones pendientes.
También soporta HU27, HU31 y especialmente HU32.
Ventajas
- Consulta de pólizas sin conexión.
- No se pierden borradores.
- Mejor experiencia con redes inestables.
- Sincronización automática.
Limitaciones
- La información local puede estar desactualizada.
- Deben resolverse posibles conflictos.
- Es necesario proteger los datos del dispositivo.
- No todas las operaciones pueden ejecutarse offline.
Diagrama
flowchart TB
UI["Interfaz Android"]
Repository["Repositorio"]
LocalDB[("Almacenamiento local cifrado")]
Pending["Operaciones pendientes"]
Sync["Sincronizador"]
Gateway["API Gateway"]
BFF["BFF Móvil"]
UI --> Repository
Repository -->|Consulta inmediata| LocalDB
Repository -->|Guarda borrador| Pending
LocalDB --> UI
Pending --> Sync
Sync -.->|Al recuperar conexión| Gateway
Gateway --> BFF
BFF -->|Datos actualizados| Sync
Sync --> LocalDB