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).
- Eventi:
- 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:
- Input (
positions:raw):- Il
Decoderpubblica i dati grezzi appena decodificati.
- Il
- Filter (interno):
- Elimina posizioni non valide (GPS 0,0, velocitΓ impossibile, data futura/passata).
- Se scartato, finisce in
positions:rejectedper audit.
- Enrich (interno):
- Aggiunge informazioni calcolate (distanza, stato moto/sosta, totalDistance).
- Persist + Publish:
- Salva nel database PostgreSQL.
- Pubblica su
positions:validatedper i consumatori downstream.
- Broadcast:
- Il
WebSocket Serviceascoltapositions:validated. - Invia al frontend solo i dati che hanno superato tutta la catena di controllo.
- Il