[P] Convert sequence diagram files to PlantUML format

This commit is contained in:
2026-03-23 20:50:26 +02:00
parent 98e0512fbe
commit 14c5c35787
8 changed files with 60 additions and 710 deletions

View File

@@ -1,355 +0,0 @@
<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36" version="29.6.4">
<diagram name="Сторінка-1" id="LR9LLbfbeJSaoxHAs9rO">
<mxGraphModel dx="2066" dy="1103" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="S-88E6s6WcGKqnTyDZc1-81" parent="1" style="rounded=0;whiteSpace=wrap;html=1;" value="" vertex="1">
<mxGeometry height="170" width="360" x="450" y="510" as="geometry" />
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-1" parent="1" style="rounded=0;whiteSpace=wrap;html=1;" value="Agent" vertex="1">
<mxGeometry height="30" width="90" x="40" y="60" as="geometry" />
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-4" parent="1" style="rounded=0;whiteSpace=wrap;html=1;" value="MQTT Broker&amp;nbsp;(raw topic)" vertex="1">
<mxGeometry height="30" width="110" x="150" y="60" as="geometry" />
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-5" parent="1" style="rounded=0;whiteSpace=wrap;html=1;" value="Edge Service" vertex="1">
<mxGeometry height="30" width="90" x="280" y="60" as="geometry" />
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-6" parent="1" style="rounded=0;whiteSpace=wrap;html=1;" value="MQTT Broker&amp;nbsp;(processed topic)" vertex="1">
<mxGeometry height="60" width="110" x="390" y="30" as="geometry" />
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-7" parent="1" style="rounded=0;whiteSpace=wrap;html=1;" value="Hub Service" vertex="1">
<mxGeometry height="30" width="90" x="520" y="60" as="geometry" />
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-8" parent="1" style="rounded=0;whiteSpace=wrap;html=1;" value="Redis" vertex="1">
<mxGeometry height="30" width="90" x="640" y="60" as="geometry" />
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-9" parent="1" style="rounded=0;whiteSpace=wrap;html=1;" value="Store API" vertex="1">
<mxGeometry height="30" width="90" x="760" y="60" as="geometry" />
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-10" parent="1" style="rounded=0;whiteSpace=wrap;html=1;" value="PostgreSQL" vertex="1">
<mxGeometry height="30" width="90" x="880" y="60" as="geometry" />
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-11" parent="1" style="rounded=0;whiteSpace=wrap;html=1;" value="MapView Client" vertex="1">
<mxGeometry height="30" width="90" x="1000" y="60" as="geometry" />
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-12" edge="1" parent="1" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=2;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="90" y="1080" as="sourcePoint" />
<mxPoint x="84.66" y="90" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-13" edge="1" parent="1" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=2;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="210" y="1080" as="sourcePoint" />
<mxPoint x="204.66" y="90" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-14" edge="1" parent="1" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=2;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="330" y="1080" as="sourcePoint" />
<mxPoint x="324.66" y="90" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-15" edge="1" parent="1" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=2;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="450" y="1080" as="sourcePoint" />
<mxPoint x="444.66" y="90" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-16" edge="1" parent="1" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=2;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="570" y="1080" as="sourcePoint" />
<mxPoint x="564.66" y="90" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-17" edge="1" parent="1" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=2;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="690" y="1080" as="sourcePoint" />
<mxPoint x="684.66" y="90" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-18" edge="1" parent="1" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=2;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="805" y="1080" as="sourcePoint" />
<mxPoint x="804.66" y="90" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-19" edge="1" parent="1" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=2;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="930" y="1080" as="sourcePoint" />
<mxPoint x="924.66" y="90" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-20" edge="1" parent="1" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=2;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="1045" y="1080" as="sourcePoint" />
<mxPoint x="1044.66" y="90" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-21" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="90" y="150" as="sourcePoint" />
<mxPoint x="200" y="150" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-22" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="Publish raw telemetry" vertex="1">
<mxGeometry height="30" width="70" x="110" y="110" as="geometry" />
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-23" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="210" y="190" as="sourcePoint" />
<mxPoint x="320" y="190" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-24" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="Deliver raw message" vertex="1">
<mxGeometry height="30" width="70" x="230" y="150" as="geometry" />
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-26" edge="1" parent="1" style="endArrow=none;html=1;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="330" y="220" as="sourcePoint" />
<mxPoint x="380" y="220" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-27" edge="1" parent="1" style="endArrow=none;html=1;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="380" y="240" as="sourcePoint" />
<mxPoint x="380" y="220" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-28" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="380" y="240" as="sourcePoint" />
<mxPoint x="330" y="240" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-29" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="Validate AgentData" vertex="1">
<mxGeometry height="30" width="70" x="350" y="180" as="geometry" />
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-30" edge="1" parent="1" style="endArrow=none;html=1;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="330" y="290" as="sourcePoint" />
<mxPoint x="380" y="290" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-31" edge="1" parent="1" style="endArrow=none;html=1;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="380" y="310" as="sourcePoint" />
<mxPoint x="380" y="290" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-32" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="380" y="310" as="sourcePoint" />
<mxPoint x="330" y="310" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-33" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="Process telemetry" vertex="1">
<mxGeometry height="30" width="70" x="350" y="250" as="geometry" />
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-34" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="330" y="360" as="sourcePoint" />
<mxPoint x="440" y="360" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-35" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="Publish processed data" vertex="1">
<mxGeometry height="30" width="86" x="342" y="320" as="geometry" />
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-36" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="450" y="390" as="sourcePoint" />
<mxPoint x="560" y="390" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-37" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="Deliver processed message" vertex="1">
<mxGeometry height="30" width="100" x="460" y="350" as="geometry" />
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-38" edge="1" parent="1" style="endArrow=none;html=1;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="570" y="420" as="sourcePoint" />
<mxPoint x="620" y="420" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-39" edge="1" parent="1" style="endArrow=none;html=1;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="620" y="440" as="sourcePoint" />
<mxPoint x="620" y="420" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-40" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="620" y="440" as="sourcePoint" />
<mxPoint x="570" y="440" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-41" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="Validate ProcessedAgentData" vertex="1">
<mxGeometry height="30" width="110" x="570" y="380" as="geometry" />
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-42" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="570" y="500" as="sourcePoint" />
<mxPoint x="680" y="500" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-43" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="LPUSH to buffer" vertex="1">
<mxGeometry height="30" width="110" x="570" y="460" as="geometry" />
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-44" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="570" y="550" as="sourcePoint" />
<mxPoint x="680" y="550" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-45" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="LPOP batch item" vertex="1">
<mxGeometry height="30" width="110" x="570" y="510" as="geometry" />
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-47" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="Return item" vertex="1">
<mxGeometry height="30" width="110" x="570" y="560" as="geometry" />
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-48" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="570" y="650" as="sourcePoint" />
<mxPoint x="800" y="650" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-49" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="POST batch" vertex="1">
<mxGeometry height="30" width="110" x="570" y="610" as="geometry" />
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-50" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="810" y="680" as="sourcePoint" />
<mxPoint x="920" y="680" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-51" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="INSERT records" vertex="1">
<mxGeometry height="30" width="110" x="810" y="640" as="geometry" />
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-53" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="Return created records" vertex="1">
<mxGeometry height="30" width="110" x="810" y="690" as="geometry" />
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-54" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="810" y="780" as="sourcePoint" />
<mxPoint x="1040" y="780" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-55" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="WebSocket push" vertex="1">
<mxGeometry height="30" width="110" x="810" y="740" as="geometry" />
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-56" edge="1" parent="1" style="endArrow=none;html=1;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="990" y="830" as="sourcePoint" />
<mxPoint x="1040" y="830" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-57" edge="1" parent="1" style="endArrow=none;html=1;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="990" y="830" as="sourcePoint" />
<mxPoint x="990" y="850" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-58" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="990" y="850" as="sourcePoint" />
<mxPoint x="1040" y="850" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-59" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="Sort by timestamp" vertex="1">
<mxGeometry height="30" width="110" x="930" y="790" as="geometry" />
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-60" edge="1" parent="1" style="endArrow=none;html=1;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="990" y="899.43" as="sourcePoint" />
<mxPoint x="1040" y="899.43" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-61" edge="1" parent="1" style="endArrow=none;html=1;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="990" y="899.43" as="sourcePoint" />
<mxPoint x="990" y="919.43" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-62" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="990" y="919.43" as="sourcePoint" />
<mxPoint x="1040" y="919.43" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-63" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="Update vehicle marker" vertex="1">
<mxGeometry height="30" width="110" x="930" y="860" as="geometry" />
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-64" edge="1" parent="1" style="endArrow=none;html=1;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="990" y="970" as="sourcePoint" />
<mxPoint x="1040" y="970" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-65" edge="1" parent="1" style="endArrow=none;html=1;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="990" y="970" as="sourcePoint" />
<mxPoint x="990" y="990" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-66" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="990" y="990" as="sourcePoint" />
<mxPoint x="1040" y="990" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-67" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="Add pothole/bump marker" vertex="1">
<mxGeometry height="30" width="110" x="930" y="930" as="geometry" />
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-69" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="Success response" vertex="1">
<mxGeometry height="30" width="110" x="690" y="1010" as="geometry" />
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-70" edge="1" parent="1" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=2;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="570" y="600" as="sourcePoint" />
<mxPoint x="690" y="600" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-73" edge="1" parent="1" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=2;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="570" y="600" as="sourcePoint" />
<mxPoint x="570" y="600" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-76" edge="1" parent="1" style="shape=mxgraph.arrows2.wedgeArrow;html=1;bendable=0;startWidth=4;fillColor=strokeColor;defaultFillColor=invert;defaultGradientColor=invert;rounded=0;" value="">
<mxGeometry height="100" relative="1" width="100" as="geometry">
<mxPoint x="580" y="600" as="sourcePoint" />
<mxPoint x="570" y="600" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-77" edge="1" parent="1" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=2;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="810" y="730" as="sourcePoint" />
<mxPoint x="930" y="730" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-78" edge="1" parent="1" style="shape=mxgraph.arrows2.wedgeArrow;html=1;bendable=0;startWidth=4;fillColor=strokeColor;defaultFillColor=invert;defaultGradientColor=invert;rounded=0;" value="">
<mxGeometry height="100" relative="1" width="100" as="geometry">
<mxPoint x="820" y="730" as="sourcePoint" />
<mxPoint x="810" y="730" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-79" edge="1" parent="1" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=2;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="570" y="1040" as="sourcePoint" />
<mxPoint x="800" y="1040" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-80" edge="1" parent="1" style="shape=mxgraph.arrows2.wedgeArrow;html=1;bendable=0;startWidth=4;fillColor=strokeColor;defaultFillColor=invert;defaultGradientColor=invert;rounded=0;" value="">
<mxGeometry height="100" relative="1" width="100" as="geometry">
<mxPoint x="580" y="1040" as="sourcePoint" />
<mxPoint x="570" y="1040" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-82" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="&#xa;alt [batch threshold reached]&#xa;&#xa;" vertex="1">
<mxGeometry height="80" width="140" x="440" y="520" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 141 KiB

