blog note + readme updated
This commit is contained in:
parent
a8f6249d67
commit
20f4f1652b
3 changed files with 64 additions and 60 deletions
|
|
@ -73,13 +73,13 @@ For running the Docker image locally (development), it is important to provide t
|
|||
Example commands to build and run:
|
||||
|
||||
docker build -t sentiment-api .
|
||||
docker run --env-file ../../.env -p 8000:8000 -p 8501:8501 sentiment-api
|
||||
docker run --env-file ../../.env -p 8000:8000 -p 8080:8080 sentiment-api
|
||||
|
||||
For deployment on a personal or public cloud (with docker-compose, Kubernetes), it is preferable to specify the necessary environment variables in `docker-compose.yml` or in secrets.
|
||||
|
||||
Add the `--rm` argument so that the container is removed after stopping.
|
||||
|
||||
**UPDATE** : in our case, we encountered some issues with the NAS which CPU is not able to run AVX2 instructions so we are obliged to deploy it on a "standard" public cloud service. To be precise, N100 CPU is normally able to run AXV2 instructions but some NAS motherboard manufacturers sometimes disable this feature. Maybe is it possible to renable it on the BIOS, but I am away from my NAS so it will have to wait.
|
||||
**UPDATE** : in our case, we encountered some issues with the NAS which CPU is not able to run AVX2 instructions so we are obliged to deploy it on a "standard" public cloud service. To be precise, N100 CPU is normally able to run AXV2 instructions but some NAS/home server motherboard manufacturers sometimes disable this feature. Maybe is it possible to renable it on the BIOS, but I am away from my NAS so it will have to wait.
|
||||
|
||||
So, we decided to use Google Cloud. A common issue arises here: we cannot expose multiple ports (contrary to the instruction above) on a cloud service.
|
||||
|
||||
|
|
@ -90,6 +90,8 @@ Two options are possible:
|
|||
|
||||
We decided to keep the second solution to install the API from a single Docker container.
|
||||
|
||||
**UPDATE 2** : AVX2 instructions have been enabled by accessing the home server motherboard BIOS. So the deployment is also done here and complete continuous deployment will be done as well.
|
||||
|
||||
---
|
||||
|
||||
## 🔁 Continuous Integration / Continuous Deployment
|
||||
|
|
@ -101,3 +103,5 @@ A GitHub Actions pipeline (CI/CD) is planned at the very root of the repo to:
|
|||
- Update the Dockerfile and push it to DockerHub.
|
||||
|
||||
Unit tests will be defined in `./deployment/api/tests/`
|
||||
|
||||
- API docker is automatically updated on home server docker using watchtower docker (= cron with logging options)
|
||||
|
|
|
|||
|
|
@ -1,45 +1,45 @@
|
|||
<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="888" dy="489" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0">
|
||||
<mxGraphModel dx="1072" dy="590" 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="<div>🌍 Google</div>" style="rounded=1;whiteSpace=wrap;html=1;verticalAlign=top;" vertex="1" parent="1">
|
||||
<mxCell id="vVvrGs-YRXqjEHhurR4v-62" value="<div>🌍 Google</div>" 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="<div>📦🐳 Dockerhub</div>" style="rounded=1;whiteSpace=wrap;html=1;verticalAlign=top;" vertex="1" parent="1">
|
||||
<mxCell id="vVvrGs-YRXqjEHhurR4v-34" value="<div>📦🐳 Dockerhub</div>" 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;" vertex="1" parent="1">
|
||||
<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="<table><tbody><tr><td data-col-size="sm" data-end="731" data-start="699"></td></tr></tbody></table><table><tbody><tr><td data-end="760" data-start="731" data-col-size="sm"></td><td data-end="760" data-start="731" data-col-size="sm">🖥️ NAS (homeserver)&nbsp;&nbsp;<br></td></tr></tbody></table>" style="rounded=1;whiteSpace=wrap;html=1;verticalAlign=top;" vertex="1" parent="1">
|
||||
<mxCell id="vVvrGs-YRXqjEHhurR4v-10" value="<table><tbody><tr><td data-col-size="sm" data-end="731" data-start="699"></td></tr></tbody></table><table><tbody><tr><td data-end="760" data-start="731" data-col-size="sm"></td><td data-end="760" data-start="731" data-col-size="sm">🖥️ NAS (homeserver)&nbsp;&nbsp;<br></td></tr></tbody></table>" 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;" vertex="1" parent="1">
|
||||
<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;" edge="1" parent="1" source="vVvrGs-YRXqjEHhurR4v-13" target="vVvrGs-YRXqjEHhurR4v-14">
|
||||
<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=[];" vertex="1" connectable="0" parent="vVvrGs-YRXqjEHhurR4v-24">
|
||||
<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="<div>📊 MLFlow</div><div>(MLOps Monitoring)</div>" style="rounded=1;whiteSpace=wrap;html=1;align=center;" vertex="1" parent="1">
|
||||
<mxCell id="vVvrGs-YRXqjEHhurR4v-13" value="<div>📊 MLFlow</div><div>(MLOps Monitoring)</div>" 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="<div>🌐 sentiment_api</div>" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxCell id="vVvrGs-YRXqjEHhurR4v-15" value="<div>🌐 sentiment_api</div>" 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;" vertex="1" parent="1">
|
||||
<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="<div>📦 MinIO&nbsp;</div><div>(Artifacts S3 Buckets)</div>" style="rounded=1;whiteSpace=wrap;html=1;align=center;" vertex="1" parent="1">
|
||||
<mxCell id="vVvrGs-YRXqjEHhurR4v-14" value="<div>📦 MinIO&nbsp;</div><div>(Artifacts S3 Buckets)</div>" 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;" edge="1" parent="1" source="vVvrGs-YRXqjEHhurR4v-16" target="vVvrGs-YRXqjEHhurR4v-35">
|
||||
<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" />
|
||||
|
|
@ -49,26 +49,26 @@
|
|||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="vVvrGs-YRXqjEHhurR4v-40" value="Version&nbsp;<div>monitoring</div>" style="edgeLabel;html=1;align=right;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="vVvrGs-YRXqjEHhurR4v-38">
|
||||
<mxCell id="vVvrGs-YRXqjEHhurR4v-40" value="Version&nbsp;<div>monitoring</div>" 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;" edge="1" parent="1" source="vVvrGs-YRXqjEHhurR4v-16" target="vVvrGs-YRXqjEHhurR4v-15">
|
||||
<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=[];" vertex="1" connectable="0" parent="vVvrGs-YRXqjEHhurR4v-41">
|
||||
<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="<div>☁️ Google Cloud</div>" style="rounded=1;whiteSpace=wrap;html=1;verticalAlign=bottom;" vertex="1" parent="1">
|
||||
<mxCell id="vVvrGs-YRXqjEHhurR4v-45" value="<div>☁️ Google Cloud</div>" 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;" edge="1" parent="1" source="vVvrGs-YRXqjEHhurR4v-47" target="vVvrGs-YRXqjEHhurR4v-13">
|
||||
<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">
|
||||
|
|
@ -78,44 +78,44 @@
|
|||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="vVvrGs-YRXqjEHhurR4v-85" value="Fetching best model + artifacts" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="vVvrGs-YRXqjEHhurR4v-83">
|
||||
<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;" edge="1" parent="1" source="vVvrGs-YRXqjEHhurR4v-47">
|
||||
<mxCell id="vVvrGs-YRXqjEHhurR4v-106" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=oval;endFill=1;fillColor=#60a917;strokeColor=#2D7600;" 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="<div>🌐 sentiment_api</div>" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxCell id="vVvrGs-YRXqjEHhurR4v-47" value="<div>🌐 sentiment_api</div>" 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="<div>🐙 GitHub</div>" style="rounded=1;whiteSpace=wrap;html=1;verticalAlign=top;" vertex="1" parent="1">
|
||||
<mxCell id="vVvrGs-YRXqjEHhurR4v-48" value="<div>🐙 GitHub</div>" 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;" vertex="1" parent="1">
|
||||
<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="🐙📁&nbsp;<div>Project 7 Github Repo</div>" style="rounded=1;whiteSpace=wrap;html=1;verticalAlign=middle;" vertex="1" parent="1">
|
||||
<mxCell id="vVvrGs-YRXqjEHhurR4v-50" value="🐙📁&nbsp;<div>Project 7 Github Repo</div>" 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="<div>🔄 CI/CD&nbsp;</div>" style="rounded=1;whiteSpace=wrap;html=1;verticalAlign=top;" vertex="1" parent="1">
|
||||
<mxCell id="vVvrGs-YRXqjEHhurR4v-51" value="<div>🔄 CI/CD&nbsp;</div>" 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;" edge="1" parent="1" target="vVvrGs-YRXqjEHhurR4v-51">
|
||||
<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;" edge="1" parent="1" source="vVvrGs-YRXqjEHhurR4v-56" target="vVvrGs-YRXqjEHhurR4v-57">
|
||||
<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;" vertex="1" parent="1">
|
||||
<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;" edge="1" parent="1" source="vVvrGs-YRXqjEHhurR4v-57" target="vVvrGs-YRXqjEHhurR4v-35">
|
||||
<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" />
|
||||
|
|
@ -124,15 +124,15 @@
|
|||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="vVvrGs-YRXqjEHhurR4v-60" value="Docker push" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="vVvrGs-YRXqjEHhurR4v-59">
|
||||
<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;" vertex="1" parent="1">
|
||||
<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;" edge="1" parent="1" source="vVvrGs-YRXqjEHhurR4v-61" target="vVvrGs-YRXqjEHhurR4v-47">
|
||||
<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" />
|
||||
|
|
@ -140,18 +140,18 @@
|
|||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="vVvrGs-YRXqjEHhurR4v-76" value="Configuration&nbsp;<div>+</div><div>&nbsp;docker push</div>" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="vVvrGs-YRXqjEHhurR4v-70">
|
||||
<mxCell id="vVvrGs-YRXqjEHhurR4v-76" value="Configuration&nbsp;<div>+</div><div>&nbsp;docker push</div>" 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;" vertex="1" parent="1">
|
||||
<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="<div>📔 Google Colab</div><div>(Analysis + Predictive models training)</div>" style="rounded=1;whiteSpace=wrap;html=1;verticalAlign=middle;" vertex="1" parent="1">
|
||||
<mxCell id="vVvrGs-YRXqjEHhurR4v-65" value="<div>📔 Google Colab</div><div>(Analysis + Predictive models training)</div>" 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;" edge="1" parent="1" source="vVvrGs-YRXqjEHhurR4v-66" target="vVvrGs-YRXqjEHhurR4v-47">
|
||||
<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" />
|
||||
|
|
@ -159,12 +159,12 @@
|
|||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="vVvrGs-YRXqjEHhurR4v-73" value="Requesting API" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="vVvrGs-YRXqjEHhurR4v-72">
|
||||
<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;" edge="1" parent="1" target="vVvrGs-YRXqjEHhurR4v-15">
|
||||
<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">
|
||||
|
|
@ -172,10 +172,10 @@
|
|||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="vVvrGs-YRXqjEHhurR4v-66" value="<div>👥 Users</div>" style="rounded=1;whiteSpace=wrap;html=1;verticalAlign=middle;" vertex="1" parent="1">
|
||||
<mxCell id="vVvrGs-YRXqjEHhurR4v-66" value="<div>👥 Users</div>" 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;" edge="1" parent="1" source="vVvrGs-YRXqjEHhurR4v-79">
|
||||
<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" />
|
||||
|
|
@ -185,21 +185,21 @@
|
|||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="vVvrGs-YRXqjEHhurR4v-68" value="Versionning common business" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="vVvrGs-YRXqjEHhurR4v-67">
|
||||
<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="<div>✉️</div><div>Mailbox</div>" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxCell id="vVvrGs-YRXqjEHhurR4v-77" value="<div>✉️</div><div>Mailbox</div>" 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="<div>🧪 API Development</div>" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxCell id="vVvrGs-YRXqjEHhurR4v-78" value="<div>🧪 API Development</div>" 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="<div>📂&nbsp;</div><div>Project 7 l<span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">ocal Git repo</span></div>" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxCell id="vVvrGs-YRXqjEHhurR4v-79" value="<div>📂&nbsp;</div><div>Project 7 l<span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">ocal Git repo</span></div>" 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;" edge="1" parent="1" source="vVvrGs-YRXqjEHhurR4v-61" target="vVvrGs-YRXqjEHhurR4v-65">
|
||||
<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">
|
||||
|
|
@ -209,18 +209,18 @@
|
|||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="vVvrGs-YRXqjEHhurR4v-82" value="Model Training<div>development</div>" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="vVvrGs-YRXqjEHhurR4v-81">
|
||||
<mxCell id="vVvrGs-YRXqjEHhurR4v-82" value="Model Training<div>development</div>" 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;" edge="1" parent="1">
|
||||
<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;" edge="1" parent="1" target="vVvrGs-YRXqjEHhurR4v-13">
|
||||
<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" />
|
||||
|
|
@ -229,24 +229,24 @@
|
|||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="vVvrGs-YRXqjEHhurR4v-98" value="Sending Experiments logs&nbsp;<div>+ Artifacts<div>Updating Model Registry</div></div>" style="edgeLabel;html=1;align=right;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="vVvrGs-YRXqjEHhurR4v-95">
|
||||
<mxCell id="vVvrGs-YRXqjEHhurR4v-98" value="Sending Experiments logs&nbsp;<div>+ Artifacts<div>Updating Model Registry</div></div>" 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;" edge="1" parent="1" target="vVvrGs-YRXqjEHhurR4v-14">
|
||||
<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="<div>🔒&nbsp;</div><div>SWAG (Reverse proxy + SSL)&nbsp;&nbsp;</div><div><br></div>" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxCell id="vVvrGs-YRXqjEHhurR4v-12" value="<div>🔒&nbsp;</div><div>SWAG (Reverse proxy + SSL)&nbsp;&nbsp;</div><div><br></div>" 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;" vertex="1" parent="1">
|
||||
<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;" edge="1" parent="1" source="vVvrGs-YRXqjEHhurR4v-15" target="vVvrGs-YRXqjEHhurR4v-77">
|
||||
<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">
|
||||
|
|
@ -257,12 +257,12 @@
|
|||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="vVvrGs-YRXqjEHhurR4v-107" value="Wrong&nbsp;<div>prediction</div><div>report</div>" style="edgeLabel;html=1;align=right;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="vVvrGs-YRXqjEHhurR4v-102">
|
||||
<mxCell id="vVvrGs-YRXqjEHhurR4v-107" value="Wrong&nbsp;<div>prediction</div><div>report</div>" 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="76" 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;" edge="1" parent="1">
|
||||
<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" />
|
||||
|
|
@ -272,16 +272,16 @@
|
|||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="vVvrGs-YRXqjEHhurR4v-115" value="" style="endArrow=none;html=1;rounded=0;strokeWidth=2;strokeColor=#2D7600;fillColor=#60a917;endFill=0;" edge="1" parent="1">
|
||||
<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;" vertex="1" parent="1">
|
||||
<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;" vertex="1" parent="1">
|
||||
<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>
|
||||
</root>
|
||||
|
|
|
|||
Binary file not shown.
|
Before Width: | Height: | Size: 137 KiB After Width: | Height: | Size: 135 KiB |
Loading…
Add table
Reference in a new issue