oc-p07-sentiment-api/docs/diagram.drawio

301 lines
23 KiB
Text

<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36" version="28.0.4">
<diagram name="Page-1" id="gzNJPQwDk8eamCuovkMP">
<mxGraphModel dx="1554" dy="855" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" background="#ffffff" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="vVvrGs-YRXqjEHhurR4v-62" value="&lt;div&gt;🌍 Google&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;verticalAlign=top;" parent="1" vertex="1">
<mxGeometry x="700" y="656" width="390" height="100" as="geometry" />
</mxCell>
<mxCell id="vVvrGs-YRXqjEHhurR4v-34" value="&lt;div&gt;📦🐳 Dockerhub&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;verticalAlign=top;" parent="1" vertex="1">
<mxGeometry x="777" y="100" width="200" height="100" as="geometry" />
</mxCell>
<mxCell id="vVvrGs-YRXqjEHhurR4v-35" value="🐳 grgmdmn/sentiment_api" style="rounded=1;whiteSpace=wrap;html=1;align=center;" parent="1" vertex="1">
<mxGeometry x="797" y="130" width="170" height="60" as="geometry" />
</mxCell>
<mxCell id="vVvrGs-YRXqjEHhurR4v-10" value="&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;731&quot; data-start=&quot;699&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td data-end=&quot;760&quot; data-start=&quot;731&quot; data-col-size=&quot;sm&quot;&gt;&lt;/td&gt;&lt;td data-end=&quot;760&quot; data-start=&quot;731&quot; data-col-size=&quot;sm&quot;&gt;🖥️ NAS (homeserver)&amp;nbsp;&amp;nbsp;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;" style="rounded=1;whiteSpace=wrap;html=1;verticalAlign=top;" parent="1" vertex="1">
<mxGeometry x="791" y="244" width="290" height="352" as="geometry" />
</mxCell>
<mxCell id="vVvrGs-YRXqjEHhurR4v-11" value="🐳🧩 Docker Compose" style="rounded=1;whiteSpace=wrap;html=1;verticalAlign=top;" parent="1" vertex="1">
<mxGeometry x="801" y="285" width="260" height="291" as="geometry" />
</mxCell>
<mxCell id="vVvrGs-YRXqjEHhurR4v-24" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=classic;startFill=1;" parent="1" source="vVvrGs-YRXqjEHhurR4v-13" target="vVvrGs-YRXqjEHhurR4v-14" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="vVvrGs-YRXqjEHhurR4v-26" value="Viewing artifacts" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="vVvrGs-YRXqjEHhurR4v-24" vertex="1" connectable="0">
<mxGeometry x="-0.0245" y="-1" relative="1" as="geometry">
<mxPoint x="-1" y="-1" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="vVvrGs-YRXqjEHhurR4v-13" value="&lt;div&gt;📊 MLFlow&lt;/div&gt;&lt;div&gt;(MLOps Monitoring)&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;align=center;" parent="1" vertex="1">
<mxGeometry x="888" y="316" width="160" height="40" as="geometry" />
</mxCell>
<mxCell id="vVvrGs-YRXqjEHhurR4v-15" value="&lt;div&gt;🌐 sentiment_api&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="888" y="451" width="160" height="40" as="geometry" />
</mxCell>
<mxCell id="vVvrGs-YRXqjEHhurR4v-16" value="👁️ Watchtower" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="888" y="524" width="160" height="40" as="geometry" />
</mxCell>
<mxCell id="vVvrGs-YRXqjEHhurR4v-14" value="&lt;div&gt;📦 MinIO&amp;nbsp;&lt;/div&gt;&lt;div&gt;(Artifacts S3 Buckets)&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;align=center;" parent="1" vertex="1">
<mxGeometry x="888" y="394" width="160" height="40" as="geometry" />
</mxCell>
<mxCell id="vVvrGs-YRXqjEHhurR4v-38" value="" style="endArrow=classic;startArrow=classic;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0.995;exitY=0.555;exitDx=0;exitDy=0;exitPerimeter=0;fillColor=#a20025;strokeColor=#6F0000;strokeWidth=2;" parent="1" source="vVvrGs-YRXqjEHhurR4v-16" target="vVvrGs-YRXqjEHhurR4v-35" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="1048" y="554" as="sourcePoint" />
<mxPoint x="1120" y="84" as="targetPoint" />
<Array as="points">
<mxPoint x="1110" y="546" />
<mxPoint x="1110" y="160" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="vVvrGs-YRXqjEHhurR4v-40" value="Version&amp;nbsp;&lt;div&gt;monitoring&lt;/div&gt;" style="edgeLabel;html=1;align=right;verticalAlign=middle;resizable=0;points=[];" parent="vVvrGs-YRXqjEHhurR4v-38" vertex="1" connectable="0">
<mxGeometry x="0.5689" y="-1" relative="1" as="geometry">
<mxPoint x="30" y="49" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="vVvrGs-YRXqjEHhurR4v-41" value="" style="endArrow=classic;startArrow=classic;html=1;rounded=0;fillColor=#a20025;strokeColor=#6F0000;strokeWidth=2;" parent="1" source="vVvrGs-YRXqjEHhurR4v-16" target="vVvrGs-YRXqjEHhurR4v-15" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="967.83" y="524" as="sourcePoint" />
<mxPoint x="967.83" y="491" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="vVvrGs-YRXqjEHhurR4v-42" value="Version monitoring + API update" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="vVvrGs-YRXqjEHhurR4v-41" vertex="1" connectable="0">
<mxGeometry x="0.0976" y="3" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="vVvrGs-YRXqjEHhurR4v-45" value="&lt;div&gt;☁️ Google Cloud&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;verticalAlign=bottom;" parent="1" vertex="1">
<mxGeometry x="920" y="686" width="158" height="60" as="geometry" />
</mxCell>
<mxCell id="vVvrGs-YRXqjEHhurR4v-83" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=classic;startFill=1;fillColor=#60a917;strokeColor=#2D7600;strokeWidth=2;" parent="1" source="vVvrGs-YRXqjEHhurR4v-47" target="vVvrGs-YRXqjEHhurR4v-13" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="770" y="334" as="targetPoint" />
<Array as="points">
<mxPoint x="970" y="624" />
<mxPoint x="771" y="624" />
<mxPoint x="771" y="324" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="vVvrGs-YRXqjEHhurR4v-85" value="Fetching best model + artifacts" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="vVvrGs-YRXqjEHhurR4v-83" vertex="1" connectable="0">
<mxGeometry x="-0.5336" y="1" relative="1" as="geometry">
<mxPoint x="-14" y="-1" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="vVvrGs-YRXqjEHhurR4v-106" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=oval;endFill=1;fillColor=#60a917;strokeColor=#2D7600;strokeWidth=2;" parent="1" source="vVvrGs-YRXqjEHhurR4v-47" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="1140" y="712" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="vVvrGs-YRXqjEHhurR4v-47" value="&lt;div&gt;🌐 sentiment_api&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="935" y="698" width="126" height="28" as="geometry" />
</mxCell>
<mxCell id="vVvrGs-YRXqjEHhurR4v-48" value="&lt;div&gt;🐙 GitHub&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;verticalAlign=top;" parent="1" vertex="1">
<mxGeometry x="429" y="54" width="291" height="240" as="geometry" />
</mxCell>
<mxCell id="vVvrGs-YRXqjEHhurR4v-49" value="GrgMdmn/OpenClassRooms_AI_Projects" style="rounded=1;whiteSpace=wrap;html=1;verticalAlign=top;" parent="1" vertex="1">
<mxGeometry x="434" y="94" width="270" height="180" as="geometry" />
</mxCell>
<mxCell id="vVvrGs-YRXqjEHhurR4v-50" value="🐙📁&amp;nbsp;&lt;div&gt;Project 7 Github Repo&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;verticalAlign=middle;" parent="1" vertex="1">
<mxGeometry x="444" y="134" width="110" height="120" as="geometry" />
</mxCell>
<mxCell id="vVvrGs-YRXqjEHhurR4v-51" value="&lt;div&gt;🔄 CI/CD&amp;nbsp;&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;verticalAlign=top;" parent="1" vertex="1">
<mxGeometry x="574" y="134" width="120" height="120" as="geometry" />
</mxCell>
<mxCell id="vVvrGs-YRXqjEHhurR4v-52" value="" style="endArrow=classic;html=1;rounded=0;fillColor=#a20025;strokeColor=#6F0000;strokeWidth=2;" parent="1" target="vVvrGs-YRXqjEHhurR4v-51" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="554" y="194" as="sourcePoint" />
<mxPoint x="614" y="204" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="vVvrGs-YRXqjEHhurR4v-58" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fillColor=#a20025;strokeColor=#6F0000;strokeWidth=2;" parent="1" source="vVvrGs-YRXqjEHhurR4v-56" target="vVvrGs-YRXqjEHhurR4v-57" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="vVvrGs-YRXqjEHhurR4v-56" value="1. Tests validation" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="580.5" y="160" width="107" height="30" as="geometry" />
</mxCell>
<mxCell id="vVvrGs-YRXqjEHhurR4v-59" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fillColor=#a20025;strokeColor=#6F0000;strokeWidth=2;" parent="1" source="vVvrGs-YRXqjEHhurR4v-57" target="vVvrGs-YRXqjEHhurR4v-35" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="717.5" y="213.5" as="sourcePoint" />
<mxPoint x="986" y="138" as="targetPoint" />
<Array as="points">
<mxPoint x="935" y="224" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="vVvrGs-YRXqjEHhurR4v-60" value="Docker push" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="vVvrGs-YRXqjEHhurR4v-59" vertex="1" connectable="0">
<mxGeometry x="-0.3886" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="vVvrGs-YRXqjEHhurR4v-57" value="2. Docker build and push" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="580.5" y="209" width="107" height="30" as="geometry" />
</mxCell>
<mxCell id="vVvrGs-YRXqjEHhurR4v-70" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;" parent="1" source="vVvrGs-YRXqjEHhurR4v-61" target="vVvrGs-YRXqjEHhurR4v-47" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="490" y="604" />
<mxPoint x="1050" y="604" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="vVvrGs-YRXqjEHhurR4v-76" value="Configuration&amp;nbsp;&lt;div&gt;+&lt;/div&gt;&lt;div&gt;&amp;nbsp;docker push&lt;/div&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="vVvrGs-YRXqjEHhurR4v-70" vertex="1" connectable="0">
<mxGeometry x="-0.5663" y="-1" relative="1" as="geometry">
<mxPoint x="-32" y="-51" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="vVvrGs-YRXqjEHhurR4v-61" value="💻 Local development" style="rounded=1;whiteSpace=wrap;html=1;verticalAlign=top;" parent="1" vertex="1">
<mxGeometry x="429" y="334" width="261" height="130" as="geometry" />
</mxCell>
<mxCell id="vVvrGs-YRXqjEHhurR4v-65" value="&lt;div&gt;📔 Google Colab&lt;/div&gt;&lt;div&gt;(Analysis + Predictive models training)&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;verticalAlign=middle;" parent="1" vertex="1">
<mxGeometry x="710" y="687" width="200" height="59" as="geometry" />
</mxCell>
<mxCell id="vVvrGs-YRXqjEHhurR4v-72" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=classic;startFill=1;fillColor=#60a917;strokeColor=#2D7600;strokeWidth=2;" parent="1" source="vVvrGs-YRXqjEHhurR4v-66" target="vVvrGs-YRXqjEHhurR4v-47" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="552" y="640" />
<mxPoint x="940" y="640" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="vVvrGs-YRXqjEHhurR4v-73" value="Requesting API" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="vVvrGs-YRXqjEHhurR4v-72" vertex="1" connectable="0">
<mxGeometry x="0.0152" y="1" relative="1" as="geometry">
<mxPoint x="-207" y="15" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="vVvrGs-YRXqjEHhurR4v-93" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=oval;startFill=1;fillColor=#60a917;strokeColor=#2D7600;strokeWidth=2;" parent="1" target="vVvrGs-YRXqjEHhurR4v-15" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="552" y="640" as="sourcePoint" />
<Array as="points">
<mxPoint x="552" y="471" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="vVvrGs-YRXqjEHhurR4v-66" value="&lt;div&gt;👥 Users&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;verticalAlign=middle;" parent="1" vertex="1">
<mxGeometry x="429" y="674" width="216" height="82" as="geometry" />
</mxCell>
<mxCell id="vVvrGs-YRXqjEHhurR4v-67" value="" style="endArrow=classic;startArrow=classic;html=1;rounded=0;entryX=0.594;entryY=0.997;entryDx=0;entryDy=0;entryPerimeter=0;exitX=0.888;exitY=-0.003;exitDx=0;exitDy=0;exitPerimeter=0;fillColor=#a20025;strokeColor=#6F0000;strokeWidth=2;" parent="1" source="vVvrGs-YRXqjEHhurR4v-79" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="665.804" y="348.84000000000003" as="sourcePoint" />
<mxPoint x="535" y="254.00000000000006" as="targetPoint" />
<Array as="points">
<mxPoint x="665.66" y="324.36" />
<mxPoint x="535.66" y="324.36" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="vVvrGs-YRXqjEHhurR4v-68" value="Versionning common business" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="vVvrGs-YRXqjEHhurR4v-67" vertex="1" connectable="0">
<mxGeometry x="-0.2992" y="2" relative="1" as="geometry">
<mxPoint x="-35" y="-15" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="vVvrGs-YRXqjEHhurR4v-77" value="&lt;div&gt;✉️&lt;/div&gt;&lt;div&gt;Mailbox&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="440" y="364" width="90" height="40" as="geometry" />
</mxCell>
<mxCell id="vVvrGs-YRXqjEHhurR4v-78" value="&lt;div&gt;🧪 API Development&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="440" y="414" width="90" height="36" as="geometry" />
</mxCell>
<mxCell id="vVvrGs-YRXqjEHhurR4v-79" value="&lt;div&gt;📂&amp;nbsp;&lt;/div&gt;&lt;div&gt;Project 7 l&lt;span style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;ocal Git repo&lt;/span&gt;&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="540" y="364" width="140" height="40" as="geometry" />
</mxCell>
<mxCell id="vVvrGs-YRXqjEHhurR4v-81" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="vVvrGs-YRXqjEHhurR4v-61" target="vVvrGs-YRXqjEHhurR4v-65" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="706" y="687.826" as="targetPoint" />
<Array as="points">
<mxPoint x="577" y="584" />
<mxPoint x="690" y="584" />
<mxPoint x="690" y="717" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="vVvrGs-YRXqjEHhurR4v-82" value="Model Training&lt;div&gt;development&lt;/div&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="vVvrGs-YRXqjEHhurR4v-81" vertex="1" connectable="0">
<mxGeometry x="-0.0679" relative="1" as="geometry">
<mxPoint x="3" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="vVvrGs-YRXqjEHhurR4v-88" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=2;strokeColor=#2D7600;fillColor=#60a917;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="770" y="408" as="sourcePoint" />
<mxPoint x="888" y="408" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="vVvrGs-YRXqjEHhurR4v-95" value="" style="endArrow=classic;startArrow=classic;html=1;rounded=0;exitX=0.201;exitY=0.005;exitDx=0;exitDy=0;exitPerimeter=0;entryX=-0.001;entryY=0.674;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" target="vVvrGs-YRXqjEHhurR4v-13" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="737.2" y="687.2950000000001" as="sourcePoint" />
<mxPoint x="875" y="344.36" as="targetPoint" />
<Array as="points">
<mxPoint x="740" y="344" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="vVvrGs-YRXqjEHhurR4v-98" value="Sending Experiments logs&amp;nbsp;&lt;div&gt;+ Artifacts&lt;div&gt;Updating Model Registry&lt;/div&gt;&lt;/div&gt;" style="edgeLabel;html=1;align=right;verticalAlign=middle;resizable=0;points=[];" parent="vVvrGs-YRXqjEHhurR4v-95" vertex="1" connectable="0">
<mxGeometry x="-0.2258" relative="1" as="geometry">
<mxPoint x="15" y="27" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="vVvrGs-YRXqjEHhurR4v-96" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.75;entryDx=0;entryDy=0;" parent="1" target="vVvrGs-YRXqjEHhurR4v-14" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="740" y="424" as="sourcePoint" />
<mxPoint x="869" y="424" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="vVvrGs-YRXqjEHhurR4v-12" value="&lt;div&gt;🔒&amp;nbsp;&lt;/div&gt;&lt;div&gt;SWAG (Reverse proxy + SSL)&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="815" y="316" width="60" height="180" as="geometry" />
</mxCell>
<mxCell id="vVvrGs-YRXqjEHhurR4v-100" value="🛠️ Local docker building" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="540" y="414" width="140" height="40" as="geometry" />
</mxCell>
<mxCell id="vVvrGs-YRXqjEHhurR4v-102" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fillColor=#60a917;strokeColor=#2D7600;strokeWidth=2;" parent="1" source="vVvrGs-YRXqjEHhurR4v-15" target="vVvrGs-YRXqjEHhurR4v-77" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="410" y="384" as="targetPoint" />
<Array as="points">
<mxPoint x="1141" y="460" />
<mxPoint x="1141" y="770" />
<mxPoint x="410" y="770" />
<mxPoint x="410" y="384" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="vVvrGs-YRXqjEHhurR4v-107" value="Wrong&amp;nbsp;&lt;div&gt;prediction&lt;/div&gt;&lt;div&gt;report&lt;/div&gt;" style="edgeLabel;html=1;align=right;verticalAlign=middle;resizable=0;points=[];" parent="vVvrGs-YRXqjEHhurR4v-102" vertex="1" connectable="0">
<mxGeometry x="-0.6286" y="-1" relative="1" as="geometry">
<mxPoint x="19" y="83" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="vVvrGs-YRXqjEHhurR4v-112" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fillColor=#a20025;strokeColor=#6F0000;strokeWidth=2;endArrow=none;endFill=0;" parent="1" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="1120" y="66" as="sourcePoint" />
<mxPoint x="1140" y="66" as="targetPoint" />
<Array as="points">
<mxPoint x="1120" y="66" />
<mxPoint x="1120" y="66" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="vVvrGs-YRXqjEHhurR4v-115" value="" style="endArrow=none;html=1;rounded=0;strokeWidth=2;strokeColor=#2D7600;fillColor=#60a917;endFill=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="1120" y="86" as="sourcePoint" />
<mxPoint x="1140" y="86" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="vVvrGs-YRXqjEHhurR4v-117" value="Continuous Deployment" style="text;html=1;align=right;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=9;" parent="1" vertex="1">
<mxGeometry x="997" y="56" width="120" height="20" as="geometry" />
</mxCell>
<mxCell id="vVvrGs-YRXqjEHhurR4v-118" value="API normal working" style="text;html=1;align=right;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=9;" parent="1" vertex="1">
<mxGeometry x="1017" y="76" width="100" height="20" as="geometry" />
</mxCell>
<mxCell id="kZBIOmEQYJXwvwtzTigl-1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=oval;endFill=1;strokeWidth=2;fillColor=#60a917;strokeColor=#2D7600;" edge="1" parent="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="970" y="624" as="targetPoint" />
<mxPoint x="1048" y="479" as="sourcePoint" />
<Array as="points">
<mxPoint x="1048" y="479" />
<mxPoint x="1130" y="479" />
<mxPoint x="1130" y="624" />
</Array>
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>