View File

@@ -0,0 +1,30 @@
@startuml
participant Agent 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 : Publish raw\ntelemetry
mqtt1 -> edge : Deliver raw\nmessage
edge -> edge : Validate\nAgentData
edge -> edge : Process\ntelemetry
edge -> mqtt2 : Publish\nprocessed data
mqtt2 -> hub : Deliver processed\nmessage
hub -> hub : Validate\nProcessedAgentData
hub -> redis : LPUSH to buffer
hub -> redis : LPOP batch item
redis -> hub : Return item
hub -> store : POST batch
store -> db : INSERT records
db --> store : Return created\nrecords
store -> mapview : WebSocket push
mapview -> mapview : Sort by timestamp
mapview -> mapview : Update vehicle\nmarker
mapview -> mapview : Add pothole/bump\nmarker
store --> hub : Success response
@enduml

Binary file not shown.

Before

Width:  |  Height:  |  Size: 149 KiB

View File

@@ -0,0 +1,30 @@
@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

View File

@@ -1,355 +0,0 @@
<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36" version="29.6.4">
<diagram name="Сторінка-1" id="LR9LLbfbeJSaoxHAs9rO">
<mxGraphModel dx="2066" dy="1103" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="S-88E6s6WcGKqnTyDZc1-81" parent="1" style="rounded=0;whiteSpace=wrap;html=1;" value="" vertex="1">
<mxGeometry height="170" width="360" x="450" y="510" as="geometry" />
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-1" parent="1" style="rounded=0;whiteSpace=wrap;html=1;" value="Агент" vertex="1">
<mxGeometry height="30" width="90" x="40" y="60" as="geometry" />
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-4" parent="1" style="rounded=0;whiteSpace=wrap;html=1;" value="MQTT Broker&amp;nbsp;(raw topic)" vertex="1">
<mxGeometry height="30" width="110" x="150" y="60" as="geometry" />
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-5" parent="1" style="rounded=0;whiteSpace=wrap;html=1;" value="Edge Service" vertex="1">
<mxGeometry height="30" width="90" x="280" y="60" as="geometry" />
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-6" parent="1" style="rounded=0;whiteSpace=wrap;html=1;" value="MQTT Broker&amp;nbsp;(processed topic)" vertex="1">
<mxGeometry height="60" width="110" x="390" y="30" as="geometry" />
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-7" parent="1" style="rounded=0;whiteSpace=wrap;html=1;" value="Hub Service" vertex="1">
<mxGeometry height="30" width="90" x="520" y="60" as="geometry" />
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-8" parent="1" style="rounded=0;whiteSpace=wrap;html=1;" value="Redis" vertex="1">
<mxGeometry height="30" width="90" x="640" y="60" as="geometry" />
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-9" parent="1" style="rounded=0;whiteSpace=wrap;html=1;" value="Store API" vertex="1">
<mxGeometry height="30" width="90" x="760" y="60" as="geometry" />
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-10" parent="1" style="rounded=0;whiteSpace=wrap;html=1;" value="PostgreSQL" vertex="1">
<mxGeometry height="30" width="90" x="880" y="60" as="geometry" />
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-11" parent="1" style="rounded=0;whiteSpace=wrap;html=1;" value="MapView Client" vertex="1">
<mxGeometry height="30" width="90" x="1000" y="60" as="geometry" />
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-12" edge="1" parent="1" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=2;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="90" y="1080" as="sourcePoint" />
<mxPoint x="84.66" y="90" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-13" edge="1" parent="1" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=2;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="210" y="1080" as="sourcePoint" />
<mxPoint x="204.66" y="90" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-14" edge="1" parent="1" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=2;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="330" y="1080" as="sourcePoint" />
<mxPoint x="324.66" y="90" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-15" edge="1" parent="1" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=2;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="450" y="1080" as="sourcePoint" />
<mxPoint x="444.66" y="90" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-16" edge="1" parent="1" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=2;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="570" y="1080" as="sourcePoint" />
<mxPoint x="564.66" y="90" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-17" edge="1" parent="1" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=2;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="690" y="1080" as="sourcePoint" />
<mxPoint x="684.66" y="90" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-18" edge="1" parent="1" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=2;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="805" y="1080" as="sourcePoint" />
<mxPoint x="804.66" y="90" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-19" edge="1" parent="1" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=2;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="930" y="1080" as="sourcePoint" />
<mxPoint x="924.66" y="90" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-20" edge="1" parent="1" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=2;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="1045" y="1080" as="sourcePoint" />
<mxPoint x="1044.66" y="90" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-21" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="90" y="150" as="sourcePoint" />
<mxPoint x="200" y="150" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-22" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="Надіслати сиру телеметрію" vertex="1">
<mxGeometry height="30" width="70" x="110" y="110" as="geometry" />
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-23" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="210" y="190" as="sourcePoint" />
<mxPoint x="320" y="190" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-24" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="Передати сире повідомлення" vertex="1">
<mxGeometry height="30" width="70" x="230" y="150" as="geometry" />
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-26" edge="1" parent="1" style="endArrow=none;html=1;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="330" y="220" as="sourcePoint" />
<mxPoint x="380" y="220" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-27" edge="1" parent="1" style="endArrow=none;html=1;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="380" y="240" as="sourcePoint" />
<mxPoint x="380" y="220" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-28" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="380" y="240" as="sourcePoint" />
<mxPoint x="330" y="240" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-29" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="Перевірити AgentData" vertex="1">
<mxGeometry height="30" width="70" x="350" y="180" as="geometry" />
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-30" edge="1" parent="1" style="endArrow=none;html=1;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="330" y="290" as="sourcePoint" />
<mxPoint x="380" y="290" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-31" edge="1" parent="1" style="endArrow=none;html=1;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="380" y="310" as="sourcePoint" />
<mxPoint x="380" y="290" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-32" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="380" y="310" as="sourcePoint" />
<mxPoint x="330" y="310" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-33" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="Обробити телеметрію" vertex="1">
<mxGeometry height="30" width="70" x="350" y="250" as="geometry" />
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-34" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="330" y="360" as="sourcePoint" />
<mxPoint x="440" y="360" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-35" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="Надіслати оброблені дані" vertex="1">
<mxGeometry height="30" width="86" x="342" y="320" as="geometry" />
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-36" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="450" y="390" as="sourcePoint" />
<mxPoint x="560" y="390" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-37" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="Передати оброблене повідомлення" vertex="1">
<mxGeometry height="30" width="100" x="460" y="350" as="geometry" />
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-38" edge="1" parent="1" style="endArrow=none;html=1;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="570" y="420" as="sourcePoint" />
<mxPoint x="620" y="420" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-39" edge="1" parent="1" style="endArrow=none;html=1;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="620" y="440" as="sourcePoint" />
<mxPoint x="620" y="420" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-40" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="620" y="440" as="sourcePoint" />
<mxPoint x="570" y="440" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-41" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="Перевірити ProcessedAgentData" vertex="1">
<mxGeometry height="30" width="110" x="570" y="380" as="geometry" />
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-42" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="570" y="500" as="sourcePoint" />
<mxPoint x="680" y="500" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-43" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="LPUSH у буфер" vertex="1">
<mxGeometry height="30" width="110" x="570" y="460" as="geometry" />
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-44" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="570" y="550" as="sourcePoint" />
<mxPoint x="680" y="550" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-45" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="LPOP елемента batch" vertex="1">
<mxGeometry height="30" width="110" x="570" y="510" as="geometry" />
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-47" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="Повернути елемент" vertex="1">
<mxGeometry height="30" width="110" x="570" y="560" as="geometry" />
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-48" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="570" y="650" as="sourcePoint" />
<mxPoint x="800" y="650" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-49" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="POST batch" vertex="1">
<mxGeometry height="30" width="110" x="570" y="610" as="geometry" />
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-50" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="810" y="680" as="sourcePoint" />
<mxPoint x="920" y="680" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-51" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="Додати записи" vertex="1">
<mxGeometry height="30" width="110" x="810" y="640" as="geometry" />
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-53" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="Повернути створені записи" vertex="1">
<mxGeometry height="30" width="110" x="810" y="690" as="geometry" />
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-54" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="810" y="780" as="sourcePoint" />
<mxPoint x="1040" y="780" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-55" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="Надіслати через WebSocket" vertex="1">
<mxGeometry height="30" width="110" x="810" y="740" as="geometry" />
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-56" edge="1" parent="1" style="endArrow=none;html=1;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="990" y="830" as="sourcePoint" />
<mxPoint x="1040" y="830" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-57" edge="1" parent="1" style="endArrow=none;html=1;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="990" y="830" as="sourcePoint" />
<mxPoint x="990" y="850" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-58" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="990" y="850" as="sourcePoint" />
<mxPoint x="1040" y="850" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-59" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="Сортувати за timestamp" vertex="1">
<mxGeometry height="30" width="110" x="930" y="790" as="geometry" />
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-60" edge="1" parent="1" style="endArrow=none;html=1;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="990" y="899.43" as="sourcePoint" />
<mxPoint x="1040" y="899.43" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-61" edge="1" parent="1" style="endArrow=none;html=1;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="990" y="899.43" as="sourcePoint" />
<mxPoint x="990" y="919.43" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-62" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="990" y="919.43" as="sourcePoint" />
<mxPoint x="1040" y="919.43" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-63" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="Оновити маркер транспорту" vertex="1">
<mxGeometry height="30" width="110" x="930" y="860" as="geometry" />
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-64" edge="1" parent="1" style="endArrow=none;html=1;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="990" y="970" as="sourcePoint" />
<mxPoint x="1040" y="970" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-65" edge="1" parent="1" style="endArrow=none;html=1;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="990" y="970" as="sourcePoint" />
<mxPoint x="990" y="990" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-66" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="990" y="990" as="sourcePoint" />
<mxPoint x="1040" y="990" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-67" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="Додати маркер pothole/bump" vertex="1">
<mxGeometry height="30" width="110" x="930" y="930" as="geometry" />
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-69" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="Успішна відповідь" vertex="1">
<mxGeometry height="30" width="110" x="690" y="1010" as="geometry" />
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-70" edge="1" parent="1" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=2;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="570" y="600" as="sourcePoint" />
<mxPoint x="690" y="600" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-73" edge="1" parent="1" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=2;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="570" y="600" as="sourcePoint" />
<mxPoint x="570" y="600" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-76" edge="1" parent="1" style="shape=mxgraph.arrows2.wedgeArrow;html=1;bendable=0;startWidth=4;fillColor=strokeColor;defaultFillColor=invert;defaultGradientColor=invert;rounded=0;" value="">
<mxGeometry height="100" relative="1" width="100" as="geometry">
<mxPoint x="580" y="600" as="sourcePoint" />
<mxPoint x="570" y="600" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-77" edge="1" parent="1" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=2;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="810" y="730" as="sourcePoint" />
<mxPoint x="930" y="730" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-78" edge="1" parent="1" style="shape=mxgraph.arrows2.wedgeArrow;html=1;bendable=0;startWidth=4;fillColor=strokeColor;defaultFillColor=invert;defaultGradientColor=invert;rounded=0;" value="">
<mxGeometry height="100" relative="1" width="100" as="geometry">
<mxPoint x="820" y="730" as="sourcePoint" />
<mxPoint x="810" y="730" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-79" edge="1" parent="1" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=2;rounded=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="570" y="1040" as="sourcePoint" />
<mxPoint x="800" y="1040" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-80" edge="1" parent="1" style="shape=mxgraph.arrows2.wedgeArrow;html=1;bendable=0;startWidth=4;fillColor=strokeColor;defaultFillColor=invert;defaultGradientColor=invert;rounded=0;" value="">
<mxGeometry height="100" relative="1" width="100" as="geometry">
<mxPoint x="580" y="1040" as="sourcePoint" />
<mxPoint x="570" y="1040" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="S-88E6s6WcGKqnTyDZc1-82" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="&#xa;alt [batch threshold reached]&#xa;&#xa;" vertex="1">
<mxGeometry height="80" width="140" x="440" y="520" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>