31 lines
1.3 KiB
Plaintext
31 lines
1.3 KiB
Plaintext
|
|
@startuml
|
|||
|
|
participant Агент as agent
|
|||
|
|
participant "MQTT Broker (raw\ntopic)" as mqtt1
|
|||
|
|
participant "Edge Service" as edge
|
|||
|
|
participant "MQTT\nBroker (processed\ntopic)" as mqtt2
|
|||
|
|
participant "Hub Service" as hub
|
|||
|
|
participant "Redis" as redis
|
|||
|
|
participant "Store API" as store
|
|||
|
|
participant "PostgreSQL" as db
|
|||
|
|
participant "MapView Client" as mapview
|
|||
|
|
|
|||
|
|
agent -> mqtt1 : Надіслати\nсиру\nтелеметрію
|
|||
|
|
mqtt1 -> edge : Передати\nсире\nповідомлення
|
|||
|
|
edge -> edge : Перевірити\nAgentData
|
|||
|
|
edge -> edge : Обробити\nтелеметрію
|
|||
|
|
edge -> mqtt2 : Надіслати\nоброблені дані
|
|||
|
|
mqtt2 -> hub : Передати\nоброблене\nповідомлення
|
|||
|
|
hub -> hub : Перевірити\nProcessedAgentData
|
|||
|
|
hub -> redis : LPUSH у буфер
|
|||
|
|
hub -> redis : LPOP елемента\nbatch
|
|||
|
|
redis -> hub : Повернути\nелемент
|
|||
|
|
hub -> store : POST batch
|
|||
|
|
store -> db : Додати записи
|
|||
|
|
db --> store : Повернути\nстворені записи
|
|||
|
|
store -> mapview : Надіслати через WebSocket
|
|||
|
|
mapview -> mapview : Сортувати за\ntimestamp
|
|||
|
|
mapview -> mapview : Оновити маркер\nтранспорту
|
|||
|
|
mapview -> mapview : Додати маркер\npothole/bump
|
|||
|
|
store --> hub : Успішна відповідь
|
|||
|
|
@enduml
|