Architecture Sync (Local + Serveur)¶
Principe¶
L'application mobile fonctionne en mode offline-first:
- écriture locale immédiate (SQLite)
- ajout d'une opération dans la file de synchro
- envoi asynchrone vers le serveur
- pull périodique des changements distants
Déclencheurs actuellement implémentés dans l'application:
- au démarrage de l'application (bootstrap)
- au retour réseau (changement de connectivité)
- en tâche périodique adaptative (30s, 2min ou 5min selon charge de file)
- push de la file locale vers gateway via
SyncEngine - pull serveur (refresh complet des listes) vers SQLite apres traitement de la file
- mode cursor-ready: tentative de pull incremental via curseur (
cursor/updatedAfter) si disponible, sinon fallback automatique en refresh complet
Domaines synchronisés¶
- GTIN
- Car
- CarMileage
- Android
Politique de conflit¶
Politique courante: serveur prioritaire.
En cas de conflit de version:
- la version serveur est conservée
- la version locale est écrasée
- l'utilisateur reçoit une notification métier si nécessaire
Endpoints API¶
Routes consommées via gateway:
/gtin/car/car-mileage/android/api/v1/sync/{domain}/changes
État local minimal¶
sync_queuepour les opérations en attentesync_statepour les curseurs de reprisedeleted_atdans les tables métier pour soft-delete local
Soft-delete local¶
Quand le backend renvoie deletedIds en synchro incrémentale:
- l'élément est masqué localement (
deleted_atnon null) - aucune suppression physique immédiate n'est faite
- l'utilisateur peut déclencher la purge explicite via l'action dédiée dans le dashboard
Sécurité¶
- Authentification JWT côté gateway
- token transmis via
Authorization: Bearer <token>