mirror of
https://github.com/jcreek/AutomatedAssessmentFeedbackAgent.git
synced 2026-07-12 18:43:49 +00:00
docs(*): Add architecture diagram
This commit is contained in:
@@ -12,6 +12,11 @@ Built for the [Microsoft Hack Together: AI Agents Hackathon](https://microsoft.g
|
|||||||
Status: Hackathon prototype/MVP.
|
Status: Hackathon prototype/MVP.
|
||||||
See the [Official Rules](https://microsoft.github.io/AI_Agents_Hackathon/rules/).
|
See the [Official Rules](https://microsoft.github.io/AI_Agents_Hackathon/rules/).
|
||||||
|
|
||||||
|
Created using:
|
||||||
|
|
||||||
|
- JavaScript/TypeScript
|
||||||
|
- Azure AI Agent Service
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 📽️ Demonstration Video
|
## 📽️ Demonstration Video
|
||||||
@@ -174,11 +179,13 @@ The architecture includes:
|
|||||||
- /api/hitl-review: Handles teacher review, resumes AI grading
|
- /api/hitl-review: Handles teacher review, resumes AI grading
|
||||||
- Third-Party Services:
|
- Third-Party Services:
|
||||||
- Azure OpenAI (AI grading, feedback)
|
- Azure OpenAI (AI grading, feedback)
|
||||||
- Azure Cognitive Services (if used)
|
- Azure AI Agent Service (agentic workflow orchestration, tool use, LLM integration)
|
||||||
- PartyKit (WebSocket server for real-time updates)
|
- PartyKit (WebSocket server for real-time updates)
|
||||||
- Data Storage: Only in browser (localStorage), no backend DB
|
- Data Storage: Only in browser (localStorage), no backend DB
|
||||||
|
|
||||||
Actual diagram - TODO
|
System architecture diagram showing component hosting, communication flows (HTTP, WebSocket), and external AI service integrations:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -186,7 +193,7 @@ Actual diagram - TODO
|
|||||||
|
|
||||||
- **Frontend:** [SvelteKit](https://kit.svelte.dev/) + [TypeScript](https://www.typescriptlang.org/)
|
- **Frontend:** [SvelteKit](https://kit.svelte.dev/) + [TypeScript](https://www.typescriptlang.org/)
|
||||||
- **Real-time Events:** [PartyKit](https://partykit.io/)
|
- **Real-time Events:** [PartyKit](https://partykit.io/)
|
||||||
- **AI:** [Azure OpenAI](https://azure.microsoft.com/en-us/products/ai-services/openai-service) + [Azure Cognitive Services](https://azure.microsoft.com/en-us/products/ai-services/cognitive-services)
|
- **AI & Agent Orchestration:** [Azure AI Agent Service](https://azure.microsoft.com/en-us/products/ai-services/ai-agent-service) (agentic workflows, tool use) + [Azure OpenAI](https://azure.microsoft.com/en-us/products/ai-services/openai-service) (LLMs)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,92 @@
|
|||||||
|
<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36" version="26.2.14">
|
||||||
|
<diagram name="Page-1" id="pMAFXSwGTbxxo7wkyZoP">
|
||||||
|
<mxGraphModel dx="978" dy="881" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
|
||||||
|
<root>
|
||||||
|
<mxCell id="0" />
|
||||||
|
<mxCell id="1" parent="0" />
|
||||||
|
<mxCell id="-JcRy6otO31GiCju6Gh6-18" value="" style="group" vertex="1" connectable="0" parent="1">
|
||||||
|
<mxGeometry x="260" y="30" width="330" height="110" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="-JcRy6otO31GiCju6Gh6-1" value="<p class="p1"><b><font style="font-size: 13px;">Teacher Browser&nbsp;<span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">(SvelteKit Frontend App)</span></font></b></p><p class="p1"></p><ul><li>LocalStorage (Assessment History)</li><li>HTTP Client (API Calls)</li><li>WebSocket Client (Real-time updates)<span class="Apple-converted-space">&nbsp;</span></li></ul><p></p>" style="rounded=0;whiteSpace=wrap;html=1;align=left;spacingLeft=10;" vertex="1" parent="-JcRy6otO31GiCju6Gh6-18">
|
||||||
|
<mxGeometry width="330" height="110" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="-JcRy6otO31GiCju6Gh6-5" value="" style="shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image=https://a.storyblok.com/f/88751/1702x2049/619c584101/svelte_logo.png;" vertex="1" parent="-JcRy6otO31GiCju6Gh6-18">
|
||||||
|
<mxGeometry x="280" y="14" width="33.24" height="40" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="-JcRy6otO31GiCju6Gh6-6" value="" style="shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image=https://static-00.iconduck.com/assets.00/typescript-icon-icon-2048x2048-2rhh1z66.png;" vertex="1" parent="-JcRy6otO31GiCju6Gh6-18">
|
||||||
|
<mxGeometry x="281.62" y="64" width="30" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="-JcRy6otO31GiCju6Gh6-19" value="" style="group" vertex="1" connectable="0" parent="1">
|
||||||
|
<mxGeometry x="60" y="250" width="330" height="110" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="-JcRy6otO31GiCju6Gh6-7" value="<p class="p1"><span style="font-size: 13px;"><b>SvelteKit API Layer&nbsp;</b></span><span style="background-color: transparent; font-size: 13px;"><b>(Serverless on Netlify)</b></span></p><p class="p1"></p><ul><li>/api/grade&nbsp;</li><li>/api/hitl-review</li></ul><p></p>" style="rounded=0;whiteSpace=wrap;html=1;align=left;spacingLeft=10;" vertex="1" parent="-JcRy6otO31GiCju6Gh6-19">
|
||||||
|
<mxGeometry width="330" height="110" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="-JcRy6otO31GiCju6Gh6-8" value="" style="shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image=https://a.storyblok.com/f/88751/1702x2049/619c584101/svelte_logo.png;" vertex="1" parent="-JcRy6otO31GiCju6Gh6-19">
|
||||||
|
<mxGeometry x="280" y="14" width="33.24" height="40" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="-JcRy6otO31GiCju6Gh6-9" value="" style="shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image=https://static-00.iconduck.com/assets.00/typescript-icon-icon-2048x2048-2rhh1z66.png;" vertex="1" parent="-JcRy6otO31GiCju6Gh6-19">
|
||||||
|
<mxGeometry x="281.62" y="64" width="30" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="-JcRy6otO31GiCju6Gh6-20" value="" style="group" vertex="1" connectable="0" parent="1">
|
||||||
|
<mxGeometry x="460" y="250" width="330" height="110" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="-JcRy6otO31GiCju6Gh6-10" value="<p class="p1"><span style="font-size: 13px;"><b>PartyKit Server&nbsp;</b></span><span style="background-color: transparent; font-size: 13px;"><b>(WebSocket Real-time)</b></span></p><p></p>" style="rounded=0;whiteSpace=wrap;html=1;align=left;spacingLeft=10;" vertex="1" parent="-JcRy6otO31GiCju6Gh6-20">
|
||||||
|
<mxGeometry width="330" height="110" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="-JcRy6otO31GiCju6Gh6-11" value="" style="shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image=https://www.partykit.io/assets/PK_Logo_Full.png;" vertex="1" parent="-JcRy6otO31GiCju6Gh6-20">
|
||||||
|
<mxGeometry x="262" y="12.259999999999991" width="62.15" height="41.74" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="-JcRy6otO31GiCju6Gh6-12" value="" style="shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image=https://static-00.iconduck.com/assets.00/websocket-icon-512x384-sm7dfowk.png;" vertex="1" parent="-JcRy6otO31GiCju6Gh6-20">
|
||||||
|
<mxGeometry x="272" y="66" width="42.15" height="31.61" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="-JcRy6otO31GiCju6Gh6-21" value="" style="group;fillColor=default;" vertex="1" connectable="0" parent="1">
|
||||||
|
<mxGeometry x="60" y="460" width="460" height="230" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="-JcRy6otO31GiCju6Gh6-17" value="<p class="p1"><span style="font-size: 13px;"><b>Azure AI Services</b></span></p><p class="p1"></p><ul><li>Azure OpenAI (Grading &amp; Feedback)&nbsp;</li><li>Azure AI Agent Service (Orchestration)</li></ul><p></p>" style="rounded=0;whiteSpace=wrap;html=1;align=left;spacingLeft=10;" vertex="1" parent="-JcRy6otO31GiCju6Gh6-21">
|
||||||
|
<mxGeometry y="10" width="330" height="150" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="-JcRy6otO31GiCju6Gh6-13" value="" style="shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;editableCssRules=.*;image=data:image/svg+xml,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAuMDAyNzk0MjY1NzQ3MDcwMzEyNSAtMi4zODQxODU3OTEwMTU2MjVlLTcgMTcuOTk3MjI4NjIyNDM2NTIzIDEzLjk4OTM3MTI5OTc0MzY1MiIgaGVpZ2h0PSIxMy45ODkzNzEyOTk3NDM2NTIiIHdpZHRoPSIxNy45OTcyMjg2MjI0MzY1MjMiIGlkPSJhYjcxMGJhNy1kYzhjLTQ0Y2UtYTY4ZS1hZjY1ZGQ2YjQ2NWEiPjxkZWZzPjxyYWRpYWxHcmFkaWVudCBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgwLjUwMywgMC44NjUsIC0xLjIxOCwgMC43MDgsIDcuMjI0LCAtMS4zNCkiIHI9IjkuNzE4IiBjeT0iNC42NTciIGN4PSIzLjEyMyIgaWQ9ImIyMTBmZWYxLWVlN2EtNDIxMi04YWQ1LTg4OWE2NWZmOTMxZCI+PHN0b3Agc3RvcC1jb2xvcj0iIzljZWJmZiIgb2Zmc2V0PSIwIi8+PHN0b3Agc3RvcC1jb2xvcj0iIzUwZTZmZiIgb2Zmc2V0PSIwLjY2NyIvPjxzdG9wIHN0b3AtY29sb3I9IiMzMmJlZGQiIG9mZnNldD0iMSIvPjwvcmFkaWFsR3JhZGllbnQ+PHJhZGlhbEdyYWRpZW50IGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiByPSIxOC40MDciIGN5PSI0LjEwNCIgY3g9IjEuODgyIiBpZD0iZTEwMmE5N2ItZTczOC00OTc5LTg2YmUtODE4MDQ1Yjg3OWZjIj48c3RvcCBzdG9wLWNvbG9yPSIjZTdmOWZmIiBvZmZzZXQ9IjAiLz48c3RvcCBzdG9wLWNvbG9yPSIjYzNmMWZmIiBvZmZzZXQ9IjAuMjc3Ii8+PHN0b3Agc3RvcC1jb2xvcj0iI2MxZjFmZiIgb2Zmc2V0PSIwLjQwOCIvPjxzdG9wIHN0b3AtY29sb3I9IiM5Y2ViZmYiIG9mZnNldD0iMSIvPjwvcmFkaWFsR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB5Mj0iMTcuMzYxIiB4Mj0iMy43NyIgeTE9IjQuNjAyIiB4MT0iMTUuMTUiIGlkPSJhYzNlOWYwNS1mOWZhLTQ2YmYtOTJjYS02NzFmOTI5MDAyN2YiPjxzdG9wIHN0b3AtY29sb3I9IiMwMDc4ZDQiIG9mZnNldD0iMCIvPjxzdG9wIHN0b3AtY29sb3I9IiMwMDViYTEiIG9mZnNldD0iMC43MTIiLz48c3RvcCBzdG9wLWNvbG9yPSIjMDAzMDY3IiBvZmZzZXQ9IjEiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48Zz48cGF0aCBmaWxsPSJ1cmwoI2IyMTBmZWYxLWVlN2EtNDIxMi04YWQ1LTg4OWE2NWZmOTMxZCkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLTIuMDA1KSIgZD0iTTUuNzg1LDEzLjA3OXMtMS42Ni0uNTcuMjUzLTIuMDU5YTEyLjAxNywxMi4wMTcsMCwwLDEsNS43ODktMS45OTRsMS43NjUtMy40NTRhMTcuMSwxNy4xLDAsMCwwLTcuNjA3LjY0NkMyLjA5MSw3LjU3My0xLjgsMTEuODE4LjksMTQuMDI4QTQuMzkxLDQuMzkxLDAsMCwwLDUuNzg1LDEzLjA3OVoiLz48cGF0aCBmaWxsPSJ1cmwoI2UxMDJhOTdiLWU3MzgtNDk3OS04NmJlLTgxODA0NWI4NzlmYykiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLTIuMDA1KSIgZD0iTTguNCw5Ljc5VjcuMzg0YS40NzUuNDc1LDAsMCwxLC40NzUtLjQ3NWguMzE2YS44NjIuODYyLDAsMSwwLDAtLjM3Mkg4Ljg3YS44NDguODQ4LDAsMCwwLS44NDcuODQ3VjguODkzaC0uNmEuODYyLjg2MiwwLDEsMCwwLC4zNzJoLjZ2LjY2MUM4LjE0NSw5Ljg3OSw4LjI2OSw5LjgzNCw4LjQsOS43OVptMS42MzItMy41NThhLjQ5MS40OTEsMCwxLDEtLjQ5LjQ5MUEuNDkxLjQ5MSwwLDAsMSwxMC4wMjcsNi4yMzJaTTYuNTgyLDkuNTY5YS40OTEuNDkxLDAsMSwxLC40OTEtLjQ5QS40OTEuNDkxLDAsMCwxLDYuNTgyLDkuNTY5WiIvPjxwYXRoIGZpbGw9InVybCgjZTEwMmE5N2ItZTczOC00OTc5LTg2YmUtODE4MDQ1Yjg3OWZjKSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAtMi4wMDUpIiBkPSJNMy4zMjQsMTAuMkguNjk0Yy0uMDguMTI0LS4xNTIuMjQ4LS4yMTkuMzcySDMuMzI0YS44NDguODQ4LDAsMCwwLC44NDctLjg0N1Y5LjUxOGEuODYzLjg2MywwLDEsMC0uMzcyLDB2LjIwNkEuNDc1LjQ3NSwwLDAsMSwzLjMyNCwxMC4yWm0uMTctMS41MjJhLjQ5MS40OTEsMCwxLDEsLjQ5MS40OTFBLjQ5Mi40OTIsMCwwLDEsMy40OTQsOC42NzdaIi8+PHBhdGggZmlsbD0idXJsKCNlMTAyYTk3Yi1lNzM4LTQ5NzktODZiZS04MTgwNDViODc5ZmMpIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIC0yLjAwNSkiIGQ9Ik01LjExOSwxMi4yNjFINC4zMDdhLjg2My44NjMsMCwxLDAsMCwuMzcyaC45QS42NDIuNjQyLDAsMCwxLDUuMTE5LDEyLjI2MVptLTEuNjU0LjY3N2EuNDkxLjQ5MSwwLDEsMSwuNDkxLS40OTFBLjQ5MS40OTEsMCwwLDEsMy40NjUsMTIuOTM4WiIvPjxwYXRoIGZpbGw9InVybCgjYWMzZTlmMDUtZjlmYS00NmJmLTkyY2EtNjcxZjkyOTAwMjdmKSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAtMi4wMDUpIiBkPSJNLjksMTQuMDI4YzYuMjY3LDMuODEsMTIuMzQ3LDIuNTY0LDE2Ljk5MS04LjAxNkExLjMxNSwxLjMxNSwwLDAsMCwxOCw1LjQ4VjIuMzM2YS4zMzEuMzMxLDAsMCwwLS4zMy0uMzMxSDE0LjY1N2EuNzA4LjcwOCwwLDAsMC0uNjIxLjQzNUMxMC45MDYsMTEuMjgzLDMuMzg4LDE1LjEyNy45LDE0LjAyOFoiLz48L2c+PC9zdmc+;" vertex="1" parent="-JcRy6otO31GiCju6Gh6-21">
|
||||||
|
<mxGeometry x="279.5" y="70" width="38" height="29.56" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="-JcRy6otO31GiCju6Gh6-14" value="" style="shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;editableCssRules=.*;image=data:image/svg+xml,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxOCAxOCIgaGVpZ2h0PSIxOCIgd2lkdGg9IjE4IiBpZD0idXVpZC1hZGJkYWU4ZS01YTQxLTQ2ZDEtOGMxOC1hYTczY2RiZmVlMzIiPjxkZWZzPjxyYWRpYWxHcmFkaWVudCBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgZ3JhZGllbnRUcmFuc2Zvcm09InRyYW5zbGF0ZSgtMTc5MzkuMDMgMjAzNjguMDI5KSByb3RhdGUoNDUpIHNjYWxlKDI1LjA5MSAtMzQuMTQ5KSIgcj0iLjQ1IiBjeT0iNzkzLjE5OSIgY3g9Ii02Ny45ODEiIGlkPSJ1dWlkLTJhNzQwN2FhLWI3ODctNDhkZC1hOTZhLTBkODFhYjZlOTNiYiI+PHN0b3Agc3RvcC1jb2xvcj0iIzgzYjlmOSIgb2Zmc2V0PSIwIi8+PHN0b3Agc3RvcC1jb2xvcj0iIzAwNzhkNCIgb2Zmc2V0PSIxIi8+PC9yYWRpYWxHcmFkaWVudD48L2RlZnM+PHBhdGggc3Ryb2tlLXdpZHRoPSIwIiBmaWxsPSJ1cmwoI3V1aWQtMmE3NDA3YWEtYjc4Ny00OGRkLWE5NmEtMGQ4MWFiNmU5M2JiKSIgZD0ibTAsMi43djEyLjZjMCwxLjQ5MSwxLjIwOSwyLjcsMi43LDIuN2gxMi42YzEuNDkxLDAsMi43LTEuMjA5LDIuNy0yLjdWMi43YzAtMS40OTEtMS4yMDktMi43LTIuNy0yLjdIMi43QzEuMjA5LDAsMCwxLjIwOSwwLDIuN1pNMTAuOCwwdjMuNmMwLDMuOTc2LDMuMjI0LDcuMiw3LjIsNy4yaC0zLjZjLTMuOTc2LDAtNy4xOTksMy4yMjItNy4yLDcuMTk4di0zLjU5OGMwLTMuOTc2LTMuMjI0LTcuMi03LjItNy4yaDMuNmMzLjk3NiwwLDcuMi0zLjIyNCw3LjItNy4yWiIvPjwvc3ZnPg==;" vertex="1" parent="-JcRy6otO31GiCju6Gh6-21">
|
||||||
|
<mxGeometry x="280" y="20" width="38" height="38" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="-JcRy6otO31GiCju6Gh6-15" value="" style="shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;editableCssRules=.*;image=data:image/svg+xml,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAuNjQzODUxMzk5NDIxNjkxOSAtOS41MzY3NDMxNjQwNjI1ZS03IDE2LjcxMjE1MDU3MzczMDQ3IDE4IiBoZWlnaHQ9IjE4IiB3aWR0aD0iMTYuNzEyMTUwNTczNzMwNDciIGlkPSJ1dWlkLTZiODM4MGMzLTBlZTUtNGM0NC05MmEyLWYxODVjODJkYjZiYSI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiBncmFkaWVudFRyYW5zZm9ybT0idHJhbnNsYXRlKDYxNy4xMjYgLTIwNS43NTgpIHNjYWxlKDEgLTEpIiB5Mj0iLTIwNi4yMiIgeDI9Ii02MDYuNiIgeTE9Ii0yMTguMzc4IiB4MT0iLTYwMy41NjMiIGlkPSJ1dWlkLTA1ODc2YzcyLThmMjYtNDBkYS05OTZlLWE0ODgxNzJlYzA3MiI+PHN0b3Agc3RvcC1jb2xvcj0iIzcxMjU3NSIgb2Zmc2V0PSIwIi8+PHN0b3Agc3RvcC1jb2xvcj0iIzlhMjg4NCIgb2Zmc2V0PSIuMDkiLz48c3RvcCBzdG9wLWNvbG9yPSIjYmYyYzkyIiBvZmZzZXQ9Ii4xOCIvPjxzdG9wIHN0b3AtY29sb3I9IiNkYTJlOWMiIG9mZnNldD0iLjI3Ii8+PHN0b3Agc3RvcC1jb2xvcj0iI2ViMzBhMiIgb2Zmc2V0PSIuMzQiLz48c3RvcCBzdG9wLWNvbG9yPSIjZjEzMWE1IiBvZmZzZXQ9Ii40Ii8+PHN0b3Agc3RvcC1jb2xvcj0iI2VjMzBhMyIgb2Zmc2V0PSIuNSIvPjxzdG9wIHN0b3AtY29sb3I9IiNkZjJmOWUiIG9mZnNldD0iLjYxIi8+PHN0b3Agc3RvcC1jb2xvcj0iI2M5MmQ5NiIgb2Zmc2V0PSIuNzIiLz48c3RvcCBzdG9wLWNvbG9yPSIjYWEyYThhIiBvZmZzZXQ9Ii44MyIvPjxzdG9wIHN0b3AtY29sb3I9IiM4MzI2N2MiIG9mZnNldD0iLjk1Ii8+PHN0b3Agc3RvcC1jb2xvcj0iIzcxMjU3NSIgb2Zmc2V0PSIxIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIGdyYWRpZW50VHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjE3LjEyNiAtMjA1Ljc1OCkgc2NhbGUoMSAtMSkiIHkyPSItMjIzLjE3NSIgeDI9Ii02MDIuNDEyIiB5MT0iLTIwNi4wMjUiIHgxPSItNjAyLjQxMiIgaWQ9InV1aWQtYzRhMmY2MjctZDczMC00NDdlLTkxNTItNjIwMDljNjRjMzYxIj48c3RvcCBzdG9wLWNvbG9yPSIjZGE3ZWQwIiBvZmZzZXQ9IjAiLz48c3RvcCBzdG9wLWNvbG9yPSIjYjE3YmQ1IiBvZmZzZXQ9Ii4wOCIvPjxzdG9wIHN0b3AtY29sb3I9IiM4Nzc4ZGIiIG9mZnNldD0iLjE5Ii8+PHN0b3Agc3RvcC1jb2xvcj0iIzYyNzZlMSIgb2Zmc2V0PSIuMyIvPjxzdG9wIHN0b3AtY29sb3I9IiM0NTc0ZTUiIG9mZnNldD0iLjQxIi8+PHN0b3Agc3RvcC1jb2xvcj0iIzJlNzJlOCIgb2Zmc2V0PSIuNTQiLz48c3RvcCBzdG9wLWNvbG9yPSIjMWQ3MWViIiBvZmZzZXQ9Ii42NyIvPjxzdG9wIHN0b3AtY29sb3I9IiMxNDcxZWMiIG9mZnNldD0iLjgxIi8+PHN0b3Agc3RvcC1jb2xvcj0iIzExNzFlZCIgb2Zmc2V0PSIxIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIGdyYWRpZW50VHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjE3LjEyNiAtMjA1Ljc1OCkgc2NhbGUoMSAtMSkiIHkyPSItMjI0LjY0NCIgeDI9Ii02MTQuODA3IiB5MT0iLTIwNi40MTQiIHgxPSItNjAzLjQzOCIgaWQ9InV1aWQtNWE0Y2YyMTUtNDkzMi00ZjEyLThhZjEtMWI2ODMzZGYyNTljIj48c3RvcCBzdG9wLWNvbG9yPSIjZGE3ZWQwIiBvZmZzZXQ9IjAiLz48c3RvcCBzdG9wLWNvbG9yPSIjYjc3YmQ0IiBvZmZzZXQ9Ii4wNSIvPjxzdG9wIHN0b3AtY29sb3I9IiM5MDc5ZGEiIG9mZnNldD0iLjExIi8+PHN0b3Agc3RvcC1jb2xvcj0iIzZlNzdkZiIgb2Zmc2V0PSIuMTgiLz48c3RvcCBzdG9wLWNvbG9yPSIjNTE3NWUzIiBvZmZzZXQ9Ii4yNSIvPjxzdG9wIHN0b3AtY29sb3I9IiMzOTczZTciIG9mZnNldD0iLjMzIi8+PHN0b3Agc3RvcC1jb2xvcj0iIzI3NzJlOSIgb2Zmc2V0PSIuNDIiLz48c3RvcCBzdG9wLWNvbG9yPSIjMWE3MWViIiBvZmZzZXQ9Ii41NCIvPjxzdG9wIHN0b3AtY29sb3I9IiMxMzcxZWMiIG9mZnNldD0iLjY4Ii8+PHN0b3Agc3RvcC1jb2xvcj0iIzExNzFlZCIgb2Zmc2V0PSIxIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHBhdGggc3Ryb2tlLXdpZHRoPSIwIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGZpbGw9InVybCgjdXVpZC0wNTg3NmM3Mi04ZjI2LTQwZGEtOTk2ZS1hNDg4MTcyZWMwNzIpIiBkPSJtMTIuMDYxLjAxMmMuNTM0LDAsMS4wMDguNDAxLDEuMTc4Ljk4NHMxLjE2Niw0LjE5LDEuMTY2LDQuMTl2Ny4xNjZoLTMuNjA3bC4wNzMtMTIuMzUyaDEuMTl2LjAxMloiLz48cGF0aCBzdHJva2Utd2lkdGg9IjAiIGZpbGw9InVybCgjdXVpZC1jNGEyZjYyNy1kNzMwLTQ0N2UtOTE1Mi02MjAwOWM2NGMzNjEpIiBkPSJtMTcuMzU2LDUuNjExYzAtLjI1NS0uMjA2LS40NDktLjQ0OS0uNDQ5aC0yLjEyNmMtMS40OTQsMC0yLjcwOSwxLjIxNS0yLjcwOSwyLjcwOXY0LjQ5NGgyLjU3NWMxLjQ5NCwwLDIuNzA5LTEuMjE1LDIuNzA5LTIuNzA5di00LjA0NVoiLz48cGF0aCBzdHJva2Utd2lkdGg9IjAiIGZpbGwtcnVsZT0iZXZlbm9kZCIgZmlsbD0idXJsKCN1dWlkLTVhNGNmMjE1LTQ5MzItNGYxMi04YWYxLTFiNjgzM2RmMjU5YykiIGQ9Im0xMi4wNjEuMDEyYy0uNDEzLDAtLjc0MS4zMjgtLjc0MS43NDFsLS4wNzMsMTMuNjRjMCwxLjk5Mi0xLjYxNSwzLjYwNy0zLjYwNywzLjYwN0gxLjA5M2MtLjMxNiwwLS41MjItLjMwNC0uNDI1LS41OTVMNS45MTUsMi40MjlDNi40MjUuOTg0LDcuNzg1LjAxMiw5LjMxNi4wMTJoMi43NTctLjAxMloiLz48L3N2Zz4=;" vertex="1" parent="-JcRy6otO31GiCju6Gh6-21">
|
||||||
|
<mxGeometry x="280.5" y="110" width="37" height="39.18" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="-JcRy6otO31GiCju6Gh6-26" value="Azure Cloud" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontStyle=2" vertex="1" parent="-JcRy6otO31GiCju6Gh6-21">
|
||||||
|
<mxGeometry x="220" y="160" width="110" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="-JcRy6otO31GiCju6Gh6-22" value="HTTP" style="endArrow=classic;startArrow=classic;html=1;rounded=0;entryX=0.25;entryY=1;entryDx=0;entryDy=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" edge="1" parent="1" source="-JcRy6otO31GiCju6Gh6-7" target="-JcRy6otO31GiCju6Gh6-1">
|
||||||
|
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||||
|
<mxPoint x="250" y="210" as="sourcePoint" />
|
||||||
|
<mxPoint x="300" y="160" as="targetPoint" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="-JcRy6otO31GiCju6Gh6-23" value="WebSocket" style="endArrow=classic;startArrow=classic;html=1;rounded=0;entryX=0;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" edge="1" parent="1" source="-JcRy6otO31GiCju6Gh6-10" target="-JcRy6otO31GiCju6Gh6-29">
|
||||||
|
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||||
|
<mxPoint x="530" y="220" as="sourcePoint" />
|
||||||
|
<mxPoint x="580" y="170" as="targetPoint" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="-JcRy6otO31GiCju6Gh6-24" value="HTTP (Azure API calls)" style="endArrow=classic;startArrow=classic;html=1;rounded=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" edge="1" parent="1" source="-JcRy6otO31GiCju6Gh6-17" target="-JcRy6otO31GiCju6Gh6-7">
|
||||||
|
<mxGeometry x="0.2727" y="-5" width="50" height="50" relative="1" as="geometry">
|
||||||
|
<mxPoint x="430" y="450" as="sourcePoint" />
|
||||||
|
<mxPoint x="480" y="400" as="targetPoint" />
|
||||||
|
<mxPoint as="offset" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="-JcRy6otO31GiCju6Gh6-27" value="Hosted on PartyKit Cloud" style="text;html=1;align=right;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontStyle=2" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="640" y="361" width="150" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="-JcRy6otO31GiCju6Gh6-28" value="Hosted on Netlify" style="text;html=1;align=right;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontStyle=2" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="240" y="360" width="150" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="-JcRy6otO31GiCju6Gh6-29" value="Hosted on Netlify" style="text;html=1;align=right;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontStyle=2" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="440" y="140" width="150" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
</root>
|
||||||
|
</mxGraphModel>
|
||||||
|
</diagram>
|
||||||
|
</mxfile>
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 98 KiB |
Reference in New Issue
Block a user