Mode hors-ligne
Stockaj Kiosk est conçu pour fonctionner même en l'absence de connexion réseau. Les opérations d'écriture (emprunts et retours) sont automatiquement mises en file d'attente et synchronisées dès que la connexion est rétablie.
Comment ça marche
Enregistrement local
Lorsqu'une opération échoue (erreur réseau, timeout serveur, etc.), elle est automatiquement enregistrée dans une base SQLite locale sur la machine. L'utilisateur voit l'écran de confirmation comme si l'opération avait réussi — aucune action supplémentaire n'est requise.
Synchronisation automatique
Le kiosk vérifie l'état de la file d'attente toutes les 5 secondes. Quand la connexion est rétablie :
- Les opérations en attente sont envoyées une par une, de la plus ancienne à la plus récente
- Chaque opération réussie est supprimée de la file
- En cas d'échec, l'opération est réessayée plus tard
Vous pouvez aussi forcer une synchronisation immédiate avec le bouton Synchroniser de l'indicateur de connexion.
Politique de retry
Chaque opération en file d'attente dispose de 3 tentatives maximum :
| Tentative | Résultat |
|---|---|
| 1ère à 3ème | Réessayée lors du prochain cycle de synchronisation |
| Après 3 échecs | Marquée comme échouée (ne sera plus réessayée automatiquement) |
Indicateur de connexion
L'indicateur de connexion est affiché en permanence en bas à gauche de l'écran, sur toutes les pages (cockpit, configuration, mode kiosk).
| Indicateur | Signification |
|---|---|
| 🟢 En ligne | Connexion active, aucune opération en attente |
| 🟡 N opération(s) en attente | Connexion active, opérations en attente de synchronisation — un bouton Synchroniser est affiché |
| 🔴 Hors ligne | Aucune connexion au serveur |
| ⏳ Synchronisation… | Les opérations en attente sont en cours de synchronisation |



Heartbeat
Le kiosk envoie un ping au serveur toutes les 30 secondes pour vérifier la connectivité. Ce mécanisme permet de détecter rapidement les coupures réseau et les reconnexions.
Limitations connues
- Les recherches (bénévoles, articles) nécessitent une connexion active — elles ne sont pas mises en cache
- Les scans de QR codes nécessitent une connexion pour identifier l'article
- Seules les opérations d'écriture (créer un emprunt, valider un retour) sont mises en file d'attente
Données stockées localement
La file d'attente hors-ligne stocke les informations suivantes pour chaque opération :
| Donnée | Description |
|---|---|
| URL | Endpoint API cible (ex. /kiosk/movements, /kiosk/bulk-return) |
| Méthode | La méthode HTTP de la requête en file |
| Données | Corps de la requête (identifiants, quantités, notes) |
| Horodatage | Date et heure de l'opération |
| Compteur de tentatives | Nombre de tentatives déjà effectuées |
| Statut | pending, retrying, ou failed |
Ces données sont stockées dans un fichier SQLite local (offline_queue.db) et sont supprimées après synchronisation réussie.