Skip to main content

Flusso dei Dati: Position e Presence

Ecco il diagramma di flusso dettagliato che mostra il percorso dei due stream principali attraverso i microservizi.

Legenda Stream​

  • Presence: Gestisce lo stato online/offline. È un flusso diretto e veloce.
  • Position: Gestisce i dati GPS. Il servizio Positions esegue filter + enrich + persist in un'unica pipeline.

Dettagli Tecnici​

1. Stream Presence (Rosso)​

Il percorso Γ¨ immediato per garantire aggiornamenti in tempo reale sullo stato della connessione.

  • Sorgente: Decoder (SessionManager)
    • Eventi: online (connessione), offline (disconnessione).
  • Canale Redis: presence
  • Consumatore: WebSocket Service
    • Aggiorna la cache interna dello stato dispositivi.
    • Invia subito l'evento al frontend.

2. Stream Position (Blu) - Pipeline Unificata​

Il servizio Positions esegue tutto in un'unica pipeline:

  1. Input (positions:raw):
    • Il Decoder pubblica i dati grezzi appena decodificati.
  2. Filter (interno):
    • Elimina posizioni non valide (GPS 0,0, velocitΓ  impossibile, data futura/passata).
    • Se scartato, finisce in positions:rejected per audit.
  3. Enrich (interno):
    • Aggiunge informazioni calcolate (distanza, stato moto/sosta, totalDistance).
  4. Persist + Publish:
    • Salva nel database PostgreSQL.
    • Pubblica su positions:validated per i consumatori downstream.
  5. Broadcast:
    • Il WebSocket Service ascolta positions:validated.
    • Invia al frontend solo i dati che hanno superato tutta la catena di controllo.