diff --git a/diagrams/architecture-diagram.puml b/diagrams/architecture-diagram.puml new file mode 100644 index 0000000..83f8e03 --- /dev/null +++ b/diagrams/architecture-diagram.puml @@ -0,0 +1,81 @@ +@startuml +interface MQTT as mqtt1 +interface MQTT as mqtt2 +interface HTTP as http1 +interface HTTP as http2 +interface WebSocket + +node Agent { + component Accelerometer + component GPS + component CarParkingSlots + component "Data Aggregator" as agent_agg +} + +node Edge { + component AgentMQTTAdapter + component AgentDataProcessor + component HubMQTTAdapter + component HubHTTPAdapter +} + +node Hub { + component EdgeHTTPAdapter + component EdgeMQTTAdapter + component Aggregator + component StoreHTTPAdapter + component Redis +} + +node Store { + component "HTTP Rest API" as store_http + component "SQL Adapter" as store_sql + component "Websocket API" as store_ws +} + +node MapView { + component "Store Processor" as mv_sp + component "Input Handler" as mv_ih + component "Map" +} + +component PostgreSQL + +agent_agg --> Accelerometer +agent_agg --> GPS +agent_agg --> CarParkingSlots + +agent_agg -> mqtt1 + +mqtt1 <- AgentMQTTAdapter +AgentMQTTAdapter -> AgentDataProcessor +AgentDataProcessor --> HubMQTTAdapter +AgentDataProcessor --> HubHTTPAdapter +HubMQTTAdapter --> mqtt2 +HubHTTPAdapter --> http1 + +mqtt2 <-- EdgeMQTTAdapter +http1 <-- EdgeHTTPAdapter +EdgeMQTTAdapter --> Aggregator +EdgeHTTPAdapter --> Aggregator +Aggregator <--> Redis +StoreHTTPAdapter <-- Aggregator + +http2 <-- StoreHTTPAdapter +store_http --> http2 +store_http -> store_sql +store_sql <- store_ws +store_ws --> WebSocket + +store_sql <--> PostgreSQL + +WebSocket <-- mv_sp +mv_sp <-- mv_ih +mv_sp --> Map + +actor Spectator as user + +Map --> user +mv_ih <-- user + +@enduml diff --git a/diagrams/general-sequence.puml b/diagrams/general-sequence.puml new file mode 100644 index 0000000..1fff497 --- /dev/null +++ b/diagrams/general-sequence.puml @@ -0,0 +1,22 @@ +@startuml +actor Worker as worker +participant Agent as agent +participant "Edge" as edge +participant "Hub" as hub +participant "Store" as store +participant "MapView" as mapview +actor Spectator as spectator + +worker -> agent : Start agent +agent -> edge : Send sensor data +edge -> edge : Classify road state +edge -> hub : Send processed data +hub -> hub : Save processed data +hub -> store : Send processed data batch +store -> store : Save processed data batch +store -> mapview : Send new rows +mapview -> spectator : Show updated paths and markers +spectator -> mapview : Click on markers +mapview -> spectator : Hide clicked markers +mapview -> store : Save display preference +@enduml diff --git a/diagrams/main-activity-diagram.puml b/diagrams/main-activity-diagram.puml new file mode 100644 index 0000000..230b975 --- /dev/null +++ b/diagrams/main-activity-diagram.puml @@ -0,0 +1,15 @@ +@startuml +|Користувач| +start +:Натискає на іконку ями; +|Система| +:Запитує підтвердження видалення ями; +|Користувач| +:Підтверджує видалення ями; +|Система| +:Модифікує запис про яму; +note right #ff9999: Можлива виключна ситуація 1 +:Видаляє яму; +|Користувач| +stop +@enduml