Consigne — Vue d'ensemble
Le module Consigne transforme un node leukOS (Raspberry Pi + écran tactile + lecteur QR USB) en consigne à colis connectée. Un opérateur dépose un colis depuis l'interface web Venus ; Saturn génère un code de retrait, l'envoie au destinataire par email (QR code + texte) et pousse le colis vers la consigne. Le destinataire scanne son QR code devant la consigne, le daemon C++ vérifie le code et libère le bon casier.

Déclinaison pour un guichet administratif

Cette déclinaison peut servir au retrait de documents préparés par un service public : carte nationale d'identité, passeport ou autres titres. Le parcours d'identification, la traçabilité et les règles de conservation doivent être définis selon les exigences du service concerné ; cette illustration présente un scénario d'usage, pas une fonction déjà décrite dans le parcours de consigne à colis ci-dessous.
Composants
| Composant | Rôle consigne | Code |
|---|---|---|
| Venus (Nest + Vue) | Pages Consignes, Nouveau colis, Email SMTP, groupe de sidebar dynamique | central/venus |
| Saturn (Go) | Domaine consigne, PostgreSQL, génération du code, email SMTP, envoi au node (gRPC puis REST), serveur gRPC leukos.SaturnService | central/saturn |
Daemon C++ leukos-node | ConsigneManager : SQLite, vérification des codes, ouverture des casiers, synchronisation vers Saturn | nodes/agent |
IHM Qt leukos-ui | Interrupteur mode consigne, page de scan, mur de casiers, tuile d'accueil conditionnelle | nodes/ui |
| Lecteur QR | Clavier HID USB : tape le code puis Entrée | matériel |
Architecture
Cycle de vie d'un colis
Un casier suit le même cycle : empty → occupied au dépôt, puis occupied → empty
au retrait.
Principes de conception
- Le node fait autorité sur l'état physique : l'état des casiers est calculé localement (SQLite) et poussé vers Saturn ; Saturn ne fait que le refléter.
- Le code de retrait n'est jamais stocké en clair : Saturn et le node ne conservent
que
sha256(MAJUSCULES(code)). Seul l'email du destinataire contient le code. - gRPC d'abord, REST en secours dans les deux sens (Saturn → node et node → Saturn).
- Tolérance aux coupures : colis non livrés réessayés par Saturn, événements non synchronisés conservés dans SQLite jusqu'à acquittement.
- Mode activable : un node n'est une consigne que si l'interrupteur Configuration → Consignes est activé.