mirror of
https://github.com/bluewave-labs/Checkmate.git
synced 2025-12-18 08:04:47 -06:00
11325 lines
794 KiB
Plaintext
11325 lines
794 KiB
Plaintext
{
|
|
"drawioXML": "<mxfile>\n <diagram id=\"89EWfH2uZ2hayMIEMftf\" name=\"Page-1\">\n <mxGraphModel dx=\"3249\" dy=\"1738\" grid=\"0\" gridSize=\"10\" guides=\"1\" tooltips=\"1\" connect=\"0\" arrows=\"1\" fold=\"1\" page=\"0\" pageScale=\"1\" pageWidth=\"850\" pageHeight=\"1100\" math=\"0\" shadow=\"0\">\n <root>\n <mxCell id=\"0\" />\n <mxCell id=\"1\" style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#fffefe\" parent=\"0\" />\n <UserObject label=\"client\" value=\"client\" id=\"0b23ea66-3e37-4643-b3b9-acb87ea02bae\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#fffefe\" vertex=\"1\" parent=\"1\">\n <mxGeometry x=\"245\" y=\"70\" width=\"4850\" height=\"11102.865179846314\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"src\" value=\"src\" id=\"d3264577-10f0-42fe-9411-7e9df0754d1e\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#f9f3f3\" vertex=\"1\" parent=\"0b23ea66-3e37-4643-b3b9-acb87ea02bae\">\n <mxGeometry x=\"175\" y=\"70\" width=\"4500\" height=\"10962.865179846314\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Pages\" value=\"Pages\" id=\"f0feab85-316a-41b5-a2f1-629220018846\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#f4e9e9\" vertex=\"1\" parent=\"d3264577-10f0-42fe-9411-7e9df0754d1e\">\n <mxGeometry x=\"875\" y=\"172\" width=\"2310\" height=\"10466.86517984631\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"v1\" value=\"v1\" id=\"1a083b4a-787c-4eb4-8029-6700de987679\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#efdfdf\" vertex=\"1\" parent=\"f0feab85-316a-41b5-a2f1-629220018846\">\n <mxGeometry x=\"175\" y=\"70\" width=\"1950\" height=\"10326.86517984631\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Uptime\" value=\"Uptime\" id=\"7090fcdb-09be-4c85-86fd-e73553bbb2ff\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#ead5d5\" vertex=\"1\" parent=\"1a083b4a-787c-4eb4-8029-6700de987679\">\n <mxGeometry x=\"350\" y=\"4492.607033820289\" width=\"1290\" height=\"2027.4731598690946\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Create\" value=\"Create\" id=\"3dba5acc-cf25-40b7-ad21-9cd715454cd5\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e5cbcb\" vertex=\"1\" parent=\"7090fcdb-09be-4c85-86fd-e73553bbb2ff\">\n <mxGeometry x=\"310\" y=\"70.00000000000006\" width=\"805\" height=\"370\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"index.jsx\" value=\"index.jsx\" id=\"391ad99e-3114-4f54-a6ca-fd89b33c7e06\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e0c1c1\" vertex=\"1\" parent=\"3dba5acc-cf25-40b7-ad21-9cd715454cd5\">\n <mxGeometry x=\"70\" y=\"70\" width=\"640\" height=\"230\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Uptime Monitor Creation: Display Form - index.jsx:L315-802\" value=\"Uptime Monitor Creation: Display Form - index.jsx:L315-802\" id=\"7a2da928-a65c-49d8-b0a3-c159a6df2bc5\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"391ad99e-3114-4f54-a6ca-fd89b33c7e06\">\n <mxGeometry x=\"70\" y=\"70\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Uptime Monitor Creation: Handle Form Submission and Validation - index.jsx:L170-248\" value=\"Uptime Monitor Creation: Handle Form Submission and Validation - index.jsx:L170-248\" id=\"a81f4ae8-41fe-4d1b-95ce-86abcc67b53c\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"391ad99e-3114-4f54-a6ca-fd89b33c7e06\">\n <mxGeometry x=\"390\" y=\"70\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <mxCell id=\"0e09aa33-d7c7-4c89-9da8-f0937658f4d3\" value=\"Uptime Monitor
Creation: Form
Submission\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=11;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"391ad99e-3114-4f54-a6ca-fd89b33c7e06\" source=\"7a2da928-a65c-49d8-b0a3-c159a6df2bc5\" target=\"a81f4ae8-41fe-4d1b-95ce-86abcc67b53c\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\" />\n </mxGeometry>\n </mxCell>\n <UserObject label=\"Details\" value=\"Details\" id=\"273f3009-69d0-46fe-af57-3cd94a24b55b\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e5cbcb\" vertex=\"1\" parent=\"7090fcdb-09be-4c85-86fd-e73553bbb2ff\">\n <mxGeometry x=\"197.5\" y=\"1037.2632062932591\" width=\"815\" height=\"920.2099535758355\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"index.jsx\" value=\"index.jsx\" id=\"1807d5b9-54be-430b-8997-cada4dd9b521\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e0c1c1\" vertex=\"1\" parent=\"273f3009-69d0-46fe-af57-3cd94a24b55b\">\n <mxGeometry x=\"400\" y=\"620.2099535758355\" width=\"320\" height=\"230\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Navigate to Monitor Details - index.jsx:L27-188\" value=\"Navigate to Monitor Details - index.jsx:L27-188\" id=\"78a8a7c5-41d3-4453-a7f7-ac632bbef288\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"1807d5b9-54be-430b-8997-cada4dd9b521\">\n <mxGeometry x=\"70\" y=\"70\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Components\" value=\"Components\" id=\"6aed78bb-62f1-4ac1-9b9a-9d5977e87404\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e0c1c1\" vertex=\"1\" parent=\"273f3009-69d0-46fe-af57-3cd94a24b55b\">\n <mxGeometry x=\"95\" y=\"70\" width=\"650\" height=\"510\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"ResponseTable\" value=\"ResponseTable\" id=\"5ac0878f-d238-4763-8464-a85b4885a40f\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e0c1c1\" vertex=\"1\" parent=\"6aed78bb-62f1-4ac1-9b9a-9d5977e87404\">\n <mxGeometry x=\"95\" y=\"70\" width=\"485\" height=\"370\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"index.jsx\" value=\"index.jsx\" id=\"d3f74ac7-3b9a-4cae-8d77-a0d5d605bb27\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e0c1c1\" vertex=\"1\" parent=\"5ac0878f-d238-4763-8464-a85b4885a40f\">\n <mxGeometry x=\"95\" y=\"70\" width=\"320\" height=\"230\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Render Historical Data Table - index.jsx:L11-92\" value=\"Render Historical Data Table - index.jsx:L11-92\" id=\"c996f7ca-9384-4252-b343-7bfc049d14bb\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"d3f74ac7-3b9a-4cae-8d77-a0d5d605bb27\">\n <mxGeometry x=\"70\" y=\"70\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"BulkImport\" value=\"BulkImport\" id=\"56dae13e-5735-4089-a9a4-e18be315aff7\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e5cbcb\" vertex=\"1\" parent=\"7090fcdb-09be-4c85-86fd-e73553bbb2ff\">\n <mxGeometry x=\"95\" y=\"480.00000000000006\" width=\"1020\" height=\"517.2632062932591\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"index.jsx\" value=\"index.jsx\" id=\"29b6ad3c-9538-47bc-8796-aab942dc4b71\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e0c1c1\" vertex=\"1\" parent=\"56dae13e-5735-4089-a9a4-e18be315aff7\">\n <mxGeometry x=\"605\" y=\"70\" width=\"320\" height=\"360\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Flow 1: CSV Import - Submit Upload - index.jsx:L32-45\" value=\"Flow 1: CSV Import - Submit Upload - index.jsx:L32-45\" id=\"dd2f9356-fad3-47d4-81d5-a5e038298e2b\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"29b6ad3c-9538-47bc-8796-aab942dc4b71\">\n <mxGeometry x=\"70\" y=\"200\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Flow 1: CSV Import - Client Handles Success - index.jsx:L37-41\" value=\"Flow 1: CSV Import - Client Handles Success - index.jsx:L37-41\" id=\"ae3b7e23-ed64-40aa-9760-389f0a869f8d\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"29b6ad3c-9538-47bc-8796-aab942dc4b71\">\n <mxGeometry x=\"70\" y=\"70\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Upload.jsx\" value=\"Upload.jsx\" id=\"cd84476a-1c8b-4781-811f-58fb9944365b\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e0c1c1\" vertex=\"1\" parent=\"56dae13e-5735-4089-a9a4-e18be315aff7\">\n <mxGeometry x=\"95\" y=\"217.26320629325912\" width=\"320\" height=\"230\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Flow 1: CSV Import - User Selects File - Upload.jsx:L23-31\" value=\"Flow 1: CSV Import - User Selects File - Upload.jsx:L23-31\" id=\"6f1948fa-e84a-4f8e-8f3b-8f24c511b3d8\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"cd84476a-1c8b-4781-811f-58fb9944365b\">\n <mxGeometry x=\"70\" y=\"70\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <mxCell id=\"e03a8ce2-c2cd-4147-8bab-63d6c2cf0a48\" value=\"Flow 1:
CSV Import
- File
State Update\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=12;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"56dae13e-5735-4089-a9a4-e18be315aff7\" source=\"6f1948fa-e84a-4f8e-8f3b-8f24c511b3d8\" target=\"dd2f9356-fad3-47d4-81d5-a5e038298e2b\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"480\" y=\"332.26320629325915\" />\n <mxPoint x=\"480\" y=\"315\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <UserObject label=\"Infrastructure\" value=\"Infrastructure\" id=\"3f26b33e-477f-41df-a78a-3e3e4f4209ae\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#ead5d5\" vertex=\"1\" parent=\"1a083b4a-787c-4eb4-8029-6700de987679\">\n <mxGeometry x=\"412.5\" y=\"8646.86517984631\" width=\"1165\" height=\"1610\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Create\" value=\"Create\" id=\"74019e8a-3148-4a32-aae2-5afd16f3eb9b\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e5cbcb\" vertex=\"1\" parent=\"3f26b33e-477f-41df-a78a-3e3e4f4209ae\">\n <mxGeometry x=\"340\" y=\"70\" width=\"650\" height=\"510\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Components\" value=\"Components\" id=\"ceded1fc-87a9-43c8-a756-746be3d4ad8d\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e0c1c1\" vertex=\"1\" parent=\"74019e8a-3148-4a32-aae2-5afd16f3eb9b\">\n <mxGeometry x=\"70\" y=\"70\" width=\"485\" height=\"370\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"CustomAlertsSection.jsx\" value=\"CustomAlertsSection.jsx\" id=\"83800be3-2a0e-4419-b379-3f995f4050e7\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e0c1c1\" vertex=\"1\" parent=\"ceded1fc-87a9-43c8-a756-746be3d4ad8d\">\n <mxGeometry x=\"70\" y=\"70\" width=\"320\" height=\"230\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Configuration: User Sets Alert Thresholds - CustomAlertsSection.jsx:L45-53\" value=\"Configuration: User Sets Alert Thresholds - CustomAlertsSection.jsx:L45-53\" id=\"9651d084-5c16-4417-89c1-f52ae6572a95\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"83800be3-2a0e-4419-b379-3f995f4050e7\">\n <mxGeometry x=\"70\" y=\"70\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Details\" value=\"Details\" id=\"591128f9-0994-4e01-a1ab-f23357f97aff\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e5cbcb\" vertex=\"1\" parent=\"3f26b33e-477f-41df-a78a-3e3e4f4209ae\">\n <mxGeometry x=\"95\" y=\"619.9999999999999\" width=\"895\" height=\"920.0000000000001\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"index.jsx\" value=\"index.jsx\" id=\"e292c552-b3df-4bac-bd9a-8f44c260a5aa\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e0c1c1\" vertex=\"1\" parent=\"591128f9-0994-4e01-a1ab-f23357f97aff\">\n <mxGeometry x=\"327.5\" y=\"620\" width=\"320\" height=\"230\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Visualization: User Views Monitor Details - index.jsx:L23-31\" value=\"Visualization: User Views Monitor Details - index.jsx:L23-31\" id=\"801fe70a-1a19-406c-8f0d-770b0cb74409\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"e292c552-b3df-4bac-bd9a-8f44c260a5aa\">\n <mxGeometry x=\"70\" y=\"70\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Components\" value=\"Components\" id=\"e97d4e61-483e-4ac5-85a1-0ff72fcdd449\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e0c1c1\" vertex=\"1\" parent=\"591128f9-0994-4e01-a1ab-f23357f97aff\">\n <mxGeometry x=\"175\" y=\"70\" width=\"650\" height=\"510\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"GaugeBoxes\" value=\"GaugeBoxes\" id=\"6a7c7720-a399-4d4d-8225-36e0b2f59731\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e0c1c1\" vertex=\"1\" parent=\"e97d4e61-483e-4ac5-85a1-0ff72fcdd449\">\n <mxGeometry x=\"95\" y=\"70\" width=\"485\" height=\"370\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"index.jsx\" value=\"index.jsx\" id=\"8fe3d890-3605-407d-b06c-1d890a354e46\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e0c1c1\" vertex=\"1\" parent=\"6a7c7720-a399-4d4d-8225-36e0b2f59731\">\n <mxGeometry x=\"95\" y=\"70\" width=\"320\" height=\"230\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Visualization: Frontend Renders Charts and Gauges - index.jsx:L22-51\" value=\"Visualization: Frontend Renders Charts and Gauges - index.jsx:L22-51\" id=\"9ea2e32d-1ea8-42f2-9a17-613844723ae6\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"8fe3d890-3605-407d-b06c-1d890a354e46\">\n <mxGeometry x=\"70\" y=\"70\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Notifications\" value=\"Notifications\" id=\"b3575a92-df07-4cf7-810f-8e5e0672d666\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#ead5d5\" vertex=\"1\" parent=\"1a083b4a-787c-4eb4-8029-6700de987679\">\n <mxGeometry x=\"1125\" y=\"3942.607033820289\" width=\"650\" height=\"510\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"create\" value=\"create\" id=\"a6fb23f0-73bc-40ee-bb3c-ed93605a2bcb\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e5cbcb\" vertex=\"1\" parent=\"b3575a92-df07-4cf7-810f-8e5e0672d666\">\n <mxGeometry x=\"70\" y=\"70\" width=\"485\" height=\"370\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"index.jsx\" value=\"index.jsx\" id=\"b71b02fb-d08e-4fcf-b959-de1b9547d9c2\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e0c1c1\" vertex=\"1\" parent=\"a6fb23f0-73bc-40ee-bb3c-ed93605a2bcb\">\n <mxGeometry x=\"70\" y=\"70\" width=\"320\" height=\"230\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Flow 1: Render Notification Creation Form - index.jsx:L157-321\" value=\"Flow 1: Render Notification Creation Form - index.jsx:L157-321\" id=\"15486629-84b3-463a-962b-06083f69e4bf\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"b71b02fb-d08e-4fcf-b959-de1b9547d9c2\">\n <mxGeometry x=\"70\" y=\"70\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"StatusPage\" value=\"StatusPage\" id=\"9d662180-8b65-4426-ad37-cfed4bc01fb4\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#ead5d5\" vertex=\"1\" parent=\"1a083b4a-787c-4eb4-8029-6700de987679\">\n <mxGeometry x=\"280\" y=\"1072.6070338202887\" width=\"1430\" height=\"1470\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Create\" value=\"Create\" id=\"08602a28-f073-484e-9403-7eb798126dd4\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e5cbcb\" vertex=\"1\" parent=\"9d662180-8b65-4426-ad37-cfed4bc01fb4\">\n <mxGeometry x=\"70\" y=\"70\" width=\"1185\" height=\"510\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"index.jsx\" value=\"index.jsx\" id=\"e2d2bbf6-dffd-4edf-8c5d-34088d9d4745\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e0c1c1\" vertex=\"1\" parent=\"08602a28-f073-484e-9403-7eb798126dd4\">\n <mxGeometry x=\"70\" y=\"140\" width=\"320\" height=\"230\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Create Status Page: User Initiates Creation - index.jsx:L26-313\" value=\"Create Status Page: User Initiates Creation - index.jsx:L26-313\" id=\"00289d11-0015-4b2a-9c5b-dc9fd0f32b80\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"e2d2bbf6-dffd-4edf-8c5d-34088d9d4745\">\n <mxGeometry x=\"70\" y=\"70\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Hooks\" value=\"Hooks\" id=\"56f6775e-9843-4ca2-bc8c-1c263b6c35e9\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e0c1c1\" vertex=\"1\" parent=\"08602a28-f073-484e-9403-7eb798126dd4\">\n <mxGeometry x=\"580\" y=\"70\" width=\"510\" height=\"370\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"useCreateStatusPage.jsx\" value=\"useCreateStatusPage.jsx\" id=\"3945e05f-2d99-4d6d-9a3e-b6c75ea3c45a\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e0c1c1\" vertex=\"1\" parent=\"56f6775e-9843-4ca2-bc8c-1c263b6c35e9\">\n <mxGeometry x=\"95\" y=\"70\" width=\"320\" height=\"230\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Create Status Page: Client Hook Sends API Request - useCreateStatusPage.jsx:L8-11\" value=\"Create Status Page: Client Hook Sends API Request - useCreateStatusPage.jsx:L8-11\" id=\"aa5d6d07-05f0-45f3-b19a-199af50e35f1\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"3945e05f-2d99-4d6d-9a3e-b6c75ea3c45a\">\n <mxGeometry x=\"70\" y=\"70\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <mxCell id=\"de23eee2-b60a-4236-a890-3c5b78388bb3\" value=\"Create Status
Page: Form
Submission\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=10;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"08602a28-f073-484e-9403-7eb798126dd4\" source=\"00289d11-0015-4b2a-9c5b-dc9fd0f32b80\" target=\"aa5d6d07-05f0-45f3-b19a-199af50e35f1\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\" />\n </mxGeometry>\n </mxCell>\n <UserObject label=\"Status\" value=\"Status\" id=\"8ef70566-37d9-48fb-b5e8-37e5b68768a2\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e5cbcb\" vertex=\"1\" parent=\"9d662180-8b65-4426-ad37-cfed4bc01fb4\">\n <mxGeometry x=\"221.66666666666666\" y=\"620\" width=\"780\" height=\"780\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"index.jsx\" value=\"index.jsx\" id=\"e1e6f5e0-fd8c-4260-aa4f-cdb096c6b1c3\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e0c1c1\" vertex=\"1\" parent=\"8ef70566-37d9-48fb-b5e8-37e5b68768a2\">\n <mxGeometry x=\"175\" y=\"70\" width=\"320\" height=\"230\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"View Status Page: Component Renders UI - index.jsx:L145-163\" value=\"View Status Page: Component Renders UI - index.jsx:L145-163\" id=\"f59b91de-5196-4a43-9d57-3f28402c0672\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"e1e6f5e0-fd8c-4260-aa4f-cdb096c6b1c3\">\n <mxGeometry x=\"70\" y=\"70\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Hooks\" value=\"Hooks\" id=\"79da0721-d810-4f7f-9cf9-3ea462bf0bff\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e0c1c1\" vertex=\"1\" parent=\"8ef70566-37d9-48fb-b5e8-37e5b68768a2\">\n <mxGeometry x=\"175\" y=\"340\" width=\"510\" height=\"370\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"useStatusPageFetch.jsx\" value=\"useStatusPageFetch.jsx\" id=\"5b2cdab8-66f1-40a1-9621-0efaf54e04ae\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e0c1c1\" vertex=\"1\" parent=\"79da0721-d810-4f7f-9cf9-3ea462bf0bff\">\n <mxGeometry x=\"95\" y=\"70\" width=\"320\" height=\"230\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"View Status Page: Client Hook Sends API Request - useStatusPageFetch.jsx:L15-18\" value=\"View Status Page: Client Hook Sends API Request - useStatusPageFetch.jsx:L15-18\" id=\"ecfb2d04-2681-4f16-af75-632f69e1a868\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"5b2cdab8-66f1-40a1-9621-0efaf54e04ae\">\n <mxGeometry x=\"70\" y=\"70\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"PageSpeed\" value=\"PageSpeed\" id=\"043d3dac-d4bb-449b-a3a7-270d53b66dac\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#ead5d5\" vertex=\"1\" parent=\"1a083b4a-787c-4eb4-8029-6700de987679\">\n <mxGeometry x=\"670\" y=\"70\" width=\"650\" height=\"920.010195392\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Create\" value=\"Create\" id=\"414c500b-7b68-42ba-8110-e855efbee750\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e5cbcb\" vertex=\"1\" parent=\"043d3dac-d4bb-449b-a3a7-270d53b66dac\">\n <mxGeometry x=\"70\" y=\"480.01019539199996\" width=\"485\" height=\"370\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"index.jsx\" value=\"index.jsx\" id=\"5ffe0baa-054a-4e5b-8b29-1254f07ea975\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e0c1c1\" vertex=\"1\" parent=\"414c500b-7b68-42ba-8110-e855efbee750\">\n <mxGeometry x=\"70\" y=\"70\" width=\"320\" height=\"230\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Create PageSpeed Monitor - index.jsx:L111-143\" value=\"Create PageSpeed Monitor - index.jsx:L111-143\" id=\"0622b212-3a4a-484d-9b7a-125864d785cd\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"5ffe0baa-054a-4e5b-8b29-1254f07ea975\">\n <mxGeometry x=\"70\" y=\"70\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Details\" value=\"Details\" id=\"581b4919-8b0c-4f0d-ae67-ad6de11d8c8b\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e5cbcb\" vertex=\"1\" parent=\"043d3dac-d4bb-449b-a3a7-270d53b66dac\">\n <mxGeometry x=\"95\" y=\"70\" width=\"485\" height=\"370\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"index.jsx\" value=\"index.jsx\" id=\"c4a7bb58-1d9c-4690-b6b8-460c1cc33702\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e0c1c1\" vertex=\"1\" parent=\"581b4919-8b0c-4f0d-ae67-ad6de11d8c8b\">\n <mxGeometry x=\"95\" y=\"70\" width=\"320\" height=\"230\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Frontend Renders Performance Charts - index.jsx:L91-126\" value=\"Frontend Renders Performance Charts - index.jsx:L91-126\" id=\"9ef9e218-4742-487a-9a88-5c70e788ccdc\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"c4a7bb58-1d9c-4690-b6b8-460c1cc33702\">\n <mxGeometry x=\"70\" y=\"70\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Maintenance\" value=\"Maintenance\" id=\"8021b55d-2d3a-4416-b598-e134e76c9434\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#ead5d5\" vertex=\"1\" parent=\"1a083b4a-787c-4eb4-8029-6700de987679\">\n <mxGeometry x=\"215\" y=\"6560.080193689384\" width=\"1560\" height=\"1366.78498615693\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"CreateMaintenance\" value=\"CreateMaintenance\" id=\"6f7119ac-d65a-4fdf-a6f2-31052e0f5549\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e5cbcb\" vertex=\"1\" parent=\"8021b55d-2d3a-4416-b598-e134e76c9434\">\n <mxGeometry x=\"175\" y=\"70\" width=\"1210\" height=\"546.7778279053807\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"index.jsx\" value=\"index.jsx\" id=\"92c244d2-e6a7-4804-a643-1e8d36baf9c6\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e0c1c1\" vertex=\"1\" parent=\"6f7119ac-d65a-4fdf-a6f2-31052e0f5549\">\n <mxGeometry x=\"95\" y=\"70\" width=\"320\" height=\"360.23526566400005\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Flow: Create Maintenance Window - User Interaction - index.jsx:L46-131\" value=\"Flow: Create Maintenance Window - User Interaction - index.jsx:L46-131\" id=\"20335f29-a2ac-4e0c-aba6-28707748ecd4\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"92c244d2-e6a7-4804-a643-1e8d36baf9c6\">\n <mxGeometry x=\"70\" y=\"200.235265664\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Flow: Create Maintenance Window - UI Update - index.jsx:L111-119\" value=\"Flow: Create Maintenance Window - UI Update - index.jsx:L111-119\" id=\"a5a84b08-8c70-4023-8d08-b74e23aab4d7\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"92c244d2-e6a7-4804-a643-1e8d36baf9c6\">\n <mxGeometry x=\"70\" y=\"70\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"hooks\" value=\"hooks\" id=\"015a17fc-3fcf-45e0-8936-19f5e2ca86a3\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e0c1c1\" vertex=\"1\" parent=\"6f7119ac-d65a-4fdf-a6f2-31052e0f5549\">\n <mxGeometry x=\"605\" y=\"106.77782790538079\" width=\"510\" height=\"370\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"useMaintenanceActions.jsx\" value=\"useMaintenanceActions.jsx\" id=\"6ad0396e-9b38-4f5d-9ad9-6c9fcb4434f4\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e0c1c1\" vertex=\"1\" parent=\"015a17fc-3fcf-45e0-8936-19f5e2ca86a3\">\n <mxGeometry x=\"95\" y=\"70\" width=\"320\" height=\"230\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Flow: Create Maintenance Window - Prepare API Request - useMaintenanceActions.jsx:L25-58\" value=\"Flow: Create Maintenance Window - Prepare API Request - useMaintenanceActions.jsx:L25-58\" id=\"5bdfdfa4-5d93-49fa-b05c-905813e6cf9d\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"6ad0396e-9b38-4f5d-9ad9-6c9fcb4434f4\">\n <mxGeometry x=\"70\" y=\"70\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <mxCell id=\"d3bdc6ff-875e-472e-88c8-eb10b20c526e\" value=\"Flow: Create
Maintenance Window
- Form
Submission\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=12;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"6f7119ac-d65a-4fdf-a6f2-31052e0f5549\" source=\"20335f29-a2ac-4e0c-aba6-28707748ecd4\" target=\"5bdfdfa4-5d93-49fa-b05c-905813e6cf9d\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"480\" y=\"315.2352656640011\" />\n <mxPoint x=\"480\" y=\"291.77782790538186\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <UserObject label=\"index.jsx\" value=\"index.jsx\" id=\"1eae6263-aaa2-4206-b92e-1e67f529c1c9\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e5cbcb\" vertex=\"1\" parent=\"8021b55d-2d3a-4416-b598-e134e76c9434\">\n <mxGeometry x=\"1065\" y=\"656.7778279053807\" width=\"320\" height=\"230\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Flow: View Maintenance Windows - Page Load - index.jsx:L25-47\" value=\"Flow: View Maintenance Windows - Page Load - index.jsx:L25-47\" id=\"d145bb4c-e1e0-473a-b6bc-decc932b738b\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"1eae6263-aaa2-4206-b92e-1e67f529c1c9\">\n <mxGeometry x=\"70\" y=\"70\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"MaintenanceTable\" value=\"MaintenanceTable\" id=\"5ad4d33f-0932-479c-bb57-22ce6405758f\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e5cbcb\" vertex=\"1\" parent=\"8021b55d-2d3a-4416-b598-e134e76c9434\">\n <mxGeometry x=\"175\" y=\"926.78498615693\" width=\"485\" height=\"370\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"index.jsx\" value=\"index.jsx\" id=\"e7ec5ca9-6d25-4bf2-9695-639556f7d141\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e0c1c1\" vertex=\"1\" parent=\"5ad4d33f-0932-479c-bb57-22ce6405758f\">\n <mxGeometry x=\"95\" y=\"70\" width=\"320\" height=\"230\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Flow: View Maintenance Windows - UI Rendering - index.jsx:L195-201\" value=\"Flow: View Maintenance Windows - UI Rendering - index.jsx:L195-201\" id=\"970e2002-7c0e-40ef-80d8-e5e6d0a60735\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"e7ec5ca9-6d25-4bf2-9695-639556f7d141\">\n <mxGeometry x=\"70\" y=\"70\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Account\" value=\"Account\" id=\"3cad7666-0d1a-4e31-b6ca-70d9c3a46b19\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#ead5d5\" vertex=\"1\" parent=\"1a083b4a-787c-4eb4-8029-6700de987679\">\n <mxGeometry x=\"402.5\" y=\"2582.607033820289\" width=\"1185\" height=\"640\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"index.jsx\" value=\"index.jsx\" id=\"33960806-1b9e-4d61-a163-e4bebf82d87a\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e5cbcb\" vertex=\"1\" parent=\"3cad7666-0d1a-4e31-b6ca-70d9c3a46b19\">\n <mxGeometry x=\"70\" y=\"287.5203768220729\" width=\"320\" height=\"230\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Client: Conditional UI Rendering Based on Role - index.jsx:L37-41\" value=\"Client: Conditional UI Rendering Based on Role - index.jsx:L37-41\" id=\"3de2d413-5e9b-49f4-9409-74be32c52e0f\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"33960806-1b9e-4d61-a163-e4bebf82d87a\">\n <mxGeometry x=\"70\" y=\"70\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"components\" value=\"components\" id=\"425a4c15-043f-4d05-8832-da00e18f97b9\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e5cbcb\" vertex=\"1\" parent=\"3cad7666-0d1a-4e31-b6ca-70d9c3a46b19\">\n <mxGeometry x=\"580\" y=\"70\" width=\"510\" height=\"500\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"TeamPanel.jsx\" value=\"TeamPanel.jsx\" id=\"1145f351-2257-411d-86f7-30bf8c26ad68\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e0c1c1\" vertex=\"1\" parent=\"425a4c15-043f-4d05-8832-da00e18f97b9\">\n <mxGeometry x=\"95\" y=\"70\" width=\"320\" height=\"360\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Client: Initiate User Invitation - TeamPanel.jsx:L348-354\" value=\"Client: Initiate User Invitation - TeamPanel.jsx:L348-354\" id=\"b27f1bba-c655-40c6-a1dc-71e78c590c92\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"1145f351-2257-411d-86f7-30bf8c26ad68\">\n <mxGeometry x=\"70\" y=\"200\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Client: Display Success Feedback - TeamPanel.jsx:L145-149\" value=\"Client: Display Success Feedback - TeamPanel.jsx:L145-149\" id=\"02d87257-883c-4822-a421-823c983532ec\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"1145f351-2257-411d-86f7-30bf8c26ad68\">\n <mxGeometry x=\"70\" y=\"70\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <mxCell id=\"c441312f-f3c6-48c6-b1b9-7c12749d91bb\" value=\"Client: User
Navigates to
Team Panel\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=12;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"3cad7666-0d1a-4e31-b6ca-70d9c3a46b19\" source=\"3de2d413-5e9b-49f4-9409-74be32c52e0f\" target=\"b27f1bba-c655-40c6-a1dc-71e78c590c92\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"455\" y=\"402.52037682207174\" />\n <mxPoint x=\"455\" y=\"384.99999999999886\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <UserObject label=\"Settings\" value=\"Settings\" id=\"50f77798-f41b-4f5b-b096-7afc921a0419\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#ead5d5\" vertex=\"1\" parent=\"1a083b4a-787c-4eb4-8029-6700de987679\">\n <mxGeometry x=\"861.6666666666666\" y=\"7966.865179846312\" width=\"590\" height=\"640\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"index.jsx\" value=\"index.jsx\" id=\"d4b34195-7e1e-47a0-9303-603987c81f95\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e5cbcb\" vertex=\"1\" parent=\"50f77798-f41b-4f5b-b096-7afc921a0419\">\n <mxGeometry x=\"95\" y=\"70\" width=\"320\" height=\"230\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Flow 1: Render Settings Page - index.jsx:L25-52\" value=\"Flow 1: Render Settings Page - index.jsx:L25-52\" id=\"97908daf-d071-4df5-8366-1f5f4d8d534a\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"d4b34195-7e1e-47a0-9303-603987c81f95\">\n <mxGeometry x=\"70\" y=\"70\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"SettingsEmail.jsx\" value=\"SettingsEmail.jsx\" id=\"d8aa5b9e-f2a7-44c8-8813-d79c3f3238ee\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e5cbcb\" vertex=\"1\" parent=\"50f77798-f41b-4f5b-b096-7afc921a0419\">\n <mxGeometry x=\"95\" y=\"340\" width=\"320\" height=\"230\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"User Interaction: Modify Email Settings - SettingsEmail.jsx:L119-167\" value=\"User Interaction: Modify Email Settings - SettingsEmail.jsx:L119-167\" id=\"09cb194a-0ea4-46e2-b32b-36b62fa87f40\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"d8aa5b9e-f2a7-44c8-8813-d79c3f3238ee\">\n <mxGeometry x=\"70\" y=\"70\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Logs\" value=\"Logs\" id=\"1716ec41-8b42-4386-9850-55b8a607638e\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#ead5d5\" vertex=\"1\" parent=\"1a083b4a-787c-4eb4-8029-6700de987679\">\n <mxGeometry x=\"1125\" y=\"3262.607033820289\" width=\"650\" height=\"640\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Diagnostics\" value=\"Diagnostics\" id=\"e0cb598c-e300-4fd3-8554-db7ffd6201f1\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e5cbcb\" vertex=\"1\" parent=\"1716ec41-8b42-4386-9850-55b8a607638e\">\n <mxGeometry x=\"70\" y=\"70\" width=\"485\" height=\"500\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"index.jsx\" value=\"index.jsx\" id=\"87e0e2ea-4a6d-460d-95bc-31e2efd9c9cf\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e0c1c1\" vertex=\"1\" parent=\"e0cb598c-e300-4fd3-8554-db7ffd6201f1\">\n <mxGeometry x=\"70\" y=\"70\" width=\"320\" height=\"360\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Flow 2: Navigate to Diagnostics Page - index.jsx:L14-15\" value=\"Flow 2: Navigate to Diagnostics Page - index.jsx:L14-15\" id=\"704e2ec8-9f2f-47e5-852f-c6ada67a02e0\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"87e0e2ea-4a6d-460d-95bc-31e2efd9c9cf\">\n <mxGeometry x=\"70\" y=\"200\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"UI Update: Display System Health - index.jsx:L59-63\" value=\"UI Update: Display System Health - index.jsx:L59-63\" id=\"4b418736-6b72-47e0-917a-d86d4bed9ecd\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"87e0e2ea-4a6d-460d-95bc-31e2efd9c9cf\">\n <mxGeometry x=\"70\" y=\"70\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Hooks\" value=\"Hooks\" id=\"4295a047-076f-4c07-95dd-b3123b6614f7\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#f4e9e9\" vertex=\"1\" parent=\"d3264577-10f0-42fe-9411-7e9df0754d1e\">\n <mxGeometry x=\"3375\" y=\"7802.246623286175\" width=\"950\" height=\"1439.9999999999998\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"v1\" value=\"v1\" id=\"3bf0c0f9-cbb0-4f0c-8cb3-6e2a4abc0961\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#efdfdf\" vertex=\"1\" parent=\"4295a047-076f-4c07-95dd-b3123b6614f7\">\n <mxGeometry x=\"175\" y=\"70\" width=\"600\" height=\"1299.9999999999998\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"monitorHooks.js\" value=\"monitorHooks.js\" id=\"595cf0e8-2f86-4543-b51c-b2aeac307f4b\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=16;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"3bf0c0f9-cbb0-4f0c-8cb3-6e2a4abc0961\">\n <mxGeometry x=\"255\" y=\"740.0000000000001\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"useNotifications.js\" value=\"useNotifications.js\" id=\"cd2428fd-6545-48dd-b685-5261311b7532\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#ead5d5\" vertex=\"1\" parent=\"3bf0c0f9-cbb0-4f0c-8cb3-6e2a4abc0961\">\n <mxGeometry x=\"185\" y=\"70\" width=\"320\" height=\"230\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Flow 1: Frontend API Call - useNotifications.js:L14-17\" value=\"Flow 1: Frontend API Call - useNotifications.js:L14-17\" id=\"a07b805e-e55f-46cb-b54b-765b7813b0ca\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"cd2428fd-6545-48dd-b685-5261311b7532\">\n <mxGeometry x=\"70\" y=\"70\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"checkHooks.js\" value=\"checkHooks.js\" id=\"933a6cdc-349c-4725-b7ae-14cf780bfde8\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#ead5d5\" vertex=\"1\" parent=\"3bf0c0f9-cbb0-4f0c-8cb3-6e2a4abc0961\">\n <mxGeometry x=\"185\" y=\"340\" width=\"320\" height=\"360\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Fetch Monitor Checks Hook - checkHooks.js:L89-121\" value=\"Fetch Monitor Checks Hook - checkHooks.js:L89-121\" id=\"4a5847d0-91a0-4b4c-8517-2f4ff9a7e8d4\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"933a6cdc-349c-4725-b7ae-14cf780bfde8\">\n <mxGeometry x=\"70\" y=\"200\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Update Frontend State - checkHooks.js:L109-110\" value=\"Update Frontend State - checkHooks.js:L109-110\" id=\"ceb9cda3-968d-44aa-b223-49902adb93b4\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"933a6cdc-349c-4725-b7ae-14cf780bfde8\">\n <mxGeometry x=\"70\" y=\"70\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"settingsHooks.js\" value=\"settingsHooks.js\" id=\"8ee5d524-e61d-4e39-a729-babf54929def\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#ead5d5\" vertex=\"1\" parent=\"3bf0c0f9-cbb0-4f0c-8cb3-6e2a4abc0961\">\n <mxGeometry x=\"185\" y=\"869.9999999999998\" width=\"320\" height=\"360\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"API Call: Update Application Settings - settingsHooks.js:L41-67\" value=\"API Call: Update Application Settings - settingsHooks.js:L41-67\" id=\"1b2cf182-9ee3-4218-a7ec-b74e427ccddf\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"8ee5d524-e61d-4e39-a729-babf54929def\">\n <mxGeometry x=\"70\" y=\"70\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"UI Update: Display Success Confirmation - settingsHooks.js:L58\" value=\"UI Update: Display Success Confirmation - settingsHooks.js:L58\" id=\"fff5dde4-8eb8-4c21-9c6d-0845a9749ff3\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"8ee5d524-e61d-4e39-a729-babf54929def\">\n <mxGeometry x=\"70\" y=\"200\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Utils\" value=\"Utils\" id=\"02b07589-ec21-4366-b7d2-9071e8f3bad8\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#f4e9e9\" vertex=\"1\" parent=\"d3264577-10f0-42fe-9411-7e9df0754d1e\">\n <mxGeometry x=\"3595\" y=\"5026.542220848842\" width=\"510\" height=\"500\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"NetworkService.js\" value=\"NetworkService.js\" id=\"16731e9d-3f73-4055-9d79-5ca9be679f68\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#efdfdf\" vertex=\"1\" parent=\"02b07589-ec21-4366-b7d2-9071e8f3bad8\">\n <mxGeometry x=\"95\" y=\"70\" width=\"320\" height=\"360\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Uptime Monitor Creation: Send API Request - NetworkService.js:L119-121\" value=\"Uptime Monitor Creation: Send API Request - NetworkService.js:L119-121\" id=\"a30ac765-c546-4993-988e-8c8cfdb7532f\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"16731e9d-3f73-4055-9d79-5ca9be679f68\">\n <mxGeometry x=\"70\" y=\"70\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Flow 1: CSV Import - Send API Request - NetworkService.js:L978-983\" value=\"Flow 1: CSV Import - Send API Request - NetworkService.js:L978-983\" id=\"5967e576-f542-4c0b-a3f4-9446ae992721\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"16731e9d-3f73-4055-9d79-5ca9be679f68\">\n <mxGeometry x=\"70\" y=\"200\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <mxCell id=\"1f6f04a9-0123-4729-b06a-8f3da6d1b58c\" value=\"Uptime Monitor
Creation: Call
Network Service\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=20;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"d3264577-10f0-42fe-9411-7e9df0754d1e\" source=\"a81f4ae8-41fe-4d1b-95ce-86abcc67b53c\" target=\"a30ac765-c546-4993-988e-8c8cfdb7532f\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"2580\" y=\"4989.607033820288\" />\n <mxPoint x=\"2580\" y=\"4990.369748321168\" />\n <mxPoint x=\"3290\" y=\"4990.36974832117\" />\n <mxPoint x=\"3290\" y=\"5211.5422208488435\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <mxCell id=\"54497b9a-4910-4df4-b016-480b9ac250a7\" value=\"Flow 1:
Submit Form
Data for
Creation\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=20;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"d3264577-10f0-42fe-9411-7e9df0754d1e\" source=\"15486629-84b3-463a-962b-06083f69e4bf\" target=\"a07b805e-e55f-46cb-b54b-765b7813b0ca\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"3280\" y=\"4439.607033820289\" />\n <mxPoint x=\"3280\" y=\"8192.650474325575\" />\n <mxPoint x=\"3485\" y=\"8192.650474325574\" />\n <mxPoint x=\"3485\" y=\"8192.124804485014\" />\n <mxPoint x=\"3660\" y=\"8192.124804485018\" />\n <mxPoint x=\"3660\" y=\"8057.246623286176\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <UserObject label=\"Routes\" value=\"Routes\" id=\"987f145b-5df6-4c30-bf1c-2a2d2b0e5cdc\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#f4e9e9\" vertex=\"1\" parent=\"d3264577-10f0-42fe-9411-7e9df0754d1e\">\n <mxGeometry x=\"175\" y=\"4690.325785083435\" width=\"510\" height=\"500.0000000000001\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"index.jsx\" value=\"index.jsx\" id=\"c4d7e7dd-75b1-44f1-a34a-6ed290a8e562\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#efdfdf\" vertex=\"1\" parent=\"987f145b-5df6-4c30-bf1c-2a2d2b0e5cdc\">\n <mxGeometry x=\"95\" y=\"70\" width=\"320\" height=\"360.00000000000006\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"View Status Page: User Navigates to URL - index.jsx:L148-152\" value=\"View Status Page: User Navigates to URL - index.jsx:L148-152\" id=\"30aaee38-f509-4e19-a917-e6d2f4bba61c\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"c4d7e7dd-75b1-44f1-a34a-6ed290a8e562\">\n <mxGeometry x=\"70\" y=\"200.00000000000003\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Flow 1: CSV Import - Navigate to Bulk Import Page - index.jsx:L88-91\" value=\"Flow 1: CSV Import - Navigate to Bulk Import Page - index.jsx:L88-91\" id=\"c4caeba8-ed9a-4cbc-9888-38cc8ca55362\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"c4d7e7dd-75b1-44f1-a34a-6ed290a8e562\">\n <mxGeometry x=\"70\" y=\"70\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <mxCell id=\"0575bf87-5362-4988-b895-7e514148d420\" value=\"View Status
Page: Component
Triggers Data
Fetch\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=20;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"d3264577-10f0-42fe-9411-7e9df0754d1e\" source=\"30aaee38-f509-4e19-a917-e6d2f4bba61c\" target=\"ecfb2d04-2681-4f16-af75-632f69e1a868\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"760\" y=\"5005.325785083435\" />\n <mxPoint x=\"760\" y=\"4700.621306201958\" />\n <mxPoint x=\"985\" y=\"4700.621306201958\" />\n <mxPoint x=\"985\" y=\"4700.584553505045\" />\n <mxPoint x=\"1180\" y=\"4700.584553505045\" />\n <mxPoint x=\"1180\" y=\"2459.607033820289\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <mxCell id=\"e90e4943-6108-46e3-8a2c-a9a1c7361279\" value=\"Trigger Check
History Fetch\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=20;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"d3264577-10f0-42fe-9411-7e9df0754d1e\" source=\"78a8a7c5-41d3-4453-a7f7-ac632bbef288\" target=\"4a5847d0-91a0-4b4c-8517-2f4ff9a7e8d4\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"3250\" y=\"6507.080193689383\" />\n <mxPoint x=\"3250\" y=\"8457.246623286175\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <mxCell id=\"74b0dd89-9fea-4219-af1f-9571316a9d5a\" value=\"Pass Data
to UI
Components\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=20;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"d3264577-10f0-42fe-9411-7e9df0754d1e\" source=\"ceb9cda3-968d-44aa-b223-49902adb93b4\" target=\"c996f7ca-9384-4252-b343-7bfc049d14bb\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"4390\" y=\"8327.246623286173\" />\n <mxPoint x=\"4390\" y=\"10688.865179846314\" />\n <mxPoint x=\"780\" y=\"10688.865179846314\" />\n <mxPoint x=\"780\" y=\"8549.135157943725\" />\n <mxPoint x=\"1170\" y=\"8549.135157943725\" />\n <mxPoint x=\"1170\" y=\"6096.870240113547\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <mxCell id=\"c9a012bc-d53f-494f-82f2-1ee3f40ce646\" value=\"Flow 1:
CSV Import
- Render
UI\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=20;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"d3264577-10f0-42fe-9411-7e9df0754d1e\" source=\"c4caeba8-ed9a-4cbc-9888-38cc8ca55362\" target=\"6f1948fa-e84a-4f8e-8f3b-8f24c511b3d8\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"750\" y=\"4875.325785083435\" />\n <mxPoint x=\"750\" y=\"4690.621306201958\" />\n <mxPoint x=\"985\" y=\"4690.621306201958\" />\n <mxPoint x=\"985\" y=\"4690.584553505045\" />\n <mxPoint x=\"1170\" y=\"4690.584553505045\" />\n <mxPoint x=\"1170\" y=\"5546.870240113548\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <mxCell id=\"b8c0292d-afbb-4648-b484-1c27be96d52f\" value=\"Flow 1:
CSV Import
- Prepare
Form Data\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=20;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"d3264577-10f0-42fe-9411-7e9df0754d1e\" source=\"dd2f9356-fad3-47d4-81d5-a5e038298e2b\" target=\"5967e576-f542-4c0b-a3f4-9446ae992721\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"3290\" y=\"5529.60703382029\" />\n <mxPoint x=\"3290\" y=\"5341.542220848843\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <mxCell id=\"8c107d79-f796-49eb-ab88-f553dd6f9d95\" value=\"User Action:
Save Settings\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=20;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"d3264577-10f0-42fe-9411-7e9df0754d1e\" source=\"09cb194a-0ea4-46e2-b32b-36b62fa87f40\" target=\"1b2cf182-9ee3-4218-a7ec-b74e427ccddf\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"3280\" y=\"8663.865179846309\" />\n <mxPoint x=\"3280\" y=\"8857.246623286173\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <UserObject label=\"server\" value=\"server\" id=\"98af25c7-efc2-43d2-a273-c8da4e1038ad\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#fffefe\" vertex=\"1\" parent=\"1\">\n <mxGeometry x=\"5345\" y=\"70\" width=\"9275\" height=\"10756.873756414825\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"src\" value=\"src\" id=\"35864a2c-7bd0-4428-84fc-c0aa90c7f1be\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#f9f3f3\" vertex=\"1\" parent=\"98af25c7-efc2-43d2-a273-c8da4e1038ad\">\n <mxGeometry x=\"175\" y=\"70\" width=\"9005\" height=\"10616.873756414825\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"routes\" value=\"routes\" id=\"ffaaf471-ac3c-4ea3-a5a9-d5255169e54b\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#f4e9e9\" vertex=\"1\" parent=\"35864a2c-7bd0-4428-84fc-c0aa90c7f1be\">\n <mxGeometry x=\"215\" y=\"783\" width=\"1030\" height=\"1984.0802430260385\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"v1\" value=\"v1\" id=\"d3375a20-2776-4771-b806-649bbeb541bd\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#efdfdf\" vertex=\"1\" parent=\"ffaaf471-ac3c-4ea3-a5a9-d5255169e54b\">\n <mxGeometry x=\"175\" y=\"70.00000000000006\" width=\"680\" height=\"1844.0802430260385\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"monitorRoute.js\" value=\"monitorRoute.js\" id=\"10611636-ec73-4a26-87a5-654ae64a4843\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#ead5d5\" vertex=\"1\" parent=\"d3375a20-2776-4771-b806-649bbeb541bd\">\n <mxGeometry x=\"185\" y=\"600.0000000000001\" width=\"320\" height=\"360.24710152500006\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Flow 1: CSV Import - Server Receives Request - monitorRoute.js:L46\" value=\"Flow 1: CSV Import - Server Receives Request - monitorRoute.js:L46\" id=\"c1ac3c26-996a-43ef-9c34-4c2776188784\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"10611636-ec73-4a26-87a5-654ae64a4843\">\n <mxGeometry x=\"70\" y=\"70\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Flow 2: CSV Export - Initiate Export - monitorRoute.js:L45\" value=\"Flow 2: CSV Export - Initiate Export - monitorRoute.js:L45\" id=\"26d76516-fd7e-4ae8-956a-d077de4257fa\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"10611636-ec73-4a26-87a5-654ae64a4843\">\n <mxGeometry x=\"70\" y=\"200.24710152500003\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"notificationRoute.js\" value=\"notificationRoute.js\" id=\"96250197-23af-4059-9904-fd6751f70ad5\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#ead5d5\" vertex=\"1\" parent=\"d3375a20-2776-4771-b806-649bbeb541bd\">\n <mxGeometry x=\"185\" y=\"1414.0802430260383\" width=\"320\" height=\"360\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Flow 1: Backend Route Handling - notificationRoute.js:L10\" value=\"Flow 1: Backend Route Handling - notificationRoute.js:L10\" id=\"d0a4737f-715f-4f50-b6d5-5e4b31f86f93\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"96250197-23af-4059-9904-fd6751f70ad5\">\n <mxGeometry x=\"70\" y=\"70\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Flow 1: Backend Receives Test Request - notificationRoute.js:L13\" value=\"Flow 1: Backend Receives Test Request - notificationRoute.js:L13\" id=\"29c2c56e-9dc0-4304-bfbf-e0c0f8915a39\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"96250197-23af-4059-9904-fd6751f70ad5\">\n <mxGeometry x=\"70\" y=\"200\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"statusPageRoute.js\" value=\"statusPageRoute.js\" id=\"773e1065-b0a5-46a9-b0cc-6b963f69f5cc\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#ead5d5\" vertex=\"1\" parent=\"d3375a20-2776-4771-b806-649bbeb541bd\">\n <mxGeometry x=\"185\" y=\"70\" width=\"320\" height=\"360\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Create Status Page: Backend Route Handling - statusPageRoute.js:L14\" value=\"Create Status Page: Backend Route Handling - statusPageRoute.js:L14\" id=\"3efddcad-588f-4492-9808-b0c81c823c96\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"773e1065-b0a5-46a9-b0cc-6b963f69f5cc\">\n <mxGeometry x=\"70\" y=\"200\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"View Status Page: Backend Route Handling - statusPageRoute.js:L16\" value=\"View Status Page: Backend Route Handling - statusPageRoute.js:L16\" id=\"2e26cd2f-1413-4c16-8e63-ea7808ab6c52\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"773e1065-b0a5-46a9-b0cc-6b963f69f5cc\">\n <mxGeometry x=\"70\" y=\"70\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"checkRoute.js\" value=\"checkRoute.js\" id=\"d18dbe1d-2f2c-4336-bd21-47c1670f7bab\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#ead5d5\" vertex=\"1\" parent=\"d3375a20-2776-4771-b806-649bbeb541bd\">\n <mxGeometry x=\"185\" y=\"1135.7525647938676\" width=\"320\" height=\"230\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Route Request to Controller - checkRoute.js:L19\" value=\"Route Request to Controller - checkRoute.js:L19\" id=\"cdd090be-0b62-45b4-baa0-fec01fc3ffd1\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"d18dbe1d-2f2c-4336-bd21-47c1670f7bab\">\n <mxGeometry x=\"70\" y=\"70\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"maintenanceWindowRoute.js\" value=\"maintenanceWindowRoute.js\" id=\"5f21f109-1967-416f-a649-9b48e78b90f6\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"d3375a20-2776-4771-b806-649bbeb541bd\">\n <mxGeometry x=\"255\" y=\"470.0000000000001\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"inviteRoute.js\" value=\"inviteRoute.js\" id=\"9edafb8a-3661-4a7e-8510-a47f3cbc7564\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=16;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"d3375a20-2776-4771-b806-649bbeb541bd\">\n <mxGeometry x=\"255\" y=\"1000.2471015250001\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"controllers\" value=\"controllers\" id=\"478e649c-1d1b-41d2-9b7b-6927e1dec7e1\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#f4e9e9\" vertex=\"1\" parent=\"35864a2c-7bd0-4428-84fc-c0aa90c7f1be\">\n <mxGeometry x=\"1465\" y=\"3609.569505991416\" width=\"1470\" height=\"3164.7713082929035\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"v1\" value=\"v1\" id=\"fc591f7a-d4ac-4565-949d-a87a58a79bbc\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#efdfdf\" vertex=\"1\" parent=\"478e649c-1d1b-41d2-9b7b-6927e1dec7e1\">\n <mxGeometry x=\"175\" y=\"70\" width=\"1120\" height=\"3024.7713082929035\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"monitorController.js\" value=\"monitorController.js\" id=\"341f2784-67ee-4477-9445-a8c240ee6261\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#ead5d5\" vertex=\"1\" parent=\"fc591f7a-d4ac-4565-949d-a87a58a79bbc\">\n <mxGeometry x=\"225\" y=\"600\" width=\"720\" height=\"750\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Uptime Monitor Creation: Controller to Service - monitorController.js:L195\" value=\"Uptime Monitor Creation: Controller to Service - monitorController.js:L195\" id=\"f0409948-75dc-457f-a02d-6b9774258e48\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"341f2784-67ee-4477-9445-a8c240ee6261\">\n <mxGeometry x=\"150\" y=\"200\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Flow 1: CSV Import - Controller Processes Data - monitorController.js:L228-232\" value=\"Flow 1: CSV Import - Controller Processes Data - monitorController.js:L228-232\" id=\"0e520a6d-34bf-467b-a894-e73979364478\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"341f2784-67ee-4477-9445-a8c240ee6261\">\n <mxGeometry x=\"150\" y=\"329.99999999999994\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Flow 1: CSV Import - Send Success Response - monitorController.js:L232-235\" value=\"Flow 1: CSV Import - Send Success Response - monitorController.js:L232-235\" id=\"72b55fa1-d944-4e46-ac98-f6a6cb201afa\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"341f2784-67ee-4477-9445-a8c240ee6261\">\n <mxGeometry x=\"150\" y=\"70.00000000000001\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Flow 2: CSV Export - Controller Handles Request - monitorController.js:L427-434\" value=\"Flow 2: CSV Export - Controller Handles Request - monitorController.js:L427-434\" id=\"a3106388-6a3d-4b68-a3fc-3761a0d54f98\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"341f2784-67ee-4477-9445-a8c240ee6261\">\n <mxGeometry x=\"150\" y=\"460.00000000000006\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Flow 2: CSV Export - Send File Response - monitorController.js:L434-440\" value=\"Flow 2: CSV Export - Send File Response - monitorController.js:L434-440\" id=\"f151f89d-6399-48f0-aecd-5eb1572b48cc\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"341f2784-67ee-4477-9445-a8c240ee6261\">\n <mxGeometry x=\"150\" y=\"590\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Flow 2: CSV Export - Browser Prompts Download - monitorController.js:L434-440\" value=\"Flow 2: CSV Export - Browser Prompts Download - monitorController.js:L434-440\" id=\"d8877474-7203-484f-bd47-fc69e3c7c482\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"341f2784-67ee-4477-9445-a8c240ee6261\">\n <mxGeometry x=\"470\" y=\"590\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <mxCell id=\"3dfb432a-2ce4-4f92-98ce-5d114b5f7f03\" value=\"Flow 2:
CSV Export
- Transmit
File to
Client\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=11;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"341f2784-67ee-4477-9445-a8c240ee6261\" source=\"f151f89d-6399-48f0-aecd-5eb1572b48cc\" target=\"d8877474-7203-484f-bd47-fc69e3c7c482\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\" />\n </mxGeometry>\n </mxCell>\n <UserObject label=\"notificationController.js\" value=\"notificationController.js\" id=\"8e5941e1-e577-455f-bbf2-83a418ad5908\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"fc591f7a-d4ac-4565-949d-a87a58a79bbc\">\n <mxGeometry x=\"495\" y=\"469.9999999999999\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"statusPageController.js\" value=\"statusPageController.js\" id=\"17a4f435-5a8e-4433-84a6-9ac17362709a\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#ead5d5\" vertex=\"1\" parent=\"fc591f7a-d4ac-4565-949d-a87a58a79bbc\">\n <mxGeometry x=\"345\" y=\"1920\" width=\"480\" height=\"620\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Create Status Page: Controller Logic - statusPageController.js:L18-24\" value=\"Create Status Page: Controller Logic - statusPageController.js:L18-24\" id=\"f15ef77e-380f-4768-98cb-7f0dd4113841\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"17a4f435-5a8e-4433-84a6-9ac17362709a\">\n <mxGeometry x=\"150\" y=\"199.99999999999997\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Create Status Page: Controller Sends Success Response - statusPageController.js:L25-28\" value=\"Create Status Page: Controller Sends Success Response - statusPageController.js:L25-28\" id=\"058ded1f-83ce-40a7-a99d-d178c81fe557\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"17a4f435-5a8e-4433-84a6-9ac17362709a\">\n <mxGeometry x=\"150\" y=\"329.9999999999999\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"View Status Page: Controller Logic - statusPageController.js:L75-78\" value=\"View Status Page: Controller Logic - statusPageController.js:L75-78\" id=\"9f217674-4cd7-4ef8-b088-d5620042a7ba\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"17a4f435-5a8e-4433-84a6-9ac17362709a\">\n <mxGeometry x=\"150\" y=\"70\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"View Status Page: Controller Sends Success Response - statusPageController.js:L79-82\" value=\"View Status Page: Controller Sends Success Response - statusPageController.js:L79-82\" id=\"d76e70e0-41f9-46cc-b775-b2027c5a0d5b\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"17a4f435-5a8e-4433-84a6-9ac17362709a\">\n <mxGeometry x=\"150\" y=\"460\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"checkController.js\" value=\"checkController.js\" id=\"d983e54f-2fbe-496a-932d-a827e1124804\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#ead5d5\" vertex=\"1\" parent=\"fc591f7a-d4ac-4565-949d-a87a58a79bbc\">\n <mxGeometry x=\"425\" y=\"70\" width=\"320\" height=\"230\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Return Check Data - checkController.js:L87-90\" value=\"Return Check Data - checkController.js:L87-90\" id=\"14df9f01-1358-442d-96f5-eab9a4c4abbf\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"d983e54f-2fbe-496a-932d-a827e1124804\">\n <mxGeometry x=\"70\" y=\"70\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"maintenanceWindowController.js\" value=\"maintenanceWindowController.js\" id=\"a0cae18c-3c0e-40d3-ab03-eef7eace65d6\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#ead5d5\" vertex=\"1\" parent=\"fc591f7a-d4ac-4565-949d-a87a58a79bbc\">\n <mxGeometry x=\"425\" y=\"1519.9999999999998\" width=\"320\" height=\"360\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Flow: Create Maintenance Window - Controller Logic - maintenanceWindowController.js:L27-41\" value=\"Flow: Create Maintenance Window - Controller Logic - maintenanceWindowController.js:L27-41\" id=\"0fae6e75-38ea-444d-a1bf-0f820ba443b9\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"a0cae18c-3c0e-40d3-ab03-eef7eace65d6\">\n <mxGeometry x=\"70\" y=\"70\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Flow: View Maintenance Windows - Controller and Service - maintenanceWindowController.js:L75\" value=\"Flow: View Maintenance Windows - Controller and Service - maintenanceWindowController.js:L75\" id=\"c35a065c-2808-402c-877e-9055d956ce0d\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"a0cae18c-3c0e-40d3-ab03-eef7eace65d6\">\n <mxGeometry x=\"70\" y=\"200\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"inviteController.js\" value=\"inviteController.js\" id=\"6a186805-9d50-4bc3-9d56-e627a7ec2eb8\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=14;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"fc591f7a-d4ac-4565-949d-a87a58a79bbc\">\n <mxGeometry x=\"495\" y=\"339.9999999999999\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"settingsController.js\" value=\"settingsController.js\" id=\"a1fea5b0-fb7c-4189-9484-9d3312660767\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#ead5d5\" vertex=\"1\" parent=\"fc591f7a-d4ac-4565-949d-a87a58a79bbc\">\n <mxGeometry x=\"425\" y=\"2594.7713082929035\" width=\"320\" height=\"360\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Backend: Retrieve Settings from Database - settingsController.js:L40-49\" value=\"Backend: Retrieve Settings from Database - settingsController.js:L40-49\" id=\"83596bd1-dfca-4196-b52e-955f6824fafb\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"a1fea5b0-fb7c-4189-9484-9d3312660767\">\n <mxGeometry x=\"70\" y=\"70\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Backend: Persist Updated Settings - settingsController.js:L54-64\" value=\"Backend: Persist Updated Settings - settingsController.js:L54-64\" id=\"cce3b9c8-f3b7-434b-b3c6-d8d164714f86\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"a1fea5b0-fb7c-4189-9484-9d3312660767\">\n <mxGeometry x=\"70\" y=\"200\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"diagnosticController.js\" value=\"diagnosticController.js\" id=\"5882419e-8a92-4edd-a71a-1252983f9af7\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"fc591f7a-d4ac-4565-949d-a87a58a79bbc\">\n <mxGeometry x=\"495\" y=\"1390\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"service\" value=\"service\" id=\"99e9b746-7809-41f4-a433-1de7cc90574b\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#f4e9e9\" vertex=\"1\" parent=\"35864a2c-7bd0-4428-84fc-c0aa90c7f1be\">\n <mxGeometry x=\"4835\" y=\"3072.0802430260387\" width=\"3965\" height=\"3896.797033318495\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"v1\" value=\"v1\" id=\"bbbe53d6-f595-498a-ae45-e08611f39c3d\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#efdfdf\" vertex=\"1\" parent=\"99e9b746-7809-41f4-a433-1de7cc90574b\">\n <mxGeometry x=\"175\" y=\"890.0000000000002\" width=\"3615\" height=\"2936.797033318495\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"business\" value=\"business\" id=\"87d3b101-9443-4ed4-9c4f-f759d41677eb\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#ead5d5\" vertex=\"1\" parent=\"bbbe53d6-f595-498a-ae45-e08611f39c3d\">\n <mxGeometry x=\"1231.1538461538462\" y=\"70\" width=\"1000\" height=\"1713.9996160245596\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"monitorService.js\" value=\"monitorService.js\" id=\"b4e479df-9b21-4430-9383-84831f503c2e\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e5cbcb\" vertex=\"1\" parent=\"87d3b101-9443-4ed4-9c4f-f759d41677eb\">\n <mxGeometry x=\"265\" y=\"880.7789018663125\" width=\"480\" height=\"490\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Flow 1: CSV Import - Service Parses CSV - monitorService.js:L85-134\" value=\"Flow 1: CSV Import - Service Parses CSV - monitorService.js:L85-134\" id=\"6139e487-1dd5-405a-ba7d-ededec4b282e\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"b4e479df-9b21-4430-9383-84831f503c2e\">\n <mxGeometry x=\"150\" y=\"70\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Flow 1: CSV Import - Enqueue Monitor Jobs - monitorService.js:L128-132\" value=\"Flow 1: CSV Import - Enqueue Monitor Jobs - monitorService.js:L128-132\" id=\"1e1d975f-7f0f-4132-bd71-2563b35e99b3\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"b4e479df-9b21-4430-9383-84831f503c2e\">\n <mxGeometry x=\"150\" y=\"330\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Flow 2: CSV Export - Generate CSV - monitorService.js:L245-266\" value=\"Flow 2: CSV Export - Generate CSV - monitorService.js:L245-266\" id=\"ab9cb862-0ac7-45a3-9888-f64e87bdda54\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"b4e479df-9b21-4430-9383-84831f503c2e\">\n <mxGeometry x=\"150\" y=\"200\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"checkService.js\" value=\"checkService.js\" id=\"f90db867-e1e7-4554-b446-fa78fc6a8578\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e5cbcb\" vertex=\"1\" parent=\"87d3b101-9443-4ed4-9c4f-f759d41677eb\">\n <mxGeometry x=\"345\" y=\"610.7789018663126\" width=\"320\" height=\"230\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Fetch Checks from Database - checkService.js:L36-45\" value=\"Fetch Checks from Database - checkService.js:L36-45\" id=\"499b46a2-f2a2-4ccd-aecd-012eade2bd23\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"f90db867-e1e7-4554-b446-fa78fc6a8578\">\n <mxGeometry x=\"70\" y=\"70\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"maintenanceWindowService.js\" value=\"maintenanceWindowService.js\" id=\"26b8daff-aa48-4baa-9d6c-05f771bf0990\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e5cbcb\" vertex=\"1\" parent=\"87d3b101-9443-4ed4-9c4f-f759d41677eb\">\n <mxGeometry x=\"345\" y=\"1413.9996160245596\" width=\"320\" height=\"230\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Flow: Create Maintenance Window - Business Logic Execution - maintenanceWindowService.js:L18-39\" value=\"Flow: Create Maintenance Window - Business Logic Execution - maintenanceWindowService.js:L18-39\" id=\"560d268b-ef0f-4cd2-bcfe-9dc0a0e2ce6f\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"26b8daff-aa48-4baa-9d6c-05f771bf0990\">\n <mxGeometry x=\"70\" y=\"70\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"inviteService.js\" value=\"inviteService.js\" id=\"570278b7-9b72-4299-9fd9-46b253b48e9b\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e5cbcb\" vertex=\"1\" parent=\"87d3b101-9443-4ed4-9c4f-f759d41677eb\">\n <mxGeometry x=\"185\" y=\"70\" width=\"640\" height=\"230.7789018663125\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Server: Process Invitation in Service Layer - inviteService.js:L24-28\" value=\"Server: Process Invitation in Service Layer - inviteService.js:L24-28\" id=\"ae858158-8db6-4917-8fda-0966a953f6ed\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"570278b7-9b72-4299-9fd9-46b253b48e9b\">\n <mxGeometry x=\"70\" y=\"70\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Server: Dispatch Invitation Email - inviteService.js:L26-28\" value=\"Server: Dispatch Invitation Email - inviteService.js:L26-28\" id=\"a7be2d0b-0227-4228-a0a6-074f7324fd89\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"570278b7-9b72-4299-9fd9-46b253b48e9b\">\n <mxGeometry x=\"390\" y=\"70.77890186631251\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <mxCell id=\"bdd52e6f-ddf7-4966-b3af-957f9553082f\" value=\"Database Query:
Create and
Store Invite
Token\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=11;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"570278b7-9b72-4299-9fd9-46b253b48e9b\" source=\"ae858158-8db6-4917-8fda-0966a953f6ed\" target=\"a7be2d0b-0227-4228-a0a6-074f7324fd89\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"290\" y=\"115\" />\n <mxPoint x=\"290\" y=\"115.77890186631251\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <UserObject label=\"diagnosticService.js\" value=\"diagnosticService.js\" id=\"643b26c1-3bfb-4c41-8179-96dfc237d99e\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e5cbcb\" vertex=\"1\" parent=\"87d3b101-9443-4ed4-9c4f-f759d41677eb\">\n <mxGeometry x=\"185\" y=\"340.7789018663125\" width=\"320\" height=\"230\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Backend: Gather System Statistics - diagnosticService.js:L39-95\" value=\"Backend: Gather System Statistics - diagnosticService.js:L39-95\" id=\"09f07e80-185e-4547-aab4-edaf8ae7501e\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"643b26c1-3bfb-4c41-8179-96dfc237d99e\">\n <mxGeometry x=\"70\" y=\"70\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"infrastructure\" value=\"infrastructure\" id=\"1670815f-860d-4ea4-92e1-b238a799d3dc\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#ead5d5\" vertex=\"1\" parent=\"bbbe53d6-f595-498a-ae45-e08611f39c3d\">\n <mxGeometry x=\"195\" y=\"1845.4635994752946\" width=\"3245\" height=\"1021.3334338432\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"SuperSimpleQueue\" value=\"SuperSimpleQueue\" id=\"dda70a36-2d1d-4e46-8bcc-52d0d474bf7b\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e5cbcb\" vertex=\"1\" parent=\"1670815f-860d-4ea4-92e1-b238a799d3dc\">\n <mxGeometry x=\"95\" y=\"121.00000000000001\" width=\"1525\" height=\"770.3334338432\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"SuperSimpleQueue.js\" value=\"SuperSimpleQueue.js\" id=\"d9c0127e-31aa-4509-b5c9-f7017d10d69a\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e0c1c1\" vertex=\"1\" parent=\"dda70a36-2d1d-4e46-8bcc-52d0d474bf7b\">\n <mxGeometry x=\"175\" y=\"70\" width=\"320\" height=\"230\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Uptime Monitor Creation: Schedule Job - SuperSimpleQueue.js:L50-57\" value=\"Uptime Monitor Creation: Schedule Job - SuperSimpleQueue.js:L50-57\" id=\"51e8db5f-2fdd-4ddc-9605-43981db9d940\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"d9c0127e-31aa-4509-b5c9-f7017d10d69a\">\n <mxGeometry x=\"70\" y=\"70\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"SuperSimpleQueueHelper.js\" value=\"SuperSimpleQueueHelper.js\" id=\"04c12e9a-e025-457c-a634-5f7472a42985\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e0c1c1\" vertex=\"1\" parent=\"dda70a36-2d1d-4e46-8bcc-52d0d474bf7b\">\n <mxGeometry x=\"150\" y=\"340.33343384320005\" width=\"1280\" height=\"360\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Service Monitoring: Job Execution - SuperSimpleQueueHelper.js:L27-73\" value=\"Service Monitoring: Job Execution - SuperSimpleQueueHelper.js:L27-73\" id=\"18c13391-0cf7-4303-8180-0a40cfd64b58\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"04c12e9a-e025-457c-a634-5f7472a42985\">\n <mxGeometry x=\"1030\" y=\"200\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Flow: Monitor Suppression - Job Execution Start - SuperSimpleQueueHelper.js:L30-45\" value=\"Flow: Monitor Suppression - Job Execution Start - SuperSimpleQueueHelper.js:L30-45\" id=\"23630a1f-7452-4373-a864-7ec7821137f2\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"04c12e9a-e025-457c-a634-5f7472a42985\">\n <mxGeometry x=\"70\" y=\"93.00716143795759\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Flow: Monitor Suppression - Fetching Maintenance Windows - SuperSimpleQueueHelper.js:L80-83\" value=\"Flow: Monitor Suppression - Fetching Maintenance Windows - SuperSimpleQueueHelper.js:L80-83\" id=\"fc78b5b6-7fad-4f8f-a5a3-c7c38931daba\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"04c12e9a-e025-457c-a634-5f7472a42985\">\n <mxGeometry x=\"390\" y=\"93.00716143795759\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Flow: Monitor Suppression - Time Evaluation - SuperSimpleQueueHelper.js:L85-113\" value=\"Flow: Monitor Suppression - Time Evaluation - SuperSimpleQueueHelper.js:L85-113\" id=\"0fe32416-db43-49b9-9438-3796ba1a0add\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"04c12e9a-e025-457c-a634-5f7472a42985\">\n <mxGeometry x=\"710\" y=\"93.00716143795759\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Flow: Monitor Suppression - Conditional Job Termination - SuperSimpleQueueHelper.js:L37-44\" value=\"Flow: Monitor Suppression - Conditional Job Termination - SuperSimpleQueueHelper.js:L37-44\" id=\"01e042c3-40b4-416a-8d9e-6d6fd323d60b\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"04c12e9a-e025-457c-a634-5f7472a42985\">\n <mxGeometry x=\"1030\" y=\"70\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <mxCell id=\"c99291bb-7316-440e-9a7f-323ee39e26b8\" value=\"Flow: Monitor
Suppression -
Maintenance Check
Call\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=11;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"04c12e9a-e025-457c-a634-5f7472a42985\" source=\"23630a1f-7452-4373-a864-7ec7821137f2\" target=\"fc78b5b6-7fad-4f8f-a5a3-c7c38931daba\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\" />\n </mxGeometry>\n </mxCell>\n <mxCell id=\"8a13e585-2310-420b-9e92-211b6d65f201\" value=\"Flow: Monitor
Suppression -
Database Result
Return\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=11;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"04c12e9a-e025-457c-a634-5f7472a42985\" source=\"fc78b5b6-7fad-4f8f-a5a3-c7c38931daba\" target=\"0fe32416-db43-49b9-9438-3796ba1a0add\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\" />\n </mxGeometry>\n </mxCell>\n <mxCell id=\"40f4d9df-4c0f-4384-901c-8d7117e3b538\" value=\"Flow: Monitor
Suppression -
Return Suppression
Flag\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=11;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"04c12e9a-e025-457c-a634-5f7472a42985\" source=\"0fe32416-db43-49b9-9438-3796ba1a0add\" target=\"01e042c3-40b4-416a-8d9e-6d6fd323d60b\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"930\" y=\"138.0071614379576\" />\n <mxPoint x=\"930\" y=\"115\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <UserObject label=\"networkService.js\" value=\"networkService.js\" id=\"00406786-9663-440a-96b6-919d544732c0\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e5cbcb\" vertex=\"1\" parent=\"1670815f-860d-4ea4-92e1-b238a799d3dc\">\n <mxGeometry x=\"1810\" y=\"591.3334338432\" width=\"320\" height=\"360\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Service Monitoring: Perform Network Check - networkService.js:L44-59\" value=\"Service Monitoring: Perform Network Check - networkService.js:L44-59\" id=\"5c900373-e6ba-44d5-b341-676a32d659c8\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"00406786-9663-440a-96b6-919d544732c0\">\n <mxGeometry x=\"70\" y=\"70\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Automated Check: Backend Fetches Hardware Data - networkService.js:L7-14\" value=\"Automated Check: Backend Fetches Hardware Data - networkService.js:L7-14\" id=\"4c47b5f2-5363-4816-9745-30e61d184c7a\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"00406786-9663-440a-96b6-919d544732c0\">\n <mxGeometry x=\"70\" y=\"200\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"statusService.js\" value=\"statusService.js\" id=\"fbd7d244-2f37-453c-8c83-a23a260b26cc\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e5cbcb\" vertex=\"1\" parent=\"1670815f-860d-4ea4-92e1-b238a799d3dc\">\n <mxGeometry x=\"2320\" y=\"381.7244518190359\" width=\"320\" height=\"360\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Service Monitoring: Update Monitor Status - statusService.js:L108-183\" value=\"Service Monitoring: Update Monitor Status - statusService.js:L108-183\" id=\"45e38f3a-a7c3-4de7-b3dc-589361d793fd\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"fbd7d244-2f37-453c-8c83-a23a260b26cc\">\n <mxGeometry x=\"70\" y=\"70\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Automated Check: Process and Store Hardware Data - statusService.js:L265-274\" value=\"Automated Check: Process and Store Hardware Data - statusService.js:L265-274\" id=\"c1bf10c9-8c1a-44f4-8e23-39708f0301e8\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"fbd7d244-2f37-453c-8c83-a23a260b26cc\">\n <mxGeometry x=\"70\" y=\"200\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"notificationService.js\" value=\"notificationService.js\" id=\"2ff1f030-2080-48da-bbbe-90302fdfc2f7\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e5cbcb\" vertex=\"1\" parent=\"1670815f-860d-4ea4-92e1-b238a799d3dc\">\n <mxGeometry x=\"2830\" y=\"110.40446897297748\" width=\"320\" height=\"360\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Service Monitoring: Handle Notifications (Conditional) - notificationService.js:L76-92\" value=\"Service Monitoring: Handle Notifications (Conditional) - notificationService.js:L76-92\" id=\"9f3ea7fc-16d3-4d36-97eb-66f8808425cc\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"2ff1f030-2080-48da-bbbe-90302fdfc2f7\">\n <mxGeometry x=\"70\" y=\"199.99999999999997\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Flow 1: Send Test Notification - notificationService.js:L120-123\" value=\"Flow 1: Send Test Notification - notificationService.js:L120-123\" id=\"1cc01e08-4a6c-4526-b8a7-5ee8a06c1709\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"2ff1f030-2080-48da-bbbe-90302fdfc2f7\">\n <mxGeometry x=\"70\" y=\"70\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <mxCell id=\"38ba9b22-5b26-432d-a856-0eceb792c737\" value=\"Service Monitoring:
Request Service
Status\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=13;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"1670815f-860d-4ea4-92e1-b238a799d3dc\" source=\"18c13391-0cf7-4303-8180-0a40cfd64b58\" target=\"5c900373-e6ba-44d5-b341-676a32d659c8\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\" />\n </mxGeometry>\n </mxCell>\n <mxCell id=\"5e80734c-7b72-41be-9068-30cda3ffb425\" value=\"Service Monitoring:
Propagate Network
Response\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=20;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"1670815f-860d-4ea4-92e1-b238a799d3dc\" source=\"5c900373-e6ba-44d5-b341-676a32d659c8\" target=\"45e38f3a-a7c3-4de7-b3dc-589361d793fd\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"2195\" y=\"706.3334338431989\" />\n <mxPoint x=\"2195\" y=\"496.72445181903475\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <mxCell id=\"0a7e4a72-b644-4bd8-afa1-ae8a1d6c111c\" value=\"Service Monitoring:
Check for
Status Change\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=20;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"1670815f-860d-4ea4-92e1-b238a799d3dc\" source=\"45e38f3a-a7c3-4de7-b3dc-589361d793fd\" target=\"9f3ea7fc-16d3-4d36-97eb-66f8808425cc\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"2705\" y=\"496.72445181903566\" />\n <mxPoint x=\"2705\" y=\"355.4044689729772\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <UserObject label=\"notificationUtils.js\" value=\"notificationUtils.js\" id=\"4940977f-933d-4bbc-b19e-749647b44d25\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e5cbcb\" vertex=\"1\" parent=\"1670815f-860d-4ea4-92e1-b238a799d3dc\">\n <mxGeometry x=\"2830\" y=\"511.7244518190359\" width=\"320\" height=\"230\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Automated Check: Evaluate Data Against Thresholds - notificationUtils.js:L95-109\" value=\"Automated Check: Evaluate Data Against Thresholds - notificationUtils.js:L95-109\" id=\"d4f48f1a-61de-4cde-87d2-4b5215464899\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"4940977f-933d-4bbc-b19e-749647b44d25\">\n <mxGeometry x=\"70\" y=\"70\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <mxCell id=\"a64547c9-d9e6-4941-8e5e-f49add06516b\" value=\"Automated Check:
Data Received
from Capture
Agent\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=20;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"1670815f-860d-4ea4-92e1-b238a799d3dc\" source=\"4c47b5f2-5363-4816-9745-30e61d184c7a\" target=\"c1bf10c9-8c1a-44f4-8e23-39708f0301e8\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"2205\" y=\"836.3334338431989\" />\n <mxPoint x=\"2205\" y=\"626.7244518190348\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <mxCell id=\"7a250d09-50c6-4935-b10c-626b0ebe1fba\" value=\"Automated Check:
Pass Data
for Alert
Evaluation\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=10;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"1670815f-860d-4ea4-92e1-b238a799d3dc\" source=\"c1bf10c9-8c1a-44f4-8e23-39708f0301e8\" target=\"d4f48f1a-61de-4cde-87d2-4b5215464899\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\" />\n </mxGeometry>\n </mxCell>\n <UserObject label=\"v2\" value=\"v2\" id=\"feefae96-61b8-4ac5-a37c-592ed4b2330e\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#efdfdf\" vertex=\"1\" parent=\"99e9b746-7809-41f4-a433-1de7cc90574b\">\n <mxGeometry x=\"637.5\" y=\"70\" width=\"2690\" height=\"780\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"infrastructure\" value=\"infrastructure\" id=\"3f8ff792-40c8-4ae6-9af5-ff8b90da2f9f\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#ead5d5\" vertex=\"1\" parent=\"feefae96-61b8-4ac5-a37c-592ed4b2330e\">\n <mxGeometry x=\"95\" y=\"70\" width=\"1290\" height=\"640\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"JobGenerator.ts\" value=\"JobGenerator.ts\" id=\"159e569d-31d8-4883-b443-4ec08b21a044\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e5cbcb\" vertex=\"1\" parent=\"3f8ff792-40c8-4ae6-9af5-ff8b90da2f9f\">\n <mxGeometry x=\"70\" y=\"70\" width=\"640\" height=\"230\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Flow 2: Job Execution and Status Update - JobGenerator.ts:L43-66\" value=\"Flow 2: Job Execution and Status Update - JobGenerator.ts:L43-66\" id=\"28f1eabb-4f24-4944-8a0a-04f41ceb8589\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"159e569d-31d8-4883-b443-4ec08b21a044\">\n <mxGeometry x=\"70\" y=\"70\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Flow 2: Initiate Notification Handling - JobGenerator.ts:L61\" value=\"Flow 2: Initiate Notification Handling - JobGenerator.ts:L61\" id=\"31fe5a28-0640-4b52-841b-dd02e2ae646e\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"159e569d-31d8-4883-b443-4ec08b21a044\">\n <mxGeometry x=\"390\" y=\"70\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <mxCell id=\"50797935-1447-47a4-891b-9e886e5601fa\" value=\"Flow 2:
Status Change
Detected\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=11;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"159e569d-31d8-4883-b443-4ec08b21a044\" source=\"28f1eabb-4f24-4944-8a0a-04f41ceb8589\" target=\"31fe5a28-0640-4b52-841b-dd02e2ae646e\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\" />\n </mxGeometry>\n </mxCell>\n <UserObject label=\"NotificationService.ts\" value=\"NotificationService.ts\" id=\"c6d9907f-0a05-4153-a27f-47c3a1c4c0aa\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e5cbcb\" vertex=\"1\" parent=\"3f8ff792-40c8-4ae6-9af5-ff8b90da2f9f\">\n <mxGeometry x=\"900\" y=\"72.47267784570195\" width=\"320\" height=\"230\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Flow 2: Dispatch Alerts - NotificationService.ts:L28-57\" value=\"Flow 2: Dispatch Alerts - NotificationService.ts:L28-57\" id=\"78e5cb9f-6a97-4d31-a487-fe7dbce5d7d1\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"c6d9907f-0a05-4153-a27f-47c3a1c4c0aa\">\n <mxGeometry x=\"70\" y=\"70\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <mxCell id=\"c778c6b9-c12e-45c0-8682-2c9e892867b0\" value=\"Flow 2:
Monitor Data
Passed to
Notification Service\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=13;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"3f8ff792-40c8-4ae6-9af5-ff8b90da2f9f\" source=\"31fe5a28-0640-4b52-841b-dd02e2ae646e\" target=\"78e5cb9f-6a97-4d31-a487-fe7dbce5d7d1\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"775\" y=\"184.99999999999955\" />\n <mxPoint x=\"775\" y=\"187.4726778457015\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <UserObject label=\"NetworkService.ts\" value=\"NetworkService.ts\" id=\"50aeed0b-bc13-43f7-bb15-cb1b12b2caa7\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e5cbcb\" vertex=\"1\" parent=\"3f8ff792-40c8-4ae6-9af5-ff8b90da2f9f\">\n <mxGeometry x=\"242.5\" y=\"340\" width=\"320\" height=\"230\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Backend Requests PageSpeed Analysis - NetworkService.ts:L129-162\" value=\"Backend Requests PageSpeed Analysis - NetworkService.ts:L129-162\" id=\"6527fb47-157e-4bba-9aed-adde061c5689\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"50aeed0b-bc13-43f7-bb15-cb1b12b2caa7\">\n <mxGeometry x=\"70\" y=\"70\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"business\" value=\"business\" id=\"7ef79284-534a-466f-a1f1-4e3a2f56be9d\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#ead5d5\" vertex=\"1\" parent=\"feefae96-61b8-4ac5-a37c-592ed4b2330e\">\n <mxGeometry x=\"1575\" y=\"320.89208395118175\" width=\"1020\" height=\"371.82353877857975\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"CheckService.ts\" value=\"CheckService.ts\" id=\"f0ebd5da-21bb-4d96-8ff9-ca10409acc80\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e5cbcb\" vertex=\"1\" parent=\"7ef79284-534a-466f-a1f1-4e3a2f56be9d\">\n <mxGeometry x=\"95\" y=\"70\" width=\"320\" height=\"230\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Backend Processes Lighthouse Data - CheckService.ts:L82-102\" value=\"Backend Processes Lighthouse Data - CheckService.ts:L82-102\" id=\"f89cbd87-c961-4f8b-92b6-714da57718d5\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"f0ebd5da-21bb-4d96-8ff9-ca10409acc80\">\n <mxGeometry x=\"70\" y=\"70\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"MonitorService.ts\" value=\"MonitorService.ts\" id=\"7a3824cd-24c8-4b32-8b1d-e0bf357262c4\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e5cbcb\" vertex=\"1\" parent=\"7ef79284-534a-466f-a1f1-4e3a2f56be9d\">\n <mxGeometry x=\"605\" y=\"71.82353877857976\" width=\"320\" height=\"230\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Backend Aggregates Performance Data - MonitorService.ts:L106-120\" value=\"Backend Aggregates Performance Data - MonitorService.ts:L106-120\" id=\"ca6ee27b-1fbf-49de-978a-d6de259cc3d5\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"7a3824cd-24c8-4b32-8b1d-e0bf357262c4\">\n <mxGeometry x=\"70\" y=\"70\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <mxCell id=\"27c7191b-80a2-475b-9371-e106108aff1c\" value=\"Store Processed
Check Data\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=12;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"7ef79284-534a-466f-a1f1-4e3a2f56be9d\" source=\"f89cbd87-c961-4f8b-92b6-714da57718d5\" target=\"ca6ee27b-1fbf-49de-978a-d6de259cc3d5\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"480\" y=\"184.9999999999996\" />\n <mxPoint x=\"480\" y=\"186.82353877857938\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <mxCell id=\"0d3c8091-3d91-4e42-9b46-7e35ed726a7a\" value=\"Google PageSpeed
API Response\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=19;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"feefae96-61b8-4ac5-a37c-592ed4b2330e\" source=\"6527fb47-157e-4bba-9aed-adde061c5689\" target=\"f89cbd87-c961-4f8b-92b6-714da57718d5\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"870\" y=\"525.0000000000007\" />\n <mxPoint x=\"870\" y=\"514.7492296053547\" />\n <mxPoint x=\"1450\" y=\"514.7492296053547\" />\n <mxPoint x=\"1450\" y=\"505.8920839511823\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <UserObject label=\"db\" value=\"db\" id=\"15ee5d81-a0cf-4614-80b8-7a1123ab20b8\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#f4e9e9\" vertex=\"1\" parent=\"35864a2c-7bd0-4428-84fc-c0aa90c7f1be\">\n <mxGeometry x=\"3155\" y=\"7169.877276344534\" width=\"1470\" height=\"2919.9964800702883\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"v1\" value=\"v1\" id=\"58c5a3fd-1e69-4ca4-a64e-314f5644bdaf\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#efdfdf\" vertex=\"1\" parent=\"15ee5d81-a0cf-4614-80b8-7a1123ab20b8\">\n <mxGeometry x=\"175\" y=\"619.9964800702883\" width=\"1120\" height=\"2230\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"modules\" value=\"modules\" id=\"82cb3dbe-c922-438a-a912-255376f4b380\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#ead5d5\" vertex=\"1\" parent=\"58c5a3fd-1e69-4ca4-a64e-314f5644bdaf\">\n <mxGeometry x=\"175\" y=\"70\" width=\"770\" height=\"2090\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"monitorModule.js\" value=\"monitorModule.js\" id=\"630b3ece-2648-48d5-99b5-ef9611de2ad5\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e5cbcb\" vertex=\"1\" parent=\"82cb3dbe-c922-438a-a912-255376f4b380\">\n <mxGeometry x=\"195\" y=\"740\" width=\"480\" height=\"490\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Uptime Monitor Creation: Save Monitor to Database - monitorModule.js:L454-455\" value=\"Uptime Monitor Creation: Save Monitor to Database - monitorModule.js:L454-455\" id=\"2d407bfd-e4b0-46b8-99e7-121c507d525f\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"630b3ece-2648-48d5-99b5-ef9611de2ad5\">\n <mxGeometry x=\"150\" y=\"200\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Backend: Aggregate Historical Data - monitorModule.js:L312-322\" value=\"Backend: Aggregate Historical Data - monitorModule.js:L312-322\" id=\"9ef7c423-f4fc-4caf-9bf5-c1aa3002ca03\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"630b3ece-2648-48d5-99b5-ef9611de2ad5\">\n <mxGeometry x=\"150\" y=\"330\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Flow 1: CSV Import - Database Bulk Save - monitorModule.js:L465-468\" value=\"Flow 1: CSV Import - Database Bulk Save - monitorModule.js:L465-468\" id=\"d9d519af-5c4d-4494-929e-a869581c1dc4\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"630b3ece-2648-48d5-99b5-ef9611de2ad5\">\n <mxGeometry x=\"150\" y=\"70\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"monitorModuleQueries.js\" value=\"monitorModuleQueries.js\" id=\"a0b22a5a-59e1-47e3-8218-a4ad083b1b71\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"82cb3dbe-c922-438a-a912-255376f4b380\">\n <mxGeometry x=\"345\" y=\"1270\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"notificationModule.js\" value=\"notificationModule.js\" id=\"62daeac4-9402-448a-972c-cb8cb760671c\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e5cbcb\" vertex=\"1\" parent=\"82cb3dbe-c922-438a-a912-255376f4b380\">\n <mxGeometry x=\"275\" y=\"70\" width=\"320\" height=\"230\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Flow 1: Database Insertion - notificationModule.js:L10-13\" value=\"Flow 1: Database Insertion - notificationModule.js:L10-13\" id=\"4a796ccf-40a9-4446-a109-6a6eed52e898\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"62daeac4-9402-448a-972c-cb8cb760671c\">\n <mxGeometry x=\"70\" y=\"70\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"statusPageModule.js\" value=\"statusPageModule.js\" id=\"f8541fe3-4bcf-4833-a226-66b5301adf58\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e5cbcb\" vertex=\"1\" parent=\"82cb3dbe-c922-438a-a912-255376f4b380\">\n <mxGeometry x=\"275\" y=\"1660.0000000000002\" width=\"320\" height=\"360\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Create Status Page: Database Record Creation - statusPageModule.js:L14-34\" value=\"Create Status Page: Database Record Creation - statusPageModule.js:L14-34\" id=\"e234917e-a950-48f5-b864-cd957b2216e1\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"f8541fe3-4bcf-4833-a226-66b5301adf58\">\n <mxGeometry x=\"70\" y=\"200\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"View Status Page: Database Record Retrieval - statusPageModule.js:L89-299\" value=\"View Status Page: Database Record Retrieval - statusPageModule.js:L89-299\" id=\"26da60f9-dde4-44ec-be89-91858cc14f90\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"f8541fe3-4bcf-4833-a226-66b5301adf58\">\n <mxGeometry x=\"70\" y=\"70\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"checkModule.js\" value=\"checkModule.js\" id=\"860b5eec-a1ce-4e1f-a316-e1586f03af96\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=16;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"82cb3dbe-c922-438a-a912-255376f4b380\">\n <mxGeometry x=\"345\" y=\"1400\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"maintenanceWindowModule.js\" value=\"maintenanceWindowModule.js\" id=\"95ed6c41-ebeb-4c08-98c3-bab8b426789e\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e5cbcb\" vertex=\"1\" parent=\"82cb3dbe-c922-438a-a912-255376f4b380\">\n <mxGeometry x=\"275\" y=\"340.0000000000001\" width=\"320\" height=\"360\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Flow: Create Maintenance Window - Database Record Creation - maintenanceWindowModule.js:L7-22\" value=\"Flow: Create Maintenance Window - Database Record Creation - maintenanceWindowModule.js:L7-22\" id=\"3890b98d-a133-4279-a961-5d2facc6a17a\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"95ed6c41-ebeb-4c08-98c3-bab8b426789e\">\n <mxGeometry x=\"70\" y=\"70\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Flow: View Maintenance Windows - Data Retrieval - maintenanceWindowModule.js:L37-66\" value=\"Flow: View Maintenance Windows - Data Retrieval - maintenanceWindowModule.js:L37-66\" id=\"27d9160a-4f8d-4dff-a09b-1678bc28cf2c\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"95ed6c41-ebeb-4c08-98c3-bab8b426789e\">\n <mxGeometry x=\"70\" y=\"200\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"inviteModule.js\" value=\"inviteModule.js\" id=\"08853f8a-f596-4df0-9190-dad04f54caef\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=16;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"82cb3dbe-c922-438a-a912-255376f4b380\">\n <mxGeometry x=\"345\" y=\"1530.0000000000002\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"v2\" value=\"v2\" id=\"e2f99143-54b7-44dc-b566-1c2fb901bd16\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#efdfdf\" vertex=\"1\" parent=\"15ee5d81-a0cf-4614-80b8-7a1123ab20b8\">\n <mxGeometry x=\"435\" y=\"70\" width=\"600\" height=\"510\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"models\" value=\"models\" id=\"b53384d7-b989-4ac7-bd68-1c3621174ef4\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#ead5d5\" vertex=\"1\" parent=\"e2f99143-54b7-44dc-b566-1c2fb901bd16\">\n <mxGeometry x=\"70\" y=\"70\" width=\"460\" height=\"370\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"checks\" value=\"checks\" id=\"64e3bb0a-67f5-4269-9e7d-94fe91ac78fc\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#e5cbcb\" vertex=\"1\" parent=\"b53384d7-b989-4ac7-bd68-1c3621174ef4\">\n <mxGeometry x=\"70\" y=\"70\" width=\"320\" height=\"230\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Check.ts\" value=\"Check.ts\" id=\"1425ec43-f0f4-4c8b-a140-176c079219d6\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=16;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"64e3bb0a-67f5-4269-9e7d-94fe91ac78fc\">\n <mxGeometry x=\"70\" y=\"70\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <mxCell id=\"a6bccd1d-4272-4df7-a7c8-b3979e37b8d7\" value=\"Uptime Monitor
Creation: Service
to DB
Module\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=20;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"35864a2c-7bd0-4428-84fc-c0aa90c7f1be\" source=\"f0409948-75dc-457f-a02d-6b9774258e48\" target=\"2d407bfd-e4b0-46b8-99e7-121c507d525f\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"2235\" y=\"4524.569505991416\" />\n <mxPoint x=\"2235\" y=\"4531.485617898687\" />\n <mxPoint x=\"3060\" y=\"4531.485617898688\" />\n <mxPoint x=\"3060\" y=\"8628.807803864096\" />\n <mxPoint x=\"3615\" y=\"8628.807803864096\" />\n <mxPoint x=\"3615\" y=\"8844.873756414821\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <mxCell id=\"de320ac1-0949-4297-be7c-b9d7a14e0fec\" value=\"Uptime Monitor
Creation: Service
to Job
Queue\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=20;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"35864a2c-7bd0-4428-84fc-c0aa90c7f1be\" source=\"2d407bfd-e4b0-46b8-99e7-121c507d525f\" target=\"51e8db5f-2fdd-4ddc-9605-43981db9d940\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"4710\" y=\"8844.873756414821\" />\n <mxPoint x=\"4710\" y=\"6114.195094447705\" />\n <mxPoint x=\"5410\" y=\"6114.195094447705\" />\n <mxPoint x=\"5410\" y=\"6113.543842501334\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <mxCell id=\"7b9ebb0e-a6b2-438c-bfed-9c851a1bccbc\" value=\"Flow 1:
Controller to
Database Module\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=20;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"35864a2c-7bd0-4428-84fc-c0aa90c7f1be\" source=\"d0a4737f-715f-4f50-b6d5-5e4b31f86f93\" target=\"4a796ccf-40a9-4446-a109-6a6eed52e898\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"3070\" y=\"2382.080243026038\" />\n <mxPoint x=\"3070\" y=\"8374.927415709848\" />\n <mxPoint x=\"3440\" y=\"8374.927415709852\" />\n <mxPoint x=\"3440\" y=\"8374.72873228434\" />\n <mxPoint x=\"3615\" y=\"8374.728732284339\" />\n <mxPoint x=\"3615\" y=\"8044.873756414823\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <mxCell id=\"279155cd-ff31-41a2-8f5f-a538f01bfa66\" value=\"Flow 1:
User Clicks
Test Notification
Button\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=20;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"35864a2c-7bd0-4428-84fc-c0aa90c7f1be\" source=\"4a796ccf-40a9-4446-a109-6a6eed52e898\" target=\"29c2c56e-9dc0-4304-bfbf-e0c0f8915a39\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"4340\" y=\"8044.873756414824\" />\n <mxPoint x=\"4340\" y=\"8045.348182370847\" />\n <mxPoint x=\"4515\" y=\"8045.348182370847\" />\n <mxPoint x=\"4515\" y=\"8045.856372136517\" />\n <mxPoint x=\"4690\" y=\"8045.856372136516\" />\n <mxPoint x=\"4690\" y=\"2817.080243026039\" />\n <mxPoint x=\"150\" y=\"2817.080243026039\" />\n <mxPoint x=\"150\" y=\"2512.080243026039\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <mxCell id=\"57018b30-e2f4-4eb2-a1da-fe75afbb8c2f\" value=\"Flow 1:
Controller to
Notification Service\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=20;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"35864a2c-7bd0-4428-84fc-c0aa90c7f1be\" source=\"29c2c56e-9dc0-4304-bfbf-e0c0f8915a39\" target=\"1cc01e08-4a6c-4526-b8a7-5ee8a06c1709\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"4730\" y=\"2512.0802430260383\" />\n <mxPoint x=\"4730\" y=\"5359.75177111986\" />\n <mxPoint x=\"4945\" y=\"5359.75177111986\" />\n <mxPoint x=\"4945\" y=\"5360.025735259062\" />\n <mxPoint x=\"5140\" y=\"5360.0257352590625\" />\n <mxPoint x=\"5140\" y=\"5877.543842501334\" />\n <mxPoint x=\"7910\" y=\"5877.543842501334\" />\n <mxPoint x=\"7910\" y=\"6032.948311474312\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <mxCell id=\"a3f28fa6-8268-4c13-95a0-83e3b1abdcb0\" value=\"Create Status
Page: Data
Passed to
Controller\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=20;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"35864a2c-7bd0-4428-84fc-c0aa90c7f1be\" source=\"3efddcad-588f-4492-9808-b0c81c823c96\" target=\"f15ef77e-380f-4768-98cb-7f0dd4113841\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"1360\" y=\"1168.0000000000002\" />\n <mxPoint x=\"1360\" y=\"5260.158205581436\" />\n <mxPoint x=\"1575\" y=\"5260.158205581437\" />\n <mxPoint x=\"1575\" y=\"5260.184142035576\" />\n <mxPoint x=\"1750\" y=\"5260.184142035575\" />\n <mxPoint x=\"1750\" y=\"5844.569505991417\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <mxCell id=\"9735611c-924b-49aa-92e8-10d8a86ac288\" value=\"Create Status
Page: Data
Sent to
DB Module\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=20;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"35864a2c-7bd0-4428-84fc-c0aa90c7f1be\" source=\"f15ef77e-380f-4768-98cb-7f0dd4113841\" target=\"e234917e-a950-48f5-b864-cd957b2216e1\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"3030\" y=\"5844.569505991416\" />\n <mxPoint x=\"3030\" y=\"9444.519537302771\" />\n <mxPoint x=\"3265\" y=\"9444.519537302771\" />\n <mxPoint x=\"3265\" y=\"9444.930291378314\" />\n <mxPoint x=\"3440\" y=\"9444.930291378314\" />\n <mxPoint x=\"3440\" y=\"9445.307233312164\" />\n <mxPoint x=\"3615\" y=\"9445.307233312164\" />\n <mxPoint x=\"3615\" y=\"9764.873756414821\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <mxCell id=\"40cb7d7b-2888-44de-bb7d-7735af70ba34\" value=\"Create Status
Page: Database
Result Returned\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=20;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"35864a2c-7bd0-4428-84fc-c0aa90c7f1be\" source=\"e234917e-a950-48f5-b864-cd957b2216e1\" target=\"058ded1f-83ce-40a7-a99d-d178c81fe557\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"4700\" y=\"9764.873756414821\" />\n <mxPoint x=\"4700\" y=\"10393.873756414825\" />\n <mxPoint x=\"1320\" y=\"10393.873756414825\" />\n <mxPoint x=\"1320\" y=\"5961.8495281381365\" />\n <mxPoint x=\"1575\" y=\"5961.8495281381365\" />\n <mxPoint x=\"1575\" y=\"5962.048397924002\" />\n <mxPoint x=\"1790\" y=\"5962.048397924001\" />\n <mxPoint x=\"1790\" y=\"5974.569505991414\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <mxCell id=\"5735f30c-b55f-444a-9236-f3d75f68ed27\" value=\"View Status
Page: Data
Passed to
Controller\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=20;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"35864a2c-7bd0-4428-84fc-c0aa90c7f1be\" source=\"2e26cd2f-1413-4c16-8e63-ea7808ab6c52\" target=\"9f217674-4cd7-4ef8-b088-d5620042a7ba\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"960\" y=\"1038.0000000000005\" />\n <mxPoint x=\"960\" y=\"1038.6171567592999\" />\n <mxPoint x=\"1135\" y=\"1038.6171567593005\" />\n <mxPoint x=\"1135\" y=\"1039.2589018709534\" />\n <mxPoint x=\"1370\" y=\"1039.2589018709525\" />\n <mxPoint x=\"1370\" y=\"5250.158205581436\" />\n <mxPoint x=\"1575\" y=\"5250.158205581437\" />\n <mxPoint x=\"1575\" y=\"5250.184142035576\" />\n <mxPoint x=\"1790\" y=\"5250.184142035575\" />\n <mxPoint x=\"1790\" y=\"5715.094156731092\" />\n <mxPoint x=\"2095\" y=\"5715.094156731093\" />\n <mxPoint x=\"2095\" y=\"5714.569505991418\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <mxCell id=\"dace45d6-fb25-4dae-b940-49ef7d77bbed\" value=\"View Status
Page: URL
Sent to
DB Module\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=20;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"35864a2c-7bd0-4428-84fc-c0aa90c7f1be\" source=\"9f217674-4cd7-4ef8-b088-d5620042a7ba\" target=\"26da60f9-dde4-44ec-be89-91858cc14f90\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"2355\" y=\"5714.569505991416\" />\n <mxPoint x=\"2355\" y=\"5715.2411107154\" />\n <mxPoint x=\"3040\" y=\"5715.2411107154\" />\n <mxPoint x=\"3040\" y=\"9434.519537302771\" />\n <mxPoint x=\"3265\" y=\"9434.519537302771\" />\n <mxPoint x=\"3265\" y=\"9434.930291378314\" />\n <mxPoint x=\"3440\" y=\"9434.930291378314\" />\n <mxPoint x=\"3440\" y=\"9435.307233312164\" />\n <mxPoint x=\"3635\" y=\"9435.307233312164\" />\n <mxPoint x=\"3635\" y=\"9634.873756414821\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <mxCell id=\"137a5ab7-1e49-42ec-869d-58f7f2380cb3\" value=\"View Status
Page: Database
Result Returned\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=20;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"35864a2c-7bd0-4428-84fc-c0aa90c7f1be\" source=\"26da60f9-dde4-44ec-be89-91858cc14f90\" target=\"d76e70e0-41f9-46cc-b775-b2027c5a0d5b\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"4690\" y=\"9634.873756414821\" />\n <mxPoint x=\"4690\" y=\"10292.873756414823\" />\n <mxPoint x=\"1400\" y=\"10292.873756414823\" />\n <mxPoint x=\"1400\" y=\"6104.569505991416\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <mxCell id=\"839ba9f6-8a34-4919-a04a-13fba1795c61\" value=\"Forward Request
to Service
Layer\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=20;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"35864a2c-7bd0-4428-84fc-c0aa90c7f1be\" source=\"cdd090be-0b62-45b4-baa0-fec01fc3ffd1\" target=\"499b46a2-f2a2-4ccd-aecd-012eade2bd23\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"4740\" y=\"2103.7525647938664\" />\n <mxPoint x=\"4740\" y=\"4757.859144892351\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <mxCell id=\"42d3bc70-701a-4be0-96b4-d6c2f0519b49\" value=\"Execute Database
Query\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=20;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"35864a2c-7bd0-4428-84fc-c0aa90c7f1be\" source=\"499b46a2-f2a2-4ccd-aecd-012eade2bd23\" target=\"14df9f01-1358-442d-96f5-eab9a4c4abbf\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"8865\" y=\"4757.859144892351\" />\n <mxPoint x=\"8865\" y=\"2919.0802430260383\" />\n <mxPoint x=\"1400\" y=\"2919.0802430260383\" />\n <mxPoint x=\"1400\" y=\"3881.4628483747547\" />\n <mxPoint x=\"1575\" y=\"3881.4628483747556\" />\n <mxPoint x=\"1575\" y=\"3881.1223003767236\" />\n <mxPoint x=\"1750\" y=\"3881.1223003767227\" />\n <mxPoint x=\"1750\" y=\"3864.569505991416\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <UserObject label=\"config\" value=\"config\" id=\"fe47576c-c186-4950-82a5-b2fd24eb2561\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#f4e9e9\" vertex=\"1\" parent=\"35864a2c-7bd0-4428-84fc-c0aa90c7f1be\">\n <mxGeometry x=\"475\" y=\"2867.0802430260387\" width=\"510\" height=\"370\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"routes.js\" value=\"routes.js\" id=\"cb53d612-9b89-47da-911c-165d0382a7d8\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#efdfdf\" vertex=\"1\" parent=\"fe47576c-c186-4950-82a5-b2fd24eb2561\">\n <mxGeometry x=\"95\" y=\"70\" width=\"320\" height=\"230\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Flow: Create Maintenance Window - API Routing - routes.js:L43\" value=\"Flow: Create Maintenance Window - API Routing - routes.js:L43\" id=\"a391e8ea-9dbe-4fe4-90df-bf475d8b7ef8\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"cb53d612-9b89-47da-911c-165d0382a7d8\">\n <mxGeometry x=\"70\" y=\"70\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <mxCell id=\"e2588541-3ffc-47c6-8f8a-41d30ea7fc72\" value=\"Flow: Create
Maintenance Window
- Controller
Invocation\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=20;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"35864a2c-7bd0-4428-84fc-c0aa90c7f1be\" source=\"a391e8ea-9dbe-4fe4-90df-bf475d8b7ef8\" target=\"0fae6e75-38ea-444d-a1bf-0f820ba443b9\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"1330\" y=\"3052.0802430260387\" />\n <mxPoint x=\"1330\" y=\"5314.569505991416\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <mxCell id=\"e1d59cf6-0d96-4e0a-ad17-2a7984a9157f\" value=\"Flow: Create
Maintenance Window
- Service
Layer Call\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=20;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"35864a2c-7bd0-4428-84fc-c0aa90c7f1be\" source=\"0fae6e75-38ea-444d-a1bf-0f820ba443b9\" target=\"560d268b-ef0f-4cd2-bcfe-9dc0a0e2ce6f\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"4700\" y=\"5314.569505991416\" />\n <mxPoint x=\"4700\" y=\"5421.087017132046\" />\n <mxPoint x=\"6361.153846153846\" y=\"5421.0870171320485\" />\n <mxPoint x=\"6361.153846153846\" y=\"5561.0798590506\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <mxCell id=\"12d0ab8a-392f-48fa-9efa-06ffe1f3a252\" value=\"Flow: Create
Maintenance Window
- Database
Module Call\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=20;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"35864a2c-7bd0-4428-84fc-c0aa90c7f1be\" source=\"560d268b-ef0f-4cd2-bcfe-9dc0a0e2ce6f\" target=\"3890b98d-a133-4279-a961-5d2facc6a17a\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"8865\" y=\"5561.0798590505965\" />\n <mxPoint x=\"8865\" y=\"7119.877276344532\" />\n <mxPoint x=\"3090\" y=\"7119.877276344532\" />\n <mxPoint x=\"3090\" y=\"8315.094700672267\" />\n <mxPoint x=\"3440\" y=\"8315.094700672269\" />\n <mxPoint x=\"3440\" y=\"8314.873756414821\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <mxCell id=\"c3127c74-43f1-42d7-8da6-b0a494c3658f\" value=\"Flow: View
Maintenance Windows
- Database
Query\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=20;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"35864a2c-7bd0-4428-84fc-c0aa90c7f1be\" source=\"c35a065c-2808-402c-877e-9055d956ce0d\" target=\"27d9160a-4f8d-4dff-a09b-1678bc28cf2c\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"3050\" y=\"5444.569505991416\" />\n <mxPoint x=\"3050\" y=\"8638.807803864096\" />\n <mxPoint x=\"3625\" y=\"8638.807803864096\" />\n <mxPoint x=\"3625\" y=\"8444.873756414823\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <UserObject label=\"middleware\" value=\"middleware\" id=\"a968db5d-8f6d-4fd7-9df0-8b332b521703\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#f4e9e9\" vertex=\"1\" parent=\"35864a2c-7bd0-4428-84fc-c0aa90c7f1be\">\n <mxGeometry x=\"3540\" y=\"121\" width=\"700\" height=\"510\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"v1\" value=\"v1\" id=\"09082f73-e215-465f-9206-0a963fb4c7cb\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#efdfdf\" vertex=\"1\" parent=\"a968db5d-8f6d-4fd7-9df0-8b332b521703\">\n <mxGeometry x=\"95\" y=\"70\" width=\"510\" height=\"370\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"isAllowed.js\" value=\"isAllowed.js\" id=\"001fa2e4-eadd-4474-b2ec-79d7ea43465f\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=9;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;align=left;verticalAlign=bottom;spacing=0;spacingTop=-14;spacingLeft=15;arcSize=4;labelPosition=center;verticalLabelPosition=top;;fillColor=#ead5d5\" vertex=\"1\" parent=\"09082f73-e215-465f-9206-0a963fb4c7cb\">\n <mxGeometry x=\"95\" y=\"70\" width=\"320\" height=\"230\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <UserObject label=\"Server: Role-Based Access Control Middleware - isAllowed.js:L39-44\" value=\"Server: Role-Based Access Control Middleware - isAllowed.js:L39-44\" id=\"8b3cb6c2-ed57-4510-be15-decb8e3c89e1\">\n <mxCell style=\"rounded=1;whiteSpace=wrap;html=1;container=1;glass=0;comic=0;fontSize=12;fontColor=#615B5B;strokeWidth=0.7;strokeColor=#999190;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontStyle=0;\" vertex=\"1\" parent=\"001fa2e4-eadd-4474-b2ec-79d7ea43465f\">\n <mxGeometry x=\"70\" y=\"70\" width=\"180\" height=\"90\" as=\"geometry\" />\n </mxCell>\n </UserObject>\n <mxCell id=\"2ee1c4e8-90fb-4470-ad9f-6ffed5420853\" value=\"Server: Forward
Request to
Controller\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=20;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"35864a2c-7bd0-4428-84fc-c0aa90c7f1be\" source=\"8b3cb6c2-ed57-4510-be15-decb8e3c89e1\" target=\"ae858158-8db6-4917-8fda-0966a953f6ed\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"4760\" y=\"376.0000000000003\" />\n <mxPoint x=\"4760\" y=\"4246.375688501626\" />\n <mxPoint x=\"5120\" y=\"4246.375688501627\" />\n <mxPoint x=\"5120\" y=\"4222.985178140004\" />\n <mxPoint x=\"6351.153846153846\" y=\"4222.985178140003\" />\n <mxPoint x=\"6351.153846153846\" y=\"4217.08024302604\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <mxCell id=\"20d0e690-a569-4c6f-8238-916cac920553\" value=\"Flow 1:
CSV Import
- Route
to Controller\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=20;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"35864a2c-7bd0-4428-84fc-c0aa90c7f1be\" source=\"c1ac3c26-996a-43ef-9c34-4c2776188784\" target=\"0e520a6d-34bf-467b-a894-e73979364478\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"1350\" y=\"1567.9999999999998\" />\n <mxPoint x=\"1350\" y=\"5270.158205581435\" />\n <mxPoint x=\"1575\" y=\"5270.158205581436\" />\n <mxPoint x=\"1575\" y=\"5270.184142035575\" />\n <mxPoint x=\"1760\" y=\"5270.184142035574\" />\n <mxPoint x=\"1760\" y=\"4654.569505991416\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <mxCell id=\"7292bf6e-431d-4a9d-94ce-2bcfabcaa79d\" value=\"Flow 1:
CSV Import
- Controller
to Service\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=20;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"35864a2c-7bd0-4428-84fc-c0aa90c7f1be\" source=\"0e520a6d-34bf-467b-a894-e73979364478\" target=\"6139e487-1dd5-405a-ba7d-ededec4b282e\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"2235\" y=\"4654.569505991416\" />\n <mxPoint x=\"2235\" y=\"4647.937701543181\" />\n <mxPoint x=\"4720\" y=\"4647.937701543182\" />\n <mxPoint x=\"4720\" y=\"5369.751771119861\" />\n <mxPoint x=\"4945\" y=\"5369.751771119862\" />\n <mxPoint x=\"4945\" y=\"5370.025735259063\" />\n <mxPoint x=\"5120\" y=\"5370.025735259062\" />\n <mxPoint x=\"5120\" y=\"5028.562749012175\" />\n <mxPoint x=\"6616.153846153846\" y=\"5028.562749012175\" />\n <mxPoint x=\"6616.153846153846\" y=\"5027.859144892352\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <mxCell id=\"b55a0dc6-f596-4e5f-9265-63588b46b519\" value=\"Flow 1:
CSV Import
- Service
to Database
Module\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=20;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"35864a2c-7bd0-4428-84fc-c0aa90c7f1be\" source=\"6139e487-1dd5-405a-ba7d-ededec4b282e\" target=\"d9d519af-5c4d-4494-929e-a869581c1dc4\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"6876.153846153846\" y=\"5027.859144892352\" />\n <mxPoint x=\"6876.153846153846\" y=\"5028.782680145156\" />\n <mxPoint x=\"8885\" y=\"5028.782680145156\" />\n <mxPoint x=\"8885\" y=\"7069.877276344534\" />\n <mxPoint x=\"3080\" y=\"7069.877276344534\" />\n <mxPoint x=\"3080\" y=\"8364.728732284337\" />\n <mxPoint x=\"3635\" y=\"8364.728732284335\" />\n <mxPoint x=\"3635\" y=\"8715.577360534644\" />\n <mxPoint x=\"3810\" y=\"8715.577360534648\" />\n <mxPoint x=\"3810\" y=\"8714.873756414825\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <mxCell id=\"f27c60ef-fb40-43e2-9750-c2617bdeaf43\" value=\"Flow 1:
CSV Import
- Database
to Service\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=20;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"35864a2c-7bd0-4428-84fc-c0aa90c7f1be\" source=\"d9d519af-5c4d-4494-929e-a869581c1dc4\" target=\"1e1d975f-7f0f-4132-bd71-2563b35e99b3\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"4070\" y=\"8714.873756414823\" />\n <mxPoint x=\"4070\" y=\"8715.797291667628\" />\n <mxPoint x=\"4700\" y=\"8715.797291667626\" />\n <mxPoint x=\"4700\" y=\"5453.569410243563\" />\n <mxPoint x=\"5120\" y=\"5453.569410243565\" />\n <mxPoint x=\"5120\" y=\"5431.087017132048\" />\n <mxPoint x=\"6351.153846153846\" y=\"5431.087017132049\" />\n <mxPoint x=\"6351.153846153846\" y=\"5287.8591448923535\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <mxCell id=\"c449f81a-d6af-4f7a-b2d8-050a9a9ee0f9\" value=\"Flow 1:
CSV Import
- Service
to Controller\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=20;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"35864a2c-7bd0-4428-84fc-c0aa90c7f1be\" source=\"1e1d975f-7f0f-4132-bd71-2563b35e99b3\" target=\"72b55fa1-d944-4e46-ac98-f6a6cb201afa\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"8895\" y=\"5287.859144892352\" />\n <mxPoint x=\"8895\" y=\"2868.080243026039\" />\n <mxPoint x=\"1390\" y=\"2868.080243026039\" />\n <mxPoint x=\"1390\" y=\"4394.600243246443\" />\n <mxPoint x=\"1975\" y=\"4394.600243246443\" />\n <mxPoint x=\"1975\" y=\"4394.569505991416\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <mxCell id=\"febea87e-5033-479c-ba7a-eb35d98db899\" value=\"Flow 2:
CSV Export
- Transmit
Request to
Server\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=20;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"35864a2c-7bd0-4428-84fc-c0aa90c7f1be\" source=\"26d76516-fd7e-4ae8-956a-d077de4257fa\" target=\"a3106388-6a3d-4b68-a3fc-3761a0d54f98\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"1340\" y=\"1698.2471015249996\" />\n <mxPoint x=\"1340\" y=\"5280.184142035574\" />\n <mxPoint x=\"1770\" y=\"5280.184142035574\" />\n <mxPoint x=\"1770\" y=\"4784.569505991416\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <mxCell id=\"3e0f0966-5c2f-41af-9bcc-e8f615e03a00\" value=\"Flow 2:
CSV Export
- Controller
to Service\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=20;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"35864a2c-7bd0-4428-84fc-c0aa90c7f1be\" source=\"a3106388-6a3d-4b68-a3fc-3761a0d54f98\" target=\"ab9cb862-0ac7-45a3-9888-f64e87bdda54\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"2235\" y=\"4784.569505991416\" />\n <mxPoint x=\"2235\" y=\"4764.389785187675\" />\n <mxPoint x=\"4710\" y=\"4764.389785187675\" />\n <mxPoint x=\"4710\" y=\"5380.0257352590625\" />\n <mxPoint x=\"5130\" y=\"5380.025735259062\" />\n <mxPoint x=\"5130\" y=\"5157.859144892351\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <mxCell id=\"ad300b1c-6748-40f9-a7c9-5895e0915991\" value=\"Flow 2:
CSV Export
- Service
to Controller\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=20;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"35864a2c-7bd0-4428-84fc-c0aa90c7f1be\" source=\"ab9cb862-0ac7-45a3-9888-f64e87bdda54\" target=\"f151f89d-6399-48f0-aecd-5eb1572b48cc\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"8875\" y=\"5157.859144892352\" />\n <mxPoint x=\"8875\" y=\"10342.873756414825\" />\n <mxPoint x=\"1330\" y=\"10342.873756414825\" />\n <mxPoint x=\"1330\" y=\"5972.0483979240025\" />\n <mxPoint x=\"1780\" y=\"5972.0483979240025\" />\n <mxPoint x=\"1780\" y=\"4914.569505991417\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <mxCell id=\"b6d963d5-c613-407a-9ce9-60a04048dea7\" value=\"Uptime Monitor
Creation: API
Route to
Controller\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=20;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"1\" source=\"a30ac765-c546-4993-988e-8c8cfdb7532f\" target=\"f0409948-75dc-457f-a02d-6b9774258e48\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"5210\" y=\"5351.542220848844\" />\n <mxPoint x=\"5210\" y=\"1179.324416712935\" />\n <mxPoint x=\"5455\" y=\"1179.3244167129315\" />\n <mxPoint x=\"5455\" y=\"1179.0720525414708\" />\n <mxPoint x=\"5660\" y=\"1179.0720525414708\" />\n <mxPoint x=\"5660\" y=\"871.9999999999991\" />\n <mxPoint x=\"6900\" y=\"871.9999999999991\" />\n <mxPoint x=\"6900\" y=\"4664.569505991416\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <mxCell id=\"1c5c9857-bf32-40e4-921b-957c252dac2a\" value=\"API Call:
Submit Monitor
Configuration\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=20;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"1\" source=\"9651d084-5c16-4417-89c1-f52ae6572a95\" target=\"4c47b5f2-5363-4816-9745-30e61d184c7a\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"2937.5\" y=\"9353.865179846309\" />\n <mxPoint x=\"2937.5\" y=\"9354.70857742003\" />\n <mxPoint x=\"3690\" y=\"9354.708577420031\" />\n <mxPoint x=\"3690\" y=\"7888.852064767872\" />\n <mxPoint x=\"5260\" y=\"7888.8520647678715\" />\n <mxPoint x=\"5260\" y=\"5354.5219742643585\" />\n <mxPoint x=\"5455\" y=\"5354.5219742643585\" />\n <mxPoint x=\"5455\" y=\"5354.540704383867\" />\n <mxPoint x=\"5650\" y=\"5354.540704383866\" />\n <mxPoint x=\"5650\" y=\"10583.873756414823\" />\n <mxPoint x=\"10240\" y=\"10583.873756414823\" />\n <mxPoint x=\"10240\" y=\"6888.877276344531\" />\n <mxPoint x=\"12410\" y=\"6888.877276344533\" />\n <mxPoint x=\"12410\" y=\"6783.877276344533\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <mxCell id=\"3d357de8-9fd2-4d0b-9623-f36fce4cf1de\" value=\"Automated Check:
Generate Alert
Notification Content\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=20;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"1\" source=\"d4f48f1a-61de-4cde-87d2-4b5215464899\" target=\"801fe70a-1a19-406c-8f0d-770b0cb74409\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"14735\" y=\"6574.26829432037\" />\n <mxPoint x=\"14735\" y=\"11272.865179846314\" />\n <mxPoint x=\"170\" y=\"11272.865179846314\" />\n <mxPoint x=\"170\" y=\"10980.865179846314\" />\n <mxPoint x=\"1180\" y=\"10980.865179846314\" />\n <mxPoint x=\"1180\" y=\"8668.81532244953\" />\n <mxPoint x=\"1405\" y=\"8668.81532244953\" />\n <mxPoint x=\"1405\" y=\"8669.135157943725\" />\n <mxPoint x=\"1580\" y=\"8669.135157943725\" />\n <mxPoint x=\"1580\" y=\"10383.86517984631\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <mxCell id=\"00921831-b1d9-4a5a-ae6f-5ddee7cfc1e4\" value=\"API Call:
Request for
Historical Hardware
Data\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=20;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"1\" source=\"801fe70a-1a19-406c-8f0d-770b0cb74409\" target=\"9ef7c423-f4fc-4caf-9bf5-c1aa3002ca03\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"5160\" y=\"10383.86517984631\" />\n <mxPoint x=\"5160\" y=\"10685.873756414825\" />\n <mxPoint x=\"8550\" y=\"10685.873756414823\" />\n <mxPoint x=\"8550\" y=\"9595.307233312162\" />\n <mxPoint x=\"9145\" y=\"9595.307233312164\" />\n <mxPoint x=\"9145\" y=\"9114.873756414821\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <mxCell id=\"60308696-6f8a-43c8-b9a1-da199ef500cd\" value=\"API Response:
Send Aggregated
Data to
Frontend\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=20;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"1\" source=\"9ef7c423-f4fc-4caf-9bf5-c1aa3002ca03\" target=\"9ea2e32d-1ea8-42f2-9a17-613844723ae6\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"10250\" y=\"9114.873756414821\" />\n <mxPoint x=\"10250\" y=\"9430.294055596476\" />\n <mxPoint x=\"14715\" y=\"9430.294055596476\" />\n <mxPoint x=\"14715\" y=\"11422.865179846314\" />\n <mxPoint x=\"140\" y=\"11422.865179846314\" />\n <mxPoint x=\"140\" y=\"8650.390059635938\" />\n <mxPoint x=\"1170\" y=\"8650.390059635938\" />\n <mxPoint x=\"1170\" y=\"8648.815322449533\" />\n <mxPoint x=\"1405\" y=\"8648.815322449533\" />\n <mxPoint x=\"1405\" y=\"8649.135157943725\" />\n <mxPoint x=\"1620\" y=\"8649.135157943727\" />\n <mxPoint x=\"1620\" y=\"9974.729941001768\" />\n <mxPoint x=\"2087.5\" y=\"9974.729941001766\" />\n <mxPoint x=\"2087.5\" y=\"9973.86517984631\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <mxCell id=\"dc135d8d-0515-403d-ae58-f3c04647b2ae\" value=\"Flow 1:
HTTP POST
Request\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=20;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"1\" source=\"a07b805e-e55f-46cb-b54b-765b7813b0ca\" target=\"d0a4737f-715f-4f50-b6d5-5e4b31f86f93\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"4635\" y=\"8197.246623286177\" />\n <mxPoint x=\"4635\" y=\"8198.132006130314\" />\n <mxPoint x=\"5270\" y=\"8198.132006130312\" />\n <mxPoint x=\"5270\" y=\"5364.521974264361\" />\n <mxPoint x=\"5455\" y=\"5364.52197426436\" />\n <mxPoint x=\"5455\" y=\"5364.540704383869\" />\n <mxPoint x=\"5630\" y=\"5364.540704383868\" />\n <mxPoint x=\"5630\" y=\"2372.8227048507842\" />\n <mxPoint x=\"5845\" y=\"2372.822704850786\" />\n <mxPoint x=\"5845\" y=\"2373.254397966465\" />\n <mxPoint x=\"6030\" y=\"2373.2543979664642\" />\n <mxPoint x=\"6030\" y=\"2522.080243026039\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <mxCell id=\"d7faa713-4204-4a97-a172-d621da36c287\" value=\"Create Status
Page: API
Call to
Backend\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=20;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"1\" source=\"aa5d6d07-05f0-45f3-b19a-199af50e35f1\" target=\"3efddcad-588f-4492-9808-b0c81c823c96\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"3070\" y=\"1779.6070338202878\" />\n <mxPoint x=\"3070\" y=\"1780.2783715213561\" />\n <mxPoint x=\"3495\" y=\"1780.278371521355\" />\n <mxPoint x=\"3495\" y=\"2195.324558788448\" />\n <mxPoint x=\"3670\" y=\"2195.324558788448\" />\n <mxPoint x=\"3670\" y=\"2245.8755477247787\" />\n <mxPoint x=\"5180\" y=\"2245.8755477247814\" />\n <mxPoint x=\"5180\" y=\"1149.324416712933\" />\n <mxPoint x=\"5455\" y=\"1149.3244167129305\" />\n <mxPoint x=\"5455\" y=\"1149.0720525414697\" />\n <mxPoint x=\"5630\" y=\"1149.0720525414692\" />\n <mxPoint x=\"5630\" y=\"1307.9999999999984\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <mxCell id=\"c3f83811-8674-4dbb-9f84-79499f97fb1f\" value=\"Create Status
Page: UI
Receives Response
and Redirects\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=20;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"1\" source=\"058ded1f-83ce-40a7-a99d-d178c81fe557\" target=\"30aaee38-f509-4e19-a917-e6d2f4bba61c\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"8600\" y=\"6114.569505991415\" />\n <mxPoint x=\"8600\" y=\"7158.877276344534\" />\n <mxPoint x=\"14725\" y=\"7158.877276344533\" />\n <mxPoint x=\"14725\" y=\"11472.865179846314\" />\n <mxPoint x=\"130\" y=\"11472.865179846314\" />\n <mxPoint x=\"130\" y=\"5145.325785083434\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <mxCell id=\"ae1c9341-0e39-4d91-a9ac-5cc8a627c247\" value=\"View Status
Page: API
Call to
Backend\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=20;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"1\" source=\"ecfb2d04-2681-4f16-af75-632f69e1a868\" target=\"2e26cd2f-1413-4c16-8e63-ea7808ab6c52\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"3485\" y=\"2599.607033820288\" />\n <mxPoint x=\"3485\" y=\"2185.3245587884494\" />\n <mxPoint x=\"5170\" y=\"2185.3245587884485\" />\n <mxPoint x=\"5170\" y=\"1139.072052541469\" />\n <mxPoint x=\"5670\" y=\"1139.0720525414704\" />\n <mxPoint x=\"5670\" y=\"1178.8447807586938\" />\n <mxPoint x=\"5845\" y=\"1178.8447807586947\" />\n <mxPoint x=\"5845\" y=\"1178.3469678356034\" />\n <mxPoint x=\"6020\" y=\"1178.3469678356028\" />\n <mxPoint x=\"6020\" y=\"1177.9999999999998\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <mxCell id=\"04a33e4f-1dfe-4c5a-8b30-01ed0591c380\" value=\"View Status
Page: UI
Receives Data\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=20;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"1\" source=\"d76e70e0-41f9-46cc-b775-b2027c5a0d5b\" target=\"f59b91de-5196-4a43-9d57-3f28402c0672\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"8540\" y=\"6244.569505991416\" />\n <mxPoint x=\"8540\" y=\"10279.873756414823\" />\n <mxPoint x=\"14765\" y=\"10279.873756414821\" />\n <mxPoint x=\"14765\" y=\"11672.865179846314\" />\n <mxPoint x=\"90\" y=\"11672.865179846314\" />\n <mxPoint x=\"90\" y=\"311.9999999999991\" />\n <mxPoint x=\"1170\" y=\"312\" />\n <mxPoint x=\"1170\" y=\"2260.6612048679117\" />\n <mxPoint x=\"2081.666666666666\" y=\"2260.661204867912\" />\n <mxPoint x=\"2081.666666666666\" y=\"2259.6070338202894\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <mxCell id=\"2b8ae59e-ed8d-4837-9a9b-64eb480f982c\" value=\"API Request
for Check
History\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=20;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"1\" source=\"4a5847d0-91a0-4b4c-8517-2f4ff9a7e8d4\" target=\"cdd090be-0b62-45b4-baa0-fec01fc3ffd1\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"5280\" y=\"8597.246623286175\" />\n <mxPoint x=\"5280\" y=\"5374.540704383869\" />\n <mxPoint x=\"5640\" y=\"5374.540704383868\" />\n <mxPoint x=\"5640\" y=\"2383.2543979664624\" />\n <mxPoint x=\"6020\" y=\"2383.2543979664633\" />\n <mxPoint x=\"6020\" y=\"2243.7525647938674\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <mxCell id=\"6c5b028c-356c-43c8-a35a-b47448cd8695\" value=\"API Response
with Check
History\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=20;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"1\" source=\"14df9f01-1358-442d-96f5-eab9a4c4abbf\" target=\"ceb9cda3-968d-44aa-b223-49902adb93b4\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"8170\" y=\"4004.569505991415\" />\n <mxPoint x=\"8170\" y=\"4021.3515793950187\" />\n <mxPoint x=\"8345\" y=\"4021.3515793950196\" />\n <mxPoint x=\"8345\" y=\"4021.776772020986\" />\n <mxPoint x=\"8520\" y=\"4021.776772020985\" />\n <mxPoint x=\"8520\" y=\"3110.0802430260374\" />\n <mxPoint x=\"14405\" y=\"3110.0802430260374\" />\n <mxPoint x=\"14405\" y=\"3374.3449744748764\" />\n <mxPoint x=\"14795\" y=\"3374.3449744748805\" />\n <mxPoint x=\"14795\" y=\"11722.865179846318\" />\n <mxPoint x=\"80\" y=\"11722.865179846318\" />\n <mxPoint x=\"80\" y=\"261.00000000000273\" />\n <mxPoint x=\"3720\" y=\"261\" />\n <mxPoint x=\"3720\" y=\"8322.650474325575\" />\n <mxPoint x=\"3905\" y=\"8322.650474325575\" />\n <mxPoint x=\"3905\" y=\"8322.124804485018\" />\n <mxPoint x=\"4090\" y=\"8322.124804485018\" />\n <mxPoint x=\"4090\" y=\"8467.246623286177\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <mxCell id=\"b8e83b0a-69ff-4c34-a7fe-cb8c9ba85438\" value=\"API Call:
Create Monitor\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=20;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"1\" source=\"0622b212-3a4a-484d-9b7a-125864d785cd\" target=\"6527fb47-157e-4bba-9aed-adde061c5689\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"3310\" y=\"1117.0101953920014\" />\n <mxPoint x=\"3310\" y=\"1117.1301485528222\" />\n <mxPoint x=\"3485\" y=\"1117.1301485528222\" />\n <mxPoint x=\"3485\" y=\"1117.6113066159762\" />\n <mxPoint x=\"3670\" y=\"1117.6113066159762\" />\n <mxPoint x=\"3670\" y=\"1152.3222101959743\" />\n <mxPoint x=\"4985\" y=\"1152.3222101959743\" />\n <mxPoint x=\"4985\" y=\"1152.6734369657354\" />\n <mxPoint x=\"5160\" y=\"1152.6734369657354\" />\n <mxPoint x=\"5160\" y=\"484.2750730511509\" />\n <mxPoint x=\"5455\" y=\"484.2750730511518\" />\n <mxPoint x=\"5455\" y=\"483.9803183778979\" />\n <mxPoint x=\"5630\" y=\"483.98031837789745\" />\n <mxPoint x=\"5630\" y=\"209.99999999999977\" />\n <mxPoint x=\"10290\" y=\"209.99999999999977\" />\n <mxPoint x=\"10290\" y=\"3807.258669362275\" />\n <mxPoint x=\"10465\" y=\"3807.258669362275\" />\n <mxPoint x=\"10465\" y=\"3807.080243026039\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <mxCell id=\"7be432cd-2587-4eab-abdc-f7b9c1923597\" value=\"Aggregated Data
Transmitted to
Frontend\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=20;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"1\" source=\"ca6ee27b-1fbf-49de-978a-d6de259cc3d5\" target=\"9ef9e218-4742-487a-9a88-5c70e788ccdc\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"14210\" y=\"3789.795865755802\" />\n <mxPoint x=\"14210\" y=\"3789.9991158387165\" />\n <mxPoint x=\"14785\" y=\"3789.9991158387147\" />\n <mxPoint x=\"14785\" y=\"11772.865179846314\" />\n <mxPoint x=\"70\" y=\"11772.865179846314\" />\n <mxPoint x=\"70\" y=\"213.21247231364578\" />\n <mxPoint x=\"355\" y=\"213.21247231364669\" />\n <mxPoint x=\"355\" y=\"212.8750987614867\" />\n <mxPoint x=\"530\" y=\"212.8750987614867\" />\n <mxPoint x=\"530\" y=\"210.0000000000009\" />\n <mxPoint x=\"1180\" y=\"210.0000000000009\" />\n <mxPoint x=\"1180\" y=\"707.4191596459113\" />\n <mxPoint x=\"1405\" y=\"707.4191596459113\" />\n <mxPoint x=\"1405\" y=\"707.0000000000009\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <mxCell id=\"fd5e4447-123b-4b2d-8bce-1d1ae7cb00af\" value=\"Flow: Create
Maintenance Window
- API
Call\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=20;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"1\" source=\"5bdfdfa4-5d93-49fa-b05c-905813e6cf9d\" target=\"a391e8ea-9dbe-4fe4-90df-bf475d8b7ef8\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"3135\" y=\"7303.858021594766\" />\n <mxPoint x=\"3135\" y=\"7304.691438451378\" />\n <mxPoint x=\"3710\" y=\"7304.691438451378\" />\n <mxPoint x=\"3710\" y=\"7312.922962115302\" />\n <mxPoint x=\"5230\" y=\"7312.922962115303\" />\n <mxPoint x=\"5230\" y=\"3192.080243026041\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <mxCell id=\"fcf4eef4-394c-4872-9124-f7a0b32cdc3b\" value=\"Flow: Create
Maintenance Window
- API
Response\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=20;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"1\" source=\"3890b98d-a133-4279-a961-5d2facc6a17a\" target=\"a5a84b08-8c70-4023-8d08-b74e23aab4d7\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"10250\" y=\"8454.873756414821\" />\n <mxPoint x=\"10250\" y=\"8860.401538369915\" />\n <mxPoint x=\"14745\" y=\"8860.401538369915\" />\n <mxPoint x=\"14745\" y=\"11572.865179846314\" />\n <mxPoint x=\"110\" y=\"11572.865179846314\" />\n <mxPoint x=\"110\" y=\"4716.554233649437\" />\n <mxPoint x=\"1180\" y=\"4716.554233649436\" />\n <mxPoint x=\"1180\" y=\"4810.621306201957\" />\n <mxPoint x=\"1405\" y=\"4810.621306201957\" />\n <mxPoint x=\"1405\" y=\"4810.584553505044\" />\n <mxPoint x=\"1580\" y=\"4810.584553505044\" />\n <mxPoint x=\"1580\" y=\"7197.841352716525\" />\n <mxPoint x=\"1795\" y=\"7197.841352716524\" />\n <mxPoint x=\"1795\" y=\"7197.080193689382\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <mxCell id=\"7f921125-500f-4902-abc3-936ecac033d8\" value=\"Flow: View
Maintenance Windows
- API
Call\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=20;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"1\" source=\"d145bb4c-e1e0-473a-b6bc-decc932b738b\" target=\"c35a065c-2808-402c-877e-9055d956ce0d\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"3710\" y=\"7713.858021594765\" />\n <mxPoint x=\"3710\" y=\"7720.4820160745785\" />\n <mxPoint x=\"5240\" y=\"7720.482016074578\" />\n <mxPoint x=\"5240\" y=\"3427.0802430260383\" />\n <mxPoint x=\"6840\" y=\"3427.0802430260374\" />\n <mxPoint x=\"6840\" y=\"5584.569505991414\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <mxCell id=\"6c9979cd-1cc1-4227-b535-2ec3a10ca27e\" value=\"Flow: View
Maintenance Windows
- Data
Return to
Frontend\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=20;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"1\" source=\"27d9160a-4f8d-4dff-a09b-1678bc28cf2c\" target=\"970e2002-7c0e-40ef-80d8-e5e6d0a60735\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"10210\" y=\"8584.873756414821\" />\n <mxPoint x=\"10210\" y=\"8975.970303983748\" />\n <mxPoint x=\"14685\" y=\"8975.97030398375\" />\n <mxPoint x=\"14685\" y=\"11222.865179846314\" />\n <mxPoint x=\"180\" y=\"11222.865179846314\" />\n <mxPoint x=\"180\" y=\"11031.865179846314\" />\n <mxPoint x=\"1190\" y=\"11031.865179846312\" />\n <mxPoint x=\"1190\" y=\"8678.815322449529\" />\n <mxPoint x=\"1405\" y=\"8678.815322449529\" />\n <mxPoint x=\"1405\" y=\"8679.135157943725\" />\n <mxPoint x=\"1600\" y=\"8679.135157943725\" />\n <mxPoint x=\"1600\" y=\"8053.865179846313\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <mxCell id=\"3530244f-2689-444e-bcbf-611db2e3c000\" value=\"API Call:
Send Invitation
Request\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=20;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"1\" source=\"b27f1bba-c655-40c6-a1dc-71e78c590c92\" target=\"8b3cb6c2-ed57-4510-be15-decb8e3c89e1\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"3670\" y=\"3349.6070338202903\" />\n <mxPoint x=\"3670\" y=\"3374.6051963566842\" />\n <mxPoint x=\"5190\" y=\"3374.605196356683\" />\n <mxPoint x=\"5190\" y=\"1159.3244167129328\" />\n <mxPoint x=\"5455\" y=\"1159.3244167129324\" />\n <mxPoint x=\"5455\" y=\"1159.0720525414715\" />\n <mxPoint x=\"5640\" y=\"1159.072052541471\" />\n <mxPoint x=\"5640\" y=\"516\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <mxCell id=\"52732a37-82b8-40a7-b12d-dc1b82380b2d\" value=\"API Response:
Send Confirmation
to Client\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=20;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"1\" source=\"a7be2d0b-0227-4228-a0a6-074f7324fd89\" target=\"02d87257-883c-4822-a421-823c983532ec\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"12651.153846153846\" y=\"4357.859144892352\" />\n <mxPoint x=\"12651.153846153846\" y=\"4364.080792681034\" />\n <mxPoint x=\"14035\" y=\"4364.080792681034\" />\n <mxPoint x=\"14035\" y=\"4387.418850485591\" />\n <mxPoint x=\"14755\" y=\"4387.41885048559\" />\n <mxPoint x=\"14755\" y=\"11522.865179846314\" />\n <mxPoint x=\"120\" y=\"11522.865179846314\" />\n <mxPoint x=\"120\" y=\"4767.554233649437\" />\n <mxPoint x=\"1170\" y=\"4767.554233649438\" />\n <mxPoint x=\"1170\" y=\"4820.621306201959\" />\n <mxPoint x=\"1405\" y=\"4820.621306201959\" />\n <mxPoint x=\"1405\" y=\"4820.584553505046\" />\n <mxPoint x=\"1610\" y=\"4820.584553505046\" />\n <mxPoint x=\"1610\" y=\"3197.8251006423625\" />\n <mxPoint x=\"2327.5\" y=\"3197.825100642361\" />\n <mxPoint x=\"2327.5\" y=\"3219.607033820288\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <mxCell id=\"23715cce-c83a-44c0-9853-4c95b85e5ecd\" value=\"Flow 1:
CSV Import
- Transmit
Data to
Server\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=20;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"1\" source=\"5967e576-f542-4c0b-a3f4-9446ae992721\" target=\"c1ac3c26-996a-43ef-9c34-4c2776188784\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"5220\" y=\"5481.542220848844\" />\n <mxPoint x=\"5220\" y=\"1708.0000000000027\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <mxCell id=\"926a330c-a9c5-4983-a4b5-70359813e49a\" value=\"Flow 1:
CSV Import
- Transmit
Success to
Client\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=20;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"1\" source=\"72b55fa1-d944-4e46-ac98-f6a6cb201afa\" target=\"ae3b7e23-ed64-40aa-9760-389f0a869f8d\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"7755\" y=\"4534.569505991416\" />\n <mxPoint x=\"7755\" y=\"4555.033534254194\" />\n <mxPoint x=\"8600\" y=\"4555.033534254195\" />\n <mxPoint x=\"8600\" y=\"3161.080243026039\" />\n <mxPoint x=\"14395\" y=\"3161.080243026039\" />\n <mxPoint x=\"14395\" y=\"3425.2087194595433\" />\n <mxPoint x=\"14775\" y=\"3425.2087194595433\" />\n <mxPoint x=\"14775\" y=\"11622.865179846314\" />\n <mxPoint x=\"100\" y=\"11622.865179846314\" />\n <mxPoint x=\"100\" y=\"4665.554233649438\" />\n <mxPoint x=\"1190\" y=\"4665.554233649437\" />\n <mxPoint x=\"1190\" y=\"4800.584553505045\" />\n <mxPoint x=\"1620\" y=\"4800.584553505045\" />\n <mxPoint x=\"1620\" y=\"5520.870240113548\" />\n <mxPoint x=\"2395\" y=\"5520.870240113547\" />\n <mxPoint x=\"2395\" y=\"5539.607033820288\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <mxCell id=\"f6d80f09-ae83-4c95-aba0-4efffeda38e0\" value=\"API Call:
Fetch Application
Settings\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=20;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"1\" source=\"97908daf-d071-4df5-8366-1f5f4d8d534a\" target=\"83596bd1-dfca-4196-b52e-955f6824fafb\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"2811.6666666666665\" y=\"8533.865179846309\" />\n <mxPoint x=\"2811.6666666666665\" y=\"8534.901370641881\" />\n <mxPoint x=\"3680\" y=\"8534.901370641885\" />\n <mxPoint x=\"3680\" y=\"7837.852064767872\" />\n <mxPoint x=\"5250\" y=\"7837.8520647678715\" />\n <mxPoint x=\"5250\" y=\"3478.0802430260374\" />\n <mxPoint x=\"6830\" y=\"3478.0802430260364\" />\n <mxPoint x=\"6830\" y=\"6081.849528138135\" />\n <mxPoint x=\"7095\" y=\"6081.8495281381365\" />\n <mxPoint x=\"7095\" y=\"6082.048397924002\" />\n <mxPoint x=\"7320\" y=\"6082.048397924001\" />\n <mxPoint x=\"7320\" y=\"6529.340814284318\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <mxCell id=\"195ad532-9858-493e-876a-6ec457811d1d\" value=\"API Response:
Send Settings
to Client\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=20;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"1\" source=\"83596bd1-dfca-4196-b52e-955f6824fafb\" target=\"09cb194a-0ea4-46e2-b32b-36b62fa87f40\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"8530\" y=\"6529.340814284319\" />\n <mxPoint x=\"8530\" y=\"10330.873756414823\" />\n <mxPoint x=\"14695\" y=\"10330.873756414825\" />\n <mxPoint x=\"14695\" y=\"11322.865179846314\" />\n <mxPoint x=\"160\" y=\"11322.865179846314\" />\n <mxPoint x=\"160\" y=\"10929.865179846314\" />\n <mxPoint x=\"1170\" y=\"10929.865179846314\" />\n <mxPoint x=\"1170\" y=\"8658.81532244953\" />\n <mxPoint x=\"1405\" y=\"8658.81532244953\" />\n <mxPoint x=\"1405\" y=\"8659.135157943725\" />\n <mxPoint x=\"1610\" y=\"8659.135157943725\" />\n <mxPoint x=\"1610\" y=\"8803.86517984631\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <mxCell id=\"ce3ed3ba-a35b-4881-8dfd-f8425b9bf812\" value=\"Data Transmission:
Send Updated
Settings to
Server\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=20;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"1\" source=\"1b2cf182-9ee3-4218-a7ec-b74e427ccddf\" target=\"cce3b9c8-f3b7-434b-b3c6-d8d164714f86\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"5170\" y=\"8997.246623286175\" />\n <mxPoint x=\"5170\" y=\"10634.873756414825\" />\n <mxPoint x=\"6830\" y=\"10634.873756414825\" />\n <mxPoint x=\"6830\" y=\"6091.8495281381365\" />\n <mxPoint x=\"7095\" y=\"6091.849528138137\" />\n <mxPoint x=\"7095\" y=\"6092.048397924003\" />\n <mxPoint x=\"7270\" y=\"6092.0483979240025\" />\n <mxPoint x=\"7270\" y=\"6659.34081428432\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <mxCell id=\"fbe9b160-307e-4f51-8f72-713fda5373c8\" value=\"API Response:
Confirm Settings
Update\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=20;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"1\" source=\"cce3b9c8-f3b7-434b-b3c6-d8d164714f86\" target=\"fff5dde4-8eb8-4c21-9c6d-0845a9749ff3\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"8520\" y=\"6659.340814284319\" />\n <mxPoint x=\"8520\" y=\"10381.873756414823\" />\n <mxPoint x=\"14705\" y=\"10381.873756414825\" />\n <mxPoint x=\"14705\" y=\"11372.865179846314\" />\n <mxPoint x=\"150\" y=\"11372.865179846314\" />\n <mxPoint x=\"150\" y=\"10878.865179846314\" />\n <mxPoint x=\"3700\" y=\"10878.865179846314\" />\n <mxPoint x=\"3700\" y=\"9127.246623286175\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <mxCell id=\"499dfe1f-77d4-4b26-a12c-45240691109e\" value=\"API Call:
Fetch System
Diagnostics\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=20;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"1\" source=\"704e2ec8-9f2f-47e5-852f-c6ada67a02e0\" target=\"09f07e80-185e-4547-aab4-edaf8ae7501e\">\n <mxGeometry relative=\"1\" as=\"geometry\">\n <Array as=\"points\">\n <mxPoint x=\"3670\" y=\"4029.60703382029\" />\n <mxPoint x=\"3670\" y=\"4051.6580863779977\" />\n <mxPoint x=\"5200\" y=\"4051.6580863779964\" />\n <mxPoint x=\"5200\" y=\"1169.3244167129324\" />\n <mxPoint x=\"5455\" y=\"1169.324416712932\" />\n <mxPoint x=\"5455\" y=\"1169.0720525414708\" />\n <mxPoint x=\"5650\" y=\"1169.0720525414708\" />\n <mxPoint x=\"5650\" y=\"820.9999999999995\" />\n <mxPoint x=\"10270\" y=\"820.9999999999995\" />\n <mxPoint x=\"10270\" y=\"4627.859144892351\" />\n </Array>\n </mxGeometry>\n </mxCell>\n <mxCell id=\"d0f92604-a6fa-4d85-9716-ea8f32db78e0\" value=\"API Response:
Send Diagnostics
Data to
Client\" style=\"edgeStyle=orthogonalEdgeStyle;shape=connector;rounded=1;sketch=0;jumpStyle=arc;jumpSize=17;orthogonalLoop=1;jettySize=auto;html=0;shadow=0;labelBackgroundColor=none;fontFamily=Poppins;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DPoppins;fontSize=37;fontColor=#5C5C5C;endArrow=block;endFill=1;endSize=5;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;strokeColor=#A1A1A1;strokeWidth=2;arcSize=50;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;container=1;\" edge=\"1\" parent=\"1\" source=\"09f07e80-185e-4547-aab4-edaf8ae7501e\" target=\"4b418736-6b72-47e0-917a-d86d4bed9ecd\">\n <mxGeometry relative=\"1\" as=\"geometry\" />\n </mxCell>\n </root>\n </mxGraphModel>\n </diagram>\n</mxfile>\n",
|
|
"fileName": "Checkmate.CodeCanvas",
|
|
"fileURL": "github",
|
|
"diagramTemplateVersion": 0.2,
|
|
"filePath": "Checkmate.CodeCanvas",
|
|
"repoData": {
|
|
"client": {
|
|
"path": "client",
|
|
"fileName": "client",
|
|
"cellName": "client",
|
|
"cellId": "0b23ea66-3e37-4643-b3b9-acb87ea02bae",
|
|
"visible": true,
|
|
"children": [
|
|
"client/src"
|
|
]
|
|
},
|
|
"client/src": {
|
|
"path": "client/src",
|
|
"fileName": "src",
|
|
"cellName": "src",
|
|
"cellId": "d3264577-10f0-42fe-9411-7e9df0754d1e",
|
|
"visible": true,
|
|
"parentCellId": "0b23ea66-3e37-4643-b3b9-acb87ea02bae",
|
|
"children": [
|
|
"client/src/Pages",
|
|
"client/src/Hooks",
|
|
"client/src/Utils",
|
|
"client/src/Routes"
|
|
]
|
|
},
|
|
"client/src/Hooks": {
|
|
"path": "client/src/Hooks",
|
|
"fileName": "Hooks",
|
|
"cellName": "Hooks",
|
|
"cellId": "4295a047-076f-4c07-95dd-b3123b6614f7",
|
|
"visible": true,
|
|
"parentCellId": "d3264577-10f0-42fe-9411-7e9df0754d1e",
|
|
"children": [
|
|
"client/src/Hooks/v1"
|
|
]
|
|
},
|
|
"client/src/Hooks/v1": {
|
|
"path": "client/src/Hooks/v1",
|
|
"fileName": "v1",
|
|
"cellName": "v1",
|
|
"cellId": "3bf0c0f9-cbb0-4f0c-8cb3-6e2a4abc0961",
|
|
"visible": true,
|
|
"parentCellId": "4295a047-076f-4c07-95dd-b3123b6614f7",
|
|
"children": [
|
|
"client/src/Hooks/v1/monitorHooks.js",
|
|
"client/src/Hooks/v1/useNotifications.js",
|
|
"client/src/Hooks/v1/checkHooks.js",
|
|
"client/src/Hooks/v1/settingsHooks.js"
|
|
]
|
|
},
|
|
"client/src/Hooks/v1/checkHooks.js": {
|
|
"path": "client/src/Hooks/v1/checkHooks.js",
|
|
"fileName": "checkHooks.js",
|
|
"cellName": "checkHooks.js",
|
|
"cellId": "933a6cdc-349c-4725-b7ae-14cf780bfde8",
|
|
"visible": true,
|
|
"parentCellId": "3bf0c0f9-cbb0-4f0c-8cb3-6e2a4abc0961",
|
|
"children": [
|
|
"client/src/Hooks/v1/checkHooks.js-simstep-8dc4347c-3e9e-40d7-ae6f-54684f2e6956",
|
|
"client/src/Hooks/v1/checkHooks.js-simstep-faba07f3-7460-47ae-924d-f92f5b2e821d"
|
|
]
|
|
},
|
|
"client/src/Hooks/v1/monitorHooks.js": {
|
|
"path": "client/src/Hooks/v1/monitorHooks.js",
|
|
"fileName": "monitorHooks.js",
|
|
"cellName": "monitorHooks.js",
|
|
"cellId": "595cf0e8-2f86-4543-b51c-b2aeac307f4b",
|
|
"visible": true,
|
|
"parentCellId": "3bf0c0f9-cbb0-4f0c-8cb3-6e2a4abc0961"
|
|
},
|
|
"client/src/Hooks/v1/settingsHooks.js": {
|
|
"path": "client/src/Hooks/v1/settingsHooks.js",
|
|
"fileName": "settingsHooks.js",
|
|
"cellName": "settingsHooks.js",
|
|
"cellId": "8ee5d524-e61d-4e39-a729-babf54929def",
|
|
"visible": true,
|
|
"parentCellId": "3bf0c0f9-cbb0-4f0c-8cb3-6e2a4abc0961",
|
|
"children": [
|
|
"client/src/Hooks/v1/settingsHooks.js-simstep-d7098072-9a83-4369-8176-9646ba34e186",
|
|
"client/src/Hooks/v1/settingsHooks.js-simstep-a157bd07-b969-44f8-914c-3d8393c1605a"
|
|
]
|
|
},
|
|
"client/src/Hooks/v1/useNotifications.js": {
|
|
"path": "client/src/Hooks/v1/useNotifications.js",
|
|
"fileName": "useNotifications.js",
|
|
"cellName": "useNotifications.js",
|
|
"cellId": "cd2428fd-6545-48dd-b685-5261311b7532",
|
|
"visible": true,
|
|
"parentCellId": "3bf0c0f9-cbb0-4f0c-8cb3-6e2a4abc0961",
|
|
"children": [
|
|
"client/src/Hooks/v1/useNotifications.js-simstep-383c6be8-aa51-4398-9ae3-21035413f73a"
|
|
]
|
|
},
|
|
"client/src/Pages": {
|
|
"path": "client/src/Pages",
|
|
"fileName": "Pages",
|
|
"cellName": "Pages",
|
|
"cellId": "f0feab85-316a-41b5-a2f1-629220018846",
|
|
"visible": true,
|
|
"parentCellId": "d3264577-10f0-42fe-9411-7e9df0754d1e",
|
|
"children": [
|
|
"client/src/Pages/v1"
|
|
]
|
|
},
|
|
"client/src/Pages/v1": {
|
|
"path": "client/src/Pages/v1",
|
|
"fileName": "v1",
|
|
"cellName": "v1",
|
|
"cellId": "1a083b4a-787c-4eb4-8029-6700de987679",
|
|
"visible": true,
|
|
"parentCellId": "f0feab85-316a-41b5-a2f1-629220018846",
|
|
"children": [
|
|
"client/src/Pages/v1/Uptime",
|
|
"client/src/Pages/v1/Infrastructure",
|
|
"client/src/Pages/v1/Notifications",
|
|
"client/src/Pages/v1/StatusPage",
|
|
"client/src/Pages/v1/PageSpeed",
|
|
"client/src/Pages/v1/Maintenance",
|
|
"client/src/Pages/v1/Account",
|
|
"client/src/Pages/v1/Settings",
|
|
"client/src/Pages/v1/Logs"
|
|
]
|
|
},
|
|
"client/src/Pages/v1/Account": {
|
|
"path": "client/src/Pages/v1/Account",
|
|
"fileName": "Account",
|
|
"cellName": "Account",
|
|
"cellId": "3cad7666-0d1a-4e31-b6ca-70d9c3a46b19",
|
|
"visible": true,
|
|
"parentCellId": "1a083b4a-787c-4eb4-8029-6700de987679",
|
|
"children": [
|
|
"client/src/Pages/v1/Account/index.jsx",
|
|
"client/src/Pages/v1/Account/components"
|
|
]
|
|
},
|
|
"client/src/Pages/v1/Account/components": {
|
|
"path": "client/src/Pages/v1/Account/components",
|
|
"fileName": "components",
|
|
"cellName": "components",
|
|
"cellId": "425a4c15-043f-4d05-8832-da00e18f97b9",
|
|
"visible": true,
|
|
"parentCellId": "3cad7666-0d1a-4e31-b6ca-70d9c3a46b19",
|
|
"children": [
|
|
"client/src/Pages/v1/Account/components/TeamPanel.jsx"
|
|
]
|
|
},
|
|
"client/src/Pages/v1/Account/components/TeamPanel.jsx": {
|
|
"path": "client/src/Pages/v1/Account/components/TeamPanel.jsx",
|
|
"fileName": "TeamPanel.jsx",
|
|
"cellName": "TeamPanel.jsx",
|
|
"cellId": "1145f351-2257-411d-86f7-30bf8c26ad68",
|
|
"visible": true,
|
|
"parentCellId": "425a4c15-043f-4d05-8832-da00e18f97b9",
|
|
"children": [
|
|
"client/src/Pages/v1/Account/components/TeamPanel.jsx-simstep-eebaca25-d588-49c4-a35c-9abc82fde580",
|
|
"client/src/Pages/v1/Account/components/TeamPanel.jsx-simstep-700f35e0-b39d-417c-b0a8-0612feade977"
|
|
]
|
|
},
|
|
"client/src/Pages/v1/Account/index.jsx": {
|
|
"path": "client/src/Pages/v1/Account/index.jsx",
|
|
"fileName": "index.jsx",
|
|
"cellName": "index.jsx",
|
|
"cellId": "33960806-1b9e-4d61-a163-e4bebf82d87a",
|
|
"visible": true,
|
|
"parentCellId": "3cad7666-0d1a-4e31-b6ca-70d9c3a46b19",
|
|
"children": [
|
|
"client/src/Pages/v1/Account/index.jsx-simstep-2d5a952a-ce62-4948-9309-96b28ad74e59"
|
|
]
|
|
},
|
|
"client/src/Pages/v1/Infrastructure": {
|
|
"path": "client/src/Pages/v1/Infrastructure",
|
|
"fileName": "Infrastructure",
|
|
"cellName": "Infrastructure",
|
|
"cellId": "3f26b33e-477f-41df-a78a-3e3e4f4209ae",
|
|
"visible": true,
|
|
"parentCellId": "1a083b4a-787c-4eb4-8029-6700de987679",
|
|
"children": [
|
|
"client/src/Pages/v1/Infrastructure/Create",
|
|
"client/src/Pages/v1/Infrastructure/Details"
|
|
]
|
|
},
|
|
"client/src/Pages/v1/Infrastructure/Create": {
|
|
"path": "client/src/Pages/v1/Infrastructure/Create",
|
|
"fileName": "Create",
|
|
"cellName": "Create",
|
|
"cellId": "74019e8a-3148-4a32-aae2-5afd16f3eb9b",
|
|
"visible": true,
|
|
"parentCellId": "3f26b33e-477f-41df-a78a-3e3e4f4209ae",
|
|
"children": [
|
|
"client/src/Pages/v1/Infrastructure/Create/Components"
|
|
]
|
|
},
|
|
"client/src/Pages/v1/Infrastructure/Create/Components": {
|
|
"path": "client/src/Pages/v1/Infrastructure/Create/Components",
|
|
"fileName": "Components",
|
|
"cellName": "Components",
|
|
"cellId": "ceded1fc-87a9-43c8-a756-746be3d4ad8d",
|
|
"visible": true,
|
|
"parentCellId": "74019e8a-3148-4a32-aae2-5afd16f3eb9b",
|
|
"children": [
|
|
"client/src/Pages/v1/Infrastructure/Create/Components/CustomAlertsSection.jsx"
|
|
]
|
|
},
|
|
"client/src/Pages/v1/Infrastructure/Create/Components/CustomAlertsSection.jsx": {
|
|
"path": "client/src/Pages/v1/Infrastructure/Create/Components/CustomAlertsSection.jsx",
|
|
"fileName": "CustomAlertsSection.jsx",
|
|
"cellName": "CustomAlertsSection.jsx",
|
|
"cellId": "83800be3-2a0e-4419-b379-3f995f4050e7",
|
|
"visible": true,
|
|
"parentCellId": "ceded1fc-87a9-43c8-a756-746be3d4ad8d",
|
|
"children": [
|
|
"client/src/Pages/v1/Infrastructure/Create/Components/CustomAlertsSection.jsx-simstep-80dd889a-1fc9-4d56-b9cf-5b45bf1110b1"
|
|
]
|
|
},
|
|
"client/src/Pages/v1/Infrastructure/Details": {
|
|
"path": "client/src/Pages/v1/Infrastructure/Details",
|
|
"fileName": "Details",
|
|
"cellName": "Details",
|
|
"cellId": "591128f9-0994-4e01-a1ab-f23357f97aff",
|
|
"visible": true,
|
|
"parentCellId": "3f26b33e-477f-41df-a78a-3e3e4f4209ae",
|
|
"children": [
|
|
"client/src/Pages/v1/Infrastructure/Details/index.jsx",
|
|
"client/src/Pages/v1/Infrastructure/Details/Components"
|
|
]
|
|
},
|
|
"client/src/Pages/v1/Infrastructure/Details/Components": {
|
|
"path": "client/src/Pages/v1/Infrastructure/Details/Components",
|
|
"fileName": "Components",
|
|
"cellName": "Components",
|
|
"cellId": "e97d4e61-483e-4ac5-85a1-0ff72fcdd449",
|
|
"visible": true,
|
|
"parentCellId": "591128f9-0994-4e01-a1ab-f23357f97aff",
|
|
"children": [
|
|
"client/src/Pages/v1/Infrastructure/Details/Components/GaugeBoxes"
|
|
]
|
|
},
|
|
"client/src/Pages/v1/Infrastructure/Details/Components/GaugeBoxes": {
|
|
"path": "client/src/Pages/v1/Infrastructure/Details/Components/GaugeBoxes",
|
|
"fileName": "GaugeBoxes",
|
|
"cellName": "GaugeBoxes",
|
|
"cellId": "6a7c7720-a399-4d4d-8225-36e0b2f59731",
|
|
"visible": true,
|
|
"parentCellId": "e97d4e61-483e-4ac5-85a1-0ff72fcdd449",
|
|
"children": [
|
|
"client/src/Pages/v1/Infrastructure/Details/Components/GaugeBoxes/index.jsx"
|
|
]
|
|
},
|
|
"client/src/Pages/v1/Infrastructure/Details/Components/GaugeBoxes/index.jsx": {
|
|
"path": "client/src/Pages/v1/Infrastructure/Details/Components/GaugeBoxes/index.jsx",
|
|
"fileName": "index.jsx",
|
|
"cellName": "index.jsx",
|
|
"cellId": "8fe3d890-3605-407d-b06c-1d890a354e46",
|
|
"visible": true,
|
|
"parentCellId": "6a7c7720-a399-4d4d-8225-36e0b2f59731",
|
|
"children": [
|
|
"client/src/Pages/v1/Infrastructure/Details/Components/GaugeBoxes/index.jsx-simstep-6eedce82-b9c8-4022-95e5-3a6e00628105"
|
|
]
|
|
},
|
|
"client/src/Pages/v1/Infrastructure/Details/index.jsx": {
|
|
"path": "client/src/Pages/v1/Infrastructure/Details/index.jsx",
|
|
"fileName": "index.jsx",
|
|
"cellName": "index.jsx",
|
|
"cellId": "e292c552-b3df-4bac-bd9a-8f44c260a5aa",
|
|
"visible": true,
|
|
"parentCellId": "591128f9-0994-4e01-a1ab-f23357f97aff",
|
|
"children": [
|
|
"client/src/Pages/v1/Infrastructure/Details/index.jsx-simstep-c27365db-9db6-4cc9-96f0-4f046fd38562"
|
|
]
|
|
},
|
|
"client/src/Pages/v1/Logs": {
|
|
"path": "client/src/Pages/v1/Logs",
|
|
"fileName": "Logs",
|
|
"cellName": "Logs",
|
|
"cellId": "1716ec41-8b42-4386-9850-55b8a607638e",
|
|
"visible": true,
|
|
"parentCellId": "1a083b4a-787c-4eb4-8029-6700de987679",
|
|
"children": [
|
|
"client/src/Pages/v1/Logs/Diagnostics"
|
|
]
|
|
},
|
|
"client/src/Pages/v1/Logs/Diagnostics": {
|
|
"path": "client/src/Pages/v1/Logs/Diagnostics",
|
|
"fileName": "Diagnostics",
|
|
"cellName": "Diagnostics",
|
|
"cellId": "e0cb598c-e300-4fd3-8554-db7ffd6201f1",
|
|
"visible": true,
|
|
"parentCellId": "1716ec41-8b42-4386-9850-55b8a607638e",
|
|
"children": [
|
|
"client/src/Pages/v1/Logs/Diagnostics/index.jsx"
|
|
]
|
|
},
|
|
"client/src/Pages/v1/Logs/Diagnostics/index.jsx": {
|
|
"path": "client/src/Pages/v1/Logs/Diagnostics/index.jsx",
|
|
"fileName": "index.jsx",
|
|
"cellName": "index.jsx",
|
|
"cellId": "87e0e2ea-4a6d-460d-95bc-31e2efd9c9cf",
|
|
"visible": true,
|
|
"parentCellId": "e0cb598c-e300-4fd3-8554-db7ffd6201f1",
|
|
"children": [
|
|
"client/src/Pages/v1/Logs/Diagnostics/index.jsx-simstep-a9b24b5f-534b-4baf-a185-bac7c32a1c42",
|
|
"client/src/Pages/v1/Logs/Diagnostics/index.jsx-simstep-e6c94f52-a599-4568-a06f-2db18f963817"
|
|
]
|
|
},
|
|
"client/src/Pages/v1/Maintenance": {
|
|
"path": "client/src/Pages/v1/Maintenance",
|
|
"fileName": "Maintenance",
|
|
"cellName": "Maintenance",
|
|
"cellId": "8021b55d-2d3a-4416-b598-e134e76c9434",
|
|
"visible": true,
|
|
"parentCellId": "1a083b4a-787c-4eb4-8029-6700de987679",
|
|
"children": [
|
|
"client/src/Pages/v1/Maintenance/CreateMaintenance",
|
|
"client/src/Pages/v1/Maintenance/index.jsx",
|
|
"client/src/Pages/v1/Maintenance/MaintenanceTable"
|
|
]
|
|
},
|
|
"client/src/Pages/v1/Maintenance/CreateMaintenance": {
|
|
"path": "client/src/Pages/v1/Maintenance/CreateMaintenance",
|
|
"fileName": "CreateMaintenance",
|
|
"cellName": "CreateMaintenance",
|
|
"cellId": "6f7119ac-d65a-4fdf-a6f2-31052e0f5549",
|
|
"visible": true,
|
|
"parentCellId": "8021b55d-2d3a-4416-b598-e134e76c9434",
|
|
"children": [
|
|
"client/src/Pages/v1/Maintenance/CreateMaintenance/index.jsx",
|
|
"client/src/Pages/v1/Maintenance/CreateMaintenance/hooks"
|
|
]
|
|
},
|
|
"client/src/Pages/v1/Maintenance/CreateMaintenance/hooks": {
|
|
"path": "client/src/Pages/v1/Maintenance/CreateMaintenance/hooks",
|
|
"fileName": "hooks",
|
|
"cellName": "hooks",
|
|
"cellId": "015a17fc-3fcf-45e0-8936-19f5e2ca86a3",
|
|
"visible": true,
|
|
"parentCellId": "6f7119ac-d65a-4fdf-a6f2-31052e0f5549",
|
|
"children": [
|
|
"client/src/Pages/v1/Maintenance/CreateMaintenance/hooks/useMaintenanceActions.jsx"
|
|
]
|
|
},
|
|
"client/src/Pages/v1/Maintenance/CreateMaintenance/hooks/useMaintenanceActions.jsx": {
|
|
"path": "client/src/Pages/v1/Maintenance/CreateMaintenance/hooks/useMaintenanceActions.jsx",
|
|
"fileName": "useMaintenanceActions.jsx",
|
|
"cellName": "useMaintenanceActions.jsx",
|
|
"cellId": "6ad0396e-9b38-4f5d-9ad9-6c9fcb4434f4",
|
|
"visible": true,
|
|
"parentCellId": "015a17fc-3fcf-45e0-8936-19f5e2ca86a3",
|
|
"children": [
|
|
"client/src/Pages/v1/Maintenance/CreateMaintenance/hooks/useMaintenanceActions.jsx-simstep-5e0d7085-099b-478a-afaa-47ad4dd07043"
|
|
]
|
|
},
|
|
"client/src/Pages/v1/Maintenance/CreateMaintenance/index.jsx": {
|
|
"path": "client/src/Pages/v1/Maintenance/CreateMaintenance/index.jsx",
|
|
"fileName": "index.jsx",
|
|
"cellName": "index.jsx",
|
|
"cellId": "92c244d2-e6a7-4804-a643-1e8d36baf9c6",
|
|
"visible": true,
|
|
"parentCellId": "6f7119ac-d65a-4fdf-a6f2-31052e0f5549",
|
|
"children": [
|
|
"client/src/Pages/v1/Maintenance/CreateMaintenance/index.jsx-simstep-2401ef7a-8d8e-4056-868a-547ab213daf1",
|
|
"client/src/Pages/v1/Maintenance/CreateMaintenance/index.jsx-simstep-ebe8fd52-f2a1-4a98-a71b-b04d6f4cdadc"
|
|
]
|
|
},
|
|
"client/src/Pages/v1/Maintenance/MaintenanceTable": {
|
|
"path": "client/src/Pages/v1/Maintenance/MaintenanceTable",
|
|
"fileName": "MaintenanceTable",
|
|
"cellName": "MaintenanceTable",
|
|
"cellId": "5ad4d33f-0932-479c-bb57-22ce6405758f",
|
|
"visible": true,
|
|
"parentCellId": "8021b55d-2d3a-4416-b598-e134e76c9434",
|
|
"children": [
|
|
"client/src/Pages/v1/Maintenance/MaintenanceTable/index.jsx"
|
|
]
|
|
},
|
|
"client/src/Pages/v1/Maintenance/MaintenanceTable/index.jsx": {
|
|
"path": "client/src/Pages/v1/Maintenance/MaintenanceTable/index.jsx",
|
|
"fileName": "index.jsx",
|
|
"cellName": "index.jsx",
|
|
"cellId": "e7ec5ca9-6d25-4bf2-9695-639556f7d141",
|
|
"visible": true,
|
|
"parentCellId": "5ad4d33f-0932-479c-bb57-22ce6405758f",
|
|
"children": [
|
|
"client/src/Pages/v1/Maintenance/MaintenanceTable/index.jsx-simstep-acf97639-e291-4ca6-81a6-d0487397f42a"
|
|
]
|
|
},
|
|
"client/src/Pages/v1/Maintenance/index.jsx": {
|
|
"path": "client/src/Pages/v1/Maintenance/index.jsx",
|
|
"fileName": "index.jsx",
|
|
"cellName": "index.jsx",
|
|
"cellId": "1eae6263-aaa2-4206-b92e-1e67f529c1c9",
|
|
"visible": true,
|
|
"parentCellId": "8021b55d-2d3a-4416-b598-e134e76c9434",
|
|
"children": [
|
|
"client/src/Pages/v1/Maintenance/index.jsx-simstep-82b5ea14-bb00-4511-aba4-76196029fd81"
|
|
]
|
|
},
|
|
"client/src/Pages/v1/Notifications": {
|
|
"path": "client/src/Pages/v1/Notifications",
|
|
"fileName": "Notifications",
|
|
"cellName": "Notifications",
|
|
"cellId": "b3575a92-df07-4cf7-810f-8e5e0672d666",
|
|
"visible": true,
|
|
"parentCellId": "1a083b4a-787c-4eb4-8029-6700de987679",
|
|
"children": [
|
|
"client/src/Pages/v1/Notifications/create"
|
|
]
|
|
},
|
|
"client/src/Pages/v1/Notifications/create": {
|
|
"path": "client/src/Pages/v1/Notifications/create",
|
|
"fileName": "create",
|
|
"cellName": "create",
|
|
"cellId": "a6fb23f0-73bc-40ee-bb3c-ed93605a2bcb",
|
|
"visible": true,
|
|
"parentCellId": "b3575a92-df07-4cf7-810f-8e5e0672d666",
|
|
"children": [
|
|
"client/src/Pages/v1/Notifications/create/index.jsx"
|
|
]
|
|
},
|
|
"client/src/Pages/v1/Notifications/create/index.jsx": {
|
|
"path": "client/src/Pages/v1/Notifications/create/index.jsx",
|
|
"fileName": "index.jsx",
|
|
"cellName": "index.jsx",
|
|
"cellId": "b71b02fb-d08e-4fcf-b959-de1b9547d9c2",
|
|
"visible": true,
|
|
"parentCellId": "a6fb23f0-73bc-40ee-bb3c-ed93605a2bcb",
|
|
"children": [
|
|
"client/src/Pages/v1/Notifications/create/index.jsx-simstep-e924ec15-1bea-4e3b-befb-a8bf30cbf740"
|
|
]
|
|
},
|
|
"client/src/Pages/v1/PageSpeed": {
|
|
"path": "client/src/Pages/v1/PageSpeed",
|
|
"fileName": "PageSpeed",
|
|
"cellName": "PageSpeed",
|
|
"cellId": "043d3dac-d4bb-449b-a3a7-270d53b66dac",
|
|
"visible": true,
|
|
"parentCellId": "1a083b4a-787c-4eb4-8029-6700de987679",
|
|
"children": [
|
|
"client/src/Pages/v1/PageSpeed/Create",
|
|
"client/src/Pages/v1/PageSpeed/Details"
|
|
]
|
|
},
|
|
"client/src/Pages/v1/PageSpeed/Create": {
|
|
"path": "client/src/Pages/v1/PageSpeed/Create",
|
|
"fileName": "Create",
|
|
"cellName": "Create",
|
|
"cellId": "414c500b-7b68-42ba-8110-e855efbee750",
|
|
"visible": true,
|
|
"parentCellId": "043d3dac-d4bb-449b-a3a7-270d53b66dac",
|
|
"children": [
|
|
"client/src/Pages/v1/PageSpeed/Create/index.jsx"
|
|
]
|
|
},
|
|
"client/src/Pages/v1/PageSpeed/Create/index.jsx": {
|
|
"path": "client/src/Pages/v1/PageSpeed/Create/index.jsx",
|
|
"fileName": "index.jsx",
|
|
"cellName": "index.jsx",
|
|
"cellId": "5ffe0baa-054a-4e5b-8b29-1254f07ea975",
|
|
"visible": true,
|
|
"parentCellId": "414c500b-7b68-42ba-8110-e855efbee750",
|
|
"children": [
|
|
"client/src/Pages/v1/PageSpeed/Create/index.jsx-simstep-b0cc6e6a-961e-4ea9-aa8a-6bfa44d6ba12"
|
|
]
|
|
},
|
|
"client/src/Pages/v1/PageSpeed/Details": {
|
|
"path": "client/src/Pages/v1/PageSpeed/Details",
|
|
"fileName": "Details",
|
|
"cellName": "Details",
|
|
"cellId": "581b4919-8b0c-4f0d-ae67-ad6de11d8c8b",
|
|
"visible": true,
|
|
"parentCellId": "043d3dac-d4bb-449b-a3a7-270d53b66dac",
|
|
"children": [
|
|
"client/src/Pages/v1/PageSpeed/Details/index.jsx"
|
|
]
|
|
},
|
|
"client/src/Pages/v1/PageSpeed/Details/index.jsx": {
|
|
"path": "client/src/Pages/v1/PageSpeed/Details/index.jsx",
|
|
"fileName": "index.jsx",
|
|
"cellName": "index.jsx",
|
|
"cellId": "c4a7bb58-1d9c-4690-b6b8-460c1cc33702",
|
|
"visible": true,
|
|
"parentCellId": "581b4919-8b0c-4f0d-ae67-ad6de11d8c8b",
|
|
"children": [
|
|
"client/src/Pages/v1/PageSpeed/Details/index.jsx-simstep-0ec0eb06-05eb-4204-b077-9e47eb2cc316"
|
|
]
|
|
},
|
|
"client/src/Pages/v1/Settings": {
|
|
"path": "client/src/Pages/v1/Settings",
|
|
"fileName": "Settings",
|
|
"cellName": "Settings",
|
|
"cellId": "50f77798-f41b-4f5b-b096-7afc921a0419",
|
|
"visible": true,
|
|
"parentCellId": "1a083b4a-787c-4eb4-8029-6700de987679",
|
|
"children": [
|
|
"client/src/Pages/v1/Settings/index.jsx",
|
|
"client/src/Pages/v1/Settings/SettingsEmail.jsx"
|
|
]
|
|
},
|
|
"client/src/Pages/v1/Settings/SettingsEmail.jsx": {
|
|
"path": "client/src/Pages/v1/Settings/SettingsEmail.jsx",
|
|
"fileName": "SettingsEmail.jsx",
|
|
"cellName": "SettingsEmail.jsx",
|
|
"cellId": "d8aa5b9e-f2a7-44c8-8813-d79c3f3238ee",
|
|
"visible": true,
|
|
"parentCellId": "50f77798-f41b-4f5b-b096-7afc921a0419",
|
|
"children": [
|
|
"client/src/Pages/v1/Settings/SettingsEmail.jsx-simstep-ae5c5146-4dbb-4612-9d23-086e57f72474"
|
|
]
|
|
},
|
|
"client/src/Pages/v1/Settings/index.jsx": {
|
|
"path": "client/src/Pages/v1/Settings/index.jsx",
|
|
"fileName": "index.jsx",
|
|
"cellName": "index.jsx",
|
|
"cellId": "d4b34195-7e1e-47a0-9303-603987c81f95",
|
|
"visible": true,
|
|
"parentCellId": "50f77798-f41b-4f5b-b096-7afc921a0419",
|
|
"children": [
|
|
"client/src/Pages/v1/Settings/index.jsx-simstep-64e9f1af-13b7-4361-a2a9-3f45760e316d"
|
|
]
|
|
},
|
|
"client/src/Pages/v1/StatusPage": {
|
|
"path": "client/src/Pages/v1/StatusPage",
|
|
"fileName": "StatusPage",
|
|
"cellName": "StatusPage",
|
|
"cellId": "9d662180-8b65-4426-ad37-cfed4bc01fb4",
|
|
"visible": true,
|
|
"parentCellId": "1a083b4a-787c-4eb4-8029-6700de987679",
|
|
"children": [
|
|
"client/src/Pages/v1/StatusPage/Create",
|
|
"client/src/Pages/v1/StatusPage/Status"
|
|
]
|
|
},
|
|
"client/src/Pages/v1/StatusPage/Create": {
|
|
"path": "client/src/Pages/v1/StatusPage/Create",
|
|
"fileName": "Create",
|
|
"cellName": "Create",
|
|
"cellId": "08602a28-f073-484e-9403-7eb798126dd4",
|
|
"visible": true,
|
|
"parentCellId": "9d662180-8b65-4426-ad37-cfed4bc01fb4",
|
|
"children": [
|
|
"client/src/Pages/v1/StatusPage/Create/index.jsx",
|
|
"client/src/Pages/v1/StatusPage/Create/Hooks"
|
|
]
|
|
},
|
|
"client/src/Pages/v1/StatusPage/Create/Hooks": {
|
|
"path": "client/src/Pages/v1/StatusPage/Create/Hooks",
|
|
"fileName": "Hooks",
|
|
"cellName": "Hooks",
|
|
"cellId": "56f6775e-9843-4ca2-bc8c-1c263b6c35e9",
|
|
"visible": true,
|
|
"parentCellId": "08602a28-f073-484e-9403-7eb798126dd4",
|
|
"children": [
|
|
"client/src/Pages/v1/StatusPage/Create/Hooks/useCreateStatusPage.jsx"
|
|
]
|
|
},
|
|
"client/src/Pages/v1/StatusPage/Create/Hooks/useCreateStatusPage.jsx": {
|
|
"path": "client/src/Pages/v1/StatusPage/Create/Hooks/useCreateStatusPage.jsx",
|
|
"fileName": "useCreateStatusPage.jsx",
|
|
"cellName": "useCreateStatusPage.jsx",
|
|
"cellId": "3945e05f-2d99-4d6d-9a3e-b6c75ea3c45a",
|
|
"visible": true,
|
|
"parentCellId": "56f6775e-9843-4ca2-bc8c-1c263b6c35e9",
|
|
"children": [
|
|
"client/src/Pages/v1/StatusPage/Create/Hooks/useCreateStatusPage.jsx-simstep-3c99ae6a-b671-4f47-bed0-ddccd8ff5d35"
|
|
]
|
|
},
|
|
"client/src/Pages/v1/StatusPage/Create/index.jsx": {
|
|
"path": "client/src/Pages/v1/StatusPage/Create/index.jsx",
|
|
"fileName": "index.jsx",
|
|
"cellName": "index.jsx",
|
|
"cellId": "e2d2bbf6-dffd-4edf-8c5d-34088d9d4745",
|
|
"visible": true,
|
|
"parentCellId": "08602a28-f073-484e-9403-7eb798126dd4",
|
|
"children": [
|
|
"client/src/Pages/v1/StatusPage/Create/index.jsx-simstep-de7b5d1f-b370-42a4-a410-4178f1e2d3a6"
|
|
]
|
|
},
|
|
"client/src/Pages/v1/StatusPage/Status": {
|
|
"path": "client/src/Pages/v1/StatusPage/Status",
|
|
"fileName": "Status",
|
|
"cellName": "Status",
|
|
"cellId": "8ef70566-37d9-48fb-b5e8-37e5b68768a2",
|
|
"visible": true,
|
|
"parentCellId": "9d662180-8b65-4426-ad37-cfed4bc01fb4",
|
|
"children": [
|
|
"client/src/Pages/v1/StatusPage/Status/index.jsx",
|
|
"client/src/Pages/v1/StatusPage/Status/Hooks"
|
|
]
|
|
},
|
|
"client/src/Pages/v1/StatusPage/Status/Hooks": {
|
|
"path": "client/src/Pages/v1/StatusPage/Status/Hooks",
|
|
"fileName": "Hooks",
|
|
"cellName": "Hooks",
|
|
"cellId": "79da0721-d810-4f7f-9cf9-3ea462bf0bff",
|
|
"visible": true,
|
|
"parentCellId": "8ef70566-37d9-48fb-b5e8-37e5b68768a2",
|
|
"children": [
|
|
"client/src/Pages/v1/StatusPage/Status/Hooks/useStatusPageFetch.jsx"
|
|
]
|
|
},
|
|
"client/src/Pages/v1/StatusPage/Status/Hooks/useStatusPageFetch.jsx": {
|
|
"path": "client/src/Pages/v1/StatusPage/Status/Hooks/useStatusPageFetch.jsx",
|
|
"fileName": "useStatusPageFetch.jsx",
|
|
"cellName": "useStatusPageFetch.jsx",
|
|
"cellId": "5b2cdab8-66f1-40a1-9621-0efaf54e04ae",
|
|
"visible": true,
|
|
"parentCellId": "79da0721-d810-4f7f-9cf9-3ea462bf0bff",
|
|
"children": [
|
|
"client/src/Pages/v1/StatusPage/Status/Hooks/useStatusPageFetch.jsx-simstep-b57bb249-9066-454e-aa8c-89108fdfcc2e"
|
|
]
|
|
},
|
|
"client/src/Pages/v1/StatusPage/Status/index.jsx": {
|
|
"path": "client/src/Pages/v1/StatusPage/Status/index.jsx",
|
|
"fileName": "index.jsx",
|
|
"cellName": "index.jsx",
|
|
"cellId": "e1e6f5e0-fd8c-4260-aa4f-cdb096c6b1c3",
|
|
"visible": true,
|
|
"parentCellId": "8ef70566-37d9-48fb-b5e8-37e5b68768a2",
|
|
"children": [
|
|
"client/src/Pages/v1/StatusPage/Status/index.jsx-simstep-3d51e811-a659-442e-97e0-00798cd15647"
|
|
]
|
|
},
|
|
"client/src/Pages/v1/Uptime": {
|
|
"path": "client/src/Pages/v1/Uptime",
|
|
"fileName": "Uptime",
|
|
"cellName": "Uptime",
|
|
"cellId": "7090fcdb-09be-4c85-86fd-e73553bbb2ff",
|
|
"visible": true,
|
|
"parentCellId": "1a083b4a-787c-4eb4-8029-6700de987679",
|
|
"children": [
|
|
"client/src/Pages/v1/Uptime/Create",
|
|
"client/src/Pages/v1/Uptime/Details",
|
|
"client/src/Pages/v1/Uptime/BulkImport"
|
|
]
|
|
},
|
|
"client/src/Pages/v1/Uptime/BulkImport": {
|
|
"path": "client/src/Pages/v1/Uptime/BulkImport",
|
|
"fileName": "BulkImport",
|
|
"cellName": "BulkImport",
|
|
"cellId": "56dae13e-5735-4089-a9a4-e18be315aff7",
|
|
"visible": true,
|
|
"parentCellId": "7090fcdb-09be-4c85-86fd-e73553bbb2ff",
|
|
"children": [
|
|
"client/src/Pages/v1/Uptime/BulkImport/index.jsx",
|
|
"client/src/Pages/v1/Uptime/BulkImport/Upload.jsx"
|
|
]
|
|
},
|
|
"client/src/Pages/v1/Uptime/BulkImport/Upload.jsx": {
|
|
"path": "client/src/Pages/v1/Uptime/BulkImport/Upload.jsx",
|
|
"fileName": "Upload.jsx",
|
|
"cellName": "Upload.jsx",
|
|
"cellId": "cd84476a-1c8b-4781-811f-58fb9944365b",
|
|
"visible": true,
|
|
"parentCellId": "56dae13e-5735-4089-a9a4-e18be315aff7",
|
|
"children": [
|
|
"client/src/Pages/v1/Uptime/BulkImport/Upload.jsx-simstep-bbd04d55-fc6a-4ba8-bcde-5a4dc263d6eb"
|
|
]
|
|
},
|
|
"client/src/Pages/v1/Uptime/BulkImport/index.jsx": {
|
|
"path": "client/src/Pages/v1/Uptime/BulkImport/index.jsx",
|
|
"fileName": "index.jsx",
|
|
"cellName": "index.jsx",
|
|
"cellId": "29b6ad3c-9538-47bc-8796-aab942dc4b71",
|
|
"visible": true,
|
|
"parentCellId": "56dae13e-5735-4089-a9a4-e18be315aff7",
|
|
"children": [
|
|
"client/src/Pages/v1/Uptime/BulkImport/index.jsx-simstep-0139fcaa-eb46-4176-b7bd-1cb15e7f1f4c",
|
|
"client/src/Pages/v1/Uptime/BulkImport/index.jsx-simstep-72b3f16d-290d-4a61-8748-2ad90d63ec68"
|
|
]
|
|
},
|
|
"client/src/Pages/v1/Uptime/Create": {
|
|
"path": "client/src/Pages/v1/Uptime/Create",
|
|
"fileName": "Create",
|
|
"cellName": "Create",
|
|
"cellId": "3dba5acc-cf25-40b7-ad21-9cd715454cd5",
|
|
"visible": true,
|
|
"parentCellId": "7090fcdb-09be-4c85-86fd-e73553bbb2ff",
|
|
"children": [
|
|
"client/src/Pages/v1/Uptime/Create/index.jsx"
|
|
]
|
|
},
|
|
"client/src/Pages/v1/Uptime/Create/index.jsx": {
|
|
"path": "client/src/Pages/v1/Uptime/Create/index.jsx",
|
|
"fileName": "index.jsx",
|
|
"cellName": "index.jsx",
|
|
"cellId": "391ad99e-3114-4f54-a6ca-fd89b33c7e06",
|
|
"visible": true,
|
|
"parentCellId": "3dba5acc-cf25-40b7-ad21-9cd715454cd5",
|
|
"children": [
|
|
"client/src/Pages/v1/Uptime/Create/index.jsx-simstep-ab5de0b9-c70d-492c-98d9-8ddee66284ad",
|
|
"client/src/Pages/v1/Uptime/Create/index.jsx-simstep-e02ddf57-270e-4f71-b4c4-d5183bb7879a"
|
|
]
|
|
},
|
|
"client/src/Pages/v1/Uptime/Details": {
|
|
"path": "client/src/Pages/v1/Uptime/Details",
|
|
"fileName": "Details",
|
|
"cellName": "Details",
|
|
"cellId": "273f3009-69d0-46fe-af57-3cd94a24b55b",
|
|
"visible": true,
|
|
"parentCellId": "7090fcdb-09be-4c85-86fd-e73553bbb2ff",
|
|
"children": [
|
|
"client/src/Pages/v1/Uptime/Details/index.jsx",
|
|
"client/src/Pages/v1/Uptime/Details/Components"
|
|
]
|
|
},
|
|
"client/src/Pages/v1/Uptime/Details/Components": {
|
|
"path": "client/src/Pages/v1/Uptime/Details/Components",
|
|
"fileName": "Components",
|
|
"cellName": "Components",
|
|
"cellId": "6aed78bb-62f1-4ac1-9b9a-9d5977e87404",
|
|
"visible": true,
|
|
"parentCellId": "273f3009-69d0-46fe-af57-3cd94a24b55b",
|
|
"children": [
|
|
"client/src/Pages/v1/Uptime/Details/Components/ResponseTable"
|
|
]
|
|
},
|
|
"client/src/Pages/v1/Uptime/Details/Components/ResponseTable": {
|
|
"path": "client/src/Pages/v1/Uptime/Details/Components/ResponseTable",
|
|
"fileName": "ResponseTable",
|
|
"cellName": "ResponseTable",
|
|
"cellId": "5ac0878f-d238-4763-8464-a85b4885a40f",
|
|
"visible": true,
|
|
"parentCellId": "6aed78bb-62f1-4ac1-9b9a-9d5977e87404",
|
|
"children": [
|
|
"client/src/Pages/v1/Uptime/Details/Components/ResponseTable/index.jsx"
|
|
]
|
|
},
|
|
"client/src/Pages/v1/Uptime/Details/Components/ResponseTable/index.jsx": {
|
|
"path": "client/src/Pages/v1/Uptime/Details/Components/ResponseTable/index.jsx",
|
|
"fileName": "index.jsx",
|
|
"cellName": "index.jsx",
|
|
"cellId": "d3f74ac7-3b9a-4cae-8d77-a0d5d605bb27",
|
|
"visible": true,
|
|
"parentCellId": "5ac0878f-d238-4763-8464-a85b4885a40f",
|
|
"children": [
|
|
"client/src/Pages/v1/Uptime/Details/Components/ResponseTable/index.jsx-simstep-2b1651cd-2e70-4cc6-b2bb-23f94fa73d66"
|
|
]
|
|
},
|
|
"client/src/Pages/v1/Uptime/Details/index.jsx": {
|
|
"path": "client/src/Pages/v1/Uptime/Details/index.jsx",
|
|
"fileName": "index.jsx",
|
|
"cellName": "index.jsx",
|
|
"cellId": "1807d5b9-54be-430b-8997-cada4dd9b521",
|
|
"visible": true,
|
|
"parentCellId": "273f3009-69d0-46fe-af57-3cd94a24b55b",
|
|
"children": [
|
|
"client/src/Pages/v1/Uptime/Details/index.jsx-simstep-35195328-9847-4678-b014-9331553f0d19"
|
|
]
|
|
},
|
|
"client/src/Routes": {
|
|
"path": "client/src/Routes",
|
|
"fileName": "Routes",
|
|
"cellName": "Routes",
|
|
"cellId": "987f145b-5df6-4c30-bf1c-2a2d2b0e5cdc",
|
|
"visible": true,
|
|
"parentCellId": "d3264577-10f0-42fe-9411-7e9df0754d1e",
|
|
"children": [
|
|
"client/src/Routes/index.jsx"
|
|
]
|
|
},
|
|
"client/src/Routes/index.jsx": {
|
|
"path": "client/src/Routes/index.jsx",
|
|
"fileName": "index.jsx",
|
|
"cellName": "index.jsx",
|
|
"cellId": "c4d7e7dd-75b1-44f1-a34a-6ed290a8e562",
|
|
"visible": true,
|
|
"parentCellId": "987f145b-5df6-4c30-bf1c-2a2d2b0e5cdc",
|
|
"children": [
|
|
"client/src/Routes/index.jsx-simstep-132354d7-df7a-4e03-9d00-16d54f836a1b",
|
|
"client/src/Routes/index.jsx-simstep-a29da01e-8c5a-4e6d-8d3c-e49af528e4fa"
|
|
]
|
|
},
|
|
"client/src/Utils": {
|
|
"path": "client/src/Utils",
|
|
"fileName": "Utils",
|
|
"cellName": "Utils",
|
|
"cellId": "02b07589-ec21-4366-b7d2-9071e8f3bad8",
|
|
"visible": true,
|
|
"parentCellId": "d3264577-10f0-42fe-9411-7e9df0754d1e",
|
|
"children": [
|
|
"client/src/Utils/NetworkService.js"
|
|
]
|
|
},
|
|
"client/src/Utils/NetworkService.js": {
|
|
"path": "client/src/Utils/NetworkService.js",
|
|
"fileName": "NetworkService.js",
|
|
"cellName": "NetworkService.js",
|
|
"cellId": "16731e9d-3f73-4055-9d79-5ca9be679f68",
|
|
"visible": true,
|
|
"parentCellId": "02b07589-ec21-4366-b7d2-9071e8f3bad8",
|
|
"children": [
|
|
"client/src/Utils/NetworkService.js-simstep-14e9986b-c6ce-475e-97ed-da1fa2b6968d",
|
|
"client/src/Utils/NetworkService.js-simstep-2fc087b3-033d-4cf5-81f2-e35b99a14bce"
|
|
]
|
|
},
|
|
"server": {
|
|
"path": "server",
|
|
"fileName": "server",
|
|
"cellName": "server",
|
|
"cellId": "98af25c7-efc2-43d2-a273-c8da4e1038ad",
|
|
"visible": true,
|
|
"children": [
|
|
"server/src"
|
|
]
|
|
},
|
|
"server/src": {
|
|
"path": "server/src",
|
|
"fileName": "src",
|
|
"cellName": "src",
|
|
"cellId": "35864a2c-7bd0-4428-84fc-c0aa90c7f1be",
|
|
"visible": true,
|
|
"parentCellId": "98af25c7-efc2-43d2-a273-c8da4e1038ad",
|
|
"children": [
|
|
"server/src/routes",
|
|
"server/src/controllers",
|
|
"server/src/service",
|
|
"server/src/db",
|
|
"server/src/config",
|
|
"server/src/middleware"
|
|
]
|
|
},
|
|
"server/src/config": {
|
|
"path": "server/src/config",
|
|
"fileName": "config",
|
|
"cellName": "config",
|
|
"cellId": "fe47576c-c186-4950-82a5-b2fd24eb2561",
|
|
"visible": true,
|
|
"parentCellId": "35864a2c-7bd0-4428-84fc-c0aa90c7f1be",
|
|
"children": [
|
|
"server/src/config/routes.js"
|
|
]
|
|
},
|
|
"server/src/config/routes.js": {
|
|
"path": "server/src/config/routes.js",
|
|
"fileName": "routes.js",
|
|
"cellName": "routes.js",
|
|
"cellId": "cb53d612-9b89-47da-911c-165d0382a7d8",
|
|
"visible": true,
|
|
"parentCellId": "fe47576c-c186-4950-82a5-b2fd24eb2561",
|
|
"children": [
|
|
"server/src/config/routes.js-simstep-3e93ef65-8e2c-405b-8dc1-56d8e93937b3"
|
|
]
|
|
},
|
|
"server/src/controllers": {
|
|
"path": "server/src/controllers",
|
|
"fileName": "controllers",
|
|
"cellName": "controllers",
|
|
"cellId": "478e649c-1d1b-41d2-9b7b-6927e1dec7e1",
|
|
"visible": true,
|
|
"parentCellId": "35864a2c-7bd0-4428-84fc-c0aa90c7f1be",
|
|
"children": [
|
|
"server/src/controllers/v1"
|
|
]
|
|
},
|
|
"server/src/controllers/v1": {
|
|
"path": "server/src/controllers/v1",
|
|
"fileName": "v1",
|
|
"cellName": "v1",
|
|
"cellId": "fc591f7a-d4ac-4565-949d-a87a58a79bbc",
|
|
"visible": true,
|
|
"parentCellId": "478e649c-1d1b-41d2-9b7b-6927e1dec7e1",
|
|
"children": [
|
|
"server/src/controllers/v1/monitorController.js",
|
|
"server/src/controllers/v1/notificationController.js",
|
|
"server/src/controllers/v1/statusPageController.js",
|
|
"server/src/controllers/v1/checkController.js",
|
|
"server/src/controllers/v1/maintenanceWindowController.js",
|
|
"server/src/controllers/v1/inviteController.js",
|
|
"server/src/controllers/v1/settingsController.js",
|
|
"server/src/controllers/v1/diagnosticController.js"
|
|
]
|
|
},
|
|
"server/src/controllers/v1/checkController.js": {
|
|
"path": "server/src/controllers/v1/checkController.js",
|
|
"fileName": "checkController.js",
|
|
"cellName": "checkController.js",
|
|
"cellId": "d983e54f-2fbe-496a-932d-a827e1124804",
|
|
"visible": true,
|
|
"parentCellId": "fc591f7a-d4ac-4565-949d-a87a58a79bbc",
|
|
"children": [
|
|
"server/src/controllers/v1/checkController.js-simstep-5768fdc5-045c-48ef-b0c9-79769403648f"
|
|
]
|
|
},
|
|
"server/src/controllers/v1/diagnosticController.js": {
|
|
"path": "server/src/controllers/v1/diagnosticController.js",
|
|
"fileName": "diagnosticController.js",
|
|
"cellName": "diagnosticController.js",
|
|
"cellId": "5882419e-8a92-4edd-a71a-1252983f9af7",
|
|
"visible": true,
|
|
"parentCellId": "fc591f7a-d4ac-4565-949d-a87a58a79bbc"
|
|
},
|
|
"server/src/controllers/v1/inviteController.js": {
|
|
"path": "server/src/controllers/v1/inviteController.js",
|
|
"fileName": "inviteController.js",
|
|
"cellName": "inviteController.js",
|
|
"cellId": "6a186805-9d50-4bc3-9d56-e627a7ec2eb8",
|
|
"visible": true,
|
|
"parentCellId": "fc591f7a-d4ac-4565-949d-a87a58a79bbc"
|
|
},
|
|
"server/src/controllers/v1/maintenanceWindowController.js": {
|
|
"path": "server/src/controllers/v1/maintenanceWindowController.js",
|
|
"fileName": "maintenanceWindowController.js",
|
|
"cellName": "maintenanceWindowController.js",
|
|
"cellId": "a0cae18c-3c0e-40d3-ab03-eef7eace65d6",
|
|
"visible": true,
|
|
"parentCellId": "fc591f7a-d4ac-4565-949d-a87a58a79bbc",
|
|
"children": [
|
|
"server/src/controllers/v1/maintenanceWindowController.js-simstep-95fc1919-339d-4659-98cb-3dc50f662075",
|
|
"server/src/controllers/v1/maintenanceWindowController.js-simstep-1251da83-5949-4e24-a1d2-fc74ff785aa9"
|
|
]
|
|
},
|
|
"server/src/controllers/v1/monitorController.js": {
|
|
"path": "server/src/controllers/v1/monitorController.js",
|
|
"fileName": "monitorController.js",
|
|
"cellName": "monitorController.js",
|
|
"cellId": "341f2784-67ee-4477-9445-a8c240ee6261",
|
|
"visible": true,
|
|
"parentCellId": "fc591f7a-d4ac-4565-949d-a87a58a79bbc",
|
|
"children": [
|
|
"server/src/controllers/v1/monitorController.js-simstep-38fd069d-9c44-4078-954b-3a0899e9acf4",
|
|
"server/src/controllers/v1/monitorController.js-simstep-a3799570-64bf-481e-9ffe-31dbad8a36e4",
|
|
"server/src/controllers/v1/monitorController.js-simstep-f5377571-156f-4c5c-8bab-b6dacdf0fea6",
|
|
"server/src/controllers/v1/monitorController.js-simstep-d9db3f40-8add-4551-9323-274348b9800f",
|
|
"server/src/controllers/v1/monitorController.js-simstep-256095b8-5e3a-4c20-abd9-be9e6a9d0bad",
|
|
"server/src/controllers/v1/monitorController.js-simstep-60abdb27-4078-4678-a010-0f6938d4be48"
|
|
]
|
|
},
|
|
"server/src/controllers/v1/notificationController.js": {
|
|
"path": "server/src/controllers/v1/notificationController.js",
|
|
"fileName": "notificationController.js",
|
|
"cellName": "notificationController.js",
|
|
"cellId": "8e5941e1-e577-455f-bbf2-83a418ad5908",
|
|
"visible": true,
|
|
"parentCellId": "fc591f7a-d4ac-4565-949d-a87a58a79bbc"
|
|
},
|
|
"server/src/controllers/v1/settingsController.js": {
|
|
"path": "server/src/controllers/v1/settingsController.js",
|
|
"fileName": "settingsController.js",
|
|
"cellName": "settingsController.js",
|
|
"cellId": "a1fea5b0-fb7c-4189-9484-9d3312660767",
|
|
"visible": true,
|
|
"parentCellId": "fc591f7a-d4ac-4565-949d-a87a58a79bbc",
|
|
"children": [
|
|
"server/src/controllers/v1/settingsController.js-simstep-441b0c45-5f27-478d-8ca8-58fbd5f460ea",
|
|
"server/src/controllers/v1/settingsController.js-simstep-7632e8d2-4086-4169-ae3f-bfbf8d657987"
|
|
]
|
|
},
|
|
"server/src/controllers/v1/statusPageController.js": {
|
|
"path": "server/src/controllers/v1/statusPageController.js",
|
|
"fileName": "statusPageController.js",
|
|
"cellName": "statusPageController.js",
|
|
"cellId": "17a4f435-5a8e-4433-84a6-9ac17362709a",
|
|
"visible": true,
|
|
"parentCellId": "fc591f7a-d4ac-4565-949d-a87a58a79bbc",
|
|
"children": [
|
|
"server/src/controllers/v1/statusPageController.js-simstep-01694730-8a75-4949-8815-bb4d6e3e2b42",
|
|
"server/src/controllers/v1/statusPageController.js-simstep-2a115421-5175-4c8f-8cdd-62f3fe148af5",
|
|
"server/src/controllers/v1/statusPageController.js-simstep-5bdbd179-ce8f-4171-a073-af72a99b4468",
|
|
"server/src/controllers/v1/statusPageController.js-simstep-83224406-2f1d-4030-9beb-d65c2baf544d"
|
|
]
|
|
},
|
|
"server/src/db": {
|
|
"path": "server/src/db",
|
|
"fileName": "db",
|
|
"cellName": "db",
|
|
"cellId": "15ee5d81-a0cf-4614-80b8-7a1123ab20b8",
|
|
"visible": true,
|
|
"parentCellId": "35864a2c-7bd0-4428-84fc-c0aa90c7f1be",
|
|
"children": [
|
|
"server/src/db/v1",
|
|
"server/src/db/v2"
|
|
]
|
|
},
|
|
"server/src/db/v1": {
|
|
"path": "server/src/db/v1",
|
|
"fileName": "v1",
|
|
"cellName": "v1",
|
|
"cellId": "58c5a3fd-1e69-4ca4-a64e-314f5644bdaf",
|
|
"visible": true,
|
|
"parentCellId": "15ee5d81-a0cf-4614-80b8-7a1123ab20b8",
|
|
"children": [
|
|
"server/src/db/v1/modules"
|
|
]
|
|
},
|
|
"server/src/db/v1/modules": {
|
|
"path": "server/src/db/v1/modules",
|
|
"fileName": "modules",
|
|
"cellName": "modules",
|
|
"cellId": "82cb3dbe-c922-438a-a912-255376f4b380",
|
|
"visible": true,
|
|
"parentCellId": "58c5a3fd-1e69-4ca4-a64e-314f5644bdaf",
|
|
"children": [
|
|
"server/src/db/v1/modules/monitorModule.js",
|
|
"server/src/db/v1/modules/monitorModuleQueries.js",
|
|
"server/src/db/v1/modules/notificationModule.js",
|
|
"server/src/db/v1/modules/statusPageModule.js",
|
|
"server/src/db/v1/modules/checkModule.js",
|
|
"server/src/db/v1/modules/maintenanceWindowModule.js",
|
|
"server/src/db/v1/modules/inviteModule.js"
|
|
]
|
|
},
|
|
"server/src/db/v1/modules/checkModule.js": {
|
|
"path": "server/src/db/v1/modules/checkModule.js",
|
|
"fileName": "checkModule.js",
|
|
"cellName": "checkModule.js",
|
|
"cellId": "860b5eec-a1ce-4e1f-a316-e1586f03af96",
|
|
"visible": true,
|
|
"parentCellId": "82cb3dbe-c922-438a-a912-255376f4b380"
|
|
},
|
|
"server/src/db/v1/modules/inviteModule.js": {
|
|
"path": "server/src/db/v1/modules/inviteModule.js",
|
|
"fileName": "inviteModule.js",
|
|
"cellName": "inviteModule.js",
|
|
"cellId": "08853f8a-f596-4df0-9190-dad04f54caef",
|
|
"visible": true,
|
|
"parentCellId": "82cb3dbe-c922-438a-a912-255376f4b380"
|
|
},
|
|
"server/src/db/v1/modules/maintenanceWindowModule.js": {
|
|
"path": "server/src/db/v1/modules/maintenanceWindowModule.js",
|
|
"fileName": "maintenanceWindowModule.js",
|
|
"cellName": "maintenanceWindowModule.js",
|
|
"cellId": "95ed6c41-ebeb-4c08-98c3-bab8b426789e",
|
|
"visible": true,
|
|
"parentCellId": "82cb3dbe-c922-438a-a912-255376f4b380",
|
|
"children": [
|
|
"server/src/db/v1/modules/maintenanceWindowModule.js-simstep-a3c47fd4-c701-46c2-9aff-94a667b3e368",
|
|
"server/src/db/v1/modules/maintenanceWindowModule.js-simstep-9bfbae5a-f487-40ef-86f5-04a1cc3c7662"
|
|
]
|
|
},
|
|
"server/src/db/v1/modules/monitorModule.js": {
|
|
"path": "server/src/db/v1/modules/monitorModule.js",
|
|
"fileName": "monitorModule.js",
|
|
"cellName": "monitorModule.js",
|
|
"cellId": "630b3ece-2648-48d5-99b5-ef9611de2ad5",
|
|
"visible": true,
|
|
"parentCellId": "82cb3dbe-c922-438a-a912-255376f4b380",
|
|
"children": [
|
|
"server/src/db/v1/modules/monitorModule.js-simstep-ca3ad309-323a-418d-a171-c16f56fae23c",
|
|
"server/src/db/v1/modules/monitorModule.js-simstep-8502ae1f-f029-446e-9dde-59c2aba87a8a",
|
|
"server/src/db/v1/modules/monitorModule.js-simstep-70f18c21-2918-402e-9c35-1bdce8bc82d4"
|
|
]
|
|
},
|
|
"server/src/db/v1/modules/monitorModuleQueries.js": {
|
|
"path": "server/src/db/v1/modules/monitorModuleQueries.js",
|
|
"fileName": "monitorModuleQueries.js",
|
|
"cellName": "monitorModuleQueries.js",
|
|
"cellId": "a0b22a5a-59e1-47e3-8218-a4ad083b1b71",
|
|
"visible": true,
|
|
"parentCellId": "82cb3dbe-c922-438a-a912-255376f4b380"
|
|
},
|
|
"server/src/db/v1/modules/notificationModule.js": {
|
|
"path": "server/src/db/v1/modules/notificationModule.js",
|
|
"fileName": "notificationModule.js",
|
|
"cellName": "notificationModule.js",
|
|
"cellId": "62daeac4-9402-448a-972c-cb8cb760671c",
|
|
"visible": true,
|
|
"parentCellId": "82cb3dbe-c922-438a-a912-255376f4b380",
|
|
"children": [
|
|
"server/src/db/v1/modules/notificationModule.js-simstep-d29ab4ab-be50-4f17-af6e-2c61cec9d0ab"
|
|
]
|
|
},
|
|
"server/src/db/v1/modules/statusPageModule.js": {
|
|
"path": "server/src/db/v1/modules/statusPageModule.js",
|
|
"fileName": "statusPageModule.js",
|
|
"cellName": "statusPageModule.js",
|
|
"cellId": "f8541fe3-4bcf-4833-a226-66b5301adf58",
|
|
"visible": true,
|
|
"parentCellId": "82cb3dbe-c922-438a-a912-255376f4b380",
|
|
"children": [
|
|
"server/src/db/v1/modules/statusPageModule.js-simstep-b6fa93cd-6fca-4d9e-969a-5400e2437ee8",
|
|
"server/src/db/v1/modules/statusPageModule.js-simstep-ceb044e9-6545-4d04-bf79-ec8146eb8ec9"
|
|
]
|
|
},
|
|
"server/src/db/v2": {
|
|
"path": "server/src/db/v2",
|
|
"fileName": "v2",
|
|
"cellName": "v2",
|
|
"cellId": "e2f99143-54b7-44dc-b566-1c2fb901bd16",
|
|
"visible": true,
|
|
"parentCellId": "15ee5d81-a0cf-4614-80b8-7a1123ab20b8",
|
|
"children": [
|
|
"server/src/db/v2/models"
|
|
]
|
|
},
|
|
"server/src/db/v2/models": {
|
|
"path": "server/src/db/v2/models",
|
|
"fileName": "models",
|
|
"cellName": "models",
|
|
"cellId": "b53384d7-b989-4ac7-bd68-1c3621174ef4",
|
|
"visible": true,
|
|
"parentCellId": "e2f99143-54b7-44dc-b566-1c2fb901bd16",
|
|
"children": [
|
|
"server/src/db/v2/models/checks"
|
|
]
|
|
},
|
|
"server/src/db/v2/models/checks": {
|
|
"path": "server/src/db/v2/models/checks",
|
|
"fileName": "checks",
|
|
"cellName": "checks",
|
|
"cellId": "64e3bb0a-67f5-4269-9e7d-94fe91ac78fc",
|
|
"visible": true,
|
|
"parentCellId": "b53384d7-b989-4ac7-bd68-1c3621174ef4",
|
|
"children": [
|
|
"server/src/db/v2/models/checks/Check.ts"
|
|
]
|
|
},
|
|
"server/src/db/v2/models/checks/Check.ts": {
|
|
"path": "server/src/db/v2/models/checks/Check.ts",
|
|
"fileName": "Check.ts",
|
|
"cellName": "Check.ts",
|
|
"cellId": "1425ec43-f0f4-4c8b-a140-176c079219d6",
|
|
"visible": true,
|
|
"parentCellId": "64e3bb0a-67f5-4269-9e7d-94fe91ac78fc"
|
|
},
|
|
"server/src/middleware": {
|
|
"path": "server/src/middleware",
|
|
"fileName": "middleware",
|
|
"cellName": "middleware",
|
|
"cellId": "a968db5d-8f6d-4fd7-9df0-8b332b521703",
|
|
"visible": true,
|
|
"parentCellId": "35864a2c-7bd0-4428-84fc-c0aa90c7f1be",
|
|
"children": [
|
|
"server/src/middleware/v1"
|
|
]
|
|
},
|
|
"server/src/middleware/v1": {
|
|
"path": "server/src/middleware/v1",
|
|
"fileName": "v1",
|
|
"cellName": "v1",
|
|
"cellId": "09082f73-e215-465f-9206-0a963fb4c7cb",
|
|
"visible": true,
|
|
"parentCellId": "a968db5d-8f6d-4fd7-9df0-8b332b521703",
|
|
"children": [
|
|
"server/src/middleware/v1/isAllowed.js"
|
|
]
|
|
},
|
|
"server/src/middleware/v1/isAllowed.js": {
|
|
"path": "server/src/middleware/v1/isAllowed.js",
|
|
"fileName": "isAllowed.js",
|
|
"cellName": "isAllowed.js",
|
|
"cellId": "001fa2e4-eadd-4474-b2ec-79d7ea43465f",
|
|
"visible": true,
|
|
"parentCellId": "09082f73-e215-465f-9206-0a963fb4c7cb",
|
|
"children": [
|
|
"server/src/middleware/v1/isAllowed.js-simstep-50dd7316-7d01-43f7-9036-d97d51a9c178"
|
|
]
|
|
},
|
|
"server/src/routes": {
|
|
"path": "server/src/routes",
|
|
"fileName": "routes",
|
|
"cellName": "routes",
|
|
"cellId": "ffaaf471-ac3c-4ea3-a5a9-d5255169e54b",
|
|
"visible": true,
|
|
"parentCellId": "35864a2c-7bd0-4428-84fc-c0aa90c7f1be",
|
|
"children": [
|
|
"server/src/routes/v1"
|
|
]
|
|
},
|
|
"server/src/routes/v1": {
|
|
"path": "server/src/routes/v1",
|
|
"fileName": "v1",
|
|
"cellName": "v1",
|
|
"cellId": "d3375a20-2776-4771-b806-649bbeb541bd",
|
|
"visible": true,
|
|
"parentCellId": "ffaaf471-ac3c-4ea3-a5a9-d5255169e54b",
|
|
"children": [
|
|
"server/src/routes/v1/monitorRoute.js",
|
|
"server/src/routes/v1/notificationRoute.js",
|
|
"server/src/routes/v1/statusPageRoute.js",
|
|
"server/src/routes/v1/checkRoute.js",
|
|
"server/src/routes/v1/maintenanceWindowRoute.js",
|
|
"server/src/routes/v1/inviteRoute.js"
|
|
]
|
|
},
|
|
"server/src/routes/v1/checkRoute.js": {
|
|
"path": "server/src/routes/v1/checkRoute.js",
|
|
"fileName": "checkRoute.js",
|
|
"cellName": "checkRoute.js",
|
|
"cellId": "d18dbe1d-2f2c-4336-bd21-47c1670f7bab",
|
|
"visible": true,
|
|
"parentCellId": "d3375a20-2776-4771-b806-649bbeb541bd",
|
|
"children": [
|
|
"server/src/routes/v1/checkRoute.js-simstep-c5fd192f-ea28-48a0-b3e7-5bc04f521192"
|
|
]
|
|
},
|
|
"server/src/routes/v1/inviteRoute.js": {
|
|
"path": "server/src/routes/v1/inviteRoute.js",
|
|
"fileName": "inviteRoute.js",
|
|
"cellName": "inviteRoute.js",
|
|
"cellId": "9edafb8a-3661-4a7e-8510-a47f3cbc7564",
|
|
"visible": true,
|
|
"parentCellId": "d3375a20-2776-4771-b806-649bbeb541bd"
|
|
},
|
|
"server/src/routes/v1/maintenanceWindowRoute.js": {
|
|
"path": "server/src/routes/v1/maintenanceWindowRoute.js",
|
|
"fileName": "maintenanceWindowRoute.js",
|
|
"cellName": "maintenanceWindowRoute.js",
|
|
"cellId": "5f21f109-1967-416f-a649-9b48e78b90f6",
|
|
"visible": true,
|
|
"parentCellId": "d3375a20-2776-4771-b806-649bbeb541bd"
|
|
},
|
|
"server/src/routes/v1/monitorRoute.js": {
|
|
"path": "server/src/routes/v1/monitorRoute.js",
|
|
"fileName": "monitorRoute.js",
|
|
"cellName": "monitorRoute.js",
|
|
"cellId": "10611636-ec73-4a26-87a5-654ae64a4843",
|
|
"visible": true,
|
|
"parentCellId": "d3375a20-2776-4771-b806-649bbeb541bd",
|
|
"children": [
|
|
"server/src/routes/v1/monitorRoute.js-simstep-07bf3d83-047d-4e51-9f96-8c9c64848500",
|
|
"server/src/routes/v1/monitorRoute.js-simstep-63d8d81f-f436-4594-a6eb-8c0fd2110bc1"
|
|
]
|
|
},
|
|
"server/src/routes/v1/notificationRoute.js": {
|
|
"path": "server/src/routes/v1/notificationRoute.js",
|
|
"fileName": "notificationRoute.js",
|
|
"cellName": "notificationRoute.js",
|
|
"cellId": "96250197-23af-4059-9904-fd6751f70ad5",
|
|
"visible": true,
|
|
"parentCellId": "d3375a20-2776-4771-b806-649bbeb541bd",
|
|
"children": [
|
|
"server/src/routes/v1/notificationRoute.js-simstep-2f9266c9-4cbc-4b50-a280-cf8b5800d540",
|
|
"server/src/routes/v1/notificationRoute.js-simstep-c1b17b64-90e9-48bc-8927-25d7ebfc3036"
|
|
]
|
|
},
|
|
"server/src/routes/v1/statusPageRoute.js": {
|
|
"path": "server/src/routes/v1/statusPageRoute.js",
|
|
"fileName": "statusPageRoute.js",
|
|
"cellName": "statusPageRoute.js",
|
|
"cellId": "773e1065-b0a5-46a9-b0cc-6b963f69f5cc",
|
|
"visible": true,
|
|
"parentCellId": "d3375a20-2776-4771-b806-649bbeb541bd",
|
|
"children": [
|
|
"server/src/routes/v1/statusPageRoute.js-simstep-84f11567-b3c4-42a2-aa7f-d78c1412099a",
|
|
"server/src/routes/v1/statusPageRoute.js-simstep-477c6821-b29b-4b38-8930-ced21b8a75e5"
|
|
]
|
|
},
|
|
"server/src/service": {
|
|
"path": "server/src/service",
|
|
"fileName": "service",
|
|
"cellName": "service",
|
|
"cellId": "99e9b746-7809-41f4-a433-1de7cc90574b",
|
|
"visible": true,
|
|
"parentCellId": "35864a2c-7bd0-4428-84fc-c0aa90c7f1be",
|
|
"children": [
|
|
"server/src/service/v1",
|
|
"server/src/service/v2"
|
|
]
|
|
},
|
|
"server/src/service/v1": {
|
|
"path": "server/src/service/v1",
|
|
"fileName": "v1",
|
|
"cellName": "v1",
|
|
"cellId": "bbbe53d6-f595-498a-ae45-e08611f39c3d",
|
|
"visible": true,
|
|
"parentCellId": "99e9b746-7809-41f4-a433-1de7cc90574b",
|
|
"children": [
|
|
"server/src/service/v1/business",
|
|
"server/src/service/v1/infrastructure"
|
|
]
|
|
},
|
|
"server/src/service/v1/business": {
|
|
"path": "server/src/service/v1/business",
|
|
"fileName": "business",
|
|
"cellName": "business",
|
|
"cellId": "87d3b101-9443-4ed4-9c4f-f759d41677eb",
|
|
"visible": true,
|
|
"parentCellId": "bbbe53d6-f595-498a-ae45-e08611f39c3d",
|
|
"children": [
|
|
"server/src/service/v1/business/monitorService.js",
|
|
"server/src/service/v1/business/checkService.js",
|
|
"server/src/service/v1/business/maintenanceWindowService.js",
|
|
"server/src/service/v1/business/inviteService.js",
|
|
"server/src/service/v1/business/diagnosticService.js"
|
|
]
|
|
},
|
|
"server/src/service/v1/business/checkService.js": {
|
|
"path": "server/src/service/v1/business/checkService.js",
|
|
"fileName": "checkService.js",
|
|
"cellName": "checkService.js",
|
|
"cellId": "f90db867-e1e7-4554-b446-fa78fc6a8578",
|
|
"visible": true,
|
|
"parentCellId": "87d3b101-9443-4ed4-9c4f-f759d41677eb",
|
|
"children": [
|
|
"server/src/service/v1/business/checkService.js-simstep-83fea05d-8306-4a73-a43f-882cdd14f50f"
|
|
]
|
|
},
|
|
"server/src/service/v1/business/diagnosticService.js": {
|
|
"path": "server/src/service/v1/business/diagnosticService.js",
|
|
"fileName": "diagnosticService.js",
|
|
"cellName": "diagnosticService.js",
|
|
"cellId": "643b26c1-3bfb-4c41-8179-96dfc237d99e",
|
|
"visible": true,
|
|
"parentCellId": "87d3b101-9443-4ed4-9c4f-f759d41677eb",
|
|
"children": [
|
|
"server/src/service/v1/business/diagnosticService.js-simstep-8fb704ca-67d9-437c-90d8-01302634d568"
|
|
]
|
|
},
|
|
"server/src/service/v1/business/inviteService.js": {
|
|
"path": "server/src/service/v1/business/inviteService.js",
|
|
"fileName": "inviteService.js",
|
|
"cellName": "inviteService.js",
|
|
"cellId": "570278b7-9b72-4299-9fd9-46b253b48e9b",
|
|
"visible": true,
|
|
"parentCellId": "87d3b101-9443-4ed4-9c4f-f759d41677eb",
|
|
"children": [
|
|
"server/src/service/v1/business/inviteService.js-simstep-55fe9963-30d2-47f8-859f-b485a77064c4",
|
|
"server/src/service/v1/business/inviteService.js-simstep-7d1f86f2-c8d5-48fb-a8c1-b337dc56271f"
|
|
]
|
|
},
|
|
"server/src/service/v1/business/maintenanceWindowService.js": {
|
|
"path": "server/src/service/v1/business/maintenanceWindowService.js",
|
|
"fileName": "maintenanceWindowService.js",
|
|
"cellName": "maintenanceWindowService.js",
|
|
"cellId": "26b8daff-aa48-4baa-9d6c-05f771bf0990",
|
|
"visible": true,
|
|
"parentCellId": "87d3b101-9443-4ed4-9c4f-f759d41677eb",
|
|
"children": [
|
|
"server/src/service/v1/business/maintenanceWindowService.js-simstep-6e2cf739-1514-4c37-9874-10b68a47010e"
|
|
]
|
|
},
|
|
"server/src/service/v1/business/monitorService.js": {
|
|
"path": "server/src/service/v1/business/monitorService.js",
|
|
"fileName": "monitorService.js",
|
|
"cellName": "monitorService.js",
|
|
"cellId": "b4e479df-9b21-4430-9383-84831f503c2e",
|
|
"visible": true,
|
|
"parentCellId": "87d3b101-9443-4ed4-9c4f-f759d41677eb",
|
|
"children": [
|
|
"server/src/service/v1/business/monitorService.js-simstep-2c7c3082-e4b6-4525-860f-2ffcd9e86db1",
|
|
"server/src/service/v1/business/monitorService.js-simstep-66fbf913-e662-4bd9-ada6-077be9e37f07",
|
|
"server/src/service/v1/business/monitorService.js-simstep-85cd1d5d-7ffb-49c5-aacb-907048003fc5"
|
|
]
|
|
},
|
|
"server/src/service/v1/infrastructure": {
|
|
"path": "server/src/service/v1/infrastructure",
|
|
"fileName": "infrastructure",
|
|
"cellName": "infrastructure",
|
|
"cellId": "1670815f-860d-4ea4-92e1-b238a799d3dc",
|
|
"visible": true,
|
|
"parentCellId": "bbbe53d6-f595-498a-ae45-e08611f39c3d",
|
|
"children": [
|
|
"server/src/service/v1/infrastructure/SuperSimpleQueue",
|
|
"server/src/service/v1/infrastructure/networkService.js",
|
|
"server/src/service/v1/infrastructure/statusService.js",
|
|
"server/src/service/v1/infrastructure/notificationService.js",
|
|
"server/src/service/v1/infrastructure/notificationUtils.js"
|
|
]
|
|
},
|
|
"server/src/service/v1/infrastructure/SuperSimpleQueue": {
|
|
"path": "server/src/service/v1/infrastructure/SuperSimpleQueue",
|
|
"fileName": "SuperSimpleQueue",
|
|
"cellName": "SuperSimpleQueue",
|
|
"cellId": "dda70a36-2d1d-4e46-8bcc-52d0d474bf7b",
|
|
"visible": true,
|
|
"parentCellId": "1670815f-860d-4ea4-92e1-b238a799d3dc",
|
|
"children": [
|
|
"server/src/service/v1/infrastructure/SuperSimpleQueue/SuperSimpleQueue.js",
|
|
"server/src/service/v1/infrastructure/SuperSimpleQueue/SuperSimpleQueueHelper.js"
|
|
]
|
|
},
|
|
"server/src/service/v1/infrastructure/SuperSimpleQueue/SuperSimpleQueue.js": {
|
|
"path": "server/src/service/v1/infrastructure/SuperSimpleQueue/SuperSimpleQueue.js",
|
|
"fileName": "SuperSimpleQueue.js",
|
|
"cellName": "SuperSimpleQueue.js",
|
|
"cellId": "d9c0127e-31aa-4509-b5c9-f7017d10d69a",
|
|
"visible": true,
|
|
"parentCellId": "dda70a36-2d1d-4e46-8bcc-52d0d474bf7b",
|
|
"children": [
|
|
"server/src/service/v1/infrastructure/SuperSimpleQueue/SuperSimpleQueue.js-simstep-2702bfca-7611-4562-8d3e-a05af8257871"
|
|
]
|
|
},
|
|
"server/src/service/v1/infrastructure/SuperSimpleQueue/SuperSimpleQueueHelper.js": {
|
|
"path": "server/src/service/v1/infrastructure/SuperSimpleQueue/SuperSimpleQueueHelper.js",
|
|
"fileName": "SuperSimpleQueueHelper.js",
|
|
"cellName": "SuperSimpleQueueHelper.js",
|
|
"cellId": "04c12e9a-e025-457c-a634-5f7472a42985",
|
|
"visible": true,
|
|
"parentCellId": "dda70a36-2d1d-4e46-8bcc-52d0d474bf7b",
|
|
"children": [
|
|
"server/src/service/v1/infrastructure/SuperSimpleQueue/SuperSimpleQueueHelper.js-simstep-e22a708a-a348-4775-8ee3-f32a35446e24",
|
|
"server/src/service/v1/infrastructure/SuperSimpleQueue/SuperSimpleQueueHelper.js-simstep-a47affaf-b952-46d6-9709-6120a77690e1",
|
|
"server/src/service/v1/infrastructure/SuperSimpleQueue/SuperSimpleQueueHelper.js-simstep-2127e749-80b4-499a-ae14-8dc2dcc9db9b",
|
|
"server/src/service/v1/infrastructure/SuperSimpleQueue/SuperSimpleQueueHelper.js-simstep-6ba6b9d1-5fc3-454e-8744-2022b5192ed9",
|
|
"server/src/service/v1/infrastructure/SuperSimpleQueue/SuperSimpleQueueHelper.js-simstep-e59fe64e-f06b-4855-b631-923bb5a68540"
|
|
]
|
|
},
|
|
"server/src/service/v1/infrastructure/networkService.js": {
|
|
"path": "server/src/service/v1/infrastructure/networkService.js",
|
|
"fileName": "networkService.js",
|
|
"cellName": "networkService.js",
|
|
"cellId": "00406786-9663-440a-96b6-919d544732c0",
|
|
"visible": true,
|
|
"parentCellId": "1670815f-860d-4ea4-92e1-b238a799d3dc",
|
|
"children": [
|
|
"server/src/service/v1/infrastructure/networkService.js-simstep-84f82fea-e306-4e0b-8222-e9705803d51a",
|
|
"server/src/service/v1/infrastructure/networkService.js-simstep-ed6e7faf-69dd-4d0b-bda8-137739ed288b"
|
|
]
|
|
},
|
|
"server/src/service/v1/infrastructure/notificationService.js": {
|
|
"path": "server/src/service/v1/infrastructure/notificationService.js",
|
|
"fileName": "notificationService.js",
|
|
"cellName": "notificationService.js",
|
|
"cellId": "2ff1f030-2080-48da-bbbe-90302fdfc2f7",
|
|
"visible": true,
|
|
"parentCellId": "1670815f-860d-4ea4-92e1-b238a799d3dc",
|
|
"children": [
|
|
"server/src/service/v1/infrastructure/notificationService.js-simstep-1a260a75-cf50-4f7a-90b0-c280b512a5cb",
|
|
"server/src/service/v1/infrastructure/notificationService.js-simstep-f29f9be1-a0cd-43a3-b259-e5105a25ce41"
|
|
]
|
|
},
|
|
"server/src/service/v1/infrastructure/notificationUtils.js": {
|
|
"path": "server/src/service/v1/infrastructure/notificationUtils.js",
|
|
"fileName": "notificationUtils.js",
|
|
"cellName": "notificationUtils.js",
|
|
"cellId": "4940977f-933d-4bbc-b19e-749647b44d25",
|
|
"visible": true,
|
|
"parentCellId": "1670815f-860d-4ea4-92e1-b238a799d3dc",
|
|
"children": [
|
|
"server/src/service/v1/infrastructure/notificationUtils.js-simstep-07fe8489-1d94-4afb-83f8-7cebb0dff49a"
|
|
]
|
|
},
|
|
"server/src/service/v1/infrastructure/statusService.js": {
|
|
"path": "server/src/service/v1/infrastructure/statusService.js",
|
|
"fileName": "statusService.js",
|
|
"cellName": "statusService.js",
|
|
"cellId": "fbd7d244-2f37-453c-8c83-a23a260b26cc",
|
|
"visible": true,
|
|
"parentCellId": "1670815f-860d-4ea4-92e1-b238a799d3dc",
|
|
"children": [
|
|
"server/src/service/v1/infrastructure/statusService.js-simstep-c66a04c6-113e-4391-ab71-93fc612279ef",
|
|
"server/src/service/v1/infrastructure/statusService.js-simstep-e5b90cf2-9369-4741-9803-c835a81c009b"
|
|
]
|
|
},
|
|
"server/src/service/v2": {
|
|
"path": "server/src/service/v2",
|
|
"fileName": "v2",
|
|
"cellName": "v2",
|
|
"cellId": "feefae96-61b8-4ac5-a37c-592ed4b2330e",
|
|
"visible": true,
|
|
"parentCellId": "99e9b746-7809-41f4-a433-1de7cc90574b",
|
|
"children": [
|
|
"server/src/service/v2/infrastructure",
|
|
"server/src/service/v2/business"
|
|
]
|
|
},
|
|
"server/src/service/v2/business": {
|
|
"path": "server/src/service/v2/business",
|
|
"fileName": "business",
|
|
"cellName": "business",
|
|
"cellId": "7ef79284-534a-466f-a1f1-4e3a2f56be9d",
|
|
"visible": true,
|
|
"parentCellId": "feefae96-61b8-4ac5-a37c-592ed4b2330e",
|
|
"children": [
|
|
"server/src/service/v2/business/CheckService.ts",
|
|
"server/src/service/v2/business/MonitorService.ts"
|
|
]
|
|
},
|
|
"server/src/service/v2/business/CheckService.ts": {
|
|
"path": "server/src/service/v2/business/CheckService.ts",
|
|
"fileName": "CheckService.ts",
|
|
"cellName": "CheckService.ts",
|
|
"cellId": "f0ebd5da-21bb-4d96-8ff9-ca10409acc80",
|
|
"visible": true,
|
|
"parentCellId": "7ef79284-534a-466f-a1f1-4e3a2f56be9d",
|
|
"children": [
|
|
"server/src/service/v2/business/CheckService.ts-simstep-01206383-2db8-4b18-84d0-be2a0289c196"
|
|
]
|
|
},
|
|
"server/src/service/v2/business/MonitorService.ts": {
|
|
"path": "server/src/service/v2/business/MonitorService.ts",
|
|
"fileName": "MonitorService.ts",
|
|
"cellName": "MonitorService.ts",
|
|
"cellId": "7a3824cd-24c8-4b32-8b1d-e0bf357262c4",
|
|
"visible": true,
|
|
"parentCellId": "7ef79284-534a-466f-a1f1-4e3a2f56be9d",
|
|
"children": [
|
|
"server/src/service/v2/business/MonitorService.ts-simstep-5616ac6d-c281-4879-82f1-6590c721c8f7"
|
|
]
|
|
},
|
|
"server/src/service/v2/infrastructure": {
|
|
"path": "server/src/service/v2/infrastructure",
|
|
"fileName": "infrastructure",
|
|
"cellName": "infrastructure",
|
|
"cellId": "3f8ff792-40c8-4ae6-9af5-ff8b90da2f9f",
|
|
"visible": true,
|
|
"parentCellId": "feefae96-61b8-4ac5-a37c-592ed4b2330e",
|
|
"children": [
|
|
"server/src/service/v2/infrastructure/JobGenerator.ts",
|
|
"server/src/service/v2/infrastructure/NotificationService.ts",
|
|
"server/src/service/v2/infrastructure/NetworkService.ts"
|
|
]
|
|
},
|
|
"server/src/service/v2/infrastructure/JobGenerator.ts": {
|
|
"path": "server/src/service/v2/infrastructure/JobGenerator.ts",
|
|
"fileName": "JobGenerator.ts",
|
|
"cellName": "JobGenerator.ts",
|
|
"cellId": "159e569d-31d8-4883-b443-4ec08b21a044",
|
|
"visible": true,
|
|
"parentCellId": "3f8ff792-40c8-4ae6-9af5-ff8b90da2f9f",
|
|
"children": [
|
|
"server/src/service/v2/infrastructure/JobGenerator.ts-simstep-157cec87-9b76-4a1c-9d85-0a6d3decbaa3",
|
|
"server/src/service/v2/infrastructure/JobGenerator.ts-simstep-55ad645b-118a-478e-a00c-09ef82357008"
|
|
]
|
|
},
|
|
"server/src/service/v2/infrastructure/NetworkService.ts": {
|
|
"path": "server/src/service/v2/infrastructure/NetworkService.ts",
|
|
"fileName": "NetworkService.ts",
|
|
"cellName": "NetworkService.ts",
|
|
"cellId": "50aeed0b-bc13-43f7-bb15-cb1b12b2caa7",
|
|
"visible": true,
|
|
"parentCellId": "3f8ff792-40c8-4ae6-9af5-ff8b90da2f9f",
|
|
"children": [
|
|
"server/src/service/v2/infrastructure/NetworkService.ts-simstep-53968267-0c6e-42f4-88b3-cd90f44532ae"
|
|
]
|
|
},
|
|
"server/src/service/v2/infrastructure/NotificationService.ts": {
|
|
"path": "server/src/service/v2/infrastructure/NotificationService.ts",
|
|
"fileName": "NotificationService.ts",
|
|
"cellName": "NotificationService.ts",
|
|
"cellId": "c6d9907f-0a05-4153-a27f-47c3a1c4c0aa",
|
|
"visible": true,
|
|
"parentCellId": "3f8ff792-40c8-4ae6-9af5-ff8b90da2f9f",
|
|
"children": [
|
|
"server/src/service/v2/infrastructure/NotificationService.ts-simstep-8d1176f3-c755-401d-9ca8-234689b4b837"
|
|
]
|
|
},
|
|
"0b23ea66-3e37-4643-b3b9-acb87ea02bae": {
|
|
"path": "0b23ea66-3e37-4643-b3b9-acb87ea02bae",
|
|
"cellName": "client",
|
|
"cellId": "0b23ea66-3e37-4643-b3b9-acb87ea02bae",
|
|
"visible": true
|
|
},
|
|
"98af25c7-efc2-43d2-a273-c8da4e1038ad": {
|
|
"path": "98af25c7-efc2-43d2-a273-c8da4e1038ad",
|
|
"cellName": "server",
|
|
"cellId": "98af25c7-efc2-43d2-a273-c8da4e1038ad",
|
|
"visible": true
|
|
},
|
|
"d3264577-10f0-42fe-9411-7e9df0754d1e": {
|
|
"path": "d3264577-10f0-42fe-9411-7e9df0754d1e",
|
|
"cellName": "src",
|
|
"cellId": "d3264577-10f0-42fe-9411-7e9df0754d1e",
|
|
"visible": true,
|
|
"parentCellId": "0b23ea66-3e37-4643-b3b9-acb87ea02bae"
|
|
},
|
|
"35864a2c-7bd0-4428-84fc-c0aa90c7f1be": {
|
|
"path": "35864a2c-7bd0-4428-84fc-c0aa90c7f1be",
|
|
"cellName": "src",
|
|
"cellId": "35864a2c-7bd0-4428-84fc-c0aa90c7f1be",
|
|
"visible": true,
|
|
"parentCellId": "98af25c7-efc2-43d2-a273-c8da4e1038ad"
|
|
},
|
|
"f0feab85-316a-41b5-a2f1-629220018846": {
|
|
"path": "f0feab85-316a-41b5-a2f1-629220018846",
|
|
"cellName": "Pages",
|
|
"cellId": "f0feab85-316a-41b5-a2f1-629220018846",
|
|
"visible": true,
|
|
"parentCellId": "d3264577-10f0-42fe-9411-7e9df0754d1e"
|
|
},
|
|
"4295a047-076f-4c07-95dd-b3123b6614f7": {
|
|
"path": "4295a047-076f-4c07-95dd-b3123b6614f7",
|
|
"cellName": "Hooks",
|
|
"cellId": "4295a047-076f-4c07-95dd-b3123b6614f7",
|
|
"visible": true,
|
|
"parentCellId": "d3264577-10f0-42fe-9411-7e9df0754d1e"
|
|
},
|
|
"02b07589-ec21-4366-b7d2-9071e8f3bad8": {
|
|
"path": "02b07589-ec21-4366-b7d2-9071e8f3bad8",
|
|
"cellName": "Utils",
|
|
"cellId": "02b07589-ec21-4366-b7d2-9071e8f3bad8",
|
|
"visible": true,
|
|
"parentCellId": "d3264577-10f0-42fe-9411-7e9df0754d1e"
|
|
},
|
|
"ffaaf471-ac3c-4ea3-a5a9-d5255169e54b": {
|
|
"path": "ffaaf471-ac3c-4ea3-a5a9-d5255169e54b",
|
|
"cellName": "routes",
|
|
"cellId": "ffaaf471-ac3c-4ea3-a5a9-d5255169e54b",
|
|
"visible": true,
|
|
"parentCellId": "35864a2c-7bd0-4428-84fc-c0aa90c7f1be"
|
|
},
|
|
"478e649c-1d1b-41d2-9b7b-6927e1dec7e1": {
|
|
"path": "478e649c-1d1b-41d2-9b7b-6927e1dec7e1",
|
|
"cellName": "controllers",
|
|
"cellId": "478e649c-1d1b-41d2-9b7b-6927e1dec7e1",
|
|
"visible": true,
|
|
"parentCellId": "35864a2c-7bd0-4428-84fc-c0aa90c7f1be"
|
|
},
|
|
"99e9b746-7809-41f4-a433-1de7cc90574b": {
|
|
"path": "99e9b746-7809-41f4-a433-1de7cc90574b",
|
|
"cellName": "service",
|
|
"cellId": "99e9b746-7809-41f4-a433-1de7cc90574b",
|
|
"visible": true,
|
|
"parentCellId": "35864a2c-7bd0-4428-84fc-c0aa90c7f1be"
|
|
},
|
|
"15ee5d81-a0cf-4614-80b8-7a1123ab20b8": {
|
|
"path": "15ee5d81-a0cf-4614-80b8-7a1123ab20b8",
|
|
"cellName": "db",
|
|
"cellId": "15ee5d81-a0cf-4614-80b8-7a1123ab20b8",
|
|
"visible": true,
|
|
"parentCellId": "35864a2c-7bd0-4428-84fc-c0aa90c7f1be"
|
|
},
|
|
"1a083b4a-787c-4eb4-8029-6700de987679": {
|
|
"path": "1a083b4a-787c-4eb4-8029-6700de987679",
|
|
"cellName": "v1",
|
|
"cellId": "1a083b4a-787c-4eb4-8029-6700de987679",
|
|
"visible": true,
|
|
"parentCellId": "f0feab85-316a-41b5-a2f1-629220018846"
|
|
},
|
|
"3bf0c0f9-cbb0-4f0c-8cb3-6e2a4abc0961": {
|
|
"path": "3bf0c0f9-cbb0-4f0c-8cb3-6e2a4abc0961",
|
|
"cellName": "v1",
|
|
"cellId": "3bf0c0f9-cbb0-4f0c-8cb3-6e2a4abc0961",
|
|
"visible": true,
|
|
"parentCellId": "4295a047-076f-4c07-95dd-b3123b6614f7"
|
|
},
|
|
"16731e9d-3f73-4055-9d79-5ca9be679f68": {
|
|
"path": "16731e9d-3f73-4055-9d79-5ca9be679f68",
|
|
"cellName": "NetworkService.js",
|
|
"cellId": "16731e9d-3f73-4055-9d79-5ca9be679f68",
|
|
"visible": true,
|
|
"parentCellId": "02b07589-ec21-4366-b7d2-9071e8f3bad8"
|
|
},
|
|
"d3375a20-2776-4771-b806-649bbeb541bd": {
|
|
"path": "d3375a20-2776-4771-b806-649bbeb541bd",
|
|
"cellName": "v1",
|
|
"cellId": "d3375a20-2776-4771-b806-649bbeb541bd",
|
|
"visible": true,
|
|
"parentCellId": "ffaaf471-ac3c-4ea3-a5a9-d5255169e54b"
|
|
},
|
|
"fc591f7a-d4ac-4565-949d-a87a58a79bbc": {
|
|
"path": "fc591f7a-d4ac-4565-949d-a87a58a79bbc",
|
|
"cellName": "v1",
|
|
"cellId": "fc591f7a-d4ac-4565-949d-a87a58a79bbc",
|
|
"visible": true,
|
|
"parentCellId": "478e649c-1d1b-41d2-9b7b-6927e1dec7e1"
|
|
},
|
|
"bbbe53d6-f595-498a-ae45-e08611f39c3d": {
|
|
"path": "bbbe53d6-f595-498a-ae45-e08611f39c3d",
|
|
"cellName": "v1",
|
|
"cellId": "bbbe53d6-f595-498a-ae45-e08611f39c3d",
|
|
"visible": true,
|
|
"parentCellId": "99e9b746-7809-41f4-a433-1de7cc90574b"
|
|
},
|
|
"58c5a3fd-1e69-4ca4-a64e-314f5644bdaf": {
|
|
"path": "58c5a3fd-1e69-4ca4-a64e-314f5644bdaf",
|
|
"cellName": "v1",
|
|
"cellId": "58c5a3fd-1e69-4ca4-a64e-314f5644bdaf",
|
|
"visible": true,
|
|
"parentCellId": "15ee5d81-a0cf-4614-80b8-7a1123ab20b8"
|
|
},
|
|
"7090fcdb-09be-4c85-86fd-e73553bbb2ff": {
|
|
"path": "7090fcdb-09be-4c85-86fd-e73553bbb2ff",
|
|
"cellName": "Uptime",
|
|
"cellId": "7090fcdb-09be-4c85-86fd-e73553bbb2ff",
|
|
"visible": true,
|
|
"parentCellId": "1a083b4a-787c-4eb4-8029-6700de987679"
|
|
},
|
|
"595cf0e8-2f86-4543-b51c-b2aeac307f4b": {
|
|
"path": "595cf0e8-2f86-4543-b51c-b2aeac307f4b",
|
|
"cellName": "monitorHooks.js",
|
|
"cellId": "595cf0e8-2f86-4543-b51c-b2aeac307f4b",
|
|
"visible": true,
|
|
"parentCellId": "3bf0c0f9-cbb0-4f0c-8cb3-6e2a4abc0961"
|
|
},
|
|
"10611636-ec73-4a26-87a5-654ae64a4843": {
|
|
"path": "10611636-ec73-4a26-87a5-654ae64a4843",
|
|
"cellName": "monitorRoute.js",
|
|
"cellId": "10611636-ec73-4a26-87a5-654ae64a4843",
|
|
"visible": true,
|
|
"parentCellId": "d3375a20-2776-4771-b806-649bbeb541bd"
|
|
},
|
|
"341f2784-67ee-4477-9445-a8c240ee6261": {
|
|
"path": "341f2784-67ee-4477-9445-a8c240ee6261",
|
|
"cellName": "monitorController.js",
|
|
"cellId": "341f2784-67ee-4477-9445-a8c240ee6261",
|
|
"visible": true,
|
|
"parentCellId": "fc591f7a-d4ac-4565-949d-a87a58a79bbc"
|
|
},
|
|
"87d3b101-9443-4ed4-9c4f-f759d41677eb": {
|
|
"path": "87d3b101-9443-4ed4-9c4f-f759d41677eb",
|
|
"cellName": "business",
|
|
"cellId": "87d3b101-9443-4ed4-9c4f-f759d41677eb",
|
|
"visible": true,
|
|
"parentCellId": "bbbe53d6-f595-498a-ae45-e08611f39c3d"
|
|
},
|
|
"1670815f-860d-4ea4-92e1-b238a799d3dc": {
|
|
"path": "1670815f-860d-4ea4-92e1-b238a799d3dc",
|
|
"cellName": "infrastructure",
|
|
"cellId": "1670815f-860d-4ea4-92e1-b238a799d3dc",
|
|
"visible": true,
|
|
"parentCellId": "bbbe53d6-f595-498a-ae45-e08611f39c3d"
|
|
},
|
|
"82cb3dbe-c922-438a-a912-255376f4b380": {
|
|
"path": "82cb3dbe-c922-438a-a912-255376f4b380",
|
|
"cellName": "modules",
|
|
"cellId": "82cb3dbe-c922-438a-a912-255376f4b380",
|
|
"visible": true,
|
|
"parentCellId": "58c5a3fd-1e69-4ca4-a64e-314f5644bdaf"
|
|
},
|
|
"3dba5acc-cf25-40b7-ad21-9cd715454cd5": {
|
|
"path": "3dba5acc-cf25-40b7-ad21-9cd715454cd5",
|
|
"cellName": "Create",
|
|
"cellId": "3dba5acc-cf25-40b7-ad21-9cd715454cd5",
|
|
"visible": true,
|
|
"parentCellId": "7090fcdb-09be-4c85-86fd-e73553bbb2ff"
|
|
},
|
|
"b4e479df-9b21-4430-9383-84831f503c2e": {
|
|
"path": "b4e479df-9b21-4430-9383-84831f503c2e",
|
|
"cellName": "monitorService.js",
|
|
"cellId": "b4e479df-9b21-4430-9383-84831f503c2e",
|
|
"visible": true,
|
|
"parentCellId": "87d3b101-9443-4ed4-9c4f-f759d41677eb"
|
|
},
|
|
"dda70a36-2d1d-4e46-8bcc-52d0d474bf7b": {
|
|
"path": "dda70a36-2d1d-4e46-8bcc-52d0d474bf7b",
|
|
"cellName": "SuperSimpleQueue",
|
|
"cellId": "dda70a36-2d1d-4e46-8bcc-52d0d474bf7b",
|
|
"visible": true,
|
|
"parentCellId": "1670815f-860d-4ea4-92e1-b238a799d3dc"
|
|
},
|
|
"00406786-9663-440a-96b6-919d544732c0": {
|
|
"path": "00406786-9663-440a-96b6-919d544732c0",
|
|
"cellName": "networkService.js",
|
|
"cellId": "00406786-9663-440a-96b6-919d544732c0",
|
|
"visible": true,
|
|
"parentCellId": "1670815f-860d-4ea4-92e1-b238a799d3dc"
|
|
},
|
|
"fbd7d244-2f37-453c-8c83-a23a260b26cc": {
|
|
"path": "fbd7d244-2f37-453c-8c83-a23a260b26cc",
|
|
"cellName": "statusService.js",
|
|
"cellId": "fbd7d244-2f37-453c-8c83-a23a260b26cc",
|
|
"visible": true,
|
|
"parentCellId": "1670815f-860d-4ea4-92e1-b238a799d3dc"
|
|
},
|
|
"2ff1f030-2080-48da-bbbe-90302fdfc2f7": {
|
|
"path": "2ff1f030-2080-48da-bbbe-90302fdfc2f7",
|
|
"cellName": "notificationService.js",
|
|
"cellId": "2ff1f030-2080-48da-bbbe-90302fdfc2f7",
|
|
"visible": true,
|
|
"parentCellId": "1670815f-860d-4ea4-92e1-b238a799d3dc"
|
|
},
|
|
"630b3ece-2648-48d5-99b5-ef9611de2ad5": {
|
|
"path": "630b3ece-2648-48d5-99b5-ef9611de2ad5",
|
|
"cellName": "monitorModule.js",
|
|
"cellId": "630b3ece-2648-48d5-99b5-ef9611de2ad5",
|
|
"visible": true,
|
|
"parentCellId": "82cb3dbe-c922-438a-a912-255376f4b380"
|
|
},
|
|
"391ad99e-3114-4f54-a6ca-fd89b33c7e06": {
|
|
"path": "391ad99e-3114-4f54-a6ca-fd89b33c7e06",
|
|
"cellName": "index.jsx",
|
|
"cellId": "391ad99e-3114-4f54-a6ca-fd89b33c7e06",
|
|
"visible": true,
|
|
"parentCellId": "3dba5acc-cf25-40b7-ad21-9cd715454cd5"
|
|
},
|
|
"d9c0127e-31aa-4509-b5c9-f7017d10d69a": {
|
|
"path": "d9c0127e-31aa-4509-b5c9-f7017d10d69a",
|
|
"cellName": "SuperSimpleQueue.js",
|
|
"cellId": "d9c0127e-31aa-4509-b5c9-f7017d10d69a",
|
|
"visible": true,
|
|
"parentCellId": "dda70a36-2d1d-4e46-8bcc-52d0d474bf7b"
|
|
},
|
|
"04c12e9a-e025-457c-a634-5f7472a42985": {
|
|
"path": "04c12e9a-e025-457c-a634-5f7472a42985",
|
|
"cellName": "SuperSimpleQueueHelper.js",
|
|
"cellId": "04c12e9a-e025-457c-a634-5f7472a42985",
|
|
"visible": true,
|
|
"parentCellId": "dda70a36-2d1d-4e46-8bcc-52d0d474bf7b"
|
|
},
|
|
"7a2da928-a65c-49d8-b0a3-c159a6df2bc5": {
|
|
"path": "7a2da928-a65c-49d8-b0a3-c159a6df2bc5",
|
|
"cellName": "Uptime Monitor Creation: Display Form - index.jsx:L315-802",
|
|
"cellId": "7a2da928-a65c-49d8-b0a3-c159a6df2bc5",
|
|
"visible": true,
|
|
"parentCellId": "391ad99e-3114-4f54-a6ca-fd89b33c7e06"
|
|
},
|
|
"client/src/Pages/v1/Uptime/Create/index.jsx-simstep-ab5de0b9-c70d-492c-98d9-8ddee66284ad": {
|
|
"path": "client/src/Pages/v1/Uptime/Create/index.jsx-simstep-ab5de0b9-c70d-492c-98d9-8ddee66284ad",
|
|
"fileName": "index.jsx",
|
|
"wiki": "The user navigates to the 'Create Uptime Monitor' page. The `UptimeCreate` React component renders the form, allowing the user to select the monitor type (HTTP, Ping, Docker, etc.) and input details like URL, name, and check interval.",
|
|
"cellName": "Uptime Monitor Creation: Display Form - index.jsx:L315-802",
|
|
"cellId": "7a2da928-a65c-49d8-b0a3-c159a6df2bc5",
|
|
"visible": true,
|
|
"startLine": 315,
|
|
"endLine": 802,
|
|
"parentCellId": "391ad99e-3114-4f54-a6ca-fd89b33c7e06",
|
|
"parentPath": "client/src/Pages/v1/Uptime/Create/index.jsx",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Comprehensive Uptime Monitoring for Various Services",
|
|
"simStepId": "ab5de0b9-c70d-492c-98d9-8ddee66284ad"
|
|
}
|
|
]
|
|
},
|
|
"a81f4ae8-41fe-4d1b-95ce-86abcc67b53c": {
|
|
"path": "a81f4ae8-41fe-4d1b-95ce-86abcc67b53c",
|
|
"cellName": "Uptime Monitor Creation: Handle Form Submission and Validation - index.jsx:L170-248",
|
|
"cellId": "a81f4ae8-41fe-4d1b-95ce-86abcc67b53c",
|
|
"visible": true,
|
|
"parentCellId": "391ad99e-3114-4f54-a6ca-fd89b33c7e06"
|
|
},
|
|
"client/src/Pages/v1/Uptime/Create/index.jsx-simstep-e02ddf57-270e-4f71-b4c4-d5183bb7879a": {
|
|
"path": "client/src/Pages/v1/Uptime/Create/index.jsx-simstep-e02ddf57-270e-4f71-b4c4-d5183bb7879a",
|
|
"fileName": "index.jsx",
|
|
"wiki": "The `onSubmit` function in `UptimeCreate.jsx` is executed. It prevents the default form submission, constructs a `form` object with monitor data, validates it using `monitorValidation`, and then calls the `createMonitor` function from the `useCreateMonitor` hook.",
|
|
"cellName": "Uptime Monitor Creation: Handle Form Submission and Validation - index.jsx:L170-248",
|
|
"cellId": "a81f4ae8-41fe-4d1b-95ce-86abcc67b53c",
|
|
"visible": true,
|
|
"startLine": 170,
|
|
"endLine": 248,
|
|
"parentCellId": "391ad99e-3114-4f54-a6ca-fd89b33c7e06",
|
|
"parentPath": "client/src/Pages/v1/Uptime/Create/index.jsx",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Comprehensive Uptime Monitoring for Various Services",
|
|
"simStepId": "e02ddf57-270e-4f71-b4c4-d5183bb7879a"
|
|
}
|
|
]
|
|
},
|
|
"a30ac765-c546-4993-988e-8c8cfdb7532f": {
|
|
"path": "a30ac765-c546-4993-988e-8c8cfdb7532f",
|
|
"cellName": "Uptime Monitor Creation: Send API Request - NetworkService.js:L119-121",
|
|
"cellId": "a30ac765-c546-4993-988e-8c8cfdb7532f",
|
|
"visible": true,
|
|
"parentCellId": "16731e9d-3f73-4055-9d79-5ca9be679f68"
|
|
},
|
|
"client/src/Utils/NetworkService.js-simstep-14e9986b-c6ce-475e-97ed-da1fa2b6968d": {
|
|
"path": "client/src/Utils/NetworkService.js-simstep-14e9986b-c6ce-475e-97ed-da1fa2b6968d",
|
|
"fileName": "NetworkService.js",
|
|
"wiki": "The `createMonitor` method in `NetworkService.js` makes an HTTP POST request to the `/monitors` endpoint on the server, sending the new monitor's data in the request body.",
|
|
"cellName": "Uptime Monitor Creation: Send API Request - NetworkService.js:L119-121",
|
|
"cellId": "a30ac765-c546-4993-988e-8c8cfdb7532f",
|
|
"visible": true,
|
|
"startLine": 119,
|
|
"endLine": 121,
|
|
"parentCellId": "16731e9d-3f73-4055-9d79-5ca9be679f68",
|
|
"parentPath": "client/src/Utils/NetworkService.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Comprehensive Uptime Monitoring for Various Services",
|
|
"simStepId": "14e9986b-c6ce-475e-97ed-da1fa2b6968d"
|
|
}
|
|
]
|
|
},
|
|
"f0409948-75dc-457f-a02d-6b9774258e48": {
|
|
"path": "f0409948-75dc-457f-a02d-6b9774258e48",
|
|
"cellName": "Uptime Monitor Creation: Controller to Service - monitorController.js:L195",
|
|
"cellId": "f0409948-75dc-457f-a02d-6b9774258e48",
|
|
"visible": true,
|
|
"parentCellId": "341f2784-67ee-4477-9445-a8c240ee6261"
|
|
},
|
|
"server/src/controllers/v1/monitorController.js-simstep-38fd069d-9c44-4078-954b-3a0899e9acf4": {
|
|
"path": "server/src/controllers/v1/monitorController.js-simstep-38fd069d-9c44-4078-954b-3a0899e9acf4",
|
|
"fileName": "monitorController.js",
|
|
"wiki": "The `MonitorController` extracts the user and team ID from the request and calls the `createMonitor` method in the `MonitorService`, passing along the monitor data from the request body.",
|
|
"cellName": "Uptime Monitor Creation: Controller to Service - monitorController.js:L195",
|
|
"cellId": "f0409948-75dc-457f-a02d-6b9774258e48",
|
|
"visible": true,
|
|
"startLine": 195,
|
|
"endLine": 195,
|
|
"parentCellId": "341f2784-67ee-4477-9445-a8c240ee6261",
|
|
"parentPath": "server/src/controllers/v1/monitorController.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Comprehensive Uptime Monitoring for Various Services",
|
|
"simStepId": "38fd069d-9c44-4078-954b-3a0899e9acf4"
|
|
}
|
|
]
|
|
},
|
|
"2d407bfd-e4b0-46b8-99e7-121c507d525f": {
|
|
"path": "2d407bfd-e4b0-46b8-99e7-121c507d525f",
|
|
"cellName": "Uptime Monitor Creation: Save Monitor to Database - monitorModule.js:L454-455",
|
|
"cellId": "2d407bfd-e4b0-46b8-99e7-121c507d525f",
|
|
"visible": true,
|
|
"parentCellId": "630b3ece-2648-48d5-99b5-ef9611de2ad5"
|
|
},
|
|
"server/src/db/v1/modules/monitorModule.js-simstep-ca3ad309-323a-418d-a171-c16f56fae23c": {
|
|
"path": "server/src/db/v1/modules/monitorModule.js-simstep-ca3ad309-323a-418d-a171-c16f56fae23c",
|
|
"fileName": "monitorModule.js",
|
|
"wiki": "The `monitorModule` creates a new `Monitor` model instance with the provided data and saves it to the MongoDB database. The newly created document, including its generated `_id`, is returned.",
|
|
"cellName": "Uptime Monitor Creation: Save Monitor to Database - monitorModule.js:L454-455",
|
|
"cellId": "2d407bfd-e4b0-46b8-99e7-121c507d525f",
|
|
"visible": true,
|
|
"startLine": 454,
|
|
"endLine": 455,
|
|
"parentCellId": "630b3ece-2648-48d5-99b5-ef9611de2ad5",
|
|
"parentPath": "server/src/db/v1/modules/monitorModule.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Comprehensive Uptime Monitoring for Various Services",
|
|
"simStepId": "ca3ad309-323a-418d-a171-c16f56fae23c"
|
|
}
|
|
]
|
|
},
|
|
"51e8db5f-2fdd-4ddc-9605-43981db9d940": {
|
|
"path": "51e8db5f-2fdd-4ddc-9605-43981db9d940",
|
|
"cellName": "Uptime Monitor Creation: Schedule Job - SuperSimpleQueue.js:L50-57",
|
|
"cellId": "51e8db5f-2fdd-4ddc-9605-43981db9d940",
|
|
"visible": true,
|
|
"parentCellId": "d9c0127e-31aa-4509-b5c9-f7017d10d69a"
|
|
},
|
|
"server/src/service/v1/infrastructure/SuperSimpleQueue/SuperSimpleQueue.js-simstep-2702bfca-7611-4562-8d3e-a05af8257871": {
|
|
"path": "server/src/service/v1/infrastructure/SuperSimpleQueue/SuperSimpleQueue.js-simstep-2702bfca-7611-4562-8d3e-a05af8257871",
|
|
"fileName": "SuperSimpleQueue.js",
|
|
"wiki": "The `SuperSimpleQueue` receives the new monitor and uses its `scheduler.addJob` method to create a recurring job based on the monitor's interval. The monitor object itself is stored as data for the job.",
|
|
"cellName": "Uptime Monitor Creation: Schedule Job - SuperSimpleQueue.js:L50-57",
|
|
"cellId": "51e8db5f-2fdd-4ddc-9605-43981db9d940",
|
|
"visible": true,
|
|
"startLine": 50,
|
|
"endLine": 57,
|
|
"parentCellId": "d9c0127e-31aa-4509-b5c9-f7017d10d69a",
|
|
"parentPath": "server/src/service/v1/infrastructure/SuperSimpleQueue/SuperSimpleQueue.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Comprehensive Uptime Monitoring for Various Services",
|
|
"simStepId": "2702bfca-7611-4562-8d3e-a05af8257871"
|
|
}
|
|
]
|
|
},
|
|
"18c13391-0cf7-4303-8180-0a40cfd64b58": {
|
|
"path": "18c13391-0cf7-4303-8180-0a40cfd64b58",
|
|
"cellName": "Service Monitoring: Job Execution - SuperSimpleQueueHelper.js:L27-73",
|
|
"cellId": "18c13391-0cf7-4303-8180-0a40cfd64b58",
|
|
"visible": true,
|
|
"parentCellId": "04c12e9a-e025-457c-a634-5f7472a42985"
|
|
},
|
|
"server/src/service/v1/infrastructure/SuperSimpleQueue/SuperSimpleQueueHelper.js-simstep-e22a708a-a348-4775-8ee3-f32a35446e24": {
|
|
"path": "server/src/service/v1/infrastructure/SuperSimpleQueue/SuperSimpleQueueHelper.js-simstep-e22a708a-a348-4775-8ee3-f32a35446e24",
|
|
"fileName": "SuperSimpleQueueHelper.js",
|
|
"wiki": "The scheduler triggers a monitor job at the specified interval. The `getMonitorJob` function in `SuperSimpleQueueHelper` is executed, which first checks if the monitor is in a maintenance window.",
|
|
"cellName": "Service Monitoring: Job Execution - SuperSimpleQueueHelper.js:L27-73",
|
|
"cellId": "18c13391-0cf7-4303-8180-0a40cfd64b58",
|
|
"visible": true,
|
|
"startLine": 27,
|
|
"endLine": 73,
|
|
"parentCellId": "04c12e9a-e025-457c-a634-5f7472a42985",
|
|
"parentPath": "server/src/service/v1/infrastructure/SuperSimpleQueue/SuperSimpleQueueHelper.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Comprehensive Uptime Monitoring for Various Services",
|
|
"simStepId": "e22a708a-a348-4775-8ee3-f32a35446e24"
|
|
}
|
|
]
|
|
},
|
|
"5c900373-e6ba-44d5-b341-676a32d659c8": {
|
|
"path": "5c900373-e6ba-44d5-b341-676a32d659c8",
|
|
"cellName": "Service Monitoring: Perform Network Check - networkService.js:L44-59",
|
|
"cellId": "5c900373-e6ba-44d5-b341-676a32d659c8",
|
|
"visible": true,
|
|
"parentCellId": "00406786-9663-440a-96b6-919d544732c0"
|
|
},
|
|
"server/src/service/v1/infrastructure/networkService.js-simstep-84f82fea-e306-4e0b-8222-e9705803d51a": {
|
|
"path": "server/src/service/v1/infrastructure/networkService.js-simstep-84f82fea-e306-4e0b-8222-e9705803d51a",
|
|
"fileName": "networkService.js",
|
|
"wiki": "The `requestStatus` method in the network service acts as a router. Based on the monitor's `type` (e.g., 'http', 'ping', 'docker'), it calls the corresponding specialized request function (e.g., `requestHttp`) to perform the check and constructs a standardized response object.",
|
|
"cellName": "Service Monitoring: Perform Network Check - networkService.js:L44-59",
|
|
"cellId": "5c900373-e6ba-44d5-b341-676a32d659c8",
|
|
"visible": true,
|
|
"startLine": 44,
|
|
"endLine": 59,
|
|
"parentCellId": "00406786-9663-440a-96b6-919d544732c0",
|
|
"parentPath": "server/src/service/v1/infrastructure/networkService.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Comprehensive Uptime Monitoring for Various Services",
|
|
"simStepId": "84f82fea-e306-4e0b-8222-e9705803d51a"
|
|
}
|
|
]
|
|
},
|
|
"45e38f3a-a7c3-4de7-b3dc-589361d793fd": {
|
|
"path": "45e38f3a-a7c3-4de7-b3dc-589361d793fd",
|
|
"cellName": "Service Monitoring: Update Monitor Status - statusService.js:L108-183",
|
|
"cellId": "45e38f3a-a7c3-4de7-b3dc-589361d793fd",
|
|
"visible": true,
|
|
"parentCellId": "fbd7d244-2f37-453c-8c83-a23a260b26cc"
|
|
},
|
|
"server/src/service/v1/infrastructure/statusService.js-simstep-c66a04c6-113e-4391-ab71-93fc612279ef": {
|
|
"path": "server/src/service/v1/infrastructure/statusService.js-simstep-c66a04c6-113e-4391-ab71-93fc612279ef",
|
|
"fileName": "statusService.js",
|
|
"wiki": "The job handler passes the network response to `statusService.updateStatus`. This service creates a new `Check` document in the database, updates the monitor's status based on a sliding window and threshold, and calculates running statistics.",
|
|
"cellName": "Service Monitoring: Update Monitor Status - statusService.js:L108-183",
|
|
"cellId": "45e38f3a-a7c3-4de7-b3dc-589361d793fd",
|
|
"visible": true,
|
|
"startLine": 108,
|
|
"endLine": 183,
|
|
"parentCellId": "fbd7d244-2f37-453c-8c83-a23a260b26cc",
|
|
"parentPath": "server/src/service/v1/infrastructure/statusService.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Comprehensive Uptime Monitoring for Various Services",
|
|
"simStepId": "c66a04c6-113e-4391-ab71-93fc612279ef"
|
|
}
|
|
]
|
|
},
|
|
"9f3ea7fc-16d3-4d36-97eb-66f8808425cc": {
|
|
"path": "9f3ea7fc-16d3-4d36-97eb-66f8808425cc",
|
|
"cellName": "Service Monitoring: Handle Notifications (Conditional) - notificationService.js:L76-92",
|
|
"cellId": "9f3ea7fc-16d3-4d36-97eb-66f8808425cc",
|
|
"visible": true,
|
|
"parentCellId": "2ff1f030-2080-48da-bbbe-90302fdfc2f7"
|
|
},
|
|
"server/src/service/v1/infrastructure/notificationService.js-simstep-1a260a75-cf50-4f7a-90b0-c280b512a5cb": {
|
|
"path": "server/src/service/v1/infrastructure/notificationService.js-simstep-1a260a75-cf50-4f7a-90b0-c280b512a5cb",
|
|
"fileName": "notificationService.js",
|
|
"wiki": "If `statusChanged` is true, the job handler calls `notificationService.handleNotifications`. The service identifies the notification channels associated with the monitor and sends out alerts (e.g., email, webhook, Discord) with details about the status change.",
|
|
"cellName": "Service Monitoring: Handle Notifications (Conditional) - notificationService.js:L76-92",
|
|
"cellId": "9f3ea7fc-16d3-4d36-97eb-66f8808425cc",
|
|
"visible": true,
|
|
"startLine": 76,
|
|
"endLine": 92,
|
|
"parentCellId": "2ff1f030-2080-48da-bbbe-90302fdfc2f7",
|
|
"parentPath": "server/src/service/v1/infrastructure/notificationService.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Comprehensive Uptime Monitoring for Various Services",
|
|
"simStepId": "1a260a75-cf50-4f7a-90b0-c280b512a5cb"
|
|
}
|
|
]
|
|
},
|
|
"0e09aa33-d7c7-4c89-9da8-f0937658f4d3": {
|
|
"path": "0e09aa33-d7c7-4c89-9da8-f0937658f4d3",
|
|
"cellName": "Uptime Monitor\nCreation: Form\nSubmission",
|
|
"cellId": "0e09aa33-d7c7-4c89-9da8-f0937658f4d3",
|
|
"visible": true,
|
|
"parentCellId": "391ad99e-3114-4f54-a6ca-fd89b33c7e06"
|
|
},
|
|
"generated-edge-simstep-888df086-41bb-469d-9c0a-daf74bdecb9f-0e09aa33-d7c7-4c89-9da8-f0937658f4d3": {
|
|
"path": "generated-edge-simstep-888df086-41bb-469d-9c0a-daf74bdecb9f-0e09aa33-d7c7-4c89-9da8-f0937658f4d3",
|
|
"fileName": "index.jsx",
|
|
"cellName": "Uptime Monitor Creation: Form Submission",
|
|
"cellId": "0e09aa33-d7c7-4c89-9da8-f0937658f4d3",
|
|
"visible": true,
|
|
"startLine": 435,
|
|
"endLine": 443,
|
|
"parentPath": "client/src/Pages/v1/Uptime/Create/index.jsx",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Comprehensive Uptime Monitoring for Various Services",
|
|
"simStepId": "888df086-41bb-469d-9c0a-daf74bdecb9f"
|
|
}
|
|
]
|
|
},
|
|
"1f6f04a9-0123-4729-b06a-8f3da6d1b58c": {
|
|
"path": "1f6f04a9-0123-4729-b06a-8f3da6d1b58c",
|
|
"cellName": "Uptime Monitor\nCreation: Call\nNetwork Service",
|
|
"cellId": "1f6f04a9-0123-4729-b06a-8f3da6d1b58c",
|
|
"visible": true,
|
|
"parentCellId": "d3264577-10f0-42fe-9411-7e9df0754d1e"
|
|
},
|
|
"generated-edge-simstep-3fe0afaa-c673-4b52-a0c4-02a3ffd3a075-1f6f04a9-0123-4729-b06a-8f3da6d1b58c": {
|
|
"path": "generated-edge-simstep-3fe0afaa-c673-4b52-a0c4-02a3ffd3a075-1f6f04a9-0123-4729-b06a-8f3da6d1b58c",
|
|
"fileName": "index.jsx",
|
|
"cellName": "Uptime Monitor Creation: Call Network Service",
|
|
"cellId": "1f6f04a9-0123-4729-b06a-8f3da6d1b58c",
|
|
"visible": true,
|
|
"startLine": 306,
|
|
"endLine": 306,
|
|
"parentPath": "client/src/Pages/v1/Uptime/Create/index.jsx",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Comprehensive Uptime Monitoring for Various Services",
|
|
"simStepId": "3fe0afaa-c673-4b52-a0c4-02a3ffd3a075"
|
|
}
|
|
]
|
|
},
|
|
"b6d963d5-c613-407a-9ce9-60a04048dea7": {
|
|
"path": "b6d963d5-c613-407a-9ce9-60a04048dea7",
|
|
"cellName": "Uptime Monitor\nCreation: API\nRoute to\nController",
|
|
"cellId": "b6d963d5-c613-407a-9ce9-60a04048dea7",
|
|
"visible": true
|
|
},
|
|
"generated-edge-simstep-13dd0564-44a5-43ea-a163-ce1148cc48e7-b6d963d5-c613-407a-9ce9-60a04048dea7": {
|
|
"path": "generated-edge-simstep-13dd0564-44a5-43ea-a163-ce1148cc48e7-b6d963d5-c613-407a-9ce9-60a04048dea7",
|
|
"fileName": "NetworkService.js",
|
|
"cellName": "Uptime Monitor Creation: API Route to Controller",
|
|
"cellId": "b6d963d5-c613-407a-9ce9-60a04048dea7",
|
|
"visible": true,
|
|
"startLine": 35,
|
|
"endLine": 35,
|
|
"parentPath": "client/src/Utils/NetworkService.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Comprehensive Uptime Monitoring for Various Services",
|
|
"simStepId": "13dd0564-44a5-43ea-a163-ce1148cc48e7"
|
|
}
|
|
]
|
|
},
|
|
"a6bccd1d-4272-4df7-a7c8-b3979e37b8d7": {
|
|
"path": "a6bccd1d-4272-4df7-a7c8-b3979e37b8d7",
|
|
"cellName": "Uptime Monitor\nCreation: Service\nto DB\nModule",
|
|
"cellId": "a6bccd1d-4272-4df7-a7c8-b3979e37b8d7",
|
|
"visible": true,
|
|
"parentCellId": "35864a2c-7bd0-4428-84fc-c0aa90c7f1be"
|
|
},
|
|
"generated-edge-simstep-a6f4c967-b1a8-4804-bc2e-67f47a7b68f9-a6bccd1d-4272-4df7-a7c8-b3979e37b8d7": {
|
|
"path": "generated-edge-simstep-a6f4c967-b1a8-4804-bc2e-67f47a7b68f9-a6bccd1d-4272-4df7-a7c8-b3979e37b8d7",
|
|
"fileName": "monitorController.js",
|
|
"cellName": "Uptime Monitor Creation: Service to DB Module",
|
|
"cellId": "a6bccd1d-4272-4df7-a7c8-b3979e37b8d7",
|
|
"visible": true,
|
|
"startLine": 74,
|
|
"endLine": 78,
|
|
"parentPath": "server/src/controllers/v1/monitorController.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Comprehensive Uptime Monitoring for Various Services",
|
|
"simStepId": "a6f4c967-b1a8-4804-bc2e-67f47a7b68f9"
|
|
}
|
|
]
|
|
},
|
|
"de320ac1-0949-4297-be7c-b9d7a14e0fec": {
|
|
"path": "de320ac1-0949-4297-be7c-b9d7a14e0fec",
|
|
"cellName": "Uptime Monitor\nCreation: Service\nto Job\nQueue",
|
|
"cellId": "de320ac1-0949-4297-be7c-b9d7a14e0fec",
|
|
"visible": true,
|
|
"parentCellId": "35864a2c-7bd0-4428-84fc-c0aa90c7f1be"
|
|
},
|
|
"generated-edge-simstep-71ec03b6-1166-4c5d-9ada-0875a0866e30-de320ac1-0949-4297-be7c-b9d7a14e0fec": {
|
|
"path": "generated-edge-simstep-71ec03b6-1166-4c5d-9ada-0875a0866e30-de320ac1-0949-4297-be7c-b9d7a14e0fec",
|
|
"fileName": "monitorModule.js",
|
|
"cellName": "Uptime Monitor Creation: Service to Job Queue",
|
|
"cellId": "de320ac1-0949-4297-be7c-b9d7a14e0fec",
|
|
"visible": true,
|
|
"startLine": 80,
|
|
"endLine": 80,
|
|
"parentPath": "server/src/db/v1/modules/monitorModule.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Comprehensive Uptime Monitoring for Various Services",
|
|
"simStepId": "71ec03b6-1166-4c5d-9ada-0875a0866e30"
|
|
}
|
|
]
|
|
},
|
|
"38ba9b22-5b26-432d-a856-0eceb792c737": {
|
|
"path": "38ba9b22-5b26-432d-a856-0eceb792c737",
|
|
"cellName": "Service Monitoring:\nRequest Service\nStatus",
|
|
"cellId": "38ba9b22-5b26-432d-a856-0eceb792c737",
|
|
"visible": true,
|
|
"parentCellId": "1670815f-860d-4ea4-92e1-b238a799d3dc"
|
|
},
|
|
"generated-edge-simstep-1d7580f2-f107-4008-a207-b8ec07998721-38ba9b22-5b26-432d-a856-0eceb792c737": {
|
|
"path": "generated-edge-simstep-1d7580f2-f107-4008-a207-b8ec07998721-38ba9b22-5b26-432d-a856-0eceb792c737",
|
|
"fileName": "SuperSimpleQueueHelper.js",
|
|
"cellName": "Service Monitoring: Request Service Status",
|
|
"cellId": "38ba9b22-5b26-432d-a856-0eceb792c737",
|
|
"visible": true,
|
|
"startLine": 45,
|
|
"endLine": 45,
|
|
"parentPath": "server/src/service/v1/infrastructure/SuperSimpleQueue/SuperSimpleQueueHelper.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Comprehensive Uptime Monitoring for Various Services",
|
|
"simStepId": "1d7580f2-f107-4008-a207-b8ec07998721"
|
|
}
|
|
]
|
|
},
|
|
"5e80734c-7b72-41be-9068-30cda3ffb425": {
|
|
"path": "5e80734c-7b72-41be-9068-30cda3ffb425",
|
|
"cellName": "Service Monitoring:\nPropagate Network\nResponse",
|
|
"cellId": "5e80734c-7b72-41be-9068-30cda3ffb425",
|
|
"visible": true,
|
|
"parentCellId": "1670815f-860d-4ea4-92e1-b238a799d3dc"
|
|
},
|
|
"generated-edge-simstep-9b0ada30-d3e6-4b2c-b3ff-f50615139588-5e80734c-7b72-41be-9068-30cda3ffb425": {
|
|
"path": "generated-edge-simstep-9b0ada30-d3e6-4b2c-b3ff-f50615139588-5e80734c-7b72-41be-9068-30cda3ffb425",
|
|
"fileName": "networkService.js",
|
|
"cellName": "Service Monitoring: Propagate Network Response",
|
|
"cellId": "5e80734c-7b72-41be-9068-30cda3ffb425",
|
|
"visible": true,
|
|
"startLine": 45,
|
|
"endLine": 45,
|
|
"parentPath": "server/src/service/v1/infrastructure/networkService.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Comprehensive Uptime Monitoring for Various Services",
|
|
"simStepId": "9b0ada30-d3e6-4b2c-b3ff-f50615139588"
|
|
}
|
|
]
|
|
},
|
|
"0a7e4a72-b644-4bd8-afa1-ae8a1d6c111c": {
|
|
"path": "0a7e4a72-b644-4bd8-afa1-ae8a1d6c111c",
|
|
"cellName": "Service Monitoring:\nCheck for\nStatus Change",
|
|
"cellId": "0a7e4a72-b644-4bd8-afa1-ae8a1d6c111c",
|
|
"visible": true,
|
|
"parentCellId": "1670815f-860d-4ea4-92e1-b238a799d3dc"
|
|
},
|
|
"generated-edge-simstep-9896c387-4fca-47ad-82eb-7301286decb7-0a7e4a72-b644-4bd8-afa1-ae8a1d6c111c": {
|
|
"path": "generated-edge-simstep-9896c387-4fca-47ad-82eb-7301286decb7-0a7e4a72-b644-4bd8-afa1-ae8a1d6c111c",
|
|
"fileName": "statusService.js",
|
|
"cellName": "Service Monitoring: Check for Status Change",
|
|
"cellId": "0a7e4a72-b644-4bd8-afa1-ae8a1d6c111c",
|
|
"visible": true,
|
|
"startLine": 51,
|
|
"endLine": 51,
|
|
"parentPath": "server/src/service/v1/infrastructure/statusService.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Comprehensive Uptime Monitoring for Various Services",
|
|
"simStepId": "9896c387-4fca-47ad-82eb-7301286decb7"
|
|
}
|
|
]
|
|
},
|
|
"3f26b33e-477f-41df-a78a-3e3e4f4209ae": {
|
|
"path": "3f26b33e-477f-41df-a78a-3e3e4f4209ae",
|
|
"cellName": "Infrastructure",
|
|
"cellId": "3f26b33e-477f-41df-a78a-3e3e4f4209ae",
|
|
"visible": true,
|
|
"parentCellId": "1a083b4a-787c-4eb4-8029-6700de987679"
|
|
},
|
|
"74019e8a-3148-4a32-aae2-5afd16f3eb9b": {
|
|
"path": "74019e8a-3148-4a32-aae2-5afd16f3eb9b",
|
|
"cellName": "Create",
|
|
"cellId": "74019e8a-3148-4a32-aae2-5afd16f3eb9b",
|
|
"visible": true,
|
|
"parentCellId": "3f26b33e-477f-41df-a78a-3e3e4f4209ae"
|
|
},
|
|
"591128f9-0994-4e01-a1ab-f23357f97aff": {
|
|
"path": "591128f9-0994-4e01-a1ab-f23357f97aff",
|
|
"cellName": "Details",
|
|
"cellId": "591128f9-0994-4e01-a1ab-f23357f97aff",
|
|
"visible": true,
|
|
"parentCellId": "3f26b33e-477f-41df-a78a-3e3e4f4209ae"
|
|
},
|
|
"4940977f-933d-4bbc-b19e-749647b44d25": {
|
|
"path": "4940977f-933d-4bbc-b19e-749647b44d25",
|
|
"cellName": "notificationUtils.js",
|
|
"cellId": "4940977f-933d-4bbc-b19e-749647b44d25",
|
|
"visible": true,
|
|
"parentCellId": "1670815f-860d-4ea4-92e1-b238a799d3dc"
|
|
},
|
|
"a0b22a5a-59e1-47e3-8218-a4ad083b1b71": {
|
|
"path": "a0b22a5a-59e1-47e3-8218-a4ad083b1b71",
|
|
"cellName": "monitorModuleQueries.js",
|
|
"cellId": "a0b22a5a-59e1-47e3-8218-a4ad083b1b71",
|
|
"visible": true,
|
|
"parentCellId": "82cb3dbe-c922-438a-a912-255376f4b380"
|
|
},
|
|
"ceded1fc-87a9-43c8-a756-746be3d4ad8d": {
|
|
"path": "ceded1fc-87a9-43c8-a756-746be3d4ad8d",
|
|
"cellName": "Components",
|
|
"cellId": "ceded1fc-87a9-43c8-a756-746be3d4ad8d",
|
|
"visible": true,
|
|
"parentCellId": "74019e8a-3148-4a32-aae2-5afd16f3eb9b"
|
|
},
|
|
"e292c552-b3df-4bac-bd9a-8f44c260a5aa": {
|
|
"path": "e292c552-b3df-4bac-bd9a-8f44c260a5aa",
|
|
"cellName": "index.jsx",
|
|
"cellId": "e292c552-b3df-4bac-bd9a-8f44c260a5aa",
|
|
"visible": true,
|
|
"parentCellId": "591128f9-0994-4e01-a1ab-f23357f97aff"
|
|
},
|
|
"e97d4e61-483e-4ac5-85a1-0ff72fcdd449": {
|
|
"path": "e97d4e61-483e-4ac5-85a1-0ff72fcdd449",
|
|
"cellName": "Components",
|
|
"cellId": "e97d4e61-483e-4ac5-85a1-0ff72fcdd449",
|
|
"visible": true,
|
|
"parentCellId": "591128f9-0994-4e01-a1ab-f23357f97aff"
|
|
},
|
|
"83800be3-2a0e-4419-b379-3f995f4050e7": {
|
|
"path": "83800be3-2a0e-4419-b379-3f995f4050e7",
|
|
"cellName": "CustomAlertsSection.jsx",
|
|
"cellId": "83800be3-2a0e-4419-b379-3f995f4050e7",
|
|
"visible": true,
|
|
"parentCellId": "ceded1fc-87a9-43c8-a756-746be3d4ad8d"
|
|
},
|
|
"6a7c7720-a399-4d4d-8225-36e0b2f59731": {
|
|
"path": "6a7c7720-a399-4d4d-8225-36e0b2f59731",
|
|
"cellName": "GaugeBoxes",
|
|
"cellId": "6a7c7720-a399-4d4d-8225-36e0b2f59731",
|
|
"visible": true,
|
|
"parentCellId": "e97d4e61-483e-4ac5-85a1-0ff72fcdd449"
|
|
},
|
|
"8fe3d890-3605-407d-b06c-1d890a354e46": {
|
|
"path": "8fe3d890-3605-407d-b06c-1d890a354e46",
|
|
"cellName": "index.jsx",
|
|
"cellId": "8fe3d890-3605-407d-b06c-1d890a354e46",
|
|
"visible": true,
|
|
"parentCellId": "6a7c7720-a399-4d4d-8225-36e0b2f59731"
|
|
},
|
|
"9651d084-5c16-4417-89c1-f52ae6572a95": {
|
|
"path": "9651d084-5c16-4417-89c1-f52ae6572a95",
|
|
"cellName": "Configuration: User Sets Alert Thresholds - CustomAlertsSection.jsx:L45-53",
|
|
"cellId": "9651d084-5c16-4417-89c1-f52ae6572a95",
|
|
"visible": true,
|
|
"parentCellId": "83800be3-2a0e-4419-b379-3f995f4050e7"
|
|
},
|
|
"client/src/Pages/v1/Infrastructure/Create/Components/CustomAlertsSection.jsx-simstep-80dd889a-1fc9-4d56-b9cf-5b45bf1110b1": {
|
|
"path": "client/src/Pages/v1/Infrastructure/Create/Components/CustomAlertsSection.jsx-simstep-80dd889a-1fc9-4d56-b9cf-5b45bf1110b1",
|
|
"fileName": "CustomAlertsSection.jsx",
|
|
"wiki": "A user navigates to the 'Create Infrastructure Monitor' page to set up monitoring for a new server. They enable alerts for CPU, memory, and disk usage, and define specific thresholds for each metric. For example, an alert is configured to trigger if CPU usage exceeds 80%.",
|
|
"cellName": "Configuration: User Sets Alert Thresholds - CustomAlertsSection.jsx:L45-53",
|
|
"cellId": "9651d084-5c16-4417-89c1-f52ae6572a95",
|
|
"visible": true,
|
|
"startLine": 45,
|
|
"endLine": 53,
|
|
"parentCellId": "83800be3-2a0e-4419-b379-3f995f4050e7",
|
|
"parentPath": "client/src/Pages/v1/Infrastructure/Create/Components/CustomAlertsSection.jsx",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Infrastructure and Hardware Health Monitoring",
|
|
"simStepId": "80dd889a-1fc9-4d56-b9cf-5b45bf1110b1"
|
|
}
|
|
]
|
|
},
|
|
"4c47b5f2-5363-4816-9745-30e61d184c7a": {
|
|
"path": "4c47b5f2-5363-4816-9745-30e61d184c7a",
|
|
"cellName": "Automated Check: Backend Fetches Hardware Data - networkService.js:L7-14",
|
|
"cellId": "4c47b5f2-5363-4816-9745-30e61d184c7a",
|
|
"visible": true,
|
|
"parentCellId": "00406786-9663-440a-96b6-919d544732c0"
|
|
},
|
|
"server/src/service/v1/infrastructure/networkService.js-simstep-ed6e7faf-69dd-4d0b-bda8-137739ed288b": {
|
|
"path": "server/src/service/v1/infrastructure/networkService.js-simstep-ed6e7faf-69dd-4d0b-bda8-137739ed288b",
|
|
"fileName": "networkService.js",
|
|
"wiki": "The Checkmate server's job queue periodically initiates a check for the newly created hardware monitor. It makes an HTTP request to the monitor's URL, which points to the external 'Capture' agent running on the target server.",
|
|
"cellName": "Automated Check: Backend Fetches Hardware Data - networkService.js:L7-14",
|
|
"cellId": "4c47b5f2-5363-4816-9745-30e61d184c7a",
|
|
"visible": true,
|
|
"startLine": 7,
|
|
"endLine": 14,
|
|
"parentCellId": "00406786-9663-440a-96b6-919d544732c0",
|
|
"parentPath": "server/src/service/v1/infrastructure/networkService.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Infrastructure and Hardware Health Monitoring",
|
|
"simStepId": "ed6e7faf-69dd-4d0b-bda8-137739ed288b"
|
|
}
|
|
]
|
|
},
|
|
"c1bf10c9-8c1a-44f4-8e23-39708f0301e8": {
|
|
"path": "c1bf10c9-8c1a-44f4-8e23-39708f0301e8",
|
|
"cellName": "Automated Check: Process and Store Hardware Data - statusService.js:L265-274",
|
|
"cellId": "c1bf10c9-8c1a-44f4-8e23-39708f0301e8",
|
|
"visible": true,
|
|
"parentCellId": "fbd7d244-2f37-453c-8c83-a23a260b26cc"
|
|
},
|
|
"server/src/service/v1/infrastructure/statusService.js-simstep-e5b90cf2-9369-4741-9803-c835a81c009b": {
|
|
"path": "server/src/service/v1/infrastructure/statusService.js-simstep-e5b90cf2-9369-4741-9803-c835a81c009b",
|
|
"fileName": "statusService.js",
|
|
"wiki": "The backend's StatusService receives the payload from the Capture agent. It parses the data and constructs a 'check' document. This document, containing the detailed hardware metrics, is then saved to the database for historical tracking and visualization.",
|
|
"cellName": "Automated Check: Process and Store Hardware Data - statusService.js:L265-274",
|
|
"cellId": "c1bf10c9-8c1a-44f4-8e23-39708f0301e8",
|
|
"visible": true,
|
|
"startLine": 265,
|
|
"endLine": 274,
|
|
"parentCellId": "fbd7d244-2f37-453c-8c83-a23a260b26cc",
|
|
"parentPath": "server/src/service/v1/infrastructure/statusService.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Infrastructure and Hardware Health Monitoring",
|
|
"simStepId": "e5b90cf2-9369-4741-9803-c835a81c009b"
|
|
}
|
|
]
|
|
},
|
|
"d4f48f1a-61de-4cde-87d2-4b5215464899": {
|
|
"path": "d4f48f1a-61de-4cde-87d2-4b5215464899",
|
|
"cellName": "Automated Check: Evaluate Data Against Thresholds - notificationUtils.js:L95-109",
|
|
"cellId": "d4f48f1a-61de-4cde-87d2-4b5215464899",
|
|
"visible": true,
|
|
"parentCellId": "4940977f-933d-4bbc-b19e-749647b44d25"
|
|
},
|
|
"server/src/service/v1/infrastructure/notificationUtils.js-simstep-07fe8489-1d94-4afb-83f8-7cebb0dff49a": {
|
|
"path": "server/src/service/v1/infrastructure/notificationUtils.js-simstep-07fe8489-1d94-4afb-83f8-7cebb0dff49a",
|
|
"fileName": "notificationUtils.js",
|
|
"wiki": "The notification utility function compares the received hardware metrics against the user-defined thresholds stored in the monitor's configuration. In this case, the CPU usage of 85% is greater than the 80% threshold, so an alert condition is met.",
|
|
"cellName": "Automated Check: Evaluate Data Against Thresholds - notificationUtils.js:L95-109",
|
|
"cellId": "d4f48f1a-61de-4cde-87d2-4b5215464899",
|
|
"visible": true,
|
|
"startLine": 95,
|
|
"endLine": 109,
|
|
"parentCellId": "4940977f-933d-4bbc-b19e-749647b44d25",
|
|
"parentPath": "server/src/service/v1/infrastructure/notificationUtils.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Infrastructure and Hardware Health Monitoring",
|
|
"simStepId": "07fe8489-1d94-4afb-83f8-7cebb0dff49a"
|
|
}
|
|
]
|
|
},
|
|
"801fe70a-1a19-406c-8f0d-770b0cb74409": {
|
|
"path": "801fe70a-1a19-406c-8f0d-770b0cb74409",
|
|
"cellName": "Visualization: User Views Monitor Details - index.jsx:L23-31",
|
|
"cellId": "801fe70a-1a19-406c-8f0d-770b0cb74409",
|
|
"visible": true,
|
|
"parentCellId": "e292c552-b3df-4bac-bd9a-8f44c260a5aa"
|
|
},
|
|
"client/src/Pages/v1/Infrastructure/Details/index.jsx-simstep-c27365db-9db6-4cc9-96f0-4f046fd38562": {
|
|
"path": "client/src/Pages/v1/Infrastructure/Details/index.jsx-simstep-c27365db-9db6-4cc9-96f0-4f046fd38562",
|
|
"fileName": "index.jsx",
|
|
"wiki": "A user navigates to the details page for their 'Production Web Server' monitor in the Checkmate UI to view its performance. The React component for the details page mounts and prepares to fetch data.",
|
|
"cellName": "Visualization: User Views Monitor Details - index.jsx:L23-31",
|
|
"cellId": "801fe70a-1a19-406c-8f0d-770b0cb74409",
|
|
"visible": true,
|
|
"startLine": 23,
|
|
"endLine": 31,
|
|
"parentCellId": "e292c552-b3df-4bac-bd9a-8f44c260a5aa",
|
|
"parentPath": "client/src/Pages/v1/Infrastructure/Details/index.jsx",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Infrastructure and Hardware Health Monitoring",
|
|
"simStepId": "c27365db-9db6-4cc9-96f0-4f046fd38562"
|
|
}
|
|
]
|
|
},
|
|
"9ef7c423-f4fc-4caf-9bf5-c1aa3002ca03": {
|
|
"path": "9ef7c423-f4fc-4caf-9bf5-c1aa3002ca03",
|
|
"cellName": "Backend: Aggregate Historical Data - monitorModule.js:L312-322",
|
|
"cellId": "9ef7c423-f4fc-4caf-9bf5-c1aa3002ca03",
|
|
"visible": true,
|
|
"parentCellId": "630b3ece-2648-48d5-99b5-ef9611de2ad5"
|
|
},
|
|
"server/src/db/v1/modules/monitorModule.js-simstep-8502ae1f-f029-446e-9dde-59c2aba87a8a": {
|
|
"path": "server/src/db/v1/modules/monitorModule.js-simstep-8502ae1f-f029-446e-9dde-59c2aba87a8a",
|
|
"fileName": "monitorModule.js",
|
|
"wiki": "The backend receives the request and executes a database aggregation pipeline. This query fetches all 'hardware' checks for the monitor within the given date range and calculates metrics like average CPU usage, average memory usage, and average temperatures, grouped by time intervals.",
|
|
"cellName": "Backend: Aggregate Historical Data - monitorModule.js:L312-322",
|
|
"cellId": "9ef7c423-f4fc-4caf-9bf5-c1aa3002ca03",
|
|
"visible": true,
|
|
"startLine": 312,
|
|
"endLine": 322,
|
|
"parentCellId": "630b3ece-2648-48d5-99b5-ef9611de2ad5",
|
|
"parentPath": "server/src/db/v1/modules/monitorModule.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Infrastructure and Hardware Health Monitoring",
|
|
"simStepId": "8502ae1f-f029-446e-9dde-59c2aba87a8a"
|
|
}
|
|
]
|
|
},
|
|
"9ea2e32d-1ea8-42f2-9a17-613844723ae6": {
|
|
"path": "9ea2e32d-1ea8-42f2-9a17-613844723ae6",
|
|
"cellName": "Visualization: Frontend Renders Charts and Gauges - index.jsx:L22-51",
|
|
"cellId": "9ea2e32d-1ea8-42f2-9a17-613844723ae6",
|
|
"visible": true,
|
|
"parentCellId": "8fe3d890-3605-407d-b06c-1d890a354e46"
|
|
},
|
|
"client/src/Pages/v1/Infrastructure/Details/Components/GaugeBoxes/index.jsx-simstep-6eedce82-b9c8-4022-95e5-3a6e00628105": {
|
|
"path": "client/src/Pages/v1/Infrastructure/Details/Components/GaugeBoxes/index.jsx-simstep-6eedce82-b9c8-4022-95e5-3a6e00628105",
|
|
"fileName": "index.jsx",
|
|
"wiki": "The frontend components on the Infrastructure Details page receive the aggregated data. The 'GaugeBoxes' component uses the 'latestCheck' data to render real-time gauges for current CPU and memory usage, while the 'AreaChartBoxes' component uses the historical 'checks' data to render time-series charts.",
|
|
"cellName": "Visualization: Frontend Renders Charts and Gauges - index.jsx:L22-51",
|
|
"cellId": "9ea2e32d-1ea8-42f2-9a17-613844723ae6",
|
|
"visible": true,
|
|
"startLine": 22,
|
|
"endLine": 51,
|
|
"parentCellId": "8fe3d890-3605-407d-b06c-1d890a354e46",
|
|
"parentPath": "client/src/Pages/v1/Infrastructure/Details/Components/GaugeBoxes/index.jsx",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Infrastructure and Hardware Health Monitoring",
|
|
"simStepId": "6eedce82-b9c8-4022-95e5-3a6e00628105"
|
|
}
|
|
]
|
|
},
|
|
"1c5c9857-bf32-40e4-921b-957c252dac2a": {
|
|
"path": "1c5c9857-bf32-40e4-921b-957c252dac2a",
|
|
"cellName": "API Call:\nSubmit Monitor\nConfiguration",
|
|
"cellId": "1c5c9857-bf32-40e4-921b-957c252dac2a",
|
|
"visible": true
|
|
},
|
|
"generated-edge-simstep-815f96af-c28e-4f80-b4ab-18a6fb23eee0-1c5c9857-bf32-40e4-921b-957c252dac2a": {
|
|
"path": "generated-edge-simstep-815f96af-c28e-4f80-b4ab-18a6fb23eee0-1c5c9857-bf32-40e4-921b-957c252dac2a",
|
|
"fileName": "CustomAlertsSection.jsx",
|
|
"cellName": "API Call: Submit Monitor Configuration",
|
|
"cellId": "1c5c9857-bf32-40e4-921b-957c252dac2a",
|
|
"visible": true,
|
|
"startLine": 386,
|
|
"endLine": 389,
|
|
"parentPath": "client/src/Pages/v1/Infrastructure/Create/Components/CustomAlertsSection.jsx",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Infrastructure and Hardware Health Monitoring",
|
|
"simStepId": "815f96af-c28e-4f80-b4ab-18a6fb23eee0"
|
|
}
|
|
]
|
|
},
|
|
"a64547c9-d9e6-4941-8e5e-f49add06516b": {
|
|
"path": "a64547c9-d9e6-4941-8e5e-f49add06516b",
|
|
"cellName": "Automated Check:\nData Received\nfrom Capture\nAgent",
|
|
"cellId": "a64547c9-d9e6-4941-8e5e-f49add06516b",
|
|
"visible": true,
|
|
"parentCellId": "1670815f-860d-4ea4-92e1-b238a799d3dc"
|
|
},
|
|
"generated-edge-simstep-4434dca1-2048-4458-a70b-b70d569e378d-a64547c9-d9e6-4941-8e5e-f49add06516b": {
|
|
"path": "generated-edge-simstep-4434dca1-2048-4458-a70b-b70d569e378d-a64547c9-d9e6-4941-8e5e-f49add06516b",
|
|
"fileName": "networkService.js",
|
|
"cellName": "Automated Check: Data Received from Capture Agent",
|
|
"cellId": "a64547c9-d9e6-4941-8e5e-f49add06516b",
|
|
"visible": true,
|
|
"startLine": 266,
|
|
"endLine": 273,
|
|
"parentPath": "server/src/service/v1/infrastructure/networkService.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Infrastructure and Hardware Health Monitoring",
|
|
"simStepId": "4434dca1-2048-4458-a70b-b70d569e378d"
|
|
}
|
|
]
|
|
},
|
|
"7a250d09-50c6-4935-b10c-626b0ebe1fba": {
|
|
"path": "7a250d09-50c6-4935-b10c-626b0ebe1fba",
|
|
"cellName": "Automated Check:\nPass Data\nfor Alert\nEvaluation",
|
|
"cellId": "7a250d09-50c6-4935-b10c-626b0ebe1fba",
|
|
"visible": true,
|
|
"parentCellId": "1670815f-860d-4ea4-92e1-b238a799d3dc"
|
|
},
|
|
"generated-edge-simstep-b019a6d0-a23a-4a1d-bd21-644f01996f14-7a250d09-50c6-4935-b10c-626b0ebe1fba": {
|
|
"path": "generated-edge-simstep-b019a6d0-a23a-4a1d-bd21-644f01996f14-7a250d09-50c6-4935-b10c-626b0ebe1fba",
|
|
"fileName": "statusService.js",
|
|
"cellName": "Automated Check: Pass Data for Alert Evaluation",
|
|
"cellId": "7a250d09-50c6-4935-b10c-626b0ebe1fba",
|
|
"visible": true,
|
|
"startLine": 60,
|
|
"endLine": 79,
|
|
"parentPath": "server/src/service/v1/infrastructure/statusService.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Infrastructure and Hardware Health Monitoring",
|
|
"simStepId": "b019a6d0-a23a-4a1d-bd21-644f01996f14"
|
|
}
|
|
]
|
|
},
|
|
"3d357de8-9fd2-4d0b-9623-f36fce4cf1de": {
|
|
"path": "3d357de8-9fd2-4d0b-9623-f36fce4cf1de",
|
|
"cellName": "Automated Check:\nGenerate Alert\nNotification Content",
|
|
"cellId": "3d357de8-9fd2-4d0b-9623-f36fce4cf1de",
|
|
"visible": true
|
|
},
|
|
"generated-edge-simstep-c691b3b9-88b3-4c88-a399-ff9fd5866194-3d357de8-9fd2-4d0b-9623-f36fce4cf1de": {
|
|
"path": "generated-edge-simstep-c691b3b9-88b3-4c88-a399-ff9fd5866194-3d357de8-9fd2-4d0b-9623-f36fce4cf1de",
|
|
"fileName": "notificationUtils.js",
|
|
"cellName": "Automated Check: Generate Alert Notification Content",
|
|
"cellId": "3d357de8-9fd2-4d0b-9623-f36fce4cf1de",
|
|
"visible": true,
|
|
"startLine": 177,
|
|
"endLine": 183,
|
|
"parentPath": "server/src/service/v1/infrastructure/notificationUtils.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Infrastructure and Hardware Health Monitoring",
|
|
"simStepId": "c691b3b9-88b3-4c88-a399-ff9fd5866194"
|
|
}
|
|
]
|
|
},
|
|
"00921831-b1d9-4a5a-ae6f-5ddee7cfc1e4": {
|
|
"path": "00921831-b1d9-4a5a-ae6f-5ddee7cfc1e4",
|
|
"cellName": "API Call:\nRequest for\nHistorical Hardware\nData",
|
|
"cellId": "00921831-b1d9-4a5a-ae6f-5ddee7cfc1e4",
|
|
"visible": true
|
|
},
|
|
"generated-edge-simstep-a5d20172-1c95-4c9e-af39-f86a498734bb-00921831-b1d9-4a5a-ae6f-5ddee7cfc1e4": {
|
|
"path": "generated-edge-simstep-a5d20172-1c95-4c9e-af39-f86a498734bb-00921831-b1d9-4a5a-ae6f-5ddee7cfc1e4",
|
|
"fileName": "index.jsx",
|
|
"cellName": "API Call: Request for Historical Hardware Data",
|
|
"cellId": "00921831-b1d9-4a5a-ae6f-5ddee7cfc1e4",
|
|
"visible": true,
|
|
"startLine": 198,
|
|
"endLine": 206,
|
|
"parentPath": "client/src/Pages/v1/Infrastructure/Details/index.jsx",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Infrastructure and Hardware Health Monitoring",
|
|
"simStepId": "a5d20172-1c95-4c9e-af39-f86a498734bb"
|
|
}
|
|
]
|
|
},
|
|
"60308696-6f8a-43c8-b9a1-da199ef500cd": {
|
|
"path": "60308696-6f8a-43c8-b9a1-da199ef500cd",
|
|
"cellName": "API Response:\nSend Aggregated\nData to\nFrontend",
|
|
"cellId": "60308696-6f8a-43c8-b9a1-da199ef500cd",
|
|
"visible": true
|
|
},
|
|
"generated-edge-simstep-627fcb0c-0282-4b4d-8c55-aceb636e4da0-60308696-6f8a-43c8-b9a1-da199ef500cd": {
|
|
"path": "generated-edge-simstep-627fcb0c-0282-4b4d-8c55-aceb636e4da0-60308696-6f8a-43c8-b9a1-da199ef500cd",
|
|
"fileName": "monitorModule.js",
|
|
"cellName": "API Response: Send Aggregated Data to Frontend",
|
|
"cellId": "60308696-6f8a-43c8-b9a1-da199ef500cd",
|
|
"visible": true,
|
|
"startLine": 247,
|
|
"endLine": 262,
|
|
"parentPath": "server/src/db/v1/modules/monitorModule.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Infrastructure and Hardware Health Monitoring",
|
|
"simStepId": "627fcb0c-0282-4b4d-8c55-aceb636e4da0"
|
|
}
|
|
]
|
|
},
|
|
"feefae96-61b8-4ac5-a37c-592ed4b2330e": {
|
|
"path": "feefae96-61b8-4ac5-a37c-592ed4b2330e",
|
|
"cellName": "v2",
|
|
"cellId": "feefae96-61b8-4ac5-a37c-592ed4b2330e",
|
|
"visible": true,
|
|
"parentCellId": "99e9b746-7809-41f4-a433-1de7cc90574b"
|
|
},
|
|
"b3575a92-df07-4cf7-810f-8e5e0672d666": {
|
|
"path": "b3575a92-df07-4cf7-810f-8e5e0672d666",
|
|
"cellName": "Notifications",
|
|
"cellId": "b3575a92-df07-4cf7-810f-8e5e0672d666",
|
|
"visible": true,
|
|
"parentCellId": "1a083b4a-787c-4eb4-8029-6700de987679"
|
|
},
|
|
"cd2428fd-6545-48dd-b685-5261311b7532": {
|
|
"path": "cd2428fd-6545-48dd-b685-5261311b7532",
|
|
"cellName": "useNotifications.js",
|
|
"cellId": "cd2428fd-6545-48dd-b685-5261311b7532",
|
|
"visible": true,
|
|
"parentCellId": "3bf0c0f9-cbb0-4f0c-8cb3-6e2a4abc0961"
|
|
},
|
|
"96250197-23af-4059-9904-fd6751f70ad5": {
|
|
"path": "96250197-23af-4059-9904-fd6751f70ad5",
|
|
"cellName": "notificationRoute.js",
|
|
"cellId": "96250197-23af-4059-9904-fd6751f70ad5",
|
|
"visible": true,
|
|
"parentCellId": "d3375a20-2776-4771-b806-649bbeb541bd"
|
|
},
|
|
"8e5941e1-e577-455f-bbf2-83a418ad5908": {
|
|
"path": "8e5941e1-e577-455f-bbf2-83a418ad5908",
|
|
"cellName": "notificationController.js",
|
|
"cellId": "8e5941e1-e577-455f-bbf2-83a418ad5908",
|
|
"visible": true,
|
|
"parentCellId": "fc591f7a-d4ac-4565-949d-a87a58a79bbc"
|
|
},
|
|
"3f8ff792-40c8-4ae6-9af5-ff8b90da2f9f": {
|
|
"path": "3f8ff792-40c8-4ae6-9af5-ff8b90da2f9f",
|
|
"cellName": "infrastructure",
|
|
"cellId": "3f8ff792-40c8-4ae6-9af5-ff8b90da2f9f",
|
|
"visible": true,
|
|
"parentCellId": "feefae96-61b8-4ac5-a37c-592ed4b2330e"
|
|
},
|
|
"a6fb23f0-73bc-40ee-bb3c-ed93605a2bcb": {
|
|
"path": "a6fb23f0-73bc-40ee-bb3c-ed93605a2bcb",
|
|
"cellName": "create",
|
|
"cellId": "a6fb23f0-73bc-40ee-bb3c-ed93605a2bcb",
|
|
"visible": true,
|
|
"parentCellId": "b3575a92-df07-4cf7-810f-8e5e0672d666"
|
|
},
|
|
"62daeac4-9402-448a-972c-cb8cb760671c": {
|
|
"path": "62daeac4-9402-448a-972c-cb8cb760671c",
|
|
"cellName": "notificationModule.js",
|
|
"cellId": "62daeac4-9402-448a-972c-cb8cb760671c",
|
|
"visible": true,
|
|
"parentCellId": "82cb3dbe-c922-438a-a912-255376f4b380"
|
|
},
|
|
"159e569d-31d8-4883-b443-4ec08b21a044": {
|
|
"path": "159e569d-31d8-4883-b443-4ec08b21a044",
|
|
"cellName": "JobGenerator.ts",
|
|
"cellId": "159e569d-31d8-4883-b443-4ec08b21a044",
|
|
"visible": true,
|
|
"parentCellId": "3f8ff792-40c8-4ae6-9af5-ff8b90da2f9f"
|
|
},
|
|
"c6d9907f-0a05-4153-a27f-47c3a1c4c0aa": {
|
|
"path": "c6d9907f-0a05-4153-a27f-47c3a1c4c0aa",
|
|
"cellName": "NotificationService.ts",
|
|
"cellId": "c6d9907f-0a05-4153-a27f-47c3a1c4c0aa",
|
|
"visible": true,
|
|
"parentCellId": "3f8ff792-40c8-4ae6-9af5-ff8b90da2f9f"
|
|
},
|
|
"b71b02fb-d08e-4fcf-b959-de1b9547d9c2": {
|
|
"path": "b71b02fb-d08e-4fcf-b959-de1b9547d9c2",
|
|
"cellName": "index.jsx",
|
|
"cellId": "b71b02fb-d08e-4fcf-b959-de1b9547d9c2",
|
|
"visible": true,
|
|
"parentCellId": "a6fb23f0-73bc-40ee-bb3c-ed93605a2bcb"
|
|
},
|
|
"15486629-84b3-463a-962b-06083f69e4bf": {
|
|
"path": "15486629-84b3-463a-962b-06083f69e4bf",
|
|
"cellName": "Flow 1: Render Notification Creation Form - index.jsx:L157-321",
|
|
"cellId": "15486629-84b3-463a-962b-06083f69e4bf",
|
|
"visible": true,
|
|
"parentCellId": "b71b02fb-d08e-4fcf-b959-de1b9547d9c2"
|
|
},
|
|
"client/src/Pages/v1/Notifications/create/index.jsx-simstep-e924ec15-1bea-4e3b-befb-a8bf30cbf740": {
|
|
"path": "client/src/Pages/v1/Notifications/create/index.jsx-simstep-e924ec15-1bea-4e3b-befb-a8bf30cbf740",
|
|
"fileName": "index.jsx",
|
|
"wiki": "User accesses the `/notifications/create` route, which renders the `CreateNotifications` component. This component displays a form for setting up a new notification channel, including fields for name, type, and provider-specific details.",
|
|
"cellName": "Flow 1: Render Notification Creation Form - index.jsx:L157-321",
|
|
"cellId": "15486629-84b3-463a-962b-06083f69e4bf",
|
|
"visible": true,
|
|
"startLine": 157,
|
|
"endLine": 321,
|
|
"parentCellId": "b71b02fb-d08e-4fcf-b959-de1b9547d9c2",
|
|
"parentPath": "client/src/Pages/v1/Notifications/create/index.jsx",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Multi-Channel Alerting and Notifications",
|
|
"simStepId": "e924ec15-1bea-4e3b-befb-a8bf30cbf740"
|
|
}
|
|
]
|
|
},
|
|
"a07b805e-e55f-46cb-b54b-765b7813b0ca": {
|
|
"path": "a07b805e-e55f-46cb-b54b-765b7813b0ca",
|
|
"cellName": "Flow 1: Frontend API Call - useNotifications.js:L14-17",
|
|
"cellId": "a07b805e-e55f-46cb-b54b-765b7813b0ca",
|
|
"visible": true,
|
|
"parentCellId": "cd2428fd-6545-48dd-b685-5261311b7532"
|
|
},
|
|
"client/src/Hooks/v1/useNotifications.js-simstep-383c6be8-aa51-4398-9ae3-21035413f73a": {
|
|
"path": "client/src/Hooks/v1/useNotifications.js-simstep-383c6be8-aa51-4398-9ae3-21035413f73a",
|
|
"fileName": "useNotifications.js",
|
|
"wiki": "The `createNotification` hook executes an asynchronous function that calls `networkService.createNotification` to send the new notification data to the backend API.",
|
|
"cellName": "Flow 1: Frontend API Call - useNotifications.js:L14-17",
|
|
"cellId": "a07b805e-e55f-46cb-b54b-765b7813b0ca",
|
|
"visible": true,
|
|
"startLine": 14,
|
|
"endLine": 17,
|
|
"parentCellId": "cd2428fd-6545-48dd-b685-5261311b7532",
|
|
"parentPath": "client/src/Hooks/v1/useNotifications.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Multi-Channel Alerting and Notifications",
|
|
"simStepId": "383c6be8-aa51-4398-9ae3-21035413f73a"
|
|
}
|
|
]
|
|
},
|
|
"d0a4737f-715f-4f50-b6d5-5e4b31f86f93": {
|
|
"path": "d0a4737f-715f-4f50-b6d5-5e4b31f86f93",
|
|
"cellName": "Flow 1: Backend Route Handling - notificationRoute.js:L10",
|
|
"cellId": "d0a4737f-715f-4f50-b6d5-5e4b31f86f93",
|
|
"visible": true,
|
|
"parentCellId": "96250197-23af-4059-9904-fd6751f70ad5"
|
|
},
|
|
"server/src/routes/v1/notificationRoute.js-simstep-2f9266c9-4cbc-4b50-a280-cf8b5800d540": {
|
|
"path": "server/src/routes/v1/notificationRoute.js-simstep-2f9266c9-4cbc-4b50-a280-cf8b5800d540",
|
|
"fileName": "notificationRoute.js",
|
|
"wiki": "The backend server receives the POST request. The Express router matches the `/notifications` path and forwards the request to the `createNotification` method of the `NotificationController`.",
|
|
"cellName": "Flow 1: Backend Route Handling - notificationRoute.js:L10",
|
|
"cellId": "d0a4737f-715f-4f50-b6d5-5e4b31f86f93",
|
|
"visible": true,
|
|
"startLine": 10,
|
|
"endLine": 10,
|
|
"parentCellId": "96250197-23af-4059-9904-fd6751f70ad5",
|
|
"parentPath": "server/src/routes/v1/notificationRoute.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Multi-Channel Alerting and Notifications",
|
|
"simStepId": "2f9266c9-4cbc-4b50-a280-cf8b5800d540"
|
|
}
|
|
]
|
|
},
|
|
"4a796ccf-40a9-4446-a109-6a6eed52e898": {
|
|
"path": "4a796ccf-40a9-4446-a109-6a6eed52e898",
|
|
"cellName": "Flow 1: Database Insertion - notificationModule.js:L10-13",
|
|
"cellId": "4a796ccf-40a9-4446-a109-6a6eed52e898",
|
|
"visible": true,
|
|
"parentCellId": "62daeac4-9402-448a-972c-cb8cb760671c"
|
|
},
|
|
"server/src/db/v1/modules/notificationModule.js-simstep-d29ab4ab-be50-4f17-af6e-2c61cec9d0ab": {
|
|
"path": "server/src/db/v1/modules/notificationModule.js-simstep-d29ab4ab-be50-4f17-af6e-2c61cec9d0ab",
|
|
"fileName": "notificationModule.js",
|
|
"wiki": "The `notificationModule` creates a new instance of the `Notification` model with the provided data and saves it to the MongoDB database.",
|
|
"cellName": "Flow 1: Database Insertion - notificationModule.js:L10-13",
|
|
"cellId": "4a796ccf-40a9-4446-a109-6a6eed52e898",
|
|
"visible": true,
|
|
"startLine": 10,
|
|
"endLine": 13,
|
|
"parentCellId": "62daeac4-9402-448a-972c-cb8cb760671c",
|
|
"parentPath": "server/src/db/v1/modules/notificationModule.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Multi-Channel Alerting and Notifications",
|
|
"simStepId": "d29ab4ab-be50-4f17-af6e-2c61cec9d0ab"
|
|
}
|
|
]
|
|
},
|
|
"29c2c56e-9dc0-4304-bfbf-e0c0f8915a39": {
|
|
"path": "29c2c56e-9dc0-4304-bfbf-e0c0f8915a39",
|
|
"cellName": "Flow 1: Backend Receives Test Request - notificationRoute.js:L13",
|
|
"cellId": "29c2c56e-9dc0-4304-bfbf-e0c0f8915a39",
|
|
"visible": true,
|
|
"parentCellId": "96250197-23af-4059-9904-fd6751f70ad5"
|
|
},
|
|
"server/src/routes/v1/notificationRoute.js-simstep-c1b17b64-90e9-48bc-8927-25d7ebfc3036": {
|
|
"path": "server/src/routes/v1/notificationRoute.js-simstep-c1b17b64-90e9-48bc-8927-25d7ebfc3036",
|
|
"fileName": "notificationRoute.js",
|
|
"wiki": "The client sends a POST request to `/notifications/test`. The router directs this request to the `testNotification` method in the `NotificationController`.",
|
|
"cellName": "Flow 1: Backend Receives Test Request - notificationRoute.js:L13",
|
|
"cellId": "29c2c56e-9dc0-4304-bfbf-e0c0f8915a39",
|
|
"visible": true,
|
|
"startLine": 13,
|
|
"endLine": 13,
|
|
"parentCellId": "96250197-23af-4059-9904-fd6751f70ad5",
|
|
"parentPath": "server/src/routes/v1/notificationRoute.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Multi-Channel Alerting and Notifications",
|
|
"simStepId": "c1b17b64-90e9-48bc-8927-25d7ebfc3036"
|
|
}
|
|
]
|
|
},
|
|
"1cc01e08-4a6c-4526-b8a7-5ee8a06c1709": {
|
|
"path": "1cc01e08-4a6c-4526-b8a7-5ee8a06c1709",
|
|
"cellName": "Flow 1: Send Test Notification - notificationService.js:L120-123",
|
|
"cellId": "1cc01e08-4a6c-4526-b8a7-5ee8a06c1709",
|
|
"visible": true,
|
|
"parentCellId": "2ff1f030-2080-48da-bbbe-90302fdfc2f7"
|
|
},
|
|
"server/src/service/v1/infrastructure/notificationService.js-simstep-f29f9be1-a0cd-43a3-b259-e5105a25ce41": {
|
|
"path": "server/src/service/v1/infrastructure/notificationService.js-simstep-f29f9be1-a0cd-43a3-b259-e5105a25ce41",
|
|
"fileName": "notificationService.js",
|
|
"wiki": "The `NotificationService` prepares a standard test message and calls its internal `sendNotification` method. This method identifies the notification type (e.g., email, Slack) and uses the corresponding service (e.g., EmailService, NetworkService for webhooks) to dispatch the test message.",
|
|
"cellName": "Flow 1: Send Test Notification - notificationService.js:L120-123",
|
|
"cellId": "1cc01e08-4a6c-4526-b8a7-5ee8a06c1709",
|
|
"visible": true,
|
|
"startLine": 120,
|
|
"endLine": 123,
|
|
"parentCellId": "2ff1f030-2080-48da-bbbe-90302fdfc2f7",
|
|
"parentPath": "server/src/service/v1/infrastructure/notificationService.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Multi-Channel Alerting and Notifications",
|
|
"simStepId": "f29f9be1-a0cd-43a3-b259-e5105a25ce41"
|
|
}
|
|
]
|
|
},
|
|
"28f1eabb-4f24-4944-8a0a-04f41ceb8589": {
|
|
"path": "28f1eabb-4f24-4944-8a0a-04f41ceb8589",
|
|
"cellName": "Flow 2: Job Execution and Status Update - JobGenerator.ts:L43-66",
|
|
"cellId": "28f1eabb-4f24-4944-8a0a-04f41ceb8589",
|
|
"visible": true,
|
|
"parentCellId": "159e569d-31d8-4883-b443-4ec08b21a044"
|
|
},
|
|
"server/src/service/v2/infrastructure/JobGenerator.ts-simstep-157cec87-9b76-4a1c-9d85-0a6d3decbaa3": {
|
|
"path": "server/src/service/v2/infrastructure/JobGenerator.ts-simstep-157cec87-9b76-4a1c-9d85-0a6d3decbaa3",
|
|
"fileName": "JobGenerator.ts",
|
|
"wiki": "A background job is generated for a monitor. When executed, it performs a network check, saves the result, and updates the monitor's status via `statusService.updateMonitorStatus`.",
|
|
"cellName": "Flow 2: Job Execution and Status Update - JobGenerator.ts:L43-66",
|
|
"cellId": "28f1eabb-4f24-4944-8a0a-04f41ceb8589",
|
|
"visible": true,
|
|
"startLine": 43,
|
|
"endLine": 66,
|
|
"parentCellId": "159e569d-31d8-4883-b443-4ec08b21a044",
|
|
"parentPath": "server/src/service/v2/infrastructure/JobGenerator.ts",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Multi-Channel Alerting and Notifications",
|
|
"simStepId": "157cec87-9b76-4a1c-9d85-0a6d3decbaa3"
|
|
}
|
|
]
|
|
},
|
|
"31fe5a28-0640-4b52-841b-dd02e2ae646e": {
|
|
"path": "31fe5a28-0640-4b52-841b-dd02e2ae646e",
|
|
"cellName": "Flow 2: Initiate Notification Handling - JobGenerator.ts:L61",
|
|
"cellId": "31fe5a28-0640-4b52-841b-dd02e2ae646e",
|
|
"visible": true,
|
|
"parentCellId": "159e569d-31d8-4883-b443-4ec08b21a044"
|
|
},
|
|
"server/src/service/v2/infrastructure/JobGenerator.ts-simstep-55ad645b-118a-478e-a00c-09ef82357008": {
|
|
"path": "server/src/service/v2/infrastructure/JobGenerator.ts-simstep-55ad645b-118a-478e-a00c-09ef82357008",
|
|
"fileName": "JobGenerator.ts",
|
|
"wiki": "If the monitor's status has changed, the `handleNotifications` method of the `NotificationService` is invoked with the updated monitor's data.",
|
|
"cellName": "Flow 2: Initiate Notification Handling - JobGenerator.ts:L61",
|
|
"cellId": "31fe5a28-0640-4b52-841b-dd02e2ae646e",
|
|
"visible": true,
|
|
"startLine": 61,
|
|
"endLine": 61,
|
|
"parentCellId": "159e569d-31d8-4883-b443-4ec08b21a044",
|
|
"parentPath": "server/src/service/v2/infrastructure/JobGenerator.ts",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Multi-Channel Alerting and Notifications",
|
|
"simStepId": "55ad645b-118a-478e-a00c-09ef82357008"
|
|
}
|
|
]
|
|
},
|
|
"78e5cb9f-6a97-4d31-a487-fe7dbce5d7d1": {
|
|
"path": "78e5cb9f-6a97-4d31-a487-fe7dbce5d7d1",
|
|
"cellName": "Flow 2: Dispatch Alerts - NotificationService.ts:L28-57",
|
|
"cellId": "78e5cb9f-6a97-4d31-a487-fe7dbce5d7d1",
|
|
"visible": true,
|
|
"parentCellId": "c6d9907f-0a05-4153-a27f-47c3a1c4c0aa"
|
|
},
|
|
"server/src/service/v2/infrastructure/NotificationService.ts-simstep-8d1176f3-c755-401d-9ca8-234689b4b837": {
|
|
"path": "server/src/service/v2/infrastructure/NotificationService.ts-simstep-8d1176f3-c755-401d-9ca8-234689b4b837",
|
|
"fileName": "NotificationService.ts",
|
|
"wiki": "The `handleNotifications` method retrieves the full details for each associated notification channel. It then iterates through them, using specific provider services (e.g., `SlackService`, `EmailService`) to format and send a tailored alert message for each channel, notifying users that the monitor is down.",
|
|
"cellName": "Flow 2: Dispatch Alerts - NotificationService.ts:L28-57",
|
|
"cellId": "78e5cb9f-6a97-4d31-a487-fe7dbce5d7d1",
|
|
"visible": true,
|
|
"startLine": 28,
|
|
"endLine": 57,
|
|
"parentCellId": "c6d9907f-0a05-4153-a27f-47c3a1c4c0aa",
|
|
"parentPath": "server/src/service/v2/infrastructure/NotificationService.ts",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Multi-Channel Alerting and Notifications",
|
|
"simStepId": "8d1176f3-c755-401d-9ca8-234689b4b837"
|
|
}
|
|
]
|
|
},
|
|
"54497b9a-4910-4df4-b016-480b9ac250a7": {
|
|
"path": "54497b9a-4910-4df4-b016-480b9ac250a7",
|
|
"cellName": "Flow 1:\nSubmit Form\nData for\nCreation",
|
|
"cellId": "54497b9a-4910-4df4-b016-480b9ac250a7",
|
|
"visible": true,
|
|
"parentCellId": "d3264577-10f0-42fe-9411-7e9df0754d1e"
|
|
},
|
|
"generated-edge-simstep-71dbcd41-c6d4-4514-b5a4-6c966ca7ba6f-54497b9a-4910-4df4-b016-480b9ac250a7": {
|
|
"path": "generated-edge-simstep-71dbcd41-c6d4-4514-b5a4-6c966ca7ba6f-54497b9a-4910-4df4-b016-480b9ac250a7",
|
|
"fileName": "index.jsx",
|
|
"cellName": "Flow 1: Submit Form Data for Creation",
|
|
"cellId": "54497b9a-4910-4df4-b016-480b9ac250a7",
|
|
"visible": true,
|
|
"startLine": 96,
|
|
"endLine": 101,
|
|
"parentPath": "client/src/Pages/v1/Notifications/create/index.jsx",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Multi-Channel Alerting and Notifications",
|
|
"simStepId": "71dbcd41-c6d4-4514-b5a4-6c966ca7ba6f"
|
|
}
|
|
]
|
|
},
|
|
"dc135d8d-0515-403d-ae58-f3c04647b2ae": {
|
|
"path": "dc135d8d-0515-403d-ae58-f3c04647b2ae",
|
|
"cellName": "Flow 1:\nHTTP POST\nRequest",
|
|
"cellId": "dc135d8d-0515-403d-ae58-f3c04647b2ae",
|
|
"visible": true
|
|
},
|
|
"generated-edge-simstep-162d8d2f-6cd1-45fa-8711-1ee85c5f86ef-dc135d8d-0515-403d-ae58-f3c04647b2ae": {
|
|
"path": "generated-edge-simstep-162d8d2f-6cd1-45fa-8711-1ee85c5f86ef-dc135d8d-0515-403d-ae58-f3c04647b2ae",
|
|
"fileName": "useNotifications.js",
|
|
"cellName": "Flow 1: HTTP POST Request",
|
|
"cellId": "dc135d8d-0515-403d-ae58-f3c04647b2ae",
|
|
"visible": true,
|
|
"startLine": 1064,
|
|
"endLine": 1066,
|
|
"parentPath": "client/src/Hooks/v1/useNotifications.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Multi-Channel Alerting and Notifications",
|
|
"simStepId": "162d8d2f-6cd1-45fa-8711-1ee85c5f86ef"
|
|
}
|
|
]
|
|
},
|
|
"7b9ebb0e-a6b2-438c-bfed-9c851a1bccbc": {
|
|
"path": "7b9ebb0e-a6b2-438c-bfed-9c851a1bccbc",
|
|
"cellName": "Flow 1:\nController to\nDatabase Module",
|
|
"cellId": "7b9ebb0e-a6b2-438c-bfed-9c851a1bccbc",
|
|
"visible": true,
|
|
"parentCellId": "35864a2c-7bd0-4428-84fc-c0aa90c7f1be"
|
|
},
|
|
"generated-edge-simstep-73e63d2f-2b43-488d-9e86-170f511673f5-7b9ebb0e-a6b2-438c-bfed-9c851a1bccbc": {
|
|
"path": "generated-edge-simstep-73e63d2f-2b43-488d-9e86-170f511673f5-7b9ebb0e-a6b2-438c-bfed-9c851a1bccbc",
|
|
"fileName": "notificationRoute.js",
|
|
"cellName": "Flow 1: Controller to Database Module",
|
|
"cellId": "7b9ebb0e-a6b2-438c-bfed-9c851a1bccbc",
|
|
"visible": true,
|
|
"startLine": 55,
|
|
"endLine": 55,
|
|
"parentPath": "server/src/routes/v1/notificationRoute.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Multi-Channel Alerting and Notifications",
|
|
"simStepId": "73e63d2f-2b43-488d-9e86-170f511673f5"
|
|
}
|
|
]
|
|
},
|
|
"279155cd-ff31-41a2-8f5f-a538f01bfa66": {
|
|
"path": "279155cd-ff31-41a2-8f5f-a538f01bfa66",
|
|
"cellName": "Flow 1:\nUser Clicks\nTest Notification\nButton",
|
|
"cellId": "279155cd-ff31-41a2-8f5f-a538f01bfa66",
|
|
"visible": true,
|
|
"parentCellId": "35864a2c-7bd0-4428-84fc-c0aa90c7f1be"
|
|
},
|
|
"generated-edge-simstep-d390ef45-f2fe-4806-a45a-cc9c84b48a5a-279155cd-ff31-41a2-8f5f-a538f01bfa66": {
|
|
"path": "generated-edge-simstep-d390ef45-f2fe-4806-a45a-cc9c84b48a5a-279155cd-ff31-41a2-8f5f-a538f01bfa66",
|
|
"fileName": "notificationModule.js",
|
|
"cellName": "Flow 1: User Clicks Test Notification Button",
|
|
"cellId": "279155cd-ff31-41a2-8f5f-a538f01bfa66",
|
|
"visible": true,
|
|
"startLine": 281,
|
|
"endLine": 285,
|
|
"parentPath": "server/src/db/v1/modules/notificationModule.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Multi-Channel Alerting and Notifications",
|
|
"simStepId": "d390ef45-f2fe-4806-a45a-cc9c84b48a5a"
|
|
}
|
|
]
|
|
},
|
|
"57018b30-e2f4-4eb2-a1da-fe75afbb8c2f": {
|
|
"path": "57018b30-e2f4-4eb2-a1da-fe75afbb8c2f",
|
|
"cellName": "Flow 1:\nController to\nNotification Service",
|
|
"cellId": "57018b30-e2f4-4eb2-a1da-fe75afbb8c2f",
|
|
"visible": true,
|
|
"parentCellId": "35864a2c-7bd0-4428-84fc-c0aa90c7f1be"
|
|
},
|
|
"generated-edge-simstep-6f2bf027-50d9-472e-9569-808a64fce7cf-57018b30-e2f4-4eb2-a1da-fe75afbb8c2f": {
|
|
"path": "generated-edge-simstep-6f2bf027-50d9-472e-9569-808a64fce7cf-57018b30-e2f4-4eb2-a1da-fe75afbb8c2f",
|
|
"fileName": "notificationRoute.js",
|
|
"cellName": "Flow 1: Controller to Notification Service",
|
|
"cellId": "57018b30-e2f4-4eb2-a1da-fe75afbb8c2f",
|
|
"visible": true,
|
|
"startLine": 22,
|
|
"endLine": 22,
|
|
"parentPath": "server/src/routes/v1/notificationRoute.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Multi-Channel Alerting and Notifications",
|
|
"simStepId": "6f2bf027-50d9-472e-9569-808a64fce7cf"
|
|
}
|
|
]
|
|
},
|
|
"50797935-1447-47a4-891b-9e886e5601fa": {
|
|
"path": "50797935-1447-47a4-891b-9e886e5601fa",
|
|
"cellName": "Flow 2:\nStatus Change\nDetected",
|
|
"cellId": "50797935-1447-47a4-891b-9e886e5601fa",
|
|
"visible": true,
|
|
"parentCellId": "159e569d-31d8-4883-b443-4ec08b21a044"
|
|
},
|
|
"generated-edge-simstep-b7ec7415-fcae-4077-8c19-302a015b00b5-50797935-1447-47a4-891b-9e886e5601fa": {
|
|
"path": "generated-edge-simstep-b7ec7415-fcae-4077-8c19-302a015b00b5-50797935-1447-47a4-891b-9e886e5601fa",
|
|
"fileName": "JobGenerator.ts",
|
|
"cellName": "Flow 2: Status Change Detected",
|
|
"cellId": "50797935-1447-47a4-891b-9e886e5601fa",
|
|
"visible": true,
|
|
"startLine": 60,
|
|
"endLine": 60,
|
|
"parentPath": "server/src/service/v2/infrastructure/JobGenerator.ts",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Multi-Channel Alerting and Notifications",
|
|
"simStepId": "b7ec7415-fcae-4077-8c19-302a015b00b5"
|
|
}
|
|
]
|
|
},
|
|
"c778c6b9-c12e-45c0-8682-2c9e892867b0": {
|
|
"path": "c778c6b9-c12e-45c0-8682-2c9e892867b0",
|
|
"cellName": "Flow 2:\nMonitor Data\nPassed to\nNotification Service",
|
|
"cellId": "c778c6b9-c12e-45c0-8682-2c9e892867b0",
|
|
"visible": true,
|
|
"parentCellId": "3f8ff792-40c8-4ae6-9af5-ff8b90da2f9f"
|
|
},
|
|
"generated-edge-simstep-b7259d77-c8df-4060-ac03-58728ae3eb54-c778c6b9-c12e-45c0-8682-2c9e892867b0": {
|
|
"path": "generated-edge-simstep-b7259d77-c8df-4060-ac03-58728ae3eb54-c778c6b9-c12e-45c0-8682-2c9e892867b0",
|
|
"fileName": "JobGenerator.ts",
|
|
"cellName": "Flow 2: Monitor Data Passed to Notification Service",
|
|
"cellId": "c778c6b9-c12e-45c0-8682-2c9e892867b0",
|
|
"visible": true,
|
|
"startLine": 7,
|
|
"endLine": 7,
|
|
"parentPath": "server/src/service/v2/infrastructure/JobGenerator.ts",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Multi-Channel Alerting and Notifications",
|
|
"simStepId": "b7259d77-c8df-4060-ac03-58728ae3eb54"
|
|
}
|
|
]
|
|
},
|
|
"987f145b-5df6-4c30-bf1c-2a2d2b0e5cdc": {
|
|
"path": "987f145b-5df6-4c30-bf1c-2a2d2b0e5cdc",
|
|
"cellName": "Routes",
|
|
"cellId": "987f145b-5df6-4c30-bf1c-2a2d2b0e5cdc",
|
|
"visible": true,
|
|
"parentCellId": "d3264577-10f0-42fe-9411-7e9df0754d1e"
|
|
},
|
|
"c4d7e7dd-75b1-44f1-a34a-6ed290a8e562": {
|
|
"path": "c4d7e7dd-75b1-44f1-a34a-6ed290a8e562",
|
|
"cellName": "index.jsx",
|
|
"cellId": "c4d7e7dd-75b1-44f1-a34a-6ed290a8e562",
|
|
"visible": true,
|
|
"parentCellId": "987f145b-5df6-4c30-bf1c-2a2d2b0e5cdc"
|
|
},
|
|
"9d662180-8b65-4426-ad37-cfed4bc01fb4": {
|
|
"path": "9d662180-8b65-4426-ad37-cfed4bc01fb4",
|
|
"cellName": "StatusPage",
|
|
"cellId": "9d662180-8b65-4426-ad37-cfed4bc01fb4",
|
|
"visible": true,
|
|
"parentCellId": "1a083b4a-787c-4eb4-8029-6700de987679"
|
|
},
|
|
"773e1065-b0a5-46a9-b0cc-6b963f69f5cc": {
|
|
"path": "773e1065-b0a5-46a9-b0cc-6b963f69f5cc",
|
|
"cellName": "statusPageRoute.js",
|
|
"cellId": "773e1065-b0a5-46a9-b0cc-6b963f69f5cc",
|
|
"visible": true,
|
|
"parentCellId": "d3375a20-2776-4771-b806-649bbeb541bd"
|
|
},
|
|
"17a4f435-5a8e-4433-84a6-9ac17362709a": {
|
|
"path": "17a4f435-5a8e-4433-84a6-9ac17362709a",
|
|
"cellName": "statusPageController.js",
|
|
"cellId": "17a4f435-5a8e-4433-84a6-9ac17362709a",
|
|
"visible": true,
|
|
"parentCellId": "fc591f7a-d4ac-4565-949d-a87a58a79bbc"
|
|
},
|
|
"08602a28-f073-484e-9403-7eb798126dd4": {
|
|
"path": "08602a28-f073-484e-9403-7eb798126dd4",
|
|
"cellName": "Create",
|
|
"cellId": "08602a28-f073-484e-9403-7eb798126dd4",
|
|
"visible": true,
|
|
"parentCellId": "9d662180-8b65-4426-ad37-cfed4bc01fb4"
|
|
},
|
|
"8ef70566-37d9-48fb-b5e8-37e5b68768a2": {
|
|
"path": "8ef70566-37d9-48fb-b5e8-37e5b68768a2",
|
|
"cellName": "Status",
|
|
"cellId": "8ef70566-37d9-48fb-b5e8-37e5b68768a2",
|
|
"visible": true,
|
|
"parentCellId": "9d662180-8b65-4426-ad37-cfed4bc01fb4"
|
|
},
|
|
"f8541fe3-4bcf-4833-a226-66b5301adf58": {
|
|
"path": "f8541fe3-4bcf-4833-a226-66b5301adf58",
|
|
"cellName": "statusPageModule.js",
|
|
"cellId": "f8541fe3-4bcf-4833-a226-66b5301adf58",
|
|
"visible": true,
|
|
"parentCellId": "82cb3dbe-c922-438a-a912-255376f4b380"
|
|
},
|
|
"e2d2bbf6-dffd-4edf-8c5d-34088d9d4745": {
|
|
"path": "e2d2bbf6-dffd-4edf-8c5d-34088d9d4745",
|
|
"cellName": "index.jsx",
|
|
"cellId": "e2d2bbf6-dffd-4edf-8c5d-34088d9d4745",
|
|
"visible": true,
|
|
"parentCellId": "08602a28-f073-484e-9403-7eb798126dd4"
|
|
},
|
|
"56f6775e-9843-4ca2-bc8c-1c263b6c35e9": {
|
|
"path": "56f6775e-9843-4ca2-bc8c-1c263b6c35e9",
|
|
"cellName": "Hooks",
|
|
"cellId": "56f6775e-9843-4ca2-bc8c-1c263b6c35e9",
|
|
"visible": true,
|
|
"parentCellId": "08602a28-f073-484e-9403-7eb798126dd4"
|
|
},
|
|
"e1e6f5e0-fd8c-4260-aa4f-cdb096c6b1c3": {
|
|
"path": "e1e6f5e0-fd8c-4260-aa4f-cdb096c6b1c3",
|
|
"cellName": "index.jsx",
|
|
"cellId": "e1e6f5e0-fd8c-4260-aa4f-cdb096c6b1c3",
|
|
"visible": true,
|
|
"parentCellId": "8ef70566-37d9-48fb-b5e8-37e5b68768a2"
|
|
},
|
|
"79da0721-d810-4f7f-9cf9-3ea462bf0bff": {
|
|
"path": "79da0721-d810-4f7f-9cf9-3ea462bf0bff",
|
|
"cellName": "Hooks",
|
|
"cellId": "79da0721-d810-4f7f-9cf9-3ea462bf0bff",
|
|
"visible": true,
|
|
"parentCellId": "8ef70566-37d9-48fb-b5e8-37e5b68768a2"
|
|
},
|
|
"3945e05f-2d99-4d6d-9a3e-b6c75ea3c45a": {
|
|
"path": "3945e05f-2d99-4d6d-9a3e-b6c75ea3c45a",
|
|
"cellName": "useCreateStatusPage.jsx",
|
|
"cellId": "3945e05f-2d99-4d6d-9a3e-b6c75ea3c45a",
|
|
"visible": true,
|
|
"parentCellId": "56f6775e-9843-4ca2-bc8c-1c263b6c35e9"
|
|
},
|
|
"5b2cdab8-66f1-40a1-9621-0efaf54e04ae": {
|
|
"path": "5b2cdab8-66f1-40a1-9621-0efaf54e04ae",
|
|
"cellName": "useStatusPageFetch.jsx",
|
|
"cellId": "5b2cdab8-66f1-40a1-9621-0efaf54e04ae",
|
|
"visible": true,
|
|
"parentCellId": "79da0721-d810-4f7f-9cf9-3ea462bf0bff"
|
|
},
|
|
"00289d11-0015-4b2a-9c5b-dc9fd0f32b80": {
|
|
"path": "00289d11-0015-4b2a-9c5b-dc9fd0f32b80",
|
|
"cellName": "Create Status Page: User Initiates Creation - index.jsx:L26-313",
|
|
"cellId": "00289d11-0015-4b2a-9c5b-dc9fd0f32b80",
|
|
"visible": true,
|
|
"parentCellId": "e2d2bbf6-dffd-4edf-8c5d-34088d9d4745"
|
|
},
|
|
"client/src/Pages/v1/StatusPage/Create/index.jsx-simstep-de7b5d1f-b370-42a4-a410-4178f1e2d3a6": {
|
|
"path": "client/src/Pages/v1/StatusPage/Create/index.jsx-simstep-de7b5d1f-b370-42a4-a410-4178f1e2d3a6",
|
|
"fileName": "index.jsx",
|
|
"wiki": "The user navigates to the 'Create Status Page' screen. The `CreateStatusPage` component renders the UI, including tabs for configuration, and initializes the form state.",
|
|
"cellName": "Create Status Page: User Initiates Creation - index.jsx:L26-313",
|
|
"cellId": "00289d11-0015-4b2a-9c5b-dc9fd0f32b80",
|
|
"visible": true,
|
|
"startLine": 26,
|
|
"endLine": 313,
|
|
"parentCellId": "e2d2bbf6-dffd-4edf-8c5d-34088d9d4745",
|
|
"parentPath": "client/src/Pages/v1/StatusPage/Create/index.jsx",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Customizable Public and Private Status Pages",
|
|
"simStepId": "de7b5d1f-b370-42a4-a410-4178f1e2d3a6"
|
|
}
|
|
]
|
|
},
|
|
"aa5d6d07-05f0-45f3-b19a-199af50e35f1": {
|
|
"path": "aa5d6d07-05f0-45f3-b19a-199af50e35f1",
|
|
"cellName": "Create Status Page: Client Hook Sends API Request - useCreateStatusPage.jsx:L8-11",
|
|
"cellId": "aa5d6d07-05f0-45f3-b19a-199af50e35f1",
|
|
"visible": true,
|
|
"parentCellId": "3945e05f-2d99-4d6d-9a3e-b6c75ea3c45a"
|
|
},
|
|
"client/src/Pages/v1/StatusPage/Create/Hooks/useCreateStatusPage.jsx-simstep-3c99ae6a-b671-4f47-bed0-ddccd8ff5d35": {
|
|
"path": "client/src/Pages/v1/StatusPage/Create/Hooks/useCreateStatusPage.jsx-simstep-3c99ae6a-b671-4f47-bed0-ddccd8ff5d35",
|
|
"fileName": "useCreateStatusPage.jsx",
|
|
"wiki": "The `useCreateStatusPage` hook receives the form data and uses the `networkService` to send a request to the backend API to create or update the status page.",
|
|
"cellName": "Create Status Page: Client Hook Sends API Request - useCreateStatusPage.jsx:L8-11",
|
|
"cellId": "aa5d6d07-05f0-45f3-b19a-199af50e35f1",
|
|
"visible": true,
|
|
"startLine": 8,
|
|
"endLine": 11,
|
|
"parentCellId": "3945e05f-2d99-4d6d-9a3e-b6c75ea3c45a",
|
|
"parentPath": "client/src/Pages/v1/StatusPage/Create/Hooks/useCreateStatusPage.jsx",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Customizable Public and Private Status Pages",
|
|
"simStepId": "3c99ae6a-b671-4f47-bed0-ddccd8ff5d35"
|
|
}
|
|
]
|
|
},
|
|
"3efddcad-588f-4492-9808-b0c81c823c96": {
|
|
"path": "3efddcad-588f-4492-9808-b0c81c823c96",
|
|
"cellName": "Create Status Page: Backend Route Handling - statusPageRoute.js:L14",
|
|
"cellId": "3efddcad-588f-4492-9808-b0c81c823c96",
|
|
"visible": true,
|
|
"parentCellId": "773e1065-b0a5-46a9-b0cc-6b963f69f5cc"
|
|
},
|
|
"server/src/routes/v1/statusPageRoute.js-simstep-84f11567-b3c4-42a2-aa7f-d78c1412099a": {
|
|
"path": "server/src/routes/v1/statusPageRoute.js-simstep-84f11567-b3c4-42a2-aa7f-d78c1412099a",
|
|
"fileName": "statusPageRoute.js",
|
|
"wiki": "The backend router receives the POST request on `/api/v1/status-page`. It uses `multer` to handle the file upload and forwards the request to the `createStatusPage` method in the `StatusPageController`.",
|
|
"cellName": "Create Status Page: Backend Route Handling - statusPageRoute.js:L14",
|
|
"cellId": "3efddcad-588f-4492-9808-b0c81c823c96",
|
|
"visible": true,
|
|
"startLine": 14,
|
|
"endLine": 14,
|
|
"parentCellId": "773e1065-b0a5-46a9-b0cc-6b963f69f5cc",
|
|
"parentPath": "server/src/routes/v1/statusPageRoute.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Customizable Public and Private Status Pages",
|
|
"simStepId": "84f11567-b3c4-42a2-aa7f-d78c1412099a"
|
|
}
|
|
]
|
|
},
|
|
"f15ef77e-380f-4768-98cb-7f0dd4113841": {
|
|
"path": "f15ef77e-380f-4768-98cb-7f0dd4113841",
|
|
"cellName": "Create Status Page: Controller Logic - statusPageController.js:L18-24",
|
|
"cellId": "f15ef77e-380f-4768-98cb-7f0dd4113841",
|
|
"visible": true,
|
|
"parentCellId": "17a4f435-5a8e-4433-84a6-9ac17362709a"
|
|
},
|
|
"server/src/controllers/v1/statusPageController.js-simstep-01694730-8a75-4949-8815-bb4d6e3e2b42": {
|
|
"path": "server/src/controllers/v1/statusPageController.js-simstep-01694730-8a75-4949-8815-bb4d6e3e2b42",
|
|
"fileName": "statusPageController.js",
|
|
"wiki": "The `StatusPageController` validates the incoming request body and file. It then calls the `statusPageModule` to persist the new status page in the database.",
|
|
"cellName": "Create Status Page: Controller Logic - statusPageController.js:L18-24",
|
|
"cellId": "f15ef77e-380f-4768-98cb-7f0dd4113841",
|
|
"visible": true,
|
|
"startLine": 18,
|
|
"endLine": 24,
|
|
"parentCellId": "17a4f435-5a8e-4433-84a6-9ac17362709a",
|
|
"parentPath": "server/src/controllers/v1/statusPageController.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Customizable Public and Private Status Pages",
|
|
"simStepId": "01694730-8a75-4949-8815-bb4d6e3e2b42"
|
|
}
|
|
]
|
|
},
|
|
"e234917e-a950-48f5-b864-cd957b2216e1": {
|
|
"path": "e234917e-a950-48f5-b864-cd957b2216e1",
|
|
"cellName": "Create Status Page: Database Record Creation - statusPageModule.js:L14-34",
|
|
"cellId": "e234917e-a950-48f5-b864-cd957b2216e1",
|
|
"visible": true,
|
|
"parentCellId": "f8541fe3-4bcf-4833-a226-66b5301adf58"
|
|
},
|
|
"server/src/db/v1/modules/statusPageModule.js-simstep-b6fa93cd-6fca-4d9e-969a-5400e2437ee8": {
|
|
"path": "server/src/db/v1/modules/statusPageModule.js-simstep-b6fa93cd-6fca-4d9e-969a-5400e2437ee8",
|
|
"fileName": "statusPageModule.js",
|
|
"wiki": "The `StatusPageModule` creates a new instance of the `StatusPage` Mongoose model, populates it with the provided data including the image buffer, and saves it to the MongoDB database. It also handles duplicate URL errors.",
|
|
"cellName": "Create Status Page: Database Record Creation - statusPageModule.js:L14-34",
|
|
"cellId": "e234917e-a950-48f5-b864-cd957b2216e1",
|
|
"visible": true,
|
|
"startLine": 14,
|
|
"endLine": 34,
|
|
"parentCellId": "f8541fe3-4bcf-4833-a226-66b5301adf58",
|
|
"parentPath": "server/src/db/v1/modules/statusPageModule.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Customizable Public and Private Status Pages",
|
|
"simStepId": "b6fa93cd-6fca-4d9e-969a-5400e2437ee8"
|
|
}
|
|
]
|
|
},
|
|
"058ded1f-83ce-40a7-a99d-d178c81fe557": {
|
|
"path": "058ded1f-83ce-40a7-a99d-d178c81fe557",
|
|
"cellName": "Create Status Page: Controller Sends Success Response - statusPageController.js:L25-28",
|
|
"cellId": "058ded1f-83ce-40a7-a99d-d178c81fe557",
|
|
"visible": true,
|
|
"parentCellId": "17a4f435-5a8e-4433-84a6-9ac17362709a"
|
|
},
|
|
"server/src/controllers/v1/statusPageController.js-simstep-2a115421-5175-4c8f-8cdd-62f3fe148af5": {
|
|
"path": "server/src/controllers/v1/statusPageController.js-simstep-2a115421-5175-4c8f-8cdd-62f3fe148af5",
|
|
"fileName": "statusPageController.js",
|
|
"wiki": "The controller receives the newly created status page object from the database module and sends a successful JSON response back to the client, including a success message and the new data.",
|
|
"cellName": "Create Status Page: Controller Sends Success Response - statusPageController.js:L25-28",
|
|
"cellId": "058ded1f-83ce-40a7-a99d-d178c81fe557",
|
|
"visible": true,
|
|
"startLine": 25,
|
|
"endLine": 28,
|
|
"parentCellId": "17a4f435-5a8e-4433-84a6-9ac17362709a",
|
|
"parentPath": "server/src/controllers/v1/statusPageController.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Customizable Public and Private Status Pages",
|
|
"simStepId": "2a115421-5175-4c8f-8cdd-62f3fe148af5"
|
|
}
|
|
]
|
|
},
|
|
"30aaee38-f509-4e19-a917-e6d2f4bba61c": {
|
|
"path": "30aaee38-f509-4e19-a917-e6d2f4bba61c",
|
|
"cellName": "View Status Page: User Navigates to URL - index.jsx:L148-152",
|
|
"cellId": "30aaee38-f509-4e19-a917-e6d2f4bba61c",
|
|
"visible": true,
|
|
"parentCellId": "c4d7e7dd-75b1-44f1-a34a-6ed290a8e562"
|
|
},
|
|
"client/src/Routes/index.jsx-simstep-132354d7-df7a-4e03-9d00-16d54f836a1b": {
|
|
"path": "client/src/Routes/index.jsx-simstep-132354d7-df7a-4e03-9d00-16d54f836a1b",
|
|
"fileName": "index.jsx",
|
|
"wiki": "A user accesses a status page URL (e.g., /status/uptime/my-awesome-service). The React router matches the path and renders the `Status` component, which is responsible for fetching and displaying the page details.",
|
|
"cellName": "View Status Page: User Navigates to URL - index.jsx:L148-152",
|
|
"cellId": "30aaee38-f509-4e19-a917-e6d2f4bba61c",
|
|
"visible": true,
|
|
"startLine": 148,
|
|
"endLine": 152,
|
|
"parentCellId": "c4d7e7dd-75b1-44f1-a34a-6ed290a8e562",
|
|
"parentPath": "client/src/Routes/index.jsx",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Customizable Public and Private Status Pages",
|
|
"simStepId": "132354d7-df7a-4e03-9d00-16d54f836a1b"
|
|
}
|
|
]
|
|
},
|
|
"ecfb2d04-2681-4f16-af75-632f69e1a868": {
|
|
"path": "ecfb2d04-2681-4f16-af75-632f69e1a868",
|
|
"cellName": "View Status Page: Client Hook Sends API Request - useStatusPageFetch.jsx:L15-18",
|
|
"cellId": "ecfb2d04-2681-4f16-af75-632f69e1a868",
|
|
"visible": true,
|
|
"parentCellId": "5b2cdab8-66f1-40a1-9621-0efaf54e04ae"
|
|
},
|
|
"client/src/Pages/v1/StatusPage/Status/Hooks/useStatusPageFetch.jsx-simstep-b57bb249-9066-454e-aa8c-89108fdfcc2e": {
|
|
"path": "client/src/Pages/v1/StatusPage/Status/Hooks/useStatusPageFetch.jsx-simstep-b57bb249-9066-454e-aa8c-89108fdfcc2e",
|
|
"fileName": "useStatusPageFetch.jsx",
|
|
"wiki": "The `useStatusPageFetch` hook uses the `networkService` to send a GET request to the backend API to retrieve the status page data based on its URL.",
|
|
"cellName": "View Status Page: Client Hook Sends API Request - useStatusPageFetch.jsx:L15-18",
|
|
"cellId": "ecfb2d04-2681-4f16-af75-632f69e1a868",
|
|
"visible": true,
|
|
"startLine": 15,
|
|
"endLine": 18,
|
|
"parentCellId": "5b2cdab8-66f1-40a1-9621-0efaf54e04ae",
|
|
"parentPath": "client/src/Pages/v1/StatusPage/Status/Hooks/useStatusPageFetch.jsx",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Customizable Public and Private Status Pages",
|
|
"simStepId": "b57bb249-9066-454e-aa8c-89108fdfcc2e"
|
|
}
|
|
]
|
|
},
|
|
"2e26cd2f-1413-4c16-8e63-ea7808ab6c52": {
|
|
"path": "2e26cd2f-1413-4c16-8e63-ea7808ab6c52",
|
|
"cellName": "View Status Page: Backend Route Handling - statusPageRoute.js:L16",
|
|
"cellId": "2e26cd2f-1413-4c16-8e63-ea7808ab6c52",
|
|
"visible": true,
|
|
"parentCellId": "773e1065-b0a5-46a9-b0cc-6b963f69f5cc"
|
|
},
|
|
"server/src/routes/v1/statusPageRoute.js-simstep-477c6821-b29b-4b38-8930-ced21b8a75e5": {
|
|
"path": "server/src/routes/v1/statusPageRoute.js-simstep-477c6821-b29b-4b38-8930-ced21b8a75e5",
|
|
"fileName": "statusPageRoute.js",
|
|
"wiki": "The backend router receives the GET request on `/api/v1/status-page/:url` and forwards it to the `getStatusPageByUrl` method in the `StatusPageController`.",
|
|
"cellName": "View Status Page: Backend Route Handling - statusPageRoute.js:L16",
|
|
"cellId": "2e26cd2f-1413-4c16-8e63-ea7808ab6c52",
|
|
"visible": true,
|
|
"startLine": 16,
|
|
"endLine": 16,
|
|
"parentCellId": "773e1065-b0a5-46a9-b0cc-6b963f69f5cc",
|
|
"parentPath": "server/src/routes/v1/statusPageRoute.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Customizable Public and Private Status Pages",
|
|
"simStepId": "477c6821-b29b-4b38-8930-ced21b8a75e5"
|
|
}
|
|
]
|
|
},
|
|
"9f217674-4cd7-4ef8-b088-d5620042a7ba": {
|
|
"path": "9f217674-4cd7-4ef8-b088-d5620042a7ba",
|
|
"cellName": "View Status Page: Controller Logic - statusPageController.js:L75-78",
|
|
"cellId": "9f217674-4cd7-4ef8-b088-d5620042a7ba",
|
|
"visible": true,
|
|
"parentCellId": "17a4f435-5a8e-4433-84a6-9ac17362709a"
|
|
},
|
|
"server/src/controllers/v1/statusPageController.js-simstep-5bdbd179-ce8f-4171-a073-af72a99b4468": {
|
|
"path": "server/src/controllers/v1/statusPageController.js-simstep-5bdbd179-ce8f-4171-a073-af72a99b4468",
|
|
"fileName": "statusPageController.js",
|
|
"wiki": "The `StatusPageController` validates the request parameters and calls the `statusPageModule` to retrieve the status page data from the database.",
|
|
"cellName": "View Status Page: Controller Logic - statusPageController.js:L75-78",
|
|
"cellId": "9f217674-4cd7-4ef8-b088-d5620042a7ba",
|
|
"visible": true,
|
|
"startLine": 75,
|
|
"endLine": 78,
|
|
"parentCellId": "17a4f435-5a8e-4433-84a6-9ac17362709a",
|
|
"parentPath": "server/src/controllers/v1/statusPageController.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Customizable Public and Private Status Pages",
|
|
"simStepId": "5bdbd179-ce8f-4171-a073-af72a99b4468"
|
|
}
|
|
]
|
|
},
|
|
"26da60f9-dde4-44ec-be89-91858cc14f90": {
|
|
"path": "26da60f9-dde4-44ec-be89-91858cc14f90",
|
|
"cellName": "View Status Page: Database Record Retrieval - statusPageModule.js:L89-299",
|
|
"cellId": "26da60f9-dde4-44ec-be89-91858cc14f90",
|
|
"visible": true,
|
|
"parentCellId": "f8541fe3-4bcf-4833-a226-66b5301adf58"
|
|
},
|
|
"server/src/db/v1/modules/statusPageModule.js-simstep-ceb044e9-6545-4d04-bf79-ec8146eb8ec9": {
|
|
"path": "server/src/db/v1/modules/statusPageModule.js-simstep-ceb044e9-6545-4d04-bf79-ec8146eb8ec9",
|
|
"fileName": "statusPageModule.js",
|
|
"wiki": "The `StatusPageModule` executes a complex MongoDB aggregation pipeline to find the status page by its URL, and then look up and join data for all associated monitors and their recent checks.",
|
|
"cellName": "View Status Page: Database Record Retrieval - statusPageModule.js:L89-299",
|
|
"cellId": "26da60f9-dde4-44ec-be89-91858cc14f90",
|
|
"visible": true,
|
|
"startLine": 89,
|
|
"endLine": 299,
|
|
"parentCellId": "f8541fe3-4bcf-4833-a226-66b5301adf58",
|
|
"parentPath": "server/src/db/v1/modules/statusPageModule.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Customizable Public and Private Status Pages",
|
|
"simStepId": "ceb044e9-6545-4d04-bf79-ec8146eb8ec9"
|
|
}
|
|
]
|
|
},
|
|
"d76e70e0-41f9-46cc-b775-b2027c5a0d5b": {
|
|
"path": "d76e70e0-41f9-46cc-b775-b2027c5a0d5b",
|
|
"cellName": "View Status Page: Controller Sends Success Response - statusPageController.js:L79-82",
|
|
"cellId": "d76e70e0-41f9-46cc-b775-b2027c5a0d5b",
|
|
"visible": true,
|
|
"parentCellId": "17a4f435-5a8e-4433-84a6-9ac17362709a"
|
|
},
|
|
"server/src/controllers/v1/statusPageController.js-simstep-83224406-2f1d-4030-9beb-d65c2baf544d": {
|
|
"path": "server/src/controllers/v1/statusPageController.js-simstep-83224406-2f1d-4030-9beb-d65c2baf544d",
|
|
"fileName": "statusPageController.js",
|
|
"wiki": "The controller receives the status page data and sends a successful JSON response back to the client.",
|
|
"cellName": "View Status Page: Controller Sends Success Response - statusPageController.js:L79-82",
|
|
"cellId": "d76e70e0-41f9-46cc-b775-b2027c5a0d5b",
|
|
"visible": true,
|
|
"startLine": 79,
|
|
"endLine": 82,
|
|
"parentCellId": "17a4f435-5a8e-4433-84a6-9ac17362709a",
|
|
"parentPath": "server/src/controllers/v1/statusPageController.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Customizable Public and Private Status Pages",
|
|
"simStepId": "83224406-2f1d-4030-9beb-d65c2baf544d"
|
|
}
|
|
]
|
|
},
|
|
"f59b91de-5196-4a43-9d57-3f28402c0672": {
|
|
"path": "f59b91de-5196-4a43-9d57-3f28402c0672",
|
|
"cellName": "View Status Page: Component Renders UI - index.jsx:L145-163",
|
|
"cellId": "f59b91de-5196-4a43-9d57-3f28402c0672",
|
|
"visible": true,
|
|
"parentCellId": "e1e6f5e0-fd8c-4260-aa4f-cdb096c6b1c3"
|
|
},
|
|
"client/src/Pages/v1/StatusPage/Status/index.jsx-simstep-3d51e811-a659-442e-97e0-00798cd15647": {
|
|
"path": "client/src/Pages/v1/StatusPage/Status/index.jsx-simstep-3d51e811-a659-442e-97e0-00798cd15647",
|
|
"fileName": "index.jsx",
|
|
"wiki": "The `Status` component re-renders with the fetched data. It displays the company name, logo, overall status bar, and a list of monitors with their individual status and historical uptime charts.",
|
|
"cellName": "View Status Page: Component Renders UI - index.jsx:L145-163",
|
|
"cellId": "f59b91de-5196-4a43-9d57-3f28402c0672",
|
|
"visible": true,
|
|
"startLine": 145,
|
|
"endLine": 163,
|
|
"parentCellId": "e1e6f5e0-fd8c-4260-aa4f-cdb096c6b1c3",
|
|
"parentPath": "client/src/Pages/v1/StatusPage/Status/index.jsx",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Customizable Public and Private Status Pages",
|
|
"simStepId": "3d51e811-a659-442e-97e0-00798cd15647"
|
|
}
|
|
]
|
|
},
|
|
"de23eee2-b60a-4236-a890-3c5b78388bb3": {
|
|
"path": "de23eee2-b60a-4236-a890-3c5b78388bb3",
|
|
"cellName": "Create Status\nPage: Form\nSubmission",
|
|
"cellId": "de23eee2-b60a-4236-a890-3c5b78388bb3",
|
|
"visible": true,
|
|
"parentCellId": "08602a28-f073-484e-9403-7eb798126dd4"
|
|
},
|
|
"generated-edge-simstep-d419f7b6-7b9b-4494-9fad-83e3ce208ca4-de23eee2-b60a-4236-a890-3c5b78388bb3": {
|
|
"path": "generated-edge-simstep-d419f7b6-7b9b-4494-9fad-83e3ce208ca4-de23eee2-b60a-4236-a890-3c5b78388bb3",
|
|
"fileName": "index.jsx",
|
|
"cellName": "Create Status Page: Form Submission",
|
|
"cellId": "de23eee2-b60a-4236-a890-3c5b78388bb3",
|
|
"visible": true,
|
|
"startLine": 143,
|
|
"endLine": 159,
|
|
"parentPath": "client/src/Pages/v1/StatusPage/Create/index.jsx",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Customizable Public and Private Status Pages",
|
|
"simStepId": "d419f7b6-7b9b-4494-9fad-83e3ce208ca4"
|
|
}
|
|
]
|
|
},
|
|
"d7faa713-4204-4a97-a172-d621da36c287": {
|
|
"path": "d7faa713-4204-4a97-a172-d621da36c287",
|
|
"cellName": "Create Status\nPage: API\nCall to\nBackend",
|
|
"cellId": "d7faa713-4204-4a97-a172-d621da36c287",
|
|
"visible": true
|
|
},
|
|
"generated-edge-simstep-8a2ab372-73db-4b9f-bc0e-6a20f15a4d79-d7faa713-4204-4a97-a172-d621da36c287": {
|
|
"path": "generated-edge-simstep-8a2ab372-73db-4b9f-bc0e-6a20f15a4d79-d7faa713-4204-4a97-a172-d621da36c287",
|
|
"fileName": "useCreateStatusPage.jsx",
|
|
"cellName": "Create Status Page: API Call to Backend",
|
|
"cellId": "d7faa713-4204-4a97-a172-d621da36c287",
|
|
"visible": true,
|
|
"startLine": 912,
|
|
"endLine": 944,
|
|
"parentPath": "client/src/Pages/v1/StatusPage/Create/Hooks/useCreateStatusPage.jsx",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Customizable Public and Private Status Pages",
|
|
"simStepId": "8a2ab372-73db-4b9f-bc0e-6a20f15a4d79"
|
|
}
|
|
]
|
|
},
|
|
"a3f28fa6-8268-4c13-95a0-83e3b1abdcb0": {
|
|
"path": "a3f28fa6-8268-4c13-95a0-83e3b1abdcb0",
|
|
"cellName": "Create Status\nPage: Data\nPassed to\nController",
|
|
"cellId": "a3f28fa6-8268-4c13-95a0-83e3b1abdcb0",
|
|
"visible": true,
|
|
"parentCellId": "35864a2c-7bd0-4428-84fc-c0aa90c7f1be"
|
|
},
|
|
"generated-edge-simstep-0923a533-c572-4da3-ad87-cdfff111f3bb-a3f28fa6-8268-4c13-95a0-83e3b1abdcb0": {
|
|
"path": "generated-edge-simstep-0923a533-c572-4da3-ad87-cdfff111f3bb-a3f28fa6-8268-4c13-95a0-83e3b1abdcb0",
|
|
"fileName": "statusPageRoute.js",
|
|
"cellName": "Create Status Page: Data Passed to Controller",
|
|
"cellId": "a3f28fa6-8268-4c13-95a0-83e3b1abdcb0",
|
|
"visible": true,
|
|
"startLine": 14,
|
|
"endLine": 14,
|
|
"parentPath": "server/src/routes/v1/statusPageRoute.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Customizable Public and Private Status Pages",
|
|
"simStepId": "0923a533-c572-4da3-ad87-cdfff111f3bb"
|
|
}
|
|
]
|
|
},
|
|
"9735611c-924b-49aa-92e8-10d8a86ac288": {
|
|
"path": "9735611c-924b-49aa-92e8-10d8a86ac288",
|
|
"cellName": "Create Status\nPage: Data\nSent to\nDB Module",
|
|
"cellId": "9735611c-924b-49aa-92e8-10d8a86ac288",
|
|
"visible": true,
|
|
"parentCellId": "35864a2c-7bd0-4428-84fc-c0aa90c7f1be"
|
|
},
|
|
"generated-edge-simstep-67603f03-c088-4ed0-9f18-072435134cdd-9735611c-924b-49aa-92e8-10d8a86ac288": {
|
|
"path": "generated-edge-simstep-67603f03-c088-4ed0-9f18-072435134cdd-9735611c-924b-49aa-92e8-10d8a86ac288",
|
|
"fileName": "statusPageController.js",
|
|
"cellName": "Create Status Page: Data Sent to DB Module",
|
|
"cellId": "9735611c-924b-49aa-92e8-10d8a86ac288",
|
|
"visible": true,
|
|
"startLine": 21,
|
|
"endLine": 21,
|
|
"parentPath": "server/src/controllers/v1/statusPageController.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Customizable Public and Private Status Pages",
|
|
"simStepId": "67603f03-c088-4ed0-9f18-072435134cdd"
|
|
}
|
|
]
|
|
},
|
|
"40cb7d7b-2888-44de-bb7d-7735af70ba34": {
|
|
"path": "40cb7d7b-2888-44de-bb7d-7735af70ba34",
|
|
"cellName": "Create Status\nPage: Database\nResult Returned",
|
|
"cellId": "40cb7d7b-2888-44de-bb7d-7735af70ba34",
|
|
"visible": true,
|
|
"parentCellId": "35864a2c-7bd0-4428-84fc-c0aa90c7f1be"
|
|
},
|
|
"generated-edge-simstep-ea4b3532-baae-4890-a73e-2ca385d0319e-40cb7d7b-2888-44de-bb7d-7735af70ba34": {
|
|
"path": "generated-edge-simstep-ea4b3532-baae-4890-a73e-2ca385d0319e-40cb7d7b-2888-44de-bb7d-7735af70ba34",
|
|
"fileName": "statusPageModule.js",
|
|
"cellName": "Create Status Page: Database Result Returned",
|
|
"cellId": "40cb7d7b-2888-44de-bb7d-7735af70ba34",
|
|
"visible": true,
|
|
"startLine": 27,
|
|
"endLine": 27,
|
|
"parentPath": "server/src/db/v1/modules/statusPageModule.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Customizable Public and Private Status Pages",
|
|
"simStepId": "ea4b3532-baae-4890-a73e-2ca385d0319e"
|
|
}
|
|
]
|
|
},
|
|
"c3f83811-8674-4dbb-9f84-79499f97fb1f": {
|
|
"path": "c3f83811-8674-4dbb-9f84-79499f97fb1f",
|
|
"cellName": "Create Status\nPage: UI\nReceives Response\nand Redirects",
|
|
"cellId": "c3f83811-8674-4dbb-9f84-79499f97fb1f",
|
|
"visible": true
|
|
},
|
|
"generated-edge-simstep-210acc07-81c3-4394-b566-41f6031e8eeb-c3f83811-8674-4dbb-9f84-79499f97fb1f": {
|
|
"path": "generated-edge-simstep-210acc07-81c3-4394-b566-41f6031e8eeb-c3f83811-8674-4dbb-9f84-79499f97fb1f",
|
|
"fileName": "statusPageController.js",
|
|
"cellName": "Create Status Page: UI Receives Response and Redirects",
|
|
"cellId": "c3f83811-8674-4dbb-9f84-79499f97fb1f",
|
|
"visible": true,
|
|
"startLine": 151,
|
|
"endLine": 156,
|
|
"parentPath": "server/src/controllers/v1/statusPageController.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Customizable Public and Private Status Pages",
|
|
"simStepId": "210acc07-81c3-4394-b566-41f6031e8eeb"
|
|
}
|
|
]
|
|
},
|
|
"0575bf87-5362-4988-b895-7e514148d420": {
|
|
"path": "0575bf87-5362-4988-b895-7e514148d420",
|
|
"cellName": "View Status\nPage: Component\nTriggers Data\nFetch",
|
|
"cellId": "0575bf87-5362-4988-b895-7e514148d420",
|
|
"visible": true,
|
|
"parentCellId": "d3264577-10f0-42fe-9411-7e9df0754d1e"
|
|
},
|
|
"generated-edge-simstep-2ba49e28-1cac-47f5-9118-ab930788736a-0575bf87-5362-4988-b895-7e514148d420": {
|
|
"path": "generated-edge-simstep-2ba49e28-1cac-47f5-9118-ab930788736a-0575bf87-5362-4988-b895-7e514148d420",
|
|
"fileName": "index.jsx",
|
|
"cellName": "View Status Page: Component Triggers Data Fetch",
|
|
"cellId": "0575bf87-5362-4988-b895-7e514148d420",
|
|
"visible": true,
|
|
"startLine": 29,
|
|
"endLine": 29,
|
|
"parentPath": "client/src/Routes/index.jsx",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Customizable Public and Private Status Pages",
|
|
"simStepId": "2ba49e28-1cac-47f5-9118-ab930788736a"
|
|
}
|
|
]
|
|
},
|
|
"ae1c9341-0e39-4d91-a9ac-5cc8a627c247": {
|
|
"path": "ae1c9341-0e39-4d91-a9ac-5cc8a627c247",
|
|
"cellName": "View Status\nPage: API\nCall to\nBackend",
|
|
"cellId": "ae1c9341-0e39-4d91-a9ac-5cc8a627c247",
|
|
"visible": true
|
|
},
|
|
"generated-edge-simstep-de0714d2-bf1e-4a1a-a389-60793de8b772-ae1c9341-0e39-4d91-a9ac-5cc8a627c247": {
|
|
"path": "generated-edge-simstep-de0714d2-bf1e-4a1a-a389-60793de8b772-ae1c9341-0e39-4d91-a9ac-5cc8a627c247",
|
|
"fileName": "useStatusPageFetch.jsx",
|
|
"cellName": "View Status Page: API Call to Backend",
|
|
"cellId": "ae1c9341-0e39-4d91-a9ac-5cc8a627c247",
|
|
"visible": true,
|
|
"startLine": 896,
|
|
"endLine": 902,
|
|
"parentPath": "client/src/Pages/v1/StatusPage/Status/Hooks/useStatusPageFetch.jsx",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Customizable Public and Private Status Pages",
|
|
"simStepId": "de0714d2-bf1e-4a1a-a389-60793de8b772"
|
|
}
|
|
]
|
|
},
|
|
"5735f30c-b55f-444a-9236-f3d75f68ed27": {
|
|
"path": "5735f30c-b55f-444a-9236-f3d75f68ed27",
|
|
"cellName": "View Status\nPage: Data\nPassed to\nController",
|
|
"cellId": "5735f30c-b55f-444a-9236-f3d75f68ed27",
|
|
"visible": true,
|
|
"parentCellId": "35864a2c-7bd0-4428-84fc-c0aa90c7f1be"
|
|
},
|
|
"generated-edge-simstep-b79b8922-4de6-477d-8648-37b4bd9a6767-5735f30c-b55f-444a-9236-f3d75f68ed27": {
|
|
"path": "generated-edge-simstep-b79b8922-4de6-477d-8648-37b4bd9a6767-5735f30c-b55f-444a-9236-f3d75f68ed27",
|
|
"fileName": "statusPageRoute.js",
|
|
"cellName": "View Status Page: Data Passed to Controller",
|
|
"cellId": "5735f30c-b55f-444a-9236-f3d75f68ed27",
|
|
"visible": true,
|
|
"startLine": 16,
|
|
"endLine": 16,
|
|
"parentPath": "server/src/routes/v1/statusPageRoute.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Customizable Public and Private Status Pages",
|
|
"simStepId": "b79b8922-4de6-477d-8648-37b4bd9a6767"
|
|
}
|
|
]
|
|
},
|
|
"dace45d6-fb25-4dae-b940-49ef7d77bbed": {
|
|
"path": "dace45d6-fb25-4dae-b940-49ef7d77bbed",
|
|
"cellName": "View Status\nPage: URL\nSent to\nDB Module",
|
|
"cellId": "dace45d6-fb25-4dae-b940-49ef7d77bbed",
|
|
"visible": true,
|
|
"parentCellId": "35864a2c-7bd0-4428-84fc-c0aa90c7f1be"
|
|
},
|
|
"generated-edge-simstep-788307ef-4cfa-4f5a-b2e9-a0bfc7a378d8-dace45d6-fb25-4dae-b940-49ef7d77bbed": {
|
|
"path": "generated-edge-simstep-788307ef-4cfa-4f5a-b2e9-a0bfc7a378d8-dace45d6-fb25-4dae-b940-49ef7d77bbed",
|
|
"fileName": "statusPageController.js",
|
|
"cellName": "View Status Page: URL Sent to DB Module",
|
|
"cellId": "dace45d6-fb25-4dae-b940-49ef7d77bbed",
|
|
"visible": true,
|
|
"startLine": 78,
|
|
"endLine": 78,
|
|
"parentPath": "server/src/controllers/v1/statusPageController.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Customizable Public and Private Status Pages",
|
|
"simStepId": "788307ef-4cfa-4f5a-b2e9-a0bfc7a378d8"
|
|
}
|
|
]
|
|
},
|
|
"137a5ab7-1e49-42ec-869d-58f7f2380cb3": {
|
|
"path": "137a5ab7-1e49-42ec-869d-58f7f2380cb3",
|
|
"cellName": "View Status\nPage: Database\nResult Returned",
|
|
"cellId": "137a5ab7-1e49-42ec-869d-58f7f2380cb3",
|
|
"visible": true,
|
|
"parentCellId": "35864a2c-7bd0-4428-84fc-c0aa90c7f1be"
|
|
},
|
|
"generated-edge-simstep-4d3fad92-8fa9-4a8f-be3b-f09eda2f8dd4-137a5ab7-1e49-42ec-869d-58f7f2380cb3": {
|
|
"path": "generated-edge-simstep-4d3fad92-8fa9-4a8f-be3b-f09eda2f8dd4-137a5ab7-1e49-42ec-869d-58f7f2380cb3",
|
|
"fileName": "statusPageModule.js",
|
|
"cellName": "View Status Page: Database Result Returned",
|
|
"cellId": "137a5ab7-1e49-42ec-869d-58f7f2380cb3",
|
|
"visible": true,
|
|
"startLine": 291,
|
|
"endLine": 291,
|
|
"parentPath": "server/src/db/v1/modules/statusPageModule.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Customizable Public and Private Status Pages",
|
|
"simStepId": "4d3fad92-8fa9-4a8f-be3b-f09eda2f8dd4"
|
|
}
|
|
]
|
|
},
|
|
"04a33e4f-1dfe-4c5a-8b30-01ed0591c380": {
|
|
"path": "04a33e4f-1dfe-4c5a-8b30-01ed0591c380",
|
|
"cellName": "View Status\nPage: UI\nReceives Data",
|
|
"cellId": "04a33e4f-1dfe-4c5a-8b30-01ed0591c380",
|
|
"visible": true
|
|
},
|
|
"generated-edge-simstep-d5f3c300-9777-4e09-bb05-f1281c2ff29a-04a33e4f-1dfe-4c5a-8b30-01ed0591c380": {
|
|
"path": "generated-edge-simstep-d5f3c300-9777-4e09-bb05-f1281c2ff29a-04a33e4f-1dfe-4c5a-8b30-01ed0591c380",
|
|
"fileName": "statusPageController.js",
|
|
"cellName": "View Status Page: UI Receives Data",
|
|
"cellId": "04a33e4f-1dfe-4c5a-8b30-01ed0591c380",
|
|
"visible": true,
|
|
"startLine": 20,
|
|
"endLine": 26,
|
|
"parentPath": "server/src/controllers/v1/statusPageController.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Customizable Public and Private Status Pages",
|
|
"simStepId": "d5f3c300-9777-4e09-bb05-f1281c2ff29a"
|
|
}
|
|
]
|
|
},
|
|
"933a6cdc-349c-4725-b7ae-14cf780bfde8": {
|
|
"path": "933a6cdc-349c-4725-b7ae-14cf780bfde8",
|
|
"cellName": "checkHooks.js",
|
|
"cellId": "933a6cdc-349c-4725-b7ae-14cf780bfde8",
|
|
"visible": true,
|
|
"parentCellId": "3bf0c0f9-cbb0-4f0c-8cb3-6e2a4abc0961"
|
|
},
|
|
"d18dbe1d-2f2c-4336-bd21-47c1670f7bab": {
|
|
"path": "d18dbe1d-2f2c-4336-bd21-47c1670f7bab",
|
|
"cellName": "checkRoute.js",
|
|
"cellId": "d18dbe1d-2f2c-4336-bd21-47c1670f7bab",
|
|
"visible": true,
|
|
"parentCellId": "d3375a20-2776-4771-b806-649bbeb541bd"
|
|
},
|
|
"d983e54f-2fbe-496a-932d-a827e1124804": {
|
|
"path": "d983e54f-2fbe-496a-932d-a827e1124804",
|
|
"cellName": "checkController.js",
|
|
"cellId": "d983e54f-2fbe-496a-932d-a827e1124804",
|
|
"visible": true,
|
|
"parentCellId": "fc591f7a-d4ac-4565-949d-a87a58a79bbc"
|
|
},
|
|
"273f3009-69d0-46fe-af57-3cd94a24b55b": {
|
|
"path": "273f3009-69d0-46fe-af57-3cd94a24b55b",
|
|
"cellName": "Details",
|
|
"cellId": "273f3009-69d0-46fe-af57-3cd94a24b55b",
|
|
"visible": true,
|
|
"parentCellId": "7090fcdb-09be-4c85-86fd-e73553bbb2ff"
|
|
},
|
|
"f90db867-e1e7-4554-b446-fa78fc6a8578": {
|
|
"path": "f90db867-e1e7-4554-b446-fa78fc6a8578",
|
|
"cellName": "checkService.js",
|
|
"cellId": "f90db867-e1e7-4554-b446-fa78fc6a8578",
|
|
"visible": true,
|
|
"parentCellId": "87d3b101-9443-4ed4-9c4f-f759d41677eb"
|
|
},
|
|
"860b5eec-a1ce-4e1f-a316-e1586f03af96": {
|
|
"path": "860b5eec-a1ce-4e1f-a316-e1586f03af96",
|
|
"cellName": "checkModule.js",
|
|
"cellId": "860b5eec-a1ce-4e1f-a316-e1586f03af96",
|
|
"visible": true,
|
|
"parentCellId": "82cb3dbe-c922-438a-a912-255376f4b380"
|
|
},
|
|
"1807d5b9-54be-430b-8997-cada4dd9b521": {
|
|
"path": "1807d5b9-54be-430b-8997-cada4dd9b521",
|
|
"cellName": "index.jsx",
|
|
"cellId": "1807d5b9-54be-430b-8997-cada4dd9b521",
|
|
"visible": true,
|
|
"parentCellId": "273f3009-69d0-46fe-af57-3cd94a24b55b"
|
|
},
|
|
"6aed78bb-62f1-4ac1-9b9a-9d5977e87404": {
|
|
"path": "6aed78bb-62f1-4ac1-9b9a-9d5977e87404",
|
|
"cellName": "Components",
|
|
"cellId": "6aed78bb-62f1-4ac1-9b9a-9d5977e87404",
|
|
"visible": true,
|
|
"parentCellId": "273f3009-69d0-46fe-af57-3cd94a24b55b"
|
|
},
|
|
"5ac0878f-d238-4763-8464-a85b4885a40f": {
|
|
"path": "5ac0878f-d238-4763-8464-a85b4885a40f",
|
|
"cellName": "ResponseTable",
|
|
"cellId": "5ac0878f-d238-4763-8464-a85b4885a40f",
|
|
"visible": true,
|
|
"parentCellId": "6aed78bb-62f1-4ac1-9b9a-9d5977e87404"
|
|
},
|
|
"d3f74ac7-3b9a-4cae-8d77-a0d5d605bb27": {
|
|
"path": "d3f74ac7-3b9a-4cae-8d77-a0d5d605bb27",
|
|
"cellName": "index.jsx",
|
|
"cellId": "d3f74ac7-3b9a-4cae-8d77-a0d5d605bb27",
|
|
"visible": true,
|
|
"parentCellId": "5ac0878f-d238-4763-8464-a85b4885a40f"
|
|
},
|
|
"78a8a7c5-41d3-4453-a7f7-ac632bbef288": {
|
|
"path": "78a8a7c5-41d3-4453-a7f7-ac632bbef288",
|
|
"cellName": "Navigate to Monitor Details - index.jsx:L27-188",
|
|
"cellId": "78a8a7c5-41d3-4453-a7f7-ac632bbef288",
|
|
"visible": true,
|
|
"parentCellId": "1807d5b9-54be-430b-8997-cada4dd9b521"
|
|
},
|
|
"client/src/Pages/v1/Uptime/Details/index.jsx-simstep-35195328-9847-4678-b014-9331553f0d19": {
|
|
"path": "client/src/Pages/v1/Uptime/Details/index.jsx-simstep-35195328-9847-4678-b014-9331553f0d19",
|
|
"fileName": "index.jsx",
|
|
"wiki": "The user navigates to the details page for a specific uptime monitor. The `UptimeDetails` component mounts and initializes its state and hooks.",
|
|
"cellName": "Navigate to Monitor Details - index.jsx:L27-188",
|
|
"cellId": "78a8a7c5-41d3-4453-a7f7-ac632bbef288",
|
|
"visible": true,
|
|
"startLine": 27,
|
|
"endLine": 188,
|
|
"parentCellId": "1807d5b9-54be-430b-8997-cada4dd9b521",
|
|
"parentPath": "client/src/Pages/v1/Uptime/Details/index.jsx",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Incident History, Analysis, and Management",
|
|
"simStepId": "35195328-9847-4678-b014-9331553f0d19"
|
|
}
|
|
]
|
|
},
|
|
"4a5847d0-91a0-4b4c-8517-2f4ff9a7e8d4": {
|
|
"path": "4a5847d0-91a0-4b4c-8517-2f4ff9a7e8d4",
|
|
"cellName": "Fetch Monitor Checks Hook - checkHooks.js:L89-121",
|
|
"cellId": "4a5847d0-91a0-4b4c-8517-2f4ff9a7e8d4",
|
|
"visible": true,
|
|
"parentCellId": "933a6cdc-349c-4725-b7ae-14cf780bfde8"
|
|
},
|
|
"client/src/Hooks/v1/checkHooks.js-simstep-8dc4347c-3e9e-40d7-ae6f-54684f2e6956": {
|
|
"path": "client/src/Hooks/v1/checkHooks.js-simstep-8dc4347c-3e9e-40d7-ae6f-54684f2e6956",
|
|
"fileName": "checkHooks.js",
|
|
"wiki": "The `useFetchChecksByMonitor` custom hook executes. It sets the loading state and prepares to call the network service to fetch the data from the backend API.",
|
|
"cellName": "Fetch Monitor Checks Hook - checkHooks.js:L89-121",
|
|
"cellId": "4a5847d0-91a0-4b4c-8517-2f4ff9a7e8d4",
|
|
"visible": true,
|
|
"startLine": 89,
|
|
"endLine": 121,
|
|
"parentCellId": "933a6cdc-349c-4725-b7ae-14cf780bfde8",
|
|
"parentPath": "client/src/Hooks/v1/checkHooks.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Incident History, Analysis, and Management",
|
|
"simStepId": "8dc4347c-3e9e-40d7-ae6f-54684f2e6956"
|
|
}
|
|
]
|
|
},
|
|
"cdd090be-0b62-45b4-baa0-fec01fc3ffd1": {
|
|
"path": "cdd090be-0b62-45b4-baa0-fec01fc3ffd1",
|
|
"cellName": "Route Request to Controller - checkRoute.js:L19",
|
|
"cellId": "cdd090be-0b62-45b4-baa0-fec01fc3ffd1",
|
|
"visible": true,
|
|
"parentCellId": "d18dbe1d-2f2c-4336-bd21-47c1670f7bab"
|
|
},
|
|
"server/src/routes/v1/checkRoute.js-simstep-c5fd192f-ea28-48a0-b3e7-5bc04f521192": {
|
|
"path": "server/src/routes/v1/checkRoute.js-simstep-c5fd192f-ea28-48a0-b3e7-5bc04f521192",
|
|
"fileName": "checkRoute.js",
|
|
"wiki": "The backend Express router receives the incoming GET request and matches it to the appropriate route, forwarding the request to the `getChecksByMonitor` method in the `CheckController`.",
|
|
"cellName": "Route Request to Controller - checkRoute.js:L19",
|
|
"cellId": "cdd090be-0b62-45b4-baa0-fec01fc3ffd1",
|
|
"visible": true,
|
|
"startLine": 19,
|
|
"endLine": 19,
|
|
"parentCellId": "d18dbe1d-2f2c-4336-bd21-47c1670f7bab",
|
|
"parentPath": "server/src/routes/v1/checkRoute.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Incident History, Analysis, and Management",
|
|
"simStepId": "c5fd192f-ea28-48a0-b3e7-5bc04f521192"
|
|
}
|
|
]
|
|
},
|
|
"499b46a2-f2a2-4ccd-aecd-012eade2bd23": {
|
|
"path": "499b46a2-f2a2-4ccd-aecd-012eade2bd23",
|
|
"cellName": "Fetch Checks from Database - checkService.js:L36-45",
|
|
"cellId": "499b46a2-f2a2-4ccd-aecd-012eade2bd23",
|
|
"visible": true,
|
|
"parentCellId": "f90db867-e1e7-4554-b446-fa78fc6a8578"
|
|
},
|
|
"server/src/service/v1/business/checkService.js-simstep-83fea05d-8306-4a73-a43f-882cdd14f50f": {
|
|
"path": "server/src/service/v1/business/checkService.js-simstep-83fea05d-8306-4a73-a43f-882cdd14f50f",
|
|
"fileName": "checkService.js",
|
|
"wiki": "The `CheckService` calls the `checkModule` to interact with the database. It passes the necessary parameters to query for the check history.",
|
|
"cellName": "Fetch Checks from Database - checkService.js:L36-45",
|
|
"cellId": "499b46a2-f2a2-4ccd-aecd-012eade2bd23",
|
|
"visible": true,
|
|
"startLine": 36,
|
|
"endLine": 45,
|
|
"parentCellId": "f90db867-e1e7-4554-b446-fa78fc6a8578",
|
|
"parentPath": "server/src/service/v1/business/checkService.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Incident History, Analysis, and Management",
|
|
"simStepId": "83fea05d-8306-4a73-a43f-882cdd14f50f"
|
|
}
|
|
]
|
|
},
|
|
"14df9f01-1358-442d-96f5-eab9a4c4abbf": {
|
|
"path": "14df9f01-1358-442d-96f5-eab9a4c4abbf",
|
|
"cellName": "Return Check Data - checkController.js:L87-90",
|
|
"cellId": "14df9f01-1358-442d-96f5-eab9a4c4abbf",
|
|
"visible": true,
|
|
"parentCellId": "d983e54f-2fbe-496a-932d-a827e1124804"
|
|
},
|
|
"server/src/controllers/v1/checkController.js-simstep-5768fdc5-045c-48ef-b0c9-79769403648f": {
|
|
"path": "server/src/controllers/v1/checkController.js-simstep-5768fdc5-045c-48ef-b0c9-79769403648f",
|
|
"fileName": "checkController.js",
|
|
"wiki": "The database returns the query results, which flow back up through the `checkModule` and `checkService`. The `checkController` then formats a successful JSON response.",
|
|
"cellName": "Return Check Data - checkController.js:L87-90",
|
|
"cellId": "14df9f01-1358-442d-96f5-eab9a4c4abbf",
|
|
"visible": true,
|
|
"startLine": 87,
|
|
"endLine": 90,
|
|
"parentCellId": "d983e54f-2fbe-496a-932d-a827e1124804",
|
|
"parentPath": "server/src/controllers/v1/checkController.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Incident History, Analysis, and Management",
|
|
"simStepId": "5768fdc5-045c-48ef-b0c9-79769403648f"
|
|
}
|
|
]
|
|
},
|
|
"ceb9cda3-968d-44aa-b223-49902adb93b4": {
|
|
"path": "ceb9cda3-968d-44aa-b223-49902adb93b4",
|
|
"cellName": "Update Frontend State - checkHooks.js:L109-110",
|
|
"cellId": "ceb9cda3-968d-44aa-b223-49902adb93b4",
|
|
"visible": true,
|
|
"parentCellId": "933a6cdc-349c-4725-b7ae-14cf780bfde8"
|
|
},
|
|
"client/src/Hooks/v1/checkHooks.js-simstep-faba07f3-7460-47ae-924d-f92f5b2e821d": {
|
|
"path": "client/src/Hooks/v1/checkHooks.js-simstep-faba07f3-7460-47ae-924d-f92f5b2e821d",
|
|
"fileName": "checkHooks.js",
|
|
"wiki": "The `useFetchChecksByMonitor` hook receives the data from the API call and updates the component's state with the new list of checks and the total count.",
|
|
"cellName": "Update Frontend State - checkHooks.js:L109-110",
|
|
"cellId": "ceb9cda3-968d-44aa-b223-49902adb93b4",
|
|
"visible": true,
|
|
"startLine": 109,
|
|
"endLine": 110,
|
|
"parentCellId": "933a6cdc-349c-4725-b7ae-14cf780bfde8",
|
|
"parentPath": "client/src/Hooks/v1/checkHooks.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Incident History, Analysis, and Management",
|
|
"simStepId": "faba07f3-7460-47ae-924d-f92f5b2e821d"
|
|
}
|
|
]
|
|
},
|
|
"c996f7ca-9384-4252-b343-7bfc049d14bb": {
|
|
"path": "c996f7ca-9384-4252-b343-7bfc049d14bb",
|
|
"cellName": "Render Historical Data Table - index.jsx:L11-92",
|
|
"cellId": "c996f7ca-9384-4252-b343-7bfc049d14bb",
|
|
"visible": true,
|
|
"parentCellId": "d3f74ac7-3b9a-4cae-8d77-a0d5d605bb27"
|
|
},
|
|
"client/src/Pages/v1/Uptime/Details/Components/ResponseTable/index.jsx-simstep-2b1651cd-2e70-4cc6-b2bb-23f94fa73d66": {
|
|
"path": "client/src/Pages/v1/Uptime/Details/Components/ResponseTable/index.jsx-simstep-2b1651cd-2e70-4cc6-b2bb-23f94fa73d66",
|
|
"fileName": "index.jsx",
|
|
"wiki": "The `ResponseTable` component receives the list of checks and renders them in a data table, allowing the user to view the incident history, including status, response time, and when the check occurred.",
|
|
"cellName": "Render Historical Data Table - index.jsx:L11-92",
|
|
"cellId": "c996f7ca-9384-4252-b343-7bfc049d14bb",
|
|
"visible": true,
|
|
"startLine": 11,
|
|
"endLine": 92,
|
|
"parentCellId": "d3f74ac7-3b9a-4cae-8d77-a0d5d605bb27",
|
|
"parentPath": "client/src/Pages/v1/Uptime/Details/Components/ResponseTable/index.jsx",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Incident History, Analysis, and Management",
|
|
"simStepId": "2b1651cd-2e70-4cc6-b2bb-23f94fa73d66"
|
|
}
|
|
]
|
|
},
|
|
"e90e4943-6108-46e3-8a2c-a9a1c7361279": {
|
|
"path": "e90e4943-6108-46e3-8a2c-a9a1c7361279",
|
|
"cellName": "Trigger Check\nHistory Fetch",
|
|
"cellId": "e90e4943-6108-46e3-8a2c-a9a1c7361279",
|
|
"visible": true,
|
|
"parentCellId": "d3264577-10f0-42fe-9411-7e9df0754d1e"
|
|
},
|
|
"generated-edge-simstep-49979250-1a32-4da5-95e0-58652fe218f9-e90e4943-6108-46e3-8a2c-a9a1c7361279": {
|
|
"path": "generated-edge-simstep-49979250-1a32-4da5-95e0-58652fe218f9-e90e4943-6108-46e3-8a2c-a9a1c7361279",
|
|
"fileName": "index.jsx",
|
|
"cellName": "Trigger Check History Fetch",
|
|
"cellId": "e90e4943-6108-46e3-8a2c-a9a1c7361279",
|
|
"visible": true,
|
|
"startLine": 69,
|
|
"endLine": 77,
|
|
"parentPath": "client/src/Pages/v1/Uptime/Details/index.jsx",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Incident History, Analysis, and Management",
|
|
"simStepId": "49979250-1a32-4da5-95e0-58652fe218f9"
|
|
}
|
|
]
|
|
},
|
|
"2b8ae59e-ed8d-4837-9a9b-64eb480f982c": {
|
|
"path": "2b8ae59e-ed8d-4837-9a9b-64eb480f982c",
|
|
"cellName": "API Request\nfor Check\nHistory",
|
|
"cellId": "2b8ae59e-ed8d-4837-9a9b-64eb480f982c",
|
|
"visible": true
|
|
},
|
|
"generated-edge-simstep-336b534d-8d6a-4639-af8e-889b38f51ab1-2b8ae59e-ed8d-4837-9a9b-64eb480f982c": {
|
|
"path": "generated-edge-simstep-336b534d-8d6a-4639-af8e-889b38f51ab1-2b8ae59e-ed8d-4837-9a9b-64eb480f982c",
|
|
"fileName": "checkHooks.js",
|
|
"cellName": "API Request for Check History",
|
|
"cellId": "2b8ae59e-ed8d-4837-9a9b-64eb480f982c",
|
|
"visible": true,
|
|
"startLine": 551,
|
|
"endLine": 562,
|
|
"parentPath": "client/src/Hooks/v1/checkHooks.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Incident History, Analysis, and Management",
|
|
"simStepId": "336b534d-8d6a-4639-af8e-889b38f51ab1"
|
|
}
|
|
]
|
|
},
|
|
"839ba9f6-8a34-4919-a04a-13fba1795c61": {
|
|
"path": "839ba9f6-8a34-4919-a04a-13fba1795c61",
|
|
"cellName": "Forward Request\nto Service\nLayer",
|
|
"cellId": "839ba9f6-8a34-4919-a04a-13fba1795c61",
|
|
"visible": true,
|
|
"parentCellId": "35864a2c-7bd0-4428-84fc-c0aa90c7f1be"
|
|
},
|
|
"generated-edge-simstep-4f73f0fe-b390-4fe1-a354-eb0857835126-839ba9f6-8a34-4919-a04a-13fba1795c61": {
|
|
"path": "generated-edge-simstep-4f73f0fe-b390-4fe1-a354-eb0857835126-839ba9f6-8a34-4919-a04a-13fba1795c61",
|
|
"fileName": "checkRoute.js",
|
|
"cellName": "Forward Request to Service Layer",
|
|
"cellId": "839ba9f6-8a34-4919-a04a-13fba1795c61",
|
|
"visible": true,
|
|
"startLine": 81,
|
|
"endLine": 85,
|
|
"parentPath": "server/src/routes/v1/checkRoute.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Incident History, Analysis, and Management",
|
|
"simStepId": "4f73f0fe-b390-4fe1-a354-eb0857835126"
|
|
}
|
|
]
|
|
},
|
|
"42d3bc70-701a-4be0-96b4-d6c2f0519b49": {
|
|
"path": "42d3bc70-701a-4be0-96b4-d6c2f0519b49",
|
|
"cellName": "Execute Database\nQuery",
|
|
"cellId": "42d3bc70-701a-4be0-96b4-d6c2f0519b49",
|
|
"visible": true,
|
|
"parentCellId": "35864a2c-7bd0-4428-84fc-c0aa90c7f1be"
|
|
},
|
|
"generated-edge-simstep-65da1a9e-041c-4656-9c5b-0a92b761a9be-42d3bc70-701a-4be0-96b4-d6c2f0519b49": {
|
|
"path": "generated-edge-simstep-65da1a9e-041c-4656-9c5b-0a92b761a9be-42d3bc70-701a-4be0-96b4-d6c2f0519b49",
|
|
"fileName": "checkService.js",
|
|
"cellName": "Execute Database Query",
|
|
"cellId": "42d3bc70-701a-4be0-96b4-d6c2f0519b49",
|
|
"visible": true,
|
|
"startLine": 28,
|
|
"endLine": 108,
|
|
"parentPath": "server/src/service/v1/business/checkService.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Incident History, Analysis, and Management",
|
|
"simStepId": "65da1a9e-041c-4656-9c5b-0a92b761a9be"
|
|
}
|
|
]
|
|
},
|
|
"6c5b028c-356c-43c8-a35a-b47448cd8695": {
|
|
"path": "6c5b028c-356c-43c8-a35a-b47448cd8695",
|
|
"cellName": "API Response\nwith Check\nHistory",
|
|
"cellId": "6c5b028c-356c-43c8-a35a-b47448cd8695",
|
|
"visible": true
|
|
},
|
|
"generated-edge-simstep-2c1bdec8-d0e6-4163-a99c-f27899b987c5-6c5b028c-356c-43c8-a35a-b47448cd8695": {
|
|
"path": "generated-edge-simstep-2c1bdec8-d0e6-4163-a99c-f27899b987c5-6c5b028c-356c-43c8-a35a-b47448cd8695",
|
|
"fileName": "checkController.js",
|
|
"cellName": "API Response with Check History",
|
|
"cellId": "6c5b028c-356c-43c8-a35a-b47448cd8695",
|
|
"visible": true,
|
|
"startLine": 560,
|
|
"endLine": 560,
|
|
"parentPath": "server/src/controllers/v1/checkController.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Incident History, Analysis, and Management",
|
|
"simStepId": "2c1bdec8-d0e6-4163-a99c-f27899b987c5"
|
|
}
|
|
]
|
|
},
|
|
"74b0dd89-9fea-4219-af1f-9571316a9d5a": {
|
|
"path": "74b0dd89-9fea-4219-af1f-9571316a9d5a",
|
|
"cellName": "Pass Data\nto UI\nComponents",
|
|
"cellId": "74b0dd89-9fea-4219-af1f-9571316a9d5a",
|
|
"visible": true,
|
|
"parentCellId": "d3264577-10f0-42fe-9411-7e9df0754d1e"
|
|
},
|
|
"generated-edge-simstep-9405dce1-0565-4dfa-9539-a048472acda9-74b0dd89-9fea-4219-af1f-9571316a9d5a": {
|
|
"path": "generated-edge-simstep-9405dce1-0565-4dfa-9539-a048472acda9-74b0dd89-9fea-4219-af1f-9571316a9d5a",
|
|
"fileName": "checkHooks.js",
|
|
"cellName": "Pass Data to UI Components",
|
|
"cellId": "74b0dd89-9fea-4219-af1f-9571316a9d5a",
|
|
"visible": true,
|
|
"startLine": 175,
|
|
"endLine": 186,
|
|
"parentPath": "client/src/Hooks/v1/checkHooks.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Incident History, Analysis, and Management",
|
|
"simStepId": "9405dce1-0565-4dfa-9539-a048472acda9"
|
|
}
|
|
]
|
|
},
|
|
"e2f99143-54b7-44dc-b566-1c2fb901bd16": {
|
|
"path": "e2f99143-54b7-44dc-b566-1c2fb901bd16",
|
|
"cellName": "v2",
|
|
"cellId": "e2f99143-54b7-44dc-b566-1c2fb901bd16",
|
|
"visible": true,
|
|
"parentCellId": "15ee5d81-a0cf-4614-80b8-7a1123ab20b8"
|
|
},
|
|
"043d3dac-d4bb-449b-a3a7-270d53b66dac": {
|
|
"path": "043d3dac-d4bb-449b-a3a7-270d53b66dac",
|
|
"cellName": "PageSpeed",
|
|
"cellId": "043d3dac-d4bb-449b-a3a7-270d53b66dac",
|
|
"visible": true,
|
|
"parentCellId": "1a083b4a-787c-4eb4-8029-6700de987679"
|
|
},
|
|
"7ef79284-534a-466f-a1f1-4e3a2f56be9d": {
|
|
"path": "7ef79284-534a-466f-a1f1-4e3a2f56be9d",
|
|
"cellName": "business",
|
|
"cellId": "7ef79284-534a-466f-a1f1-4e3a2f56be9d",
|
|
"visible": true,
|
|
"parentCellId": "feefae96-61b8-4ac5-a37c-592ed4b2330e"
|
|
},
|
|
"b53384d7-b989-4ac7-bd68-1c3621174ef4": {
|
|
"path": "b53384d7-b989-4ac7-bd68-1c3621174ef4",
|
|
"cellName": "models",
|
|
"cellId": "b53384d7-b989-4ac7-bd68-1c3621174ef4",
|
|
"visible": true,
|
|
"parentCellId": "e2f99143-54b7-44dc-b566-1c2fb901bd16"
|
|
},
|
|
"414c500b-7b68-42ba-8110-e855efbee750": {
|
|
"path": "414c500b-7b68-42ba-8110-e855efbee750",
|
|
"cellName": "Create",
|
|
"cellId": "414c500b-7b68-42ba-8110-e855efbee750",
|
|
"visible": true,
|
|
"parentCellId": "043d3dac-d4bb-449b-a3a7-270d53b66dac"
|
|
},
|
|
"581b4919-8b0c-4f0d-ae67-ad6de11d8c8b": {
|
|
"path": "581b4919-8b0c-4f0d-ae67-ad6de11d8c8b",
|
|
"cellName": "Details",
|
|
"cellId": "581b4919-8b0c-4f0d-ae67-ad6de11d8c8b",
|
|
"visible": true,
|
|
"parentCellId": "043d3dac-d4bb-449b-a3a7-270d53b66dac"
|
|
},
|
|
"50aeed0b-bc13-43f7-bb15-cb1b12b2caa7": {
|
|
"path": "50aeed0b-bc13-43f7-bb15-cb1b12b2caa7",
|
|
"cellName": "NetworkService.ts",
|
|
"cellId": "50aeed0b-bc13-43f7-bb15-cb1b12b2caa7",
|
|
"visible": true,
|
|
"parentCellId": "3f8ff792-40c8-4ae6-9af5-ff8b90da2f9f"
|
|
},
|
|
"f0ebd5da-21bb-4d96-8ff9-ca10409acc80": {
|
|
"path": "f0ebd5da-21bb-4d96-8ff9-ca10409acc80",
|
|
"cellName": "CheckService.ts",
|
|
"cellId": "f0ebd5da-21bb-4d96-8ff9-ca10409acc80",
|
|
"visible": true,
|
|
"parentCellId": "7ef79284-534a-466f-a1f1-4e3a2f56be9d"
|
|
},
|
|
"7a3824cd-24c8-4b32-8b1d-e0bf357262c4": {
|
|
"path": "7a3824cd-24c8-4b32-8b1d-e0bf357262c4",
|
|
"cellName": "MonitorService.ts",
|
|
"cellId": "7a3824cd-24c8-4b32-8b1d-e0bf357262c4",
|
|
"visible": true,
|
|
"parentCellId": "7ef79284-534a-466f-a1f1-4e3a2f56be9d"
|
|
},
|
|
"64e3bb0a-67f5-4269-9e7d-94fe91ac78fc": {
|
|
"path": "64e3bb0a-67f5-4269-9e7d-94fe91ac78fc",
|
|
"cellName": "checks",
|
|
"cellId": "64e3bb0a-67f5-4269-9e7d-94fe91ac78fc",
|
|
"visible": true,
|
|
"parentCellId": "b53384d7-b989-4ac7-bd68-1c3621174ef4"
|
|
},
|
|
"5ffe0baa-054a-4e5b-8b29-1254f07ea975": {
|
|
"path": "5ffe0baa-054a-4e5b-8b29-1254f07ea975",
|
|
"cellName": "index.jsx",
|
|
"cellId": "5ffe0baa-054a-4e5b-8b29-1254f07ea975",
|
|
"visible": true,
|
|
"parentCellId": "414c500b-7b68-42ba-8110-e855efbee750"
|
|
},
|
|
"c4a7bb58-1d9c-4690-b6b8-460c1cc33702": {
|
|
"path": "c4a7bb58-1d9c-4690-b6b8-460c1cc33702",
|
|
"cellName": "index.jsx",
|
|
"cellId": "c4a7bb58-1d9c-4690-b6b8-460c1cc33702",
|
|
"visible": true,
|
|
"parentCellId": "581b4919-8b0c-4f0d-ae67-ad6de11d8c8b"
|
|
},
|
|
"1425ec43-f0f4-4c8b-a140-176c079219d6": {
|
|
"path": "1425ec43-f0f4-4c8b-a140-176c079219d6",
|
|
"cellName": "Check.ts",
|
|
"cellId": "1425ec43-f0f4-4c8b-a140-176c079219d6",
|
|
"visible": true,
|
|
"parentCellId": "64e3bb0a-67f5-4269-9e7d-94fe91ac78fc"
|
|
},
|
|
"0622b212-3a4a-484d-9b7a-125864d785cd": {
|
|
"path": "0622b212-3a4a-484d-9b7a-125864d785cd",
|
|
"cellName": "Create PageSpeed Monitor - index.jsx:L111-143",
|
|
"cellId": "0622b212-3a4a-484d-9b7a-125864d785cd",
|
|
"visible": true,
|
|
"parentCellId": "5ffe0baa-054a-4e5b-8b29-1254f07ea975"
|
|
},
|
|
"client/src/Pages/v1/PageSpeed/Create/index.jsx-simstep-b0cc6e6a-961e-4ea9-aa8a-6bfa44d6ba12": {
|
|
"path": "client/src/Pages/v1/PageSpeed/Create/index.jsx-simstep-b0cc6e6a-961e-4ea9-aa8a-6bfa44d6ba12",
|
|
"fileName": "index.jsx",
|
|
"wiki": "The user navigates to the PageSpeed creation page, fills in the details for a new monitor (URL, name, interval), and submits the form. This triggers the `handleSubmit` function, which calls the `createMonitor` hook to send the data to the backend API.",
|
|
"cellName": "Create PageSpeed Monitor - index.jsx:L111-143",
|
|
"cellId": "0622b212-3a4a-484d-9b7a-125864d785cd",
|
|
"visible": true,
|
|
"startLine": 111,
|
|
"endLine": 143,
|
|
"parentCellId": "5ffe0baa-054a-4e5b-8b29-1254f07ea975",
|
|
"parentPath": "client/src/Pages/v1/PageSpeed/Create/index.jsx",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Website Performance and Page Speed Monitoring",
|
|
"simStepId": "b0cc6e6a-961e-4ea9-aa8a-6bfa44d6ba12"
|
|
}
|
|
]
|
|
},
|
|
"6527fb47-157e-4bba-9aed-adde061c5689": {
|
|
"path": "6527fb47-157e-4bba-9aed-adde061c5689",
|
|
"cellName": "Backend Requests PageSpeed Analysis - NetworkService.ts:L129-162",
|
|
"cellId": "6527fb47-157e-4bba-9aed-adde061c5689",
|
|
"visible": true,
|
|
"parentCellId": "50aeed0b-bc13-43f7-bb15-cb1b12b2caa7"
|
|
},
|
|
"server/src/service/v2/infrastructure/NetworkService.ts-simstep-53968267-0c6e-42f4-88b3-cd90f44532ae": {
|
|
"path": "server/src/service/v2/infrastructure/NetworkService.ts-simstep-53968267-0c6e-42f4-88b3-cd90f44532ae",
|
|
"fileName": "NetworkService.ts",
|
|
"wiki": "A background job for the newly created monitor triggers the `NetworkService` to request a performance analysis from the Google PageSpeed Insights API. It constructs the API URL using the monitor's target URL and the configured PageSpeed API key.",
|
|
"cellName": "Backend Requests PageSpeed Analysis - NetworkService.ts:L129-162",
|
|
"cellId": "6527fb47-157e-4bba-9aed-adde061c5689",
|
|
"visible": true,
|
|
"startLine": 129,
|
|
"endLine": 162,
|
|
"parentCellId": "50aeed0b-bc13-43f7-bb15-cb1b12b2caa7",
|
|
"parentPath": "server/src/service/v2/infrastructure/NetworkService.ts",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Website Performance and Page Speed Monitoring",
|
|
"simStepId": "53968267-0c6e-42f4-88b3-cd90f44532ae"
|
|
}
|
|
]
|
|
},
|
|
"f89cbd87-c961-4f8b-92b6-714da57718d5": {
|
|
"path": "f89cbd87-c961-4f8b-92b6-714da57718d5",
|
|
"cellName": "Backend Processes Lighthouse Data - CheckService.ts:L82-102",
|
|
"cellId": "f89cbd87-c961-4f8b-92b6-714da57718d5",
|
|
"visible": true,
|
|
"parentCellId": "f0ebd5da-21bb-4d96-8ff9-ca10409acc80"
|
|
},
|
|
"server/src/service/v2/business/CheckService.ts-simstep-01206383-2db8-4b18-84d0-be2a0289c196": {
|
|
"path": "server/src/service/v2/business/CheckService.ts-simstep-01206383-2db8-4b18-84d0-be2a0289c196",
|
|
"fileName": "CheckService.ts",
|
|
"wiki": "The `CheckService` receives the raw data from the Google API. The `buildPagespeedCheck` function extracts and transforms the relevant scores and audit details into a structured `Check` object, preparing it for database storage.",
|
|
"cellName": "Backend Processes Lighthouse Data - CheckService.ts:L82-102",
|
|
"cellId": "f89cbd87-c961-4f8b-92b6-714da57718d5",
|
|
"visible": true,
|
|
"startLine": 82,
|
|
"endLine": 102,
|
|
"parentCellId": "f0ebd5da-21bb-4d96-8ff9-ca10409acc80",
|
|
"parentPath": "server/src/service/v2/business/CheckService.ts",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Website Performance and Page Speed Monitoring",
|
|
"simStepId": "01206383-2db8-4b18-84d0-be2a0289c196"
|
|
}
|
|
]
|
|
},
|
|
"ca6ee27b-1fbf-49de-978a-d6de259cc3d5": {
|
|
"path": "ca6ee27b-1fbf-49de-978a-d6de259cc3d5",
|
|
"cellName": "Backend Aggregates Performance Data - MonitorService.ts:L106-120",
|
|
"cellId": "ca6ee27b-1fbf-49de-978a-d6de259cc3d5",
|
|
"visible": true,
|
|
"parentCellId": "7a3824cd-24c8-4b32-8b1d-e0bf357262c4"
|
|
},
|
|
"server/src/service/v2/business/MonitorService.ts-simstep-5616ac6d-c281-4879-82f1-6590c721c8f7": {
|
|
"path": "server/src/service/v2/business/MonitorService.ts-simstep-5616ac6d-c281-4879-82f1-6590c721c8f7",
|
|
"fileName": "MonitorService.ts",
|
|
"wiki": "When a user views the details of a PageSpeed monitor, the frontend requests historical data. The `MonitorService` on the backend uses a MongoDB aggregation pipeline to group checks by time intervals and calculate average scores for metrics like performance, SEO, etc. This is defined by helper functions like `getPageSpeedGroup`.",
|
|
"cellName": "Backend Aggregates Performance Data - MonitorService.ts:L106-120",
|
|
"cellId": "ca6ee27b-1fbf-49de-978a-d6de259cc3d5",
|
|
"visible": true,
|
|
"startLine": 106,
|
|
"endLine": 120,
|
|
"parentCellId": "7a3824cd-24c8-4b32-8b1d-e0bf357262c4",
|
|
"parentPath": "server/src/service/v2/business/MonitorService.ts",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Website Performance and Page Speed Monitoring",
|
|
"simStepId": "5616ac6d-c281-4879-82f1-6590c721c8f7"
|
|
}
|
|
]
|
|
},
|
|
"9ef9e218-4742-487a-9a88-5c70e788ccdc": {
|
|
"path": "9ef9e218-4742-487a-9a88-5c70e788ccdc",
|
|
"cellName": "Frontend Renders Performance Charts - index.jsx:L91-126",
|
|
"cellId": "9ef9e218-4742-487a-9a88-5c70e788ccdc",
|
|
"visible": true,
|
|
"parentCellId": "c4a7bb58-1d9c-4690-b6b8-460c1cc33702"
|
|
},
|
|
"client/src/Pages/v1/PageSpeed/Details/index.jsx-simstep-0ec0eb06-05eb-4204-b077-9e47eb2cc316": {
|
|
"path": "client/src/Pages/v1/PageSpeed/Details/index.jsx-simstep-0ec0eb06-05eb-4204-b077-9e47eb2cc316",
|
|
"fileName": "index.jsx",
|
|
"wiki": "The `PageSpeedDetails` component receives the historical data from the backend. It then passes this data to specialized child components like `PageSpeedAreaChart` and `PerformanceReport` to render visualizations of the website's performance over time.",
|
|
"cellName": "Frontend Renders Performance Charts - index.jsx:L91-126",
|
|
"cellId": "9ef9e218-4742-487a-9a88-5c70e788ccdc",
|
|
"visible": true,
|
|
"startLine": 91,
|
|
"endLine": 126,
|
|
"parentCellId": "c4a7bb58-1d9c-4690-b6b8-460c1cc33702",
|
|
"parentPath": "client/src/Pages/v1/PageSpeed/Details/index.jsx",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Website Performance and Page Speed Monitoring",
|
|
"simStepId": "0ec0eb06-05eb-4204-b077-9e47eb2cc316"
|
|
}
|
|
]
|
|
},
|
|
"b8e83b0a-69ff-4c34-a7fe-cb8c9ba85438": {
|
|
"path": "b8e83b0a-69ff-4c34-a7fe-cb8c9ba85438",
|
|
"cellName": "API Call:\nCreate Monitor",
|
|
"cellId": "b8e83b0a-69ff-4c34-a7fe-cb8c9ba85438",
|
|
"visible": true
|
|
},
|
|
"generated-edge-simstep-f8df1cad-6051-466e-a13e-47d710ba1c14-b8e83b0a-69ff-4c34-a7fe-cb8c9ba85438": {
|
|
"path": "generated-edge-simstep-f8df1cad-6051-466e-a13e-47d710ba1c14-b8e83b0a-69ff-4c34-a7fe-cb8c9ba85438",
|
|
"fileName": "index.jsx",
|
|
"cellName": "API Call: Create Monitor",
|
|
"cellId": "b8e83b0a-69ff-4c34-a7fe-cb8c9ba85438",
|
|
"visible": true,
|
|
"startLine": 119,
|
|
"endLine": 119,
|
|
"parentPath": "client/src/Pages/v1/PageSpeed/Create/index.jsx",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Website Performance and Page Speed Monitoring",
|
|
"simStepId": "f8df1cad-6051-466e-a13e-47d710ba1c14"
|
|
}
|
|
]
|
|
},
|
|
"0d3c8091-3d91-4e42-9b46-7e35ed726a7a": {
|
|
"path": "0d3c8091-3d91-4e42-9b46-7e35ed726a7a",
|
|
"cellName": "Google PageSpeed\nAPI Response",
|
|
"cellId": "0d3c8091-3d91-4e42-9b46-7e35ed726a7a",
|
|
"visible": true,
|
|
"parentCellId": "feefae96-61b8-4ac5-a37c-592ed4b2330e"
|
|
},
|
|
"generated-edge-simstep-0b380571-3896-4365-b5dc-187494f02e0d-0d3c8091-3d91-4e42-9b46-7e35ed726a7a": {
|
|
"path": "generated-edge-simstep-0b380571-3896-4365-b5dc-187494f02e0d-0d3c8091-3d91-4e42-9b46-7e35ed726a7a",
|
|
"fileName": "NetworkService.ts",
|
|
"cellName": "Google PageSpeed API Response",
|
|
"cellId": "0d3c8091-3d91-4e42-9b46-7e35ed726a7a",
|
|
"visible": true,
|
|
"startLine": 156,
|
|
"endLine": 156,
|
|
"parentPath": "server/src/service/v2/infrastructure/NetworkService.ts",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Website Performance and Page Speed Monitoring",
|
|
"simStepId": "0b380571-3896-4365-b5dc-187494f02e0d"
|
|
}
|
|
]
|
|
},
|
|
"27c7191b-80a2-475b-9371-e106108aff1c": {
|
|
"path": "27c7191b-80a2-475b-9371-e106108aff1c",
|
|
"cellName": "Store Processed\nCheck Data",
|
|
"cellId": "27c7191b-80a2-475b-9371-e106108aff1c",
|
|
"visible": true,
|
|
"parentCellId": "7ef79284-534a-466f-a1f1-4e3a2f56be9d"
|
|
},
|
|
"generated-edge-simstep-a629a102-0df1-4798-a7a2-45c8f6cdad29-27c7191b-80a2-475b-9371-e106108aff1c": {
|
|
"path": "generated-edge-simstep-a629a102-0df1-4798-a7a2-45c8f6cdad29-27c7191b-80a2-475b-9371-e106108aff1c",
|
|
"fileName": "CheckService.ts",
|
|
"cellName": "Store Processed Check Data",
|
|
"cellId": "27c7191b-80a2-475b-9371-e106108aff1c",
|
|
"visible": true,
|
|
"startLine": 237,
|
|
"endLine": 268,
|
|
"parentPath": "server/src/service/v2/business/CheckService.ts",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Website Performance and Page Speed Monitoring",
|
|
"simStepId": "a629a102-0df1-4798-a7a2-45c8f6cdad29"
|
|
}
|
|
]
|
|
},
|
|
"7be432cd-2587-4eab-abdc-f7b9c1923597": {
|
|
"path": "7be432cd-2587-4eab-abdc-f7b9c1923597",
|
|
"cellName": "Aggregated Data\nTransmitted to\nFrontend",
|
|
"cellId": "7be432cd-2587-4eab-abdc-f7b9c1923597",
|
|
"visible": true
|
|
},
|
|
"generated-edge-simstep-4ed43eaf-fa8f-4fce-af87-8a5f74dd5c08-7be432cd-2587-4eab-abdc-f7b9c1923597": {
|
|
"path": "generated-edge-simstep-4ed43eaf-fa8f-4fce-af87-8a5f74dd5c08-7be432cd-2587-4eab-abdc-f7b9c1923597",
|
|
"fileName": "MonitorService.ts",
|
|
"cellName": "Aggregated Data Transmitted to Frontend",
|
|
"cellId": "7be432cd-2587-4eab-abdc-f7b9c1923597",
|
|
"visible": true,
|
|
"startLine": 368,
|
|
"endLine": 372,
|
|
"parentPath": "server/src/service/v2/business/MonitorService.ts",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Website Performance and Page Speed Monitoring",
|
|
"simStepId": "4ed43eaf-fa8f-4fce-af87-8a5f74dd5c08"
|
|
}
|
|
]
|
|
},
|
|
"fe47576c-c186-4950-82a5-b2fd24eb2561": {
|
|
"path": "fe47576c-c186-4950-82a5-b2fd24eb2561",
|
|
"cellName": "config",
|
|
"cellId": "fe47576c-c186-4950-82a5-b2fd24eb2561",
|
|
"visible": true,
|
|
"parentCellId": "35864a2c-7bd0-4428-84fc-c0aa90c7f1be"
|
|
},
|
|
"cb53d612-9b89-47da-911c-165d0382a7d8": {
|
|
"path": "cb53d612-9b89-47da-911c-165d0382a7d8",
|
|
"cellName": "routes.js",
|
|
"cellId": "cb53d612-9b89-47da-911c-165d0382a7d8",
|
|
"visible": true,
|
|
"parentCellId": "fe47576c-c186-4950-82a5-b2fd24eb2561"
|
|
},
|
|
"8021b55d-2d3a-4416-b598-e134e76c9434": {
|
|
"path": "8021b55d-2d3a-4416-b598-e134e76c9434",
|
|
"cellName": "Maintenance",
|
|
"cellId": "8021b55d-2d3a-4416-b598-e134e76c9434",
|
|
"visible": true,
|
|
"parentCellId": "1a083b4a-787c-4eb4-8029-6700de987679"
|
|
},
|
|
"5f21f109-1967-416f-a649-9b48e78b90f6": {
|
|
"path": "5f21f109-1967-416f-a649-9b48e78b90f6",
|
|
"cellName": "maintenanceWindowRoute.js",
|
|
"cellId": "5f21f109-1967-416f-a649-9b48e78b90f6",
|
|
"visible": true,
|
|
"parentCellId": "d3375a20-2776-4771-b806-649bbeb541bd"
|
|
},
|
|
"a0cae18c-3c0e-40d3-ab03-eef7eace65d6": {
|
|
"path": "a0cae18c-3c0e-40d3-ab03-eef7eace65d6",
|
|
"cellName": "maintenanceWindowController.js",
|
|
"cellId": "a0cae18c-3c0e-40d3-ab03-eef7eace65d6",
|
|
"visible": true,
|
|
"parentCellId": "fc591f7a-d4ac-4565-949d-a87a58a79bbc"
|
|
},
|
|
"6f7119ac-d65a-4fdf-a6f2-31052e0f5549": {
|
|
"path": "6f7119ac-d65a-4fdf-a6f2-31052e0f5549",
|
|
"cellName": "CreateMaintenance",
|
|
"cellId": "6f7119ac-d65a-4fdf-a6f2-31052e0f5549",
|
|
"visible": true,
|
|
"parentCellId": "8021b55d-2d3a-4416-b598-e134e76c9434"
|
|
},
|
|
"1eae6263-aaa2-4206-b92e-1e67f529c1c9": {
|
|
"path": "1eae6263-aaa2-4206-b92e-1e67f529c1c9",
|
|
"cellName": "index.jsx",
|
|
"cellId": "1eae6263-aaa2-4206-b92e-1e67f529c1c9",
|
|
"visible": true,
|
|
"parentCellId": "8021b55d-2d3a-4416-b598-e134e76c9434"
|
|
},
|
|
"5ad4d33f-0932-479c-bb57-22ce6405758f": {
|
|
"path": "5ad4d33f-0932-479c-bb57-22ce6405758f",
|
|
"cellName": "MaintenanceTable",
|
|
"cellId": "5ad4d33f-0932-479c-bb57-22ce6405758f",
|
|
"visible": true,
|
|
"parentCellId": "8021b55d-2d3a-4416-b598-e134e76c9434"
|
|
},
|
|
"26b8daff-aa48-4baa-9d6c-05f771bf0990": {
|
|
"path": "26b8daff-aa48-4baa-9d6c-05f771bf0990",
|
|
"cellName": "maintenanceWindowService.js",
|
|
"cellId": "26b8daff-aa48-4baa-9d6c-05f771bf0990",
|
|
"visible": true,
|
|
"parentCellId": "87d3b101-9443-4ed4-9c4f-f759d41677eb"
|
|
},
|
|
"95ed6c41-ebeb-4c08-98c3-bab8b426789e": {
|
|
"path": "95ed6c41-ebeb-4c08-98c3-bab8b426789e",
|
|
"cellName": "maintenanceWindowModule.js",
|
|
"cellId": "95ed6c41-ebeb-4c08-98c3-bab8b426789e",
|
|
"visible": true,
|
|
"parentCellId": "82cb3dbe-c922-438a-a912-255376f4b380"
|
|
},
|
|
"92c244d2-e6a7-4804-a643-1e8d36baf9c6": {
|
|
"path": "92c244d2-e6a7-4804-a643-1e8d36baf9c6",
|
|
"cellName": "index.jsx",
|
|
"cellId": "92c244d2-e6a7-4804-a643-1e8d36baf9c6",
|
|
"visible": true,
|
|
"parentCellId": "6f7119ac-d65a-4fdf-a6f2-31052e0f5549"
|
|
},
|
|
"015a17fc-3fcf-45e0-8936-19f5e2ca86a3": {
|
|
"path": "015a17fc-3fcf-45e0-8936-19f5e2ca86a3",
|
|
"cellName": "hooks",
|
|
"cellId": "015a17fc-3fcf-45e0-8936-19f5e2ca86a3",
|
|
"visible": true,
|
|
"parentCellId": "6f7119ac-d65a-4fdf-a6f2-31052e0f5549"
|
|
},
|
|
"e7ec5ca9-6d25-4bf2-9695-639556f7d141": {
|
|
"path": "e7ec5ca9-6d25-4bf2-9695-639556f7d141",
|
|
"cellName": "index.jsx",
|
|
"cellId": "e7ec5ca9-6d25-4bf2-9695-639556f7d141",
|
|
"visible": true,
|
|
"parentCellId": "5ad4d33f-0932-479c-bb57-22ce6405758f"
|
|
},
|
|
"6ad0396e-9b38-4f5d-9ad9-6c9fcb4434f4": {
|
|
"path": "6ad0396e-9b38-4f5d-9ad9-6c9fcb4434f4",
|
|
"cellName": "useMaintenanceActions.jsx",
|
|
"cellId": "6ad0396e-9b38-4f5d-9ad9-6c9fcb4434f4",
|
|
"visible": true,
|
|
"parentCellId": "015a17fc-3fcf-45e0-8936-19f5e2ca86a3"
|
|
},
|
|
"20335f29-a2ac-4e0c-aba6-28707748ecd4": {
|
|
"path": "20335f29-a2ac-4e0c-aba6-28707748ecd4",
|
|
"cellName": "Flow: Create Maintenance Window - User Interaction - index.jsx:L46-131",
|
|
"cellId": "20335f29-a2ac-4e0c-aba6-28707748ecd4",
|
|
"visible": true,
|
|
"parentCellId": "92c244d2-e6a7-4804-a643-1e8d36baf9c6"
|
|
},
|
|
"client/src/Pages/v1/Maintenance/CreateMaintenance/index.jsx-simstep-2401ef7a-8d8e-4056-868a-547ab213daf1": {
|
|
"path": "client/src/Pages/v1/Maintenance/CreateMaintenance/index.jsx-simstep-2401ef7a-8d8e-4056-868a-547ab213daf1",
|
|
"fileName": "index.jsx",
|
|
"wiki": "A user navigates to the 'Create Maintenance Window' page. They fill out a form with details such as a name, start date/time, duration, recurrence, and select the monitors to which this window will apply.",
|
|
"cellName": "Flow: Create Maintenance Window - User Interaction - index.jsx:L46-131",
|
|
"cellId": "20335f29-a2ac-4e0c-aba6-28707748ecd4",
|
|
"visible": true,
|
|
"startLine": 46,
|
|
"endLine": 131,
|
|
"parentCellId": "92c244d2-e6a7-4804-a643-1e8d36baf9c6",
|
|
"parentPath": "client/src/Pages/v1/Maintenance/CreateMaintenance/index.jsx",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Scheduled Maintenance Windows",
|
|
"simStepId": "2401ef7a-8d8e-4056-868a-547ab213daf1"
|
|
}
|
|
]
|
|
},
|
|
"5bdfdfa4-5d93-49fa-b05c-905813e6cf9d": {
|
|
"path": "5bdfdfa4-5d93-49fa-b05c-905813e6cf9d",
|
|
"cellName": "Flow: Create Maintenance Window - Prepare API Request - useMaintenanceActions.jsx:L25-58",
|
|
"cellId": "5bdfdfa4-5d93-49fa-b05c-905813e6cf9d",
|
|
"visible": true,
|
|
"parentCellId": "6ad0396e-9b38-4f5d-9ad9-6c9fcb4434f4"
|
|
},
|
|
"client/src/Pages/v1/Maintenance/CreateMaintenance/hooks/useMaintenanceActions.jsx-simstep-5e0d7085-099b-478a-afaa-47ad4dd07043": {
|
|
"path": "client/src/Pages/v1/Maintenance/CreateMaintenance/hooks/useMaintenanceActions.jsx-simstep-5e0d7085-099b-478a-afaa-47ad4dd07043",
|
|
"fileName": "useMaintenanceActions.jsx",
|
|
"wiki": "The `handleSubmitForm` hook processes the form data, calculates start and end timestamps, and constructs a request object. It then determines whether to call `createMaintenanceWindow` or `editMaintenanceWindow` on the network service.",
|
|
"cellName": "Flow: Create Maintenance Window - Prepare API Request - useMaintenanceActions.jsx:L25-58",
|
|
"cellId": "5bdfdfa4-5d93-49fa-b05c-905813e6cf9d",
|
|
"visible": true,
|
|
"startLine": 25,
|
|
"endLine": 58,
|
|
"parentCellId": "6ad0396e-9b38-4f5d-9ad9-6c9fcb4434f4",
|
|
"parentPath": "client/src/Pages/v1/Maintenance/CreateMaintenance/hooks/useMaintenanceActions.jsx",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Scheduled Maintenance Windows",
|
|
"simStepId": "5e0d7085-099b-478a-afaa-47ad4dd07043"
|
|
}
|
|
]
|
|
},
|
|
"a391e8ea-9dbe-4fe4-90df-bf475d8b7ef8": {
|
|
"path": "a391e8ea-9dbe-4fe4-90df-bf475d8b7ef8",
|
|
"cellName": "Flow: Create Maintenance Window - API Routing - routes.js:L43",
|
|
"cellId": "a391e8ea-9dbe-4fe4-90df-bf475d8b7ef8",
|
|
"visible": true,
|
|
"parentCellId": "cb53d612-9b89-47da-911c-165d0382a7d8"
|
|
},
|
|
"server/src/config/routes.js-simstep-3e93ef65-8e2c-405b-8dc1-56d8e93937b3": {
|
|
"path": "server/src/config/routes.js-simstep-3e93ef65-8e2c-405b-8dc1-56d8e93937b3",
|
|
"fileName": "routes.js",
|
|
"wiki": "The backend Express server receives the request. The routing configuration maps the `/api/v1/maintenance-window` path to the `maintenanceWindowRoutes`, which in turn directs the POST request to the `createMaintenanceWindows` method in the controller.",
|
|
"cellName": "Flow: Create Maintenance Window - API Routing - routes.js:L43",
|
|
"cellId": "a391e8ea-9dbe-4fe4-90df-bf475d8b7ef8",
|
|
"visible": true,
|
|
"startLine": 43,
|
|
"endLine": 43,
|
|
"parentCellId": "cb53d612-9b89-47da-911c-165d0382a7d8",
|
|
"parentPath": "server/src/config/routes.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Scheduled Maintenance Windows",
|
|
"simStepId": "3e93ef65-8e2c-405b-8dc1-56d8e93937b3"
|
|
}
|
|
]
|
|
},
|
|
"0fae6e75-38ea-444d-a1bf-0f820ba443b9": {
|
|
"path": "0fae6e75-38ea-444d-a1bf-0f820ba443b9",
|
|
"cellName": "Flow: Create Maintenance Window - Controller Logic - maintenanceWindowController.js:L27-41",
|
|
"cellId": "0fae6e75-38ea-444d-a1bf-0f820ba443b9",
|
|
"visible": true,
|
|
"parentCellId": "a0cae18c-3c0e-40d3-ab03-eef7eace65d6"
|
|
},
|
|
"server/src/controllers/v1/maintenanceWindowController.js-simstep-95fc1919-339d-4659-98cb-3dc50f662075": {
|
|
"path": "server/src/controllers/v1/maintenanceWindowController.js-simstep-95fc1919-339d-4659-98cb-3dc50f662075",
|
|
"fileName": "maintenanceWindowController.js",
|
|
"wiki": "The `maintenanceWindowController` validates the request body using Joi, ensures a `teamId` exists on the user object, and then calls the `maintenanceWindowService` to handle the business logic of creating the window.",
|
|
"cellName": "Flow: Create Maintenance Window - Controller Logic - maintenanceWindowController.js:L27-41",
|
|
"cellId": "0fae6e75-38ea-444d-a1bf-0f820ba443b9",
|
|
"visible": true,
|
|
"startLine": 27,
|
|
"endLine": 41,
|
|
"parentCellId": "a0cae18c-3c0e-40d3-ab03-eef7eace65d6",
|
|
"parentPath": "server/src/controllers/v1/maintenanceWindowController.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Scheduled Maintenance Windows",
|
|
"simStepId": "95fc1919-339d-4659-98cb-3dc50f662075"
|
|
}
|
|
]
|
|
},
|
|
"560d268b-ef0f-4cd2-bcfe-9dc0a0e2ce6f": {
|
|
"path": "560d268b-ef0f-4cd2-bcfe-9dc0a0e2ce6f",
|
|
"cellName": "Flow: Create Maintenance Window - Business Logic Execution - maintenanceWindowService.js:L18-39",
|
|
"cellId": "560d268b-ef0f-4cd2-bcfe-9dc0a0e2ce6f",
|
|
"visible": true,
|
|
"parentCellId": "26b8daff-aa48-4baa-9d6c-05f771bf0990"
|
|
},
|
|
"server/src/service/v1/business/maintenanceWindowService.js-simstep-6e2cf739-1514-4c37-9874-10b68a47010e": {
|
|
"path": "server/src/service/v1/business/maintenanceWindowService.js-simstep-6e2cf739-1514-4c37-9874-10b68a47010e",
|
|
"fileName": "maintenanceWindowService.js",
|
|
"wiki": "The `maintenanceWindowService` verifies that all monitors specified in the request belong to the user's team. It then iterates through each monitor ID and prepares a separate database transaction to create a maintenance window record for each one.",
|
|
"cellName": "Flow: Create Maintenance Window - Business Logic Execution - maintenanceWindowService.js:L18-39",
|
|
"cellId": "560d268b-ef0f-4cd2-bcfe-9dc0a0e2ce6f",
|
|
"visible": true,
|
|
"startLine": 18,
|
|
"endLine": 39,
|
|
"parentCellId": "26b8daff-aa48-4baa-9d6c-05f771bf0990",
|
|
"parentPath": "server/src/service/v1/business/maintenanceWindowService.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Scheduled Maintenance Windows",
|
|
"simStepId": "6e2cf739-1514-4c37-9874-10b68a47010e"
|
|
}
|
|
]
|
|
},
|
|
"3890b98d-a133-4279-a961-5d2facc6a17a": {
|
|
"path": "3890b98d-a133-4279-a961-5d2facc6a17a",
|
|
"cellName": "Flow: Create Maintenance Window - Database Record Creation - maintenanceWindowModule.js:L7-22",
|
|
"cellId": "3890b98d-a133-4279-a961-5d2facc6a17a",
|
|
"visible": true,
|
|
"parentCellId": "95ed6c41-ebeb-4c08-98c3-bab8b426789e"
|
|
},
|
|
"server/src/db/v1/modules/maintenanceWindowModule.js-simstep-a3c47fd4-c701-46c2-9aff-94a667b3e368": {
|
|
"path": "server/src/db/v1/modules/maintenanceWindowModule.js-simstep-a3c47fd4-c701-46c2-9aff-94a667b3e368",
|
|
"fileName": "maintenanceWindowModule.js",
|
|
"wiki": "The `maintenanceWindowModule` instantiates a new `MaintenanceWindow` Mongoose model. If the window is a one-time event, it sets an `expiry` field to the end time for automatic cleanup by MongoDB's TTL index. Finally, it saves the new document to the database.",
|
|
"cellName": "Flow: Create Maintenance Window - Database Record Creation - maintenanceWindowModule.js:L7-22",
|
|
"cellId": "3890b98d-a133-4279-a961-5d2facc6a17a",
|
|
"visible": true,
|
|
"startLine": 7,
|
|
"endLine": 22,
|
|
"parentCellId": "95ed6c41-ebeb-4c08-98c3-bab8b426789e",
|
|
"parentPath": "server/src/db/v1/modules/maintenanceWindowModule.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Scheduled Maintenance Windows",
|
|
"simStepId": "a3c47fd4-c701-46c2-9aff-94a667b3e368"
|
|
}
|
|
]
|
|
},
|
|
"a5a84b08-8c70-4023-8d08-b74e23aab4d7": {
|
|
"path": "a5a84b08-8c70-4023-8d08-b74e23aab4d7",
|
|
"cellName": "Flow: Create Maintenance Window - UI Update - index.jsx:L111-119",
|
|
"cellId": "a5a84b08-8c70-4023-8d08-b74e23aab4d7",
|
|
"visible": true,
|
|
"parentCellId": "92c244d2-e6a7-4804-a643-1e8d36baf9c6"
|
|
},
|
|
"client/src/Pages/v1/Maintenance/CreateMaintenance/index.jsx-simstep-ebe8fd52-f2a1-4a98-a71b-b04d6f4cdadc": {
|
|
"path": "client/src/Pages/v1/Maintenance/CreateMaintenance/index.jsx-simstep-ebe8fd52-f2a1-4a98-a71b-b04d6f4cdadc",
|
|
"fileName": "index.jsx",
|
|
"wiki": "The frontend receives the success response. A success toast message is displayed, and the user is navigated back to the main maintenance windows table.",
|
|
"cellName": "Flow: Create Maintenance Window - UI Update - index.jsx:L111-119",
|
|
"cellId": "a5a84b08-8c70-4023-8d08-b74e23aab4d7",
|
|
"visible": true,
|
|
"startLine": 111,
|
|
"endLine": 119,
|
|
"parentCellId": "92c244d2-e6a7-4804-a643-1e8d36baf9c6",
|
|
"parentPath": "client/src/Pages/v1/Maintenance/CreateMaintenance/index.jsx",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Scheduled Maintenance Windows",
|
|
"simStepId": "ebe8fd52-f2a1-4a98-a71b-b04d6f4cdadc"
|
|
}
|
|
]
|
|
},
|
|
"d145bb4c-e1e0-473a-b6bc-decc932b738b": {
|
|
"path": "d145bb4c-e1e0-473a-b6bc-decc932b738b",
|
|
"cellName": "Flow: View Maintenance Windows - Page Load - index.jsx:L25-47",
|
|
"cellId": "d145bb4c-e1e0-473a-b6bc-decc932b738b",
|
|
"visible": true,
|
|
"parentCellId": "1eae6263-aaa2-4206-b92e-1e67f529c1c9"
|
|
},
|
|
"client/src/Pages/v1/Maintenance/index.jsx-simstep-82b5ea14-bb00-4511-aba4-76196029fd81": {
|
|
"path": "client/src/Pages/v1/Maintenance/index.jsx-simstep-82b5ea14-bb00-4511-aba4-76196029fd81",
|
|
"fileName": "index.jsx",
|
|
"wiki": "User navigates to the '/maintenance' page. The `Maintenance` component mounts and triggers a `useEffect` hook to fetch the list of maintenance windows.",
|
|
"cellName": "Flow: View Maintenance Windows - Page Load - index.jsx:L25-47",
|
|
"cellId": "d145bb4c-e1e0-473a-b6bc-decc932b738b",
|
|
"visible": true,
|
|
"startLine": 25,
|
|
"endLine": 47,
|
|
"parentCellId": "1eae6263-aaa2-4206-b92e-1e67f529c1c9",
|
|
"parentPath": "client/src/Pages/v1/Maintenance/index.jsx",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Scheduled Maintenance Windows",
|
|
"simStepId": "82b5ea14-bb00-4511-aba4-76196029fd81"
|
|
}
|
|
]
|
|
},
|
|
"c35a065c-2808-402c-877e-9055d956ce0d": {
|
|
"path": "c35a065c-2808-402c-877e-9055d956ce0d",
|
|
"cellName": "Flow: View Maintenance Windows - Controller and Service - maintenanceWindowController.js:L75",
|
|
"cellId": "c35a065c-2808-402c-877e-9055d956ce0d",
|
|
"visible": true,
|
|
"parentCellId": "a0cae18c-3c0e-40d3-ab03-eef7eace65d6"
|
|
},
|
|
"server/src/controllers/v1/maintenanceWindowController.js-simstep-1251da83-5949-4e24-a1d2-fc74ff785aa9": {
|
|
"path": "server/src/controllers/v1/maintenanceWindowController.js-simstep-1251da83-5949-4e24-a1d2-fc74ff785aa9",
|
|
"fileName": "maintenanceWindowController.js",
|
|
"wiki": "The backend routes the request to `maintenanceWindowController.getMaintenanceWindowsByTeamId`. This controller calls the corresponding service, which in turn calls the database module to query for the data.",
|
|
"cellName": "Flow: View Maintenance Windows - Controller and Service - maintenanceWindowController.js:L75",
|
|
"cellId": "c35a065c-2808-402c-877e-9055d956ce0d",
|
|
"visible": true,
|
|
"startLine": 75,
|
|
"endLine": 75,
|
|
"parentCellId": "a0cae18c-3c0e-40d3-ab03-eef7eace65d6",
|
|
"parentPath": "server/src/controllers/v1/maintenanceWindowController.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Scheduled Maintenance Windows",
|
|
"simStepId": "1251da83-5949-4e24-a1d2-fc74ff785aa9"
|
|
}
|
|
]
|
|
},
|
|
"27d9160a-4f8d-4dff-a09b-1678bc28cf2c": {
|
|
"path": "27d9160a-4f8d-4dff-a09b-1678bc28cf2c",
|
|
"cellName": "Flow: View Maintenance Windows - Data Retrieval - maintenanceWindowModule.js:L37-66",
|
|
"cellId": "27d9160a-4f8d-4dff-a09b-1678bc28cf2c",
|
|
"visible": true,
|
|
"parentCellId": "95ed6c41-ebeb-4c08-98c3-bab8b426789e"
|
|
},
|
|
"server/src/db/v1/modules/maintenanceWindowModule.js-simstep-9bfbae5a-f487-40ef-86f5-04a1cc3c7662": {
|
|
"path": "server/src/db/v1/modules/maintenanceWindowModule.js-simstep-9bfbae5a-f487-40ef-86f5-04a1cc3c7662",
|
|
"fileName": "maintenanceWindowModule.js",
|
|
"wiki": "The `maintenanceWindowModule` constructs a MongoDB query to find all maintenance windows for the given `teamId`, applying pagination (skip, limit) and sorting. It executes the query and returns the results along with the total count.",
|
|
"cellName": "Flow: View Maintenance Windows - Data Retrieval - maintenanceWindowModule.js:L37-66",
|
|
"cellId": "27d9160a-4f8d-4dff-a09b-1678bc28cf2c",
|
|
"visible": true,
|
|
"startLine": 37,
|
|
"endLine": 66,
|
|
"parentCellId": "95ed6c41-ebeb-4c08-98c3-bab8b426789e",
|
|
"parentPath": "server/src/db/v1/modules/maintenanceWindowModule.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Scheduled Maintenance Windows",
|
|
"simStepId": "9bfbae5a-f487-40ef-86f5-04a1cc3c7662"
|
|
}
|
|
]
|
|
},
|
|
"970e2002-7c0e-40ef-80d8-e5e6d0a60735": {
|
|
"path": "970e2002-7c0e-40ef-80d8-e5e6d0a60735",
|
|
"cellName": "Flow: View Maintenance Windows - UI Rendering - index.jsx:L195-201",
|
|
"cellId": "970e2002-7c0e-40ef-80d8-e5e6d0a60735",
|
|
"visible": true,
|
|
"parentCellId": "e7ec5ca9-6d25-4bf2-9695-639556f7d141"
|
|
},
|
|
"client/src/Pages/v1/Maintenance/MaintenanceTable/index.jsx-simstep-acf97639-e291-4ca6-81a6-d0487397f42a": {
|
|
"path": "client/src/Pages/v1/Maintenance/MaintenanceTable/index.jsx-simstep-acf97639-e291-4ca6-81a6-d0487397f42a",
|
|
"fileName": "index.jsx",
|
|
"wiki": "The client receives the data and updates its state. The `MaintenanceTable` component then renders the list of maintenance windows in a table, displaying their names, schedules, and providing actions like edit or delete.",
|
|
"cellName": "Flow: View Maintenance Windows - UI Rendering - index.jsx:L195-201",
|
|
"cellId": "970e2002-7c0e-40ef-80d8-e5e6d0a60735",
|
|
"visible": true,
|
|
"startLine": 195,
|
|
"endLine": 201,
|
|
"parentCellId": "e7ec5ca9-6d25-4bf2-9695-639556f7d141",
|
|
"parentPath": "client/src/Pages/v1/Maintenance/MaintenanceTable/index.jsx",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Scheduled Maintenance Windows",
|
|
"simStepId": "acf97639-e291-4ca6-81a6-d0487397f42a"
|
|
}
|
|
]
|
|
},
|
|
"23630a1f-7452-4373-a864-7ec7821137f2": {
|
|
"path": "23630a1f-7452-4373-a864-7ec7821137f2",
|
|
"cellName": "Flow: Monitor Suppression - Job Execution Start - SuperSimpleQueueHelper.js:L30-45",
|
|
"cellId": "23630a1f-7452-4373-a864-7ec7821137f2",
|
|
"visible": true,
|
|
"parentCellId": "04c12e9a-e025-457c-a634-5f7472a42985"
|
|
},
|
|
"server/src/service/v1/infrastructure/SuperSimpleQueue/SuperSimpleQueueHelper.js-simstep-a47affaf-b952-46d6-9709-6120a77690e1": {
|
|
"path": "server/src/service/v1/infrastructure/SuperSimpleQueue/SuperSimpleQueueHelper.js-simstep-a47affaf-b952-46d6-9709-6120a77690e1",
|
|
"fileName": "SuperSimpleQueueHelper.js",
|
|
"wiki": "The `SuperSimpleQueue` processing system picks up a job to check a specific monitor. The job handler is retrieved from `SuperSimpleQueueHelper`.",
|
|
"cellName": "Flow: Monitor Suppression - Job Execution Start - SuperSimpleQueueHelper.js:L30-45",
|
|
"cellId": "23630a1f-7452-4373-a864-7ec7821137f2",
|
|
"visible": true,
|
|
"startLine": 30,
|
|
"endLine": 45,
|
|
"parentCellId": "04c12e9a-e025-457c-a634-5f7472a42985",
|
|
"parentPath": "server/src/service/v1/infrastructure/SuperSimpleQueue/SuperSimpleQueueHelper.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Scheduled Maintenance Windows",
|
|
"simStepId": "a47affaf-b952-46d6-9709-6120a77690e1"
|
|
}
|
|
]
|
|
},
|
|
"fc78b5b6-7fad-4f8f-a5a3-c7c38931daba": {
|
|
"path": "fc78b5b6-7fad-4f8f-a5a3-c7c38931daba",
|
|
"cellName": "Flow: Monitor Suppression - Fetching Maintenance Windows - SuperSimpleQueueHelper.js:L80-83",
|
|
"cellId": "fc78b5b6-7fad-4f8f-a5a3-c7c38931daba",
|
|
"visible": true,
|
|
"parentCellId": "04c12e9a-e025-457c-a634-5f7472a42985"
|
|
},
|
|
"server/src/service/v1/infrastructure/SuperSimpleQueue/SuperSimpleQueueHelper.js-simstep-2127e749-80b4-499a-ae14-8dc2dcc9db9b": {
|
|
"path": "server/src/service/v1/infrastructure/SuperSimpleQueue/SuperSimpleQueueHelper.js-simstep-2127e749-80b4-499a-ae14-8dc2dcc9db9b",
|
|
"fileName": "SuperSimpleQueueHelper.js",
|
|
"wiki": "The `isInMaintenanceWindow` function calls the database module to fetch all maintenance windows associated with the given monitor ID and team ID.",
|
|
"cellName": "Flow: Monitor Suppression - Fetching Maintenance Windows - SuperSimpleQueueHelper.js:L80-83",
|
|
"cellId": "fc78b5b6-7fad-4f8f-a5a3-c7c38931daba",
|
|
"visible": true,
|
|
"startLine": 80,
|
|
"endLine": 83,
|
|
"parentCellId": "04c12e9a-e025-457c-a634-5f7472a42985",
|
|
"parentPath": "server/src/service/v1/infrastructure/SuperSimpleQueue/SuperSimpleQueueHelper.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Scheduled Maintenance Windows",
|
|
"simStepId": "2127e749-80b4-499a-ae14-8dc2dcc9db9b"
|
|
}
|
|
]
|
|
},
|
|
"0fe32416-db43-49b9-9438-3796ba1a0add": {
|
|
"path": "0fe32416-db43-49b9-9438-3796ba1a0add",
|
|
"cellName": "Flow: Monitor Suppression - Time Evaluation - SuperSimpleQueueHelper.js:L85-113",
|
|
"cellId": "0fe32416-db43-49b9-9438-3796ba1a0add",
|
|
"visible": true,
|
|
"parentCellId": "04c12e9a-e025-457c-a634-5f7472a42985"
|
|
},
|
|
"server/src/service/v1/infrastructure/SuperSimpleQueue/SuperSimpleQueueHelper.js-simstep-6ba6b9d1-5fc3-454e-8744-2022b5192ed9": {
|
|
"path": "server/src/service/v1/infrastructure/SuperSimpleQueue/SuperSimpleQueueHelper.js-simstep-6ba6b9d1-5fc3-454e-8744-2022b5192ed9",
|
|
"fileName": "SuperSimpleQueueHelper.js",
|
|
"wiki": "The `isInMaintenanceWindow` function iterates through the returned windows. For each active window, it checks if the current time (`new Date()`) is between the `start` and `end` times.",
|
|
"cellName": "Flow: Monitor Suppression - Time Evaluation - SuperSimpleQueueHelper.js:L85-113",
|
|
"cellId": "0fe32416-db43-49b9-9438-3796ba1a0add",
|
|
"visible": true,
|
|
"startLine": 85,
|
|
"endLine": 113,
|
|
"parentCellId": "04c12e9a-e025-457c-a634-5f7472a42985",
|
|
"parentPath": "server/src/service/v1/infrastructure/SuperSimpleQueue/SuperSimpleQueueHelper.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Scheduled Maintenance Windows",
|
|
"simStepId": "6ba6b9d1-5fc3-454e-8744-2022b5192ed9"
|
|
}
|
|
]
|
|
},
|
|
"01e042c3-40b4-416a-8d9e-6d6fd323d60b": {
|
|
"path": "01e042c3-40b4-416a-8d9e-6d6fd323d60b",
|
|
"cellName": "Flow: Monitor Suppression - Conditional Job Termination - SuperSimpleQueueHelper.js:L37-44",
|
|
"cellId": "01e042c3-40b4-416a-8d9e-6d6fd323d60b",
|
|
"visible": true,
|
|
"parentCellId": "04c12e9a-e025-457c-a634-5f7472a42985"
|
|
},
|
|
"server/src/service/v1/infrastructure/SuperSimpleQueue/SuperSimpleQueueHelper.js-simstep-e59fe64e-f06b-4855-b631-923bb5a68540": {
|
|
"path": "server/src/service/v1/infrastructure/SuperSimpleQueue/SuperSimpleQueueHelper.js-simstep-e59fe64e-f06b-4855-b631-923bb5a68540",
|
|
"fileName": "SuperSimpleQueueHelper.js",
|
|
"wiki": "If the `isInMaintenanceWindow` function returns true, the `getMonitorJob` logs that the monitor is in a maintenance window and terminates its execution for this cycle, effectively suppressing the check.",
|
|
"cellName": "Flow: Monitor Suppression - Conditional Job Termination - SuperSimpleQueueHelper.js:L37-44",
|
|
"cellId": "01e042c3-40b4-416a-8d9e-6d6fd323d60b",
|
|
"visible": true,
|
|
"startLine": 37,
|
|
"endLine": 44,
|
|
"parentCellId": "04c12e9a-e025-457c-a634-5f7472a42985",
|
|
"parentPath": "server/src/service/v1/infrastructure/SuperSimpleQueue/SuperSimpleQueueHelper.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Scheduled Maintenance Windows",
|
|
"simStepId": "e59fe64e-f06b-4855-b631-923bb5a68540"
|
|
}
|
|
]
|
|
},
|
|
"d3bdc6ff-875e-472e-88c8-eb10b20c526e": {
|
|
"path": "d3bdc6ff-875e-472e-88c8-eb10b20c526e",
|
|
"cellName": "Flow: Create\nMaintenance Window\n- Form\nSubmission",
|
|
"cellId": "d3bdc6ff-875e-472e-88c8-eb10b20c526e",
|
|
"visible": true,
|
|
"parentCellId": "6f7119ac-d65a-4fdf-a6f2-31052e0f5549"
|
|
},
|
|
"generated-edge-simstep-f881435b-3bc2-453d-b6bf-56ad3a12f120-d3bdc6ff-875e-472e-88c8-eb10b20c526e": {
|
|
"path": "generated-edge-simstep-f881435b-3bc2-453d-b6bf-56ad3a12f120-d3bdc6ff-875e-472e-88c8-eb10b20c526e",
|
|
"fileName": "index.jsx",
|
|
"cellName": "Flow: Create Maintenance Window - Form Submission",
|
|
"cellId": "d3bdc6ff-875e-472e-88c8-eb10b20c526e",
|
|
"visible": true,
|
|
"startLine": 108,
|
|
"endLine": 109,
|
|
"parentPath": "client/src/Pages/v1/Maintenance/CreateMaintenance/index.jsx",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Scheduled Maintenance Windows",
|
|
"simStepId": "f881435b-3bc2-453d-b6bf-56ad3a12f120"
|
|
}
|
|
]
|
|
},
|
|
"fd5e4447-123b-4b2d-8bce-1d1ae7cb00af": {
|
|
"path": "fd5e4447-123b-4b2d-8bce-1d1ae7cb00af",
|
|
"cellName": "Flow: Create\nMaintenance Window\n- API\nCall",
|
|
"cellId": "fd5e4447-123b-4b2d-8bce-1d1ae7cb00af",
|
|
"visible": true
|
|
},
|
|
"generated-edge-simstep-0660b48b-139f-4ecf-b7d9-f12f544e0ab5-fd5e4447-123b-4b2d-8bce-1d1ae7cb00af": {
|
|
"path": "generated-edge-simstep-0660b48b-139f-4ecf-b7d9-f12f544e0ab5-fd5e4447-123b-4b2d-8bce-1d1ae7cb00af",
|
|
"fileName": "useMaintenanceActions.jsx",
|
|
"cellName": "Flow: Create Maintenance Window - API Call",
|
|
"cellId": "fd5e4447-123b-4b2d-8bce-1d1ae7cb00af",
|
|
"visible": true,
|
|
"startLine": 762,
|
|
"endLine": 766,
|
|
"parentPath": "client/src/Pages/v1/Maintenance/CreateMaintenance/hooks/useMaintenanceActions.jsx",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Scheduled Maintenance Windows",
|
|
"simStepId": "0660b48b-139f-4ecf-b7d9-f12f544e0ab5"
|
|
}
|
|
]
|
|
},
|
|
"e2588541-3ffc-47c6-8f8a-41d30ea7fc72": {
|
|
"path": "e2588541-3ffc-47c6-8f8a-41d30ea7fc72",
|
|
"cellName": "Flow: Create\nMaintenance Window\n- Controller\nInvocation",
|
|
"cellId": "e2588541-3ffc-47c6-8f8a-41d30ea7fc72",
|
|
"visible": true,
|
|
"parentCellId": "35864a2c-7bd0-4428-84fc-c0aa90c7f1be"
|
|
},
|
|
"generated-edge-simstep-e4cc5ce8-6da9-4281-9204-29c061ab13ce-e2588541-3ffc-47c6-8f8a-41d30ea7fc72": {
|
|
"path": "generated-edge-simstep-e4cc5ce8-6da9-4281-9204-29c061ab13ce-e2588541-3ffc-47c6-8f8a-41d30ea7fc72",
|
|
"fileName": "routes.js",
|
|
"cellName": "Flow: Create Maintenance Window - Controller Invocation",
|
|
"cellId": "e2588541-3ffc-47c6-8f8a-41d30ea7fc72",
|
|
"visible": true,
|
|
"startLine": 10,
|
|
"endLine": 10,
|
|
"parentPath": "server/src/config/routes.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Scheduled Maintenance Windows",
|
|
"simStepId": "e4cc5ce8-6da9-4281-9204-29c061ab13ce"
|
|
}
|
|
]
|
|
},
|
|
"e1d59cf6-0d96-4e0a-ad17-2a7984a9157f": {
|
|
"path": "e1d59cf6-0d96-4e0a-ad17-2a7984a9157f",
|
|
"cellName": "Flow: Create\nMaintenance Window\n- Service\nLayer Call",
|
|
"cellId": "e1d59cf6-0d96-4e0a-ad17-2a7984a9157f",
|
|
"visible": true,
|
|
"parentCellId": "35864a2c-7bd0-4428-84fc-c0aa90c7f1be"
|
|
},
|
|
"generated-edge-simstep-c3d1a95c-e93d-499a-8830-a6d870902414-e1d59cf6-0d96-4e0a-ad17-2a7984a9157f": {
|
|
"path": "generated-edge-simstep-c3d1a95c-e93d-499a-8830-a6d870902414-e1d59cf6-0d96-4e0a-ad17-2a7984a9157f",
|
|
"fileName": "maintenanceWindowController.js",
|
|
"cellName": "Flow: Create Maintenance Window - Service Layer Call",
|
|
"cellId": "e1d59cf6-0d96-4e0a-ad17-2a7984a9157f",
|
|
"visible": true,
|
|
"startLine": 35,
|
|
"endLine": 35,
|
|
"parentPath": "server/src/controllers/v1/maintenanceWindowController.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Scheduled Maintenance Windows",
|
|
"simStepId": "c3d1a95c-e93d-499a-8830-a6d870902414"
|
|
}
|
|
]
|
|
},
|
|
"12d0ab8a-392f-48fa-9efa-06ffe1f3a252": {
|
|
"path": "12d0ab8a-392f-48fa-9efa-06ffe1f3a252",
|
|
"cellName": "Flow: Create\nMaintenance Window\n- Database\nModule Call",
|
|
"cellId": "12d0ab8a-392f-48fa-9efa-06ffe1f3a252",
|
|
"visible": true,
|
|
"parentCellId": "35864a2c-7bd0-4428-84fc-c0aa90c7f1be"
|
|
},
|
|
"generated-edge-simstep-80aed28e-68b6-47bf-8bc9-ededb4824066-12d0ab8a-392f-48fa-9efa-06ffe1f3a252": {
|
|
"path": "generated-edge-simstep-80aed28e-68b6-47bf-8bc9-ededb4824066-12d0ab8a-392f-48fa-9efa-06ffe1f3a252",
|
|
"fileName": "maintenanceWindowService.js",
|
|
"cellName": "Flow: Create Maintenance Window - Database Module Call",
|
|
"cellId": "12d0ab8a-392f-48fa-9efa-06ffe1f3a252",
|
|
"visible": true,
|
|
"startLine": 28,
|
|
"endLine": 37,
|
|
"parentPath": "server/src/service/v1/business/maintenanceWindowService.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Scheduled Maintenance Windows",
|
|
"simStepId": "80aed28e-68b6-47bf-8bc9-ededb4824066"
|
|
}
|
|
]
|
|
},
|
|
"fcf4eef4-394c-4872-9124-f7a0b32cdc3b": {
|
|
"path": "fcf4eef4-394c-4872-9124-f7a0b32cdc3b",
|
|
"cellName": "Flow: Create\nMaintenance Window\n- API\nResponse",
|
|
"cellId": "fcf4eef4-394c-4872-9124-f7a0b32cdc3b",
|
|
"visible": true
|
|
},
|
|
"generated-edge-simstep-69fdc2a9-837f-466c-9562-a12319019580-fcf4eef4-394c-4872-9124-f7a0b32cdc3b": {
|
|
"path": "generated-edge-simstep-69fdc2a9-837f-466c-9562-a12319019580-fcf4eef4-394c-4872-9124-f7a0b32cdc3b",
|
|
"fileName": "maintenanceWindowModule.js",
|
|
"cellName": "Flow: Create Maintenance Window - API Response",
|
|
"cellId": "fcf4eef4-394c-4872-9124-f7a0b32cdc3b",
|
|
"visible": true,
|
|
"startLine": 37,
|
|
"endLine": 39,
|
|
"parentPath": "server/src/db/v1/modules/maintenanceWindowModule.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Scheduled Maintenance Windows",
|
|
"simStepId": "69fdc2a9-837f-466c-9562-a12319019580"
|
|
}
|
|
]
|
|
},
|
|
"7f921125-500f-4902-abc3-936ecac033d8": {
|
|
"path": "7f921125-500f-4902-abc3-936ecac033d8",
|
|
"cellName": "Flow: View\nMaintenance Windows\n- API\nCall",
|
|
"cellId": "7f921125-500f-4902-abc3-936ecac033d8",
|
|
"visible": true
|
|
},
|
|
"generated-edge-simstep-7e20cd6c-d24e-4540-86d6-d6a9fa087314-7f921125-500f-4902-abc3-936ecac033d8": {
|
|
"path": "generated-edge-simstep-7e20cd6c-d24e-4540-86d6-d6a9fa087314-7f921125-500f-4902-abc3-936ecac033d8",
|
|
"fileName": "index.jsx",
|
|
"cellName": "Flow: View Maintenance Windows - API Call",
|
|
"cellId": "7f921125-500f-4902-abc3-936ecac033d8",
|
|
"visible": true,
|
|
"startLine": 824,
|
|
"endLine": 824,
|
|
"parentPath": "client/src/Pages/v1/Maintenance/index.jsx",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Scheduled Maintenance Windows",
|
|
"simStepId": "7e20cd6c-d24e-4540-86d6-d6a9fa087314"
|
|
}
|
|
]
|
|
},
|
|
"c3127c74-43f1-42d7-8da6-b0a494c3658f": {
|
|
"path": "c3127c74-43f1-42d7-8da6-b0a494c3658f",
|
|
"cellName": "Flow: View\nMaintenance Windows\n- Database\nQuery",
|
|
"cellId": "c3127c74-43f1-42d7-8da6-b0a494c3658f",
|
|
"visible": true,
|
|
"parentCellId": "35864a2c-7bd0-4428-84fc-c0aa90c7f1be"
|
|
},
|
|
"generated-edge-simstep-feb8bd4f-339f-4132-a709-89c63c4efa9c-c3127c74-43f1-42d7-8da6-b0a494c3658f": {
|
|
"path": "generated-edge-simstep-feb8bd4f-339f-4132-a709-89c63c4efa9c-c3127c74-43f1-42d7-8da6-b0a494c3658f",
|
|
"fileName": "maintenanceWindowController.js",
|
|
"cellName": "Flow: View Maintenance Windows - Database Query",
|
|
"cellId": "c3127c74-43f1-42d7-8da6-b0a494c3658f",
|
|
"visible": true,
|
|
"startLine": 48,
|
|
"endLine": 48,
|
|
"parentPath": "server/src/controllers/v1/maintenanceWindowController.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Scheduled Maintenance Windows",
|
|
"simStepId": "feb8bd4f-339f-4132-a709-89c63c4efa9c"
|
|
}
|
|
]
|
|
},
|
|
"6c9979cd-1cc1-4227-b535-2ec3a10ca27e": {
|
|
"path": "6c9979cd-1cc1-4227-b535-2ec3a10ca27e",
|
|
"cellName": "Flow: View\nMaintenance Windows\n- Data\nReturn to\nFrontend",
|
|
"cellId": "6c9979cd-1cc1-4227-b535-2ec3a10ca27e",
|
|
"visible": true
|
|
},
|
|
"generated-edge-simstep-eda86dca-dea6-4671-a079-7d212f4f18c4-6c9979cd-1cc1-4227-b535-2ec3a10ca27e": {
|
|
"path": "generated-edge-simstep-eda86dca-dea6-4671-a079-7d212f4f18c4-6c9979cd-1cc1-4227-b535-2ec3a10ca27e",
|
|
"fileName": "maintenanceWindowModule.js",
|
|
"cellName": "Flow: View Maintenance Windows - Data Return to Frontend",
|
|
"cellId": "6c9979cd-1cc1-4227-b535-2ec3a10ca27e",
|
|
"visible": true,
|
|
"startLine": 77,
|
|
"endLine": 80,
|
|
"parentPath": "server/src/db/v1/modules/maintenanceWindowModule.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Scheduled Maintenance Windows",
|
|
"simStepId": "eda86dca-dea6-4671-a079-7d212f4f18c4"
|
|
}
|
|
]
|
|
},
|
|
"c99291bb-7316-440e-9a7f-323ee39e26b8": {
|
|
"path": "c99291bb-7316-440e-9a7f-323ee39e26b8",
|
|
"cellName": "Flow: Monitor\nSuppression -\nMaintenance Check\nCall",
|
|
"cellId": "c99291bb-7316-440e-9a7f-323ee39e26b8",
|
|
"visible": true,
|
|
"parentCellId": "04c12e9a-e025-457c-a634-5f7472a42985"
|
|
},
|
|
"generated-edge-simstep-87583096-f1ec-4160-ae52-5238f32ed0ab-c99291bb-7316-440e-9a7f-323ee39e26b8": {
|
|
"path": "generated-edge-simstep-87583096-f1ec-4160-ae52-5238f32ed0ab-c99291bb-7316-440e-9a7f-323ee39e26b8",
|
|
"fileName": "SuperSimpleQueueHelper.js",
|
|
"cellName": "Flow: Monitor Suppression - Maintenance Check Call",
|
|
"cellId": "c99291bb-7316-440e-9a7f-323ee39e26b8",
|
|
"visible": true,
|
|
"startLine": 36,
|
|
"endLine": 36,
|
|
"parentPath": "server/src/service/v1/infrastructure/SuperSimpleQueue/SuperSimpleQueueHelper.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Scheduled Maintenance Windows",
|
|
"simStepId": "87583096-f1ec-4160-ae52-5238f32ed0ab"
|
|
}
|
|
]
|
|
},
|
|
"8a13e585-2310-420b-9e92-211b6d65f201": {
|
|
"path": "8a13e585-2310-420b-9e92-211b6d65f201",
|
|
"cellName": "Flow: Monitor\nSuppression -\nDatabase Result\nReturn",
|
|
"cellId": "8a13e585-2310-420b-9e92-211b6d65f201",
|
|
"visible": true,
|
|
"parentCellId": "04c12e9a-e025-457c-a634-5f7472a42985"
|
|
},
|
|
"generated-edge-simstep-e6542e14-556d-482a-8c35-f7b03997be49-8a13e585-2310-420b-9e92-211b6d65f201": {
|
|
"path": "generated-edge-simstep-e6542e14-556d-482a-8c35-f7b03997be49-8a13e585-2310-420b-9e92-211b6d65f201",
|
|
"fileName": "SuperSimpleQueueHelper.js",
|
|
"cellName": "Flow: Monitor Suppression - Database Result Return",
|
|
"cellId": "8a13e585-2310-420b-9e92-211b6d65f201",
|
|
"visible": true,
|
|
"startLine": 69,
|
|
"endLine": 76,
|
|
"parentPath": "server/src/service/v1/infrastructure/SuperSimpleQueue/SuperSimpleQueueHelper.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Scheduled Maintenance Windows",
|
|
"simStepId": "e6542e14-556d-482a-8c35-f7b03997be49"
|
|
}
|
|
]
|
|
},
|
|
"40f4d9df-4c0f-4384-901c-8d7117e3b538": {
|
|
"path": "40f4d9df-4c0f-4384-901c-8d7117e3b538",
|
|
"cellName": "Flow: Monitor\nSuppression -\nReturn Suppression\nFlag",
|
|
"cellId": "40f4d9df-4c0f-4384-901c-8d7117e3b538",
|
|
"visible": true,
|
|
"parentCellId": "04c12e9a-e025-457c-a634-5f7472a42985"
|
|
},
|
|
"generated-edge-simstep-a715d98f-60bf-4f32-aae6-21ee4e09f4da-40f4d9df-4c0f-4384-901c-8d7117e3b538": {
|
|
"path": "generated-edge-simstep-a715d98f-60bf-4f32-aae6-21ee4e09f4da-40f4d9df-4c0f-4384-901c-8d7117e3b538",
|
|
"fileName": "SuperSimpleQueueHelper.js",
|
|
"cellName": "Flow: Monitor Suppression - Return Suppression Flag",
|
|
"cellId": "40f4d9df-4c0f-4384-901c-8d7117e3b538",
|
|
"visible": true,
|
|
"startLine": 114,
|
|
"endLine": 114,
|
|
"parentPath": "server/src/service/v1/infrastructure/SuperSimpleQueue/SuperSimpleQueueHelper.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Scheduled Maintenance Windows",
|
|
"simStepId": "a715d98f-60bf-4f32-aae6-21ee4e09f4da"
|
|
}
|
|
]
|
|
},
|
|
"a968db5d-8f6d-4fd7-9df0-8b332b521703": {
|
|
"path": "a968db5d-8f6d-4fd7-9df0-8b332b521703",
|
|
"cellName": "middleware",
|
|
"cellId": "a968db5d-8f6d-4fd7-9df0-8b332b521703",
|
|
"visible": true,
|
|
"parentCellId": "35864a2c-7bd0-4428-84fc-c0aa90c7f1be"
|
|
},
|
|
"09082f73-e215-465f-9206-0a963fb4c7cb": {
|
|
"path": "09082f73-e215-465f-9206-0a963fb4c7cb",
|
|
"cellName": "v1",
|
|
"cellId": "09082f73-e215-465f-9206-0a963fb4c7cb",
|
|
"visible": true,
|
|
"parentCellId": "a968db5d-8f6d-4fd7-9df0-8b332b521703"
|
|
},
|
|
"3cad7666-0d1a-4e31-b6ca-70d9c3a46b19": {
|
|
"path": "3cad7666-0d1a-4e31-b6ca-70d9c3a46b19",
|
|
"cellName": "Account",
|
|
"cellId": "3cad7666-0d1a-4e31-b6ca-70d9c3a46b19",
|
|
"visible": true,
|
|
"parentCellId": "1a083b4a-787c-4eb4-8029-6700de987679"
|
|
},
|
|
"9edafb8a-3661-4a7e-8510-a47f3cbc7564": {
|
|
"path": "9edafb8a-3661-4a7e-8510-a47f3cbc7564",
|
|
"cellName": "inviteRoute.js",
|
|
"cellId": "9edafb8a-3661-4a7e-8510-a47f3cbc7564",
|
|
"visible": true,
|
|
"parentCellId": "d3375a20-2776-4771-b806-649bbeb541bd"
|
|
},
|
|
"001fa2e4-eadd-4474-b2ec-79d7ea43465f": {
|
|
"path": "001fa2e4-eadd-4474-b2ec-79d7ea43465f",
|
|
"cellName": "isAllowed.js",
|
|
"cellId": "001fa2e4-eadd-4474-b2ec-79d7ea43465f",
|
|
"visible": true,
|
|
"parentCellId": "09082f73-e215-465f-9206-0a963fb4c7cb"
|
|
},
|
|
"6a186805-9d50-4bc3-9d56-e627a7ec2eb8": {
|
|
"path": "6a186805-9d50-4bc3-9d56-e627a7ec2eb8",
|
|
"cellName": "inviteController.js",
|
|
"cellId": "6a186805-9d50-4bc3-9d56-e627a7ec2eb8",
|
|
"visible": true,
|
|
"parentCellId": "fc591f7a-d4ac-4565-949d-a87a58a79bbc"
|
|
},
|
|
"33960806-1b9e-4d61-a163-e4bebf82d87a": {
|
|
"path": "33960806-1b9e-4d61-a163-e4bebf82d87a",
|
|
"cellName": "index.jsx",
|
|
"cellId": "33960806-1b9e-4d61-a163-e4bebf82d87a",
|
|
"visible": true,
|
|
"parentCellId": "3cad7666-0d1a-4e31-b6ca-70d9c3a46b19"
|
|
},
|
|
"425a4c15-043f-4d05-8832-da00e18f97b9": {
|
|
"path": "425a4c15-043f-4d05-8832-da00e18f97b9",
|
|
"cellName": "components",
|
|
"cellId": "425a4c15-043f-4d05-8832-da00e18f97b9",
|
|
"visible": true,
|
|
"parentCellId": "3cad7666-0d1a-4e31-b6ca-70d9c3a46b19"
|
|
},
|
|
"570278b7-9b72-4299-9fd9-46b253b48e9b": {
|
|
"path": "570278b7-9b72-4299-9fd9-46b253b48e9b",
|
|
"cellName": "inviteService.js",
|
|
"cellId": "570278b7-9b72-4299-9fd9-46b253b48e9b",
|
|
"visible": true,
|
|
"parentCellId": "87d3b101-9443-4ed4-9c4f-f759d41677eb"
|
|
},
|
|
"08853f8a-f596-4df0-9190-dad04f54caef": {
|
|
"path": "08853f8a-f596-4df0-9190-dad04f54caef",
|
|
"cellName": "inviteModule.js",
|
|
"cellId": "08853f8a-f596-4df0-9190-dad04f54caef",
|
|
"visible": true,
|
|
"parentCellId": "82cb3dbe-c922-438a-a912-255376f4b380"
|
|
},
|
|
"1145f351-2257-411d-86f7-30bf8c26ad68": {
|
|
"path": "1145f351-2257-411d-86f7-30bf8c26ad68",
|
|
"cellName": "TeamPanel.jsx",
|
|
"cellId": "1145f351-2257-411d-86f7-30bf8c26ad68",
|
|
"visible": true,
|
|
"parentCellId": "425a4c15-043f-4d05-8832-da00e18f97b9"
|
|
},
|
|
"3de2d413-5e9b-49f4-9409-74be32c52e0f": {
|
|
"path": "3de2d413-5e9b-49f4-9409-74be32c52e0f",
|
|
"cellName": "Client: Conditional UI Rendering Based on Role - index.jsx:L37-41",
|
|
"cellId": "3de2d413-5e9b-49f4-9409-74be32c52e0f",
|
|
"visible": true,
|
|
"parentCellId": "33960806-1b9e-4d61-a163-e4bebf82d87a"
|
|
},
|
|
"client/src/Pages/v1/Account/index.jsx-simstep-2d5a952a-ce62-4948-9309-96b28ad74e59": {
|
|
"path": "client/src/Pages/v1/Account/index.jsx-simstep-2d5a952a-ce62-4948-9309-96b28ad74e59",
|
|
"fileName": "index.jsx",
|
|
"wiki": "A user with 'superadmin' or 'admin' role navigates to the Account page. The application checks the user's role stored in the Redux state to conditionally render the 'Team' management tab. Non-admin users will not see this option.",
|
|
"cellName": "Client: Conditional UI Rendering Based on Role - index.jsx:L37-41",
|
|
"cellId": "3de2d413-5e9b-49f4-9409-74be32c52e0f",
|
|
"visible": true,
|
|
"startLine": 37,
|
|
"endLine": 41,
|
|
"parentCellId": "33960806-1b9e-4d61-a163-e4bebf82d87a",
|
|
"parentPath": "client/src/Pages/v1/Account/index.jsx",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "User and Team Management with Role-Based Access",
|
|
"simStepId": "2d5a952a-ce62-4948-9309-96b28ad74e59"
|
|
}
|
|
]
|
|
},
|
|
"b27f1bba-c655-40c6-a1dc-71e78c590c92": {
|
|
"path": "b27f1bba-c655-40c6-a1dc-71e78c590c92",
|
|
"cellName": "Client: Initiate User Invitation - TeamPanel.jsx:L348-354",
|
|
"cellId": "b27f1bba-c655-40c6-a1dc-71e78c590c92",
|
|
"visible": true,
|
|
"parentCellId": "1145f351-2257-411d-86f7-30bf8c26ad68"
|
|
},
|
|
"client/src/Pages/v1/Account/components/TeamPanel.jsx-simstep-eebaca25-d588-49c4-a35c-9abc82fde580": {
|
|
"path": "client/src/Pages/v1/Account/components/TeamPanel.jsx-simstep-eebaca25-d588-49c4-a35c-9abc82fde580",
|
|
"fileName": "TeamPanel.jsx",
|
|
"wiki": "In the `TeamPanel`, the admin clicks the 'Add Team Member' button, then selects 'Invite a team member'. A dialog opens, prompting for the new user's email and role. After filling the form and clicking 'E-mail token', the `handleInviteMember` function is triggered to start the invitation process.",
|
|
"cellName": "Client: Initiate User Invitation - TeamPanel.jsx:L348-354",
|
|
"cellId": "b27f1bba-c655-40c6-a1dc-71e78c590c92",
|
|
"visible": true,
|
|
"startLine": 348,
|
|
"endLine": 354,
|
|
"parentCellId": "1145f351-2257-411d-86f7-30bf8c26ad68",
|
|
"parentPath": "client/src/Pages/v1/Account/components/TeamPanel.jsx",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "User and Team Management with Role-Based Access",
|
|
"simStepId": "eebaca25-d588-49c4-a35c-9abc82fde580"
|
|
}
|
|
]
|
|
},
|
|
"8b3cb6c2-ed57-4510-be15-decb8e3c89e1": {
|
|
"path": "8b3cb6c2-ed57-4510-be15-decb8e3c89e1",
|
|
"cellName": "Server: Role-Based Access Control Middleware - isAllowed.js:L39-44",
|
|
"cellId": "8b3cb6c2-ed57-4510-be15-decb8e3c89e1",
|
|
"visible": true,
|
|
"parentCellId": "001fa2e4-eadd-4474-b2ec-79d7ea43465f"
|
|
},
|
|
"server/src/middleware/v1/isAllowed.js-simstep-50dd7316-7d01-43f7-9036-d97d51a9c178": {
|
|
"path": "server/src/middleware/v1/isAllowed.js-simstep-50dd7316-7d01-43f7-9036-d97d51a9c178",
|
|
"fileName": "isAllowed.js",
|
|
"wiki": "The server receives the request. Before reaching the main controller, the `isAllowed` middleware intercepts the request. It verifies the JWT from the request header and checks if the user's role (e.g., 'superadmin') is present in the list of allowed roles for this route (`['admin', 'superadmin']`).",
|
|
"cellName": "Server: Role-Based Access Control Middleware - isAllowed.js:L39-44",
|
|
"cellId": "8b3cb6c2-ed57-4510-be15-decb8e3c89e1",
|
|
"visible": true,
|
|
"startLine": 39,
|
|
"endLine": 44,
|
|
"parentCellId": "001fa2e4-eadd-4474-b2ec-79d7ea43465f",
|
|
"parentPath": "server/src/middleware/v1/isAllowed.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "User and Team Management with Role-Based Access",
|
|
"simStepId": "50dd7316-7d01-43f7-9036-d97d51a9c178"
|
|
}
|
|
]
|
|
},
|
|
"ae858158-8db6-4917-8fda-0966a953f6ed": {
|
|
"path": "ae858158-8db6-4917-8fda-0966a953f6ed",
|
|
"cellName": "Server: Process Invitation in Service Layer - inviteService.js:L24-28",
|
|
"cellId": "ae858158-8db6-4917-8fda-0966a953f6ed",
|
|
"visible": true,
|
|
"parentCellId": "570278b7-9b72-4299-9fd9-46b253b48e9b"
|
|
},
|
|
"server/src/service/v1/business/inviteService.js-simstep-55fe9963-30d2-47f8-859f-b485a77064c4": {
|
|
"path": "server/src/service/v1/business/inviteService.js-simstep-55fe9963-30d2-47f8-859f-b485a77064c4",
|
|
"fileName": "inviteService.js",
|
|
"wiki": "The `inviteController` calls the `inviteService`. The service layer handles the business logic: it first requests an invitation token from the database module and then instructs the email service to send the invitation.",
|
|
"cellName": "Server: Process Invitation in Service Layer - inviteService.js:L24-28",
|
|
"cellId": "ae858158-8db6-4917-8fda-0966a953f6ed",
|
|
"visible": true,
|
|
"startLine": 24,
|
|
"endLine": 28,
|
|
"parentCellId": "570278b7-9b72-4299-9fd9-46b253b48e9b",
|
|
"parentPath": "server/src/service/v1/business/inviteService.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "User and Team Management with Role-Based Access",
|
|
"simStepId": "55fe9963-30d2-47f8-859f-b485a77064c4"
|
|
}
|
|
]
|
|
},
|
|
"a7be2d0b-0227-4228-a0a6-074f7324fd89": {
|
|
"path": "a7be2d0b-0227-4228-a0a6-074f7324fd89",
|
|
"cellName": "Server: Dispatch Invitation Email - inviteService.js:L26-28",
|
|
"cellId": "a7be2d0b-0227-4228-a0a6-074f7324fd89",
|
|
"visible": true,
|
|
"parentCellId": "570278b7-9b72-4299-9fd9-46b253b48e9b"
|
|
},
|
|
"server/src/service/v1/business/inviteService.js-simstep-7d1f86f2-c8d5-48fb-a8c1-b337dc56271f": {
|
|
"path": "server/src/service/v1/business/inviteService.js-simstep-7d1f86f2-c8d5-48fb-a8c1-b337dc56271f",
|
|
"fileName": "inviteService.js",
|
|
"wiki": "After successfully storing the token, the `inviteService` uses the `emailService` to compose and send an email to the new user. The email contains a unique registration link including the generated token.",
|
|
"cellName": "Server: Dispatch Invitation Email - inviteService.js:L26-28",
|
|
"cellId": "a7be2d0b-0227-4228-a0a6-074f7324fd89",
|
|
"visible": true,
|
|
"startLine": 26,
|
|
"endLine": 28,
|
|
"parentCellId": "570278b7-9b72-4299-9fd9-46b253b48e9b",
|
|
"parentPath": "server/src/service/v1/business/inviteService.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "User and Team Management with Role-Based Access",
|
|
"simStepId": "7d1f86f2-c8d5-48fb-a8c1-b337dc56271f"
|
|
}
|
|
]
|
|
},
|
|
"02d87257-883c-4822-a421-823c983532ec": {
|
|
"path": "02d87257-883c-4822-a421-823c983532ec",
|
|
"cellName": "Client: Display Success Feedback - TeamPanel.jsx:L145-149",
|
|
"cellId": "02d87257-883c-4822-a421-823c983532ec",
|
|
"visible": true,
|
|
"parentCellId": "1145f351-2257-411d-86f7-30bf8c26ad68"
|
|
},
|
|
"client/src/Pages/v1/Account/components/TeamPanel.jsx-simstep-700f35e0-b39d-417c-b0a8-0612feade977": {
|
|
"path": "client/src/Pages/v1/Account/components/TeamPanel.jsx-simstep-700f35e0-b39d-417c-b0a8-0612feade977",
|
|
"fileName": "TeamPanel.jsx",
|
|
"wiki": "The client application receives the successful API response. It then closes the invitation dialog and displays a toast notification to the admin, confirming that the invitation has been sent.",
|
|
"cellName": "Client: Display Success Feedback - TeamPanel.jsx:L145-149",
|
|
"cellId": "02d87257-883c-4822-a421-823c983532ec",
|
|
"visible": true,
|
|
"startLine": 145,
|
|
"endLine": 149,
|
|
"parentCellId": "1145f351-2257-411d-86f7-30bf8c26ad68",
|
|
"parentPath": "client/src/Pages/v1/Account/components/TeamPanel.jsx",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "User and Team Management with Role-Based Access",
|
|
"simStepId": "700f35e0-b39d-417c-b0a8-0612feade977"
|
|
}
|
|
]
|
|
},
|
|
"c441312f-f3c6-48c6-b1b9-7c12749d91bb": {
|
|
"path": "c441312f-f3c6-48c6-b1b9-7c12749d91bb",
|
|
"cellName": "Client: User\nNavigates to\nTeam Panel",
|
|
"cellId": "c441312f-f3c6-48c6-b1b9-7c12749d91bb",
|
|
"visible": true,
|
|
"parentCellId": "3cad7666-0d1a-4e31-b6ca-70d9c3a46b19"
|
|
},
|
|
"generated-edge-simstep-10f80ada-2d0a-4e98-bd5d-057e7d4fe6de-c441312f-f3c6-48c6-b1b9-7c12749d91bb": {
|
|
"path": "generated-edge-simstep-10f80ada-2d0a-4e98-bd5d-057e7d4fe6de-c441312f-f3c6-48c6-b1b9-7c12749d91bb",
|
|
"fileName": "index.jsx",
|
|
"cellName": "Client: User Navigates to Team Panel",
|
|
"cellId": "c441312f-f3c6-48c6-b1b9-7c12749d91bb",
|
|
"visible": true,
|
|
"startLine": 98,
|
|
"endLine": 98,
|
|
"parentPath": "client/src/Pages/v1/Account/index.jsx",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "User and Team Management with Role-Based Access",
|
|
"simStepId": "10f80ada-2d0a-4e98-bd5d-057e7d4fe6de"
|
|
}
|
|
]
|
|
},
|
|
"3530244f-2689-444e-bcbf-611db2e3c000": {
|
|
"path": "3530244f-2689-444e-bcbf-611db2e3c000",
|
|
"cellName": "API Call:\nSend Invitation\nRequest",
|
|
"cellId": "3530244f-2689-444e-bcbf-611db2e3c000",
|
|
"visible": true
|
|
},
|
|
"generated-edge-simstep-16d87608-4458-430c-b459-cd9b1d413fa6-3530244f-2689-444e-bcbf-611db2e3c000": {
|
|
"path": "generated-edge-simstep-16d87608-4458-430c-b459-cd9b1d413fa6-3530244f-2689-444e-bcbf-611db2e3c000",
|
|
"fileName": "TeamPanel.jsx",
|
|
"cellName": "API Call: Send Invitation Request",
|
|
"cellId": "3530244f-2689-444e-bcbf-611db2e3c000",
|
|
"visible": true,
|
|
"startLine": 14,
|
|
"endLine": 14,
|
|
"parentPath": "client/src/Pages/v1/Account/components/TeamPanel.jsx",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "User and Team Management with Role-Based Access",
|
|
"simStepId": "16d87608-4458-430c-b459-cd9b1d413fa6"
|
|
}
|
|
]
|
|
},
|
|
"2ee1c4e8-90fb-4470-ad9f-6ffed5420853": {
|
|
"path": "2ee1c4e8-90fb-4470-ad9f-6ffed5420853",
|
|
"cellName": "Server: Forward\nRequest to\nController",
|
|
"cellId": "2ee1c4e8-90fb-4470-ad9f-6ffed5420853",
|
|
"visible": true,
|
|
"parentCellId": "35864a2c-7bd0-4428-84fc-c0aa90c7f1be"
|
|
},
|
|
"generated-edge-simstep-6c024d4c-178b-45fc-8bca-4fc6c00549a4-2ee1c4e8-90fb-4470-ad9f-6ffed5420853": {
|
|
"path": "generated-edge-simstep-6c024d4c-178b-45fc-8bca-4fc6c00549a4-2ee1c4e8-90fb-4470-ad9f-6ffed5420853",
|
|
"fileName": "isAllowed.js",
|
|
"cellName": "Server: Forward Request to Controller",
|
|
"cellId": "2ee1c4e8-90fb-4470-ad9f-6ffed5420853",
|
|
"visible": true,
|
|
"startLine": 61,
|
|
"endLine": 68,
|
|
"parentPath": "server/src/middleware/v1/isAllowed.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "User and Team Management with Role-Based Access",
|
|
"simStepId": "6c024d4c-178b-45fc-8bca-4fc6c00549a4"
|
|
}
|
|
]
|
|
},
|
|
"bdd52e6f-ddf7-4966-b3af-957f9553082f": {
|
|
"path": "bdd52e6f-ddf7-4966-b3af-957f9553082f",
|
|
"cellName": "Database Query:\nCreate and\nStore Invite\nToken",
|
|
"cellId": "bdd52e6f-ddf7-4966-b3af-957f9553082f",
|
|
"visible": true,
|
|
"parentCellId": "570278b7-9b72-4299-9fd9-46b253b48e9b"
|
|
},
|
|
"generated-edge-simstep-c796f8ad-d548-45f3-8d62-67f59c6c1aa4-bdd52e6f-ddf7-4966-b3af-957f9553082f": {
|
|
"path": "generated-edge-simstep-c796f8ad-d548-45f3-8d62-67f59c6c1aa4-bdd52e6f-ddf7-4966-b3af-957f9553082f",
|
|
"fileName": "inviteService.js",
|
|
"cellName": "Database Query: Create and Store Invite Token",
|
|
"cellId": "bdd52e6f-ddf7-4966-b3af-957f9553082f",
|
|
"visible": true,
|
|
"startLine": 23,
|
|
"endLine": 26,
|
|
"parentPath": "server/src/service/v1/business/inviteService.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "User and Team Management with Role-Based Access",
|
|
"simStepId": "c796f8ad-d548-45f3-8d62-67f59c6c1aa4"
|
|
}
|
|
]
|
|
},
|
|
"52732a37-82b8-40a7-b12d-dc1b82380b2d": {
|
|
"path": "52732a37-82b8-40a7-b12d-dc1b82380b2d",
|
|
"cellName": "API Response:\nSend Confirmation\nto Client",
|
|
"cellId": "52732a37-82b8-40a7-b12d-dc1b82380b2d",
|
|
"visible": true
|
|
},
|
|
"generated-edge-simstep-6ba5094d-d1e6-4ec3-8917-28cdb30f2ef9-52732a37-82b8-40a7-b12d-dc1b82380b2d": {
|
|
"path": "generated-edge-simstep-6ba5094d-d1e6-4ec3-8917-28cdb30f2ef9-52732a37-82b8-40a7-b12d-dc1b82380b2d",
|
|
"fileName": "inviteService.js",
|
|
"cellName": "API Response: Send Confirmation to Client",
|
|
"cellId": "52732a37-82b8-40a7-b12d-dc1b82380b2d",
|
|
"visible": true,
|
|
"startLine": 69,
|
|
"endLine": 72,
|
|
"parentPath": "server/src/service/v1/business/inviteService.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "User and Team Management with Role-Based Access",
|
|
"simStepId": "6ba5094d-d1e6-4ec3-8917-28cdb30f2ef9"
|
|
}
|
|
]
|
|
},
|
|
"56dae13e-5735-4089-a9a4-e18be315aff7": {
|
|
"path": "56dae13e-5735-4089-a9a4-e18be315aff7",
|
|
"cellName": "BulkImport",
|
|
"cellId": "56dae13e-5735-4089-a9a4-e18be315aff7",
|
|
"visible": true,
|
|
"parentCellId": "7090fcdb-09be-4c85-86fd-e73553bbb2ff"
|
|
},
|
|
"29b6ad3c-9538-47bc-8796-aab942dc4b71": {
|
|
"path": "29b6ad3c-9538-47bc-8796-aab942dc4b71",
|
|
"cellName": "index.jsx",
|
|
"cellId": "29b6ad3c-9538-47bc-8796-aab942dc4b71",
|
|
"visible": true,
|
|
"parentCellId": "56dae13e-5735-4089-a9a4-e18be315aff7"
|
|
},
|
|
"cd84476a-1c8b-4781-811f-58fb9944365b": {
|
|
"path": "cd84476a-1c8b-4781-811f-58fb9944365b",
|
|
"cellName": "Upload.jsx",
|
|
"cellId": "cd84476a-1c8b-4781-811f-58fb9944365b",
|
|
"visible": true,
|
|
"parentCellId": "56dae13e-5735-4089-a9a4-e18be315aff7"
|
|
},
|
|
"c4caeba8-ed9a-4cbc-9888-38cc8ca55362": {
|
|
"path": "c4caeba8-ed9a-4cbc-9888-38cc8ca55362",
|
|
"cellName": "Flow 1: CSV Import - Navigate to Bulk Import Page - index.jsx:L88-91",
|
|
"cellId": "c4caeba8-ed9a-4cbc-9888-38cc8ca55362",
|
|
"visible": true,
|
|
"parentCellId": "c4d7e7dd-75b1-44f1-a34a-6ed290a8e562"
|
|
},
|
|
"client/src/Routes/index.jsx-simstep-a29da01e-8c5a-4e6d-8d3c-e49af528e4fa": {
|
|
"path": "client/src/Routes/index.jsx-simstep-a29da01e-8c5a-4e6d-8d3c-e49af528e4fa",
|
|
"fileName": "index.jsx",
|
|
"wiki": "The user navigates to the \"/uptime/bulk-import\" URL, which is routed to the BulkImport component for rendering the UI.",
|
|
"cellName": "Flow 1: CSV Import - Navigate to Bulk Import Page - index.jsx:L88-91",
|
|
"cellId": "c4caeba8-ed9a-4cbc-9888-38cc8ca55362",
|
|
"visible": true,
|
|
"startLine": 88,
|
|
"endLine": 91,
|
|
"parentCellId": "c4d7e7dd-75b1-44f1-a34a-6ed290a8e562",
|
|
"parentPath": "client/src/Routes/index.jsx",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Bulk Monitor Management",
|
|
"simStepId": "a29da01e-8c5a-4e6d-8d3c-e49af528e4fa"
|
|
}
|
|
]
|
|
},
|
|
"6f1948fa-e84a-4f8e-8f3b-8f24c511b3d8": {
|
|
"path": "6f1948fa-e84a-4f8e-8f3b-8f24c511b3d8",
|
|
"cellName": "Flow 1: CSV Import - User Selects File - Upload.jsx:L23-31",
|
|
"cellId": "6f1948fa-e84a-4f8e-8f3b-8f24c511b3d8",
|
|
"visible": true,
|
|
"parentCellId": "cd84476a-1c8b-4781-811f-58fb9944365b"
|
|
},
|
|
"client/src/Pages/v1/Uptime/BulkImport/Upload.jsx-simstep-bbd04d55-fc6a-4ba8-bcde-5a4dc263d6eb": {
|
|
"path": "client/src/Pages/v1/Uptime/BulkImport/Upload.jsx-simstep-bbd04d55-fc6a-4ba8-bcde-5a4dc263d6eb",
|
|
"fileName": "Upload.jsx",
|
|
"wiki": "The user clicks the 'Select File' button, triggering the file input. When a file is chosen, the `handleFileChange` function validates that it's a CSV file and updates the component's state.",
|
|
"cellName": "Flow 1: CSV Import - User Selects File - Upload.jsx:L23-31",
|
|
"cellId": "6f1948fa-e84a-4f8e-8f3b-8f24c511b3d8",
|
|
"visible": true,
|
|
"startLine": 23,
|
|
"endLine": 31,
|
|
"parentCellId": "cd84476a-1c8b-4781-811f-58fb9944365b",
|
|
"parentPath": "client/src/Pages/v1/Uptime/BulkImport/Upload.jsx",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Bulk Monitor Management",
|
|
"simStepId": "bbd04d55-fc6a-4ba8-bcde-5a4dc263d6eb"
|
|
}
|
|
]
|
|
},
|
|
"dd2f9356-fad3-47d4-81d5-a5e038298e2b": {
|
|
"path": "dd2f9356-fad3-47d4-81d5-a5e038298e2b",
|
|
"cellName": "Flow 1: CSV Import - Submit Upload - index.jsx:L32-45",
|
|
"cellId": "dd2f9356-fad3-47d4-81d5-a5e038298e2b",
|
|
"visible": true,
|
|
"parentCellId": "29b6ad3c-9538-47bc-8796-aab942dc4b71"
|
|
},
|
|
"client/src/Pages/v1/Uptime/BulkImport/index.jsx-simstep-0139fcaa-eb46-4176-b7bd-1cb15e7f1f4c": {
|
|
"path": "client/src/Pages/v1/Uptime/BulkImport/index.jsx-simstep-0139fcaa-eb46-4176-b7bd-1cb15e7f1f4c",
|
|
"fileName": "index.jsx",
|
|
"wiki": "The user clicks the submit button, which executes the `handleSubmit` function. This function calls the `createBulkMonitors` function provided by the `useCreateBulkMonitors` custom hook.",
|
|
"cellName": "Flow 1: CSV Import - Submit Upload - index.jsx:L32-45",
|
|
"cellId": "dd2f9356-fad3-47d4-81d5-a5e038298e2b",
|
|
"visible": true,
|
|
"startLine": 32,
|
|
"endLine": 45,
|
|
"parentCellId": "29b6ad3c-9538-47bc-8796-aab942dc4b71",
|
|
"parentPath": "client/src/Pages/v1/Uptime/BulkImport/index.jsx",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Bulk Monitor Management",
|
|
"simStepId": "0139fcaa-eb46-4176-b7bd-1cb15e7f1f4c"
|
|
}
|
|
]
|
|
},
|
|
"5967e576-f542-4c0b-a3f4-9446ae992721": {
|
|
"path": "5967e576-f542-4c0b-a3f4-9446ae992721",
|
|
"cellName": "Flow 1: CSV Import - Send API Request - NetworkService.js:L978-983",
|
|
"cellId": "5967e576-f542-4c0b-a3f4-9446ae992721",
|
|
"visible": true,
|
|
"parentCellId": "16731e9d-3f73-4055-9d79-5ca9be679f68"
|
|
},
|
|
"client/src/Utils/NetworkService.js-simstep-2fc087b3-033d-4cf5-81f2-e35b99a14bce": {
|
|
"path": "client/src/Utils/NetworkService.js-simstep-2fc087b3-033d-4cf5-81f2-e35b99a14bce",
|
|
"fileName": "NetworkService.js",
|
|
"wiki": "The NetworkService sends the `FormData` containing the CSV file to the backend via a POST request to the `/monitors/bulk` endpoint. The `Content-Type` is set to `multipart/form-data`.",
|
|
"cellName": "Flow 1: CSV Import - Send API Request - NetworkService.js:L978-983",
|
|
"cellId": "5967e576-f542-4c0b-a3f4-9446ae992721",
|
|
"visible": true,
|
|
"startLine": 978,
|
|
"endLine": 983,
|
|
"parentCellId": "16731e9d-3f73-4055-9d79-5ca9be679f68",
|
|
"parentPath": "client/src/Utils/NetworkService.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Bulk Monitor Management",
|
|
"simStepId": "2fc087b3-033d-4cf5-81f2-e35b99a14bce"
|
|
}
|
|
]
|
|
},
|
|
"c1ac3c26-996a-43ef-9c34-4c2776188784": {
|
|
"path": "c1ac3c26-996a-43ef-9c34-4c2776188784",
|
|
"cellName": "Flow 1: CSV Import - Server Receives Request - monitorRoute.js:L46",
|
|
"cellId": "c1ac3c26-996a-43ef-9c34-4c2776188784",
|
|
"visible": true,
|
|
"parentCellId": "10611636-ec73-4a26-87a5-654ae64a4843"
|
|
},
|
|
"server/src/routes/v1/monitorRoute.js-simstep-07bf3d83-047d-4e51-9f96-8c9c64848500": {
|
|
"path": "server/src/routes/v1/monitorRoute.js-simstep-07bf3d83-047d-4e51-9f96-8c9c64848500",
|
|
"fileName": "monitorRoute.js",
|
|
"wiki": "The server's monitor route receives the request. The `multer` middleware processes the file upload, making the file available in `req.file`. The request is then passed to the `createBulkMonitors` controller method.",
|
|
"cellName": "Flow 1: CSV Import - Server Receives Request - monitorRoute.js:L46",
|
|
"cellId": "c1ac3c26-996a-43ef-9c34-4c2776188784",
|
|
"visible": true,
|
|
"startLine": 46,
|
|
"endLine": 46,
|
|
"parentCellId": "10611636-ec73-4a26-87a5-654ae64a4843",
|
|
"parentPath": "server/src/routes/v1/monitorRoute.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Bulk Monitor Management",
|
|
"simStepId": "07bf3d83-047d-4e51-9f96-8c9c64848500"
|
|
}
|
|
]
|
|
},
|
|
"0e520a6d-34bf-467b-a894-e73979364478": {
|
|
"path": "0e520a6d-34bf-467b-a894-e73979364478",
|
|
"cellName": "Flow 1: CSV Import - Controller Processes Data - monitorController.js:L228-232",
|
|
"cellId": "0e520a6d-34bf-467b-a894-e73979364478",
|
|
"visible": true,
|
|
"parentCellId": "341f2784-67ee-4477-9445-a8c240ee6261"
|
|
},
|
|
"server/src/controllers/v1/monitorController.js-simstep-a3799570-64bf-481e-9ffe-31dbad8a36e4": {
|
|
"path": "server/src/controllers/v1/monitorController.js-simstep-a3799570-64bf-481e-9ffe-31dbad8a36e4",
|
|
"fileName": "monitorController.js",
|
|
"wiki": "The controller validates the presence of the file and extracts the file data (buffer), `userId`, and `teamId`. It then calls the `monitorService.createBulkMonitors` method to handle the core logic.",
|
|
"cellName": "Flow 1: CSV Import - Controller Processes Data - monitorController.js:L228-232",
|
|
"cellId": "0e520a6d-34bf-467b-a894-e73979364478",
|
|
"visible": true,
|
|
"startLine": 228,
|
|
"endLine": 232,
|
|
"parentCellId": "341f2784-67ee-4477-9445-a8c240ee6261",
|
|
"parentPath": "server/src/controllers/v1/monitorController.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Bulk Monitor Management",
|
|
"simStepId": "a3799570-64bf-481e-9ffe-31dbad8a36e4"
|
|
}
|
|
]
|
|
},
|
|
"6139e487-1dd5-405a-ba7d-ededec4b282e": {
|
|
"path": "6139e487-1dd5-405a-ba7d-ededec4b282e",
|
|
"cellName": "Flow 1: CSV Import - Service Parses CSV - monitorService.js:L85-134",
|
|
"cellId": "6139e487-1dd5-405a-ba7d-ededec4b282e",
|
|
"visible": true,
|
|
"parentCellId": "b4e479df-9b21-4430-9383-84831f503c2e"
|
|
},
|
|
"server/src/service/v1/business/monitorService.js-simstep-2c7c3082-e4b6-4525-860f-2ffcd9e86db1": {
|
|
"path": "server/src/service/v1/business/monitorService.js-simstep-2c7c3082-e4b6-4525-860f-2ffcd9e86db1",
|
|
"fileName": "monitorService.js",
|
|
"wiki": "The monitor service uses the `papaparse` library to parse the CSV file buffer into a JSON object array. In the `complete` callback, it enriches each record with `userId` and `teamId`.",
|
|
"cellName": "Flow 1: CSV Import - Service Parses CSV - monitorService.js:L85-134",
|
|
"cellId": "6139e487-1dd5-405a-ba7d-ededec4b282e",
|
|
"visible": true,
|
|
"startLine": 85,
|
|
"endLine": 134,
|
|
"parentCellId": "b4e479df-9b21-4430-9383-84831f503c2e",
|
|
"parentPath": "server/src/service/v1/business/monitorService.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Bulk Monitor Management",
|
|
"simStepId": "2c7c3082-e4b6-4525-860f-2ffcd9e86db1"
|
|
}
|
|
]
|
|
},
|
|
"d9d519af-5c4d-4494-929e-a869581c1dc4": {
|
|
"path": "d9d519af-5c4d-4494-929e-a869581c1dc4",
|
|
"cellName": "Flow 1: CSV Import - Database Bulk Save - monitorModule.js:L465-468",
|
|
"cellId": "d9d519af-5c4d-4494-929e-a869581c1dc4",
|
|
"visible": true,
|
|
"parentCellId": "630b3ece-2648-48d5-99b5-ef9611de2ad5"
|
|
},
|
|
"server/src/db/v1/modules/monitorModule.js-simstep-70f18c21-2918-402e-9c35-1bdce8bc82d4": {
|
|
"path": "server/src/db/v1/modules/monitorModule.js-simstep-70f18c21-2918-402e-9c35-1bdce8bc82d4",
|
|
"fileName": "monitorModule.js",
|
|
"wiki": "The `monitorModule` uses `Monitor.bulkSave` to efficiently insert all the new monitor documents into the MongoDB database in a single operation.",
|
|
"cellName": "Flow 1: CSV Import - Database Bulk Save - monitorModule.js:L465-468",
|
|
"cellId": "d9d519af-5c4d-4494-929e-a869581c1dc4",
|
|
"visible": true,
|
|
"startLine": 465,
|
|
"endLine": 468,
|
|
"parentCellId": "630b3ece-2648-48d5-99b5-ef9611de2ad5",
|
|
"parentPath": "server/src/db/v1/modules/monitorModule.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Bulk Monitor Management",
|
|
"simStepId": "70f18c21-2918-402e-9c35-1bdce8bc82d4"
|
|
}
|
|
]
|
|
},
|
|
"1e1d975f-7f0f-4132-bd71-2563b35e99b3": {
|
|
"path": "1e1d975f-7f0f-4132-bd71-2563b35e99b3",
|
|
"cellName": "Flow 1: CSV Import - Enqueue Monitor Jobs - monitorService.js:L128-132",
|
|
"cellId": "1e1d975f-7f0f-4132-bd71-2563b35e99b3",
|
|
"visible": true,
|
|
"parentCellId": "b4e479df-9b21-4430-9383-84831f503c2e"
|
|
},
|
|
"server/src/service/v1/business/monitorService.js-simstep-66fbf913-e662-4bd9-ada6-077be9e37f07": {
|
|
"path": "server/src/service/v1/business/monitorService.js-simstep-66fbf913-e662-4bd9-ada6-077be9e37f07",
|
|
"fileName": "monitorService.js",
|
|
"wiki": "After the monitors are saved, the service iterates through them and adds a new job to the `jobQueue` for each one, scheduling them for their first check. It then resolves the promise, returning the data up the call stack.",
|
|
"cellName": "Flow 1: CSV Import - Enqueue Monitor Jobs - monitorService.js:L128-132",
|
|
"cellId": "1e1d975f-7f0f-4132-bd71-2563b35e99b3",
|
|
"visible": true,
|
|
"startLine": 128,
|
|
"endLine": 132,
|
|
"parentCellId": "b4e479df-9b21-4430-9383-84831f503c2e",
|
|
"parentPath": "server/src/service/v1/business/monitorService.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Bulk Monitor Management",
|
|
"simStepId": "66fbf913-e662-4bd9-ada6-077be9e37f07"
|
|
}
|
|
]
|
|
},
|
|
"72b55fa1-d944-4e46-ac98-f6a6cb201afa": {
|
|
"path": "72b55fa1-d944-4e46-ac98-f6a6cb201afa",
|
|
"cellName": "Flow 1: CSV Import - Send Success Response - monitorController.js:L232-235",
|
|
"cellId": "72b55fa1-d944-4e46-ac98-f6a6cb201afa",
|
|
"visible": true,
|
|
"parentCellId": "341f2784-67ee-4477-9445-a8c240ee6261"
|
|
},
|
|
"server/src/controllers/v1/monitorController.js-simstep-f5377571-156f-4c5c-8bab-b6dacdf0fea6": {
|
|
"path": "server/src/controllers/v1/monitorController.js-simstep-f5377571-156f-4c5c-8bab-b6dacdf0fea6",
|
|
"fileName": "monitorController.js",
|
|
"wiki": "The controller constructs a successful JSON response containing a message and the data for the newly created monitors, and sends it back to the client.",
|
|
"cellName": "Flow 1: CSV Import - Send Success Response - monitorController.js:L232-235",
|
|
"cellId": "72b55fa1-d944-4e46-ac98-f6a6cb201afa",
|
|
"visible": true,
|
|
"startLine": 232,
|
|
"endLine": 235,
|
|
"parentCellId": "341f2784-67ee-4477-9445-a8c240ee6261",
|
|
"parentPath": "server/src/controllers/v1/monitorController.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Bulk Monitor Management",
|
|
"simStepId": "f5377571-156f-4c5c-8bab-b6dacdf0fea6"
|
|
}
|
|
]
|
|
},
|
|
"ae3b7e23-ed64-40aa-9760-389f0a869f8d": {
|
|
"path": "ae3b7e23-ed64-40aa-9760-389f0a869f8d",
|
|
"cellName": "Flow 1: CSV Import - Client Handles Success - index.jsx:L37-41",
|
|
"cellId": "ae3b7e23-ed64-40aa-9760-389f0a869f8d",
|
|
"visible": true,
|
|
"parentCellId": "29b6ad3c-9538-47bc-8796-aab942dc4b71"
|
|
},
|
|
"client/src/Pages/v1/Uptime/BulkImport/index.jsx-simstep-72b3f16d-290d-4a61-8748-2ad90d63ec68": {
|
|
"path": "client/src/Pages/v1/Uptime/BulkImport/index.jsx-simstep-72b3f16d-290d-4a61-8748-2ad90d63ec68",
|
|
"fileName": "index.jsx",
|
|
"wiki": "The client-side promise resolves. The `handleSubmit` function in the `BulkImport` component receives the success status, displays a success toast message, and navigates the user to the main uptime monitoring page.",
|
|
"cellName": "Flow 1: CSV Import - Client Handles Success - index.jsx:L37-41",
|
|
"cellId": "ae3b7e23-ed64-40aa-9760-389f0a869f8d",
|
|
"visible": true,
|
|
"startLine": 37,
|
|
"endLine": 41,
|
|
"parentCellId": "29b6ad3c-9538-47bc-8796-aab942dc4b71",
|
|
"parentPath": "client/src/Pages/v1/Uptime/BulkImport/index.jsx",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Bulk Monitor Management",
|
|
"simStepId": "72b3f16d-290d-4a61-8748-2ad90d63ec68"
|
|
}
|
|
]
|
|
},
|
|
"26d76516-fd7e-4ae8-956a-d077de4257fa": {
|
|
"path": "26d76516-fd7e-4ae8-956a-d077de4257fa",
|
|
"cellName": "Flow 2: CSV Export - Initiate Export - monitorRoute.js:L45",
|
|
"cellId": "26d76516-fd7e-4ae8-956a-d077de4257fa",
|
|
"visible": true,
|
|
"parentCellId": "10611636-ec73-4a26-87a5-654ae64a4843"
|
|
},
|
|
"server/src/routes/v1/monitorRoute.js-simstep-63d8d81f-f436-4594-a6eb-8c0fd2110bc1": {
|
|
"path": "server/src/routes/v1/monitorRoute.js-simstep-63d8d81f-f436-4594-a6eb-8c0fd2110bc1",
|
|
"fileName": "monitorRoute.js",
|
|
"wiki": "An admin user clicks an 'Export to CSV' button in the UI. This action triggers a call to the `/monitors/export` API endpoint to begin the export process.",
|
|
"cellName": "Flow 2: CSV Export - Initiate Export - monitorRoute.js:L45",
|
|
"cellId": "26d76516-fd7e-4ae8-956a-d077de4257fa",
|
|
"visible": true,
|
|
"startLine": 45,
|
|
"endLine": 45,
|
|
"parentCellId": "10611636-ec73-4a26-87a5-654ae64a4843",
|
|
"parentPath": "server/src/routes/v1/monitorRoute.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Bulk Monitor Management",
|
|
"simStepId": "63d8d81f-f436-4594-a6eb-8c0fd2110bc1"
|
|
}
|
|
]
|
|
},
|
|
"a3106388-6a3d-4b68-a3fc-3761a0d54f98": {
|
|
"path": "a3106388-6a3d-4b68-a3fc-3761a0d54f98",
|
|
"cellName": "Flow 2: CSV Export - Controller Handles Request - monitorController.js:L427-434",
|
|
"cellId": "a3106388-6a3d-4b68-a3fc-3761a0d54f98",
|
|
"visible": true,
|
|
"parentCellId": "341f2784-67ee-4477-9445-a8c240ee6261"
|
|
},
|
|
"server/src/controllers/v1/monitorController.js-simstep-d9db3f40-8add-4551-9323-274348b9800f": {
|
|
"path": "server/src/controllers/v1/monitorController.js-simstep-d9db3f40-8add-4551-9323-274348b9800f",
|
|
"fileName": "monitorController.js",
|
|
"wiki": "The `exportMonitorsToCSV` method in the monitor controller is invoked. It retrieves the `teamId` from the authenticated user's session and calls the monitor service to perform the export.",
|
|
"cellName": "Flow 2: CSV Export - Controller Handles Request - monitorController.js:L427-434",
|
|
"cellId": "a3106388-6a3d-4b68-a3fc-3761a0d54f98",
|
|
"visible": true,
|
|
"startLine": 427,
|
|
"endLine": 434,
|
|
"parentCellId": "341f2784-67ee-4477-9445-a8c240ee6261",
|
|
"parentPath": "server/src/controllers/v1/monitorController.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Bulk Monitor Management",
|
|
"simStepId": "d9db3f40-8add-4551-9323-274348b9800f"
|
|
}
|
|
]
|
|
},
|
|
"ab9cb862-0ac7-45a3-9888-f64e87bdda54": {
|
|
"path": "ab9cb862-0ac7-45a3-9888-f64e87bdda54",
|
|
"cellName": "Flow 2: CSV Export - Generate CSV - monitorService.js:L245-266",
|
|
"cellId": "ab9cb862-0ac7-45a3-9888-f64e87bdda54",
|
|
"visible": true,
|
|
"parentCellId": "b4e479df-9b21-4430-9383-84831f503c2e"
|
|
},
|
|
"server/src/service/v1/business/monitorService.js-simstep-85cd1d5d-7ffb-49c5-aacb-907048003fc5": {
|
|
"path": "server/src/service/v1/business/monitorService.js-simstep-85cd1d5d-7ffb-49c5-aacb-907048003fc5",
|
|
"fileName": "monitorService.js",
|
|
"wiki": "The monitor service fetches all monitors for the given `teamId` from the database. It then maps the data into the required format and uses `papaparse` to convert the JSON array into a CSV-formatted string.",
|
|
"cellName": "Flow 2: CSV Export - Generate CSV - monitorService.js:L245-266",
|
|
"cellId": "ab9cb862-0ac7-45a3-9888-f64e87bdda54",
|
|
"visible": true,
|
|
"startLine": 245,
|
|
"endLine": 266,
|
|
"parentCellId": "b4e479df-9b21-4430-9383-84831f503c2e",
|
|
"parentPath": "server/src/service/v1/business/monitorService.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Bulk Monitor Management",
|
|
"simStepId": "85cd1d5d-7ffb-49c5-aacb-907048003fc5"
|
|
}
|
|
]
|
|
},
|
|
"f151f89d-6399-48f0-aecd-5eb1572b48cc": {
|
|
"path": "f151f89d-6399-48f0-aecd-5eb1572b48cc",
|
|
"cellName": "Flow 2: CSV Export - Send File Response - monitorController.js:L434-440",
|
|
"cellId": "f151f89d-6399-48f0-aecd-5eb1572b48cc",
|
|
"visible": true,
|
|
"parentCellId": "341f2784-67ee-4477-9445-a8c240ee6261"
|
|
},
|
|
"server/src/controllers/v1/monitorController.js-simstep-256095b8-5e3a-4c20-abd9-be9e6a9d0bad": {
|
|
"path": "server/src/controllers/v1/monitorController.js-simstep-256095b8-5e3a-4c20-abd9-be9e6a9d0bad",
|
|
"fileName": "monitorController.js",
|
|
"wiki": "The controller receives the CSV string and uses the `res.file` method to send it back to the client as a file. It sets the `Content-Type` to `text/csv` and `Content-Disposition` to trigger a download with the filename `monitors.csv`.",
|
|
"cellName": "Flow 2: CSV Export - Send File Response - monitorController.js:L434-440",
|
|
"cellId": "f151f89d-6399-48f0-aecd-5eb1572b48cc",
|
|
"visible": true,
|
|
"startLine": 434,
|
|
"endLine": 440,
|
|
"parentCellId": "341f2784-67ee-4477-9445-a8c240ee6261",
|
|
"parentPath": "server/src/controllers/v1/monitorController.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Bulk Monitor Management",
|
|
"simStepId": "256095b8-5e3a-4c20-abd9-be9e6a9d0bad"
|
|
}
|
|
]
|
|
},
|
|
"d8877474-7203-484f-bd47-fc69e3c7c482": {
|
|
"path": "d8877474-7203-484f-bd47-fc69e3c7c482",
|
|
"cellName": "Flow 2: CSV Export - Browser Prompts Download - monitorController.js:L434-440",
|
|
"cellId": "d8877474-7203-484f-bd47-fc69e3c7c482",
|
|
"visible": true,
|
|
"parentCellId": "341f2784-67ee-4477-9445-a8c240ee6261"
|
|
},
|
|
"server/src/controllers/v1/monitorController.js-simstep-60abdb27-4078-4678-a010-0f6938d4be48": {
|
|
"path": "server/src/controllers/v1/monitorController.js-simstep-60abdb27-4078-4678-a010-0f6938d4be48",
|
|
"fileName": "monitorController.js",
|
|
"wiki": "The browser receives the server's response. The `Content-Disposition` header instructs the browser to prompt the user to save the received data as a file named `monitors.csv`, completing the export process.",
|
|
"cellName": "Flow 2: CSV Export - Browser Prompts Download - monitorController.js:L434-440",
|
|
"cellId": "d8877474-7203-484f-bd47-fc69e3c7c482",
|
|
"visible": true,
|
|
"startLine": 434,
|
|
"endLine": 440,
|
|
"parentCellId": "341f2784-67ee-4477-9445-a8c240ee6261",
|
|
"parentPath": "server/src/controllers/v1/monitorController.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Bulk Monitor Management",
|
|
"simStepId": "60abdb27-4078-4678-a010-0f6938d4be48"
|
|
}
|
|
]
|
|
},
|
|
"c9a012bc-d53f-494f-82f2-1ee3f40ce646": {
|
|
"path": "c9a012bc-d53f-494f-82f2-1ee3f40ce646",
|
|
"cellName": "Flow 1:\nCSV Import\n- Render\nUI",
|
|
"cellId": "c9a012bc-d53f-494f-82f2-1ee3f40ce646",
|
|
"visible": true,
|
|
"parentCellId": "d3264577-10f0-42fe-9411-7e9df0754d1e"
|
|
},
|
|
"generated-edge-simstep-ef0bbcff-9535-4c0e-a5ca-96c457f89139-c9a012bc-d53f-494f-82f2-1ee3f40ce646": {
|
|
"path": "generated-edge-simstep-ef0bbcff-9535-4c0e-a5ca-96c457f89139-c9a012bc-d53f-494f-82f2-1ee3f40ce646",
|
|
"fileName": "index.jsx",
|
|
"cellName": "Flow 1: CSV Import - Render UI",
|
|
"cellId": "c9a012bc-d53f-494f-82f2-1ee3f40ce646",
|
|
"visible": true,
|
|
"startLine": 16,
|
|
"endLine": 50,
|
|
"parentPath": "client/src/Routes/index.jsx",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Bulk Monitor Management",
|
|
"simStepId": "ef0bbcff-9535-4c0e-a5ca-96c457f89139"
|
|
}
|
|
]
|
|
},
|
|
"e03a8ce2-c2cd-4147-8bab-63d6c2cf0a48": {
|
|
"path": "e03a8ce2-c2cd-4147-8bab-63d6c2cf0a48",
|
|
"cellName": "Flow 1:\nCSV Import\n- File\nState Update",
|
|
"cellId": "e03a8ce2-c2cd-4147-8bab-63d6c2cf0a48",
|
|
"visible": true,
|
|
"parentCellId": "56dae13e-5735-4089-a9a4-e18be315aff7"
|
|
},
|
|
"generated-edge-simstep-610120d2-0521-4444-b245-feb97239a389-e03a8ce2-c2cd-4147-8bab-63d6c2cf0a48": {
|
|
"path": "generated-edge-simstep-610120d2-0521-4444-b245-feb97239a389-e03a8ce2-c2cd-4147-8bab-63d6c2cf0a48",
|
|
"fileName": "Upload.jsx",
|
|
"cellName": "Flow 1: CSV Import - File State Update",
|
|
"cellId": "e03a8ce2-c2cd-4147-8bab-63d6c2cf0a48",
|
|
"visible": true,
|
|
"startLine": 22,
|
|
"endLine": 22,
|
|
"parentPath": "client/src/Pages/v1/Uptime/BulkImport/Upload.jsx",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Bulk Monitor Management",
|
|
"simStepId": "610120d2-0521-4444-b245-feb97239a389"
|
|
}
|
|
]
|
|
},
|
|
"b8c0292d-afbb-4648-b484-1c27be96d52f": {
|
|
"path": "b8c0292d-afbb-4648-b484-1c27be96d52f",
|
|
"cellName": "Flow 1:\nCSV Import\n- Prepare\nForm Data",
|
|
"cellId": "b8c0292d-afbb-4648-b484-1c27be96d52f",
|
|
"visible": true,
|
|
"parentCellId": "d3264577-10f0-42fe-9411-7e9df0754d1e"
|
|
},
|
|
"generated-edge-simstep-a365d018-e80c-419c-80b3-5ffc8f14dc5c-b8c0292d-afbb-4648-b484-1c27be96d52f": {
|
|
"path": "generated-edge-simstep-a365d018-e80c-419c-80b3-5ffc8f14dc5c-b8c0292d-afbb-4648-b484-1c27be96d52f",
|
|
"fileName": "index.jsx",
|
|
"cellName": "Flow 1: CSV Import - Prepare Form Data",
|
|
"cellId": "b8c0292d-afbb-4648-b484-1c27be96d52f",
|
|
"visible": true,
|
|
"startLine": 490,
|
|
"endLine": 493,
|
|
"parentPath": "client/src/Pages/v1/Uptime/BulkImport/index.jsx",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Bulk Monitor Management",
|
|
"simStepId": "a365d018-e80c-419c-80b3-5ffc8f14dc5c"
|
|
}
|
|
]
|
|
},
|
|
"23715cce-c83a-44c0-9853-4c95b85e5ecd": {
|
|
"path": "23715cce-c83a-44c0-9853-4c95b85e5ecd",
|
|
"cellName": "Flow 1:\nCSV Import\n- Transmit\nData to\nServer",
|
|
"cellId": "23715cce-c83a-44c0-9853-4c95b85e5ecd",
|
|
"visible": true
|
|
},
|
|
"generated-edge-simstep-e6dec1dc-33cb-4669-a3b0-7a3c0b233185-23715cce-c83a-44c0-9853-4c95b85e5ecd": {
|
|
"path": "generated-edge-simstep-e6dec1dc-33cb-4669-a3b0-7a3c0b233185-23715cce-c83a-44c0-9853-4c95b85e5ecd",
|
|
"fileName": "NetworkService.js",
|
|
"cellName": "Flow 1: CSV Import - Transmit Data to Server",
|
|
"cellId": "23715cce-c83a-44c0-9853-4c95b85e5ecd",
|
|
"visible": true,
|
|
"startLine": 46,
|
|
"endLine": 46,
|
|
"parentPath": "client/src/Utils/NetworkService.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Bulk Monitor Management",
|
|
"simStepId": "e6dec1dc-33cb-4669-a3b0-7a3c0b233185"
|
|
}
|
|
]
|
|
},
|
|
"20d0e690-a569-4c6f-8238-916cac920553": {
|
|
"path": "20d0e690-a569-4c6f-8238-916cac920553",
|
|
"cellName": "Flow 1:\nCSV Import\n- Route\nto Controller",
|
|
"cellId": "20d0e690-a569-4c6f-8238-916cac920553",
|
|
"visible": true,
|
|
"parentCellId": "35864a2c-7bd0-4428-84fc-c0aa90c7f1be"
|
|
},
|
|
"generated-edge-simstep-c53d3f62-73fe-4fad-9835-ef2c8cf52894-20d0e690-a569-4c6f-8238-916cac920553": {
|
|
"path": "generated-edge-simstep-c53d3f62-73fe-4fad-9835-ef2c8cf52894-20d0e690-a569-4c6f-8238-916cac920553",
|
|
"fileName": "monitorRoute.js",
|
|
"cellName": "Flow 1: CSV Import - Route to Controller",
|
|
"cellId": "20d0e690-a569-4c6f-8238-916cac920553",
|
|
"visible": true,
|
|
"startLine": 206,
|
|
"endLine": 212,
|
|
"parentPath": "server/src/routes/v1/monitorRoute.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Bulk Monitor Management",
|
|
"simStepId": "c53d3f62-73fe-4fad-9835-ef2c8cf52894"
|
|
}
|
|
]
|
|
},
|
|
"7292bf6e-431d-4a9d-94ce-2bcfabcaa79d": {
|
|
"path": "7292bf6e-431d-4a9d-94ce-2bcfabcaa79d",
|
|
"cellName": "Flow 1:\nCSV Import\n- Controller\nto Service",
|
|
"cellId": "7292bf6e-431d-4a9d-94ce-2bcfabcaa79d",
|
|
"visible": true,
|
|
"parentCellId": "35864a2c-7bd0-4428-84fc-c0aa90c7f1be"
|
|
},
|
|
"generated-edge-simstep-6038422c-ab83-4fc6-a58b-c75734276118-7292bf6e-431d-4a9d-94ce-2bcfabcaa79d": {
|
|
"path": "generated-edge-simstep-6038422c-ab83-4fc6-a58b-c75734276118-7292bf6e-431d-4a9d-94ce-2bcfabcaa79d",
|
|
"fileName": "monitorController.js",
|
|
"cellName": "Flow 1: CSV Import - Controller to Service",
|
|
"cellId": "7292bf6e-431d-4a9d-94ce-2bcfabcaa79d",
|
|
"visible": true,
|
|
"startLine": 84,
|
|
"endLine": 84,
|
|
"parentPath": "server/src/controllers/v1/monitorController.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Bulk Monitor Management",
|
|
"simStepId": "6038422c-ab83-4fc6-a58b-c75734276118"
|
|
}
|
|
]
|
|
},
|
|
"b55a0dc6-f596-4e5f-9265-63588b46b519": {
|
|
"path": "b55a0dc6-f596-4e5f-9265-63588b46b519",
|
|
"cellName": "Flow 1:\nCSV Import\n- Service\nto Database\nModule",
|
|
"cellId": "b55a0dc6-f596-4e5f-9265-63588b46b519",
|
|
"visible": true,
|
|
"parentCellId": "35864a2c-7bd0-4428-84fc-c0aa90c7f1be"
|
|
},
|
|
"generated-edge-simstep-0115fb69-4959-4b32-bd90-1dcd3c2231f6-b55a0dc6-f596-4e5f-9265-63588b46b519": {
|
|
"path": "generated-edge-simstep-0115fb69-4959-4b32-bd90-1dcd3c2231f6-b55a0dc6-f596-4e5f-9265-63588b46b519",
|
|
"fileName": "monitorService.js",
|
|
"cellName": "Flow 1: CSV Import - Service to Database Module",
|
|
"cellId": "b55a0dc6-f596-4e5f-9265-63588b46b519",
|
|
"visible": true,
|
|
"startLine": 126,
|
|
"endLine": 126,
|
|
"parentPath": "server/src/service/v1/business/monitorService.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Bulk Monitor Management",
|
|
"simStepId": "0115fb69-4959-4b32-bd90-1dcd3c2231f6"
|
|
}
|
|
]
|
|
},
|
|
"f27c60ef-fb40-43e2-9750-c2617bdeaf43": {
|
|
"path": "f27c60ef-fb40-43e2-9750-c2617bdeaf43",
|
|
"cellName": "Flow 1:\nCSV Import\n- Database\nto Service",
|
|
"cellId": "f27c60ef-fb40-43e2-9750-c2617bdeaf43",
|
|
"visible": true,
|
|
"parentCellId": "35864a2c-7bd0-4428-84fc-c0aa90c7f1be"
|
|
},
|
|
"generated-edge-simstep-2ee7bd94-d131-4dd8-bdf8-68433d00472d-f27c60ef-fb40-43e2-9750-c2617bdeaf43": {
|
|
"path": "generated-edge-simstep-2ee7bd94-d131-4dd8-bdf8-68433d00472d-f27c60ef-fb40-43e2-9750-c2617bdeaf43",
|
|
"fileName": "monitorModule.js",
|
|
"cellName": "Flow 1: CSV Import - Database to Service",
|
|
"cellId": "f27c60ef-fb40-43e2-9750-c2617bdeaf43",
|
|
"visible": true,
|
|
"startLine": 467,
|
|
"endLine": 467,
|
|
"parentPath": "server/src/db/v1/modules/monitorModule.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Bulk Monitor Management",
|
|
"simStepId": "2ee7bd94-d131-4dd8-bdf8-68433d00472d"
|
|
}
|
|
]
|
|
},
|
|
"c449f81a-d6af-4f7a-b2d8-050a9a9ee0f9": {
|
|
"path": "c449f81a-d6af-4f7a-b2d8-050a9a9ee0f9",
|
|
"cellName": "Flow 1:\nCSV Import\n- Service\nto Controller",
|
|
"cellId": "c449f81a-d6af-4f7a-b2d8-050a9a9ee0f9",
|
|
"visible": true,
|
|
"parentCellId": "35864a2c-7bd0-4428-84fc-c0aa90c7f1be"
|
|
},
|
|
"generated-edge-simstep-94d5772d-3f46-4d43-b764-3493db5c4971-c449f81a-d6af-4f7a-b2d8-050a9a9ee0f9": {
|
|
"path": "generated-edge-simstep-94d5772d-3f46-4d43-b764-3493db5c4971-c449f81a-d6af-4f7a-b2d8-050a9a9ee0f9",
|
|
"fileName": "monitorService.js",
|
|
"cellName": "Flow 1: CSV Import - Service to Controller",
|
|
"cellId": "c449f81a-d6af-4f7a-b2d8-050a9a9ee0f9",
|
|
"visible": true,
|
|
"startLine": 230,
|
|
"endLine": 230,
|
|
"parentPath": "server/src/service/v1/business/monitorService.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Bulk Monitor Management",
|
|
"simStepId": "94d5772d-3f46-4d43-b764-3493db5c4971"
|
|
}
|
|
]
|
|
},
|
|
"926a330c-a9c5-4983-a4b5-70359813e49a": {
|
|
"path": "926a330c-a9c5-4983-a4b5-70359813e49a",
|
|
"cellName": "Flow 1:\nCSV Import\n- Transmit\nSuccess to\nClient",
|
|
"cellId": "926a330c-a9c5-4983-a4b5-70359813e49a",
|
|
"visible": true
|
|
},
|
|
"generated-edge-simstep-c60a3adb-dd81-41b0-95e4-a0a6d23f9dd0-926a330c-a9c5-4983-a4b5-70359813e49a": {
|
|
"path": "generated-edge-simstep-c60a3adb-dd81-41b0-95e4-a0a6d23f9dd0-926a330c-a9c5-4983-a4b5-70359813e49a",
|
|
"fileName": "monitorController.js",
|
|
"cellName": "Flow 1: CSV Import - Transmit Success to Client",
|
|
"cellId": "926a330c-a9c5-4983-a4b5-70359813e49a",
|
|
"visible": true,
|
|
"startLine": 494,
|
|
"endLine": 494,
|
|
"parentPath": "server/src/controllers/v1/monitorController.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Bulk Monitor Management",
|
|
"simStepId": "c60a3adb-dd81-41b0-95e4-a0a6d23f9dd0"
|
|
}
|
|
]
|
|
},
|
|
"febea87e-5033-479c-ba7a-eb35d98db899": {
|
|
"path": "febea87e-5033-479c-ba7a-eb35d98db899",
|
|
"cellName": "Flow 2:\nCSV Export\n- Transmit\nRequest to\nServer",
|
|
"cellId": "febea87e-5033-479c-ba7a-eb35d98db899",
|
|
"visible": true,
|
|
"parentCellId": "35864a2c-7bd0-4428-84fc-c0aa90c7f1be"
|
|
},
|
|
"generated-edge-simstep-53cebb8e-cf45-49eb-a7d3-98fd87af21b4-febea87e-5033-479c-ba7a-eb35d98db899": {
|
|
"path": "generated-edge-simstep-53cebb8e-cf45-49eb-a7d3-98fd87af21b4-febea87e-5033-479c-ba7a-eb35d98db899",
|
|
"fileName": "monitorRoute.js",
|
|
"cellName": "Flow 2: CSV Export - Transmit Request to Server",
|
|
"cellId": "febea87e-5033-479c-ba7a-eb35d98db899",
|
|
"visible": true,
|
|
"startLine": 45,
|
|
"endLine": 45,
|
|
"parentPath": "server/src/routes/v1/monitorRoute.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Bulk Monitor Management",
|
|
"simStepId": "53cebb8e-cf45-49eb-a7d3-98fd87af21b4"
|
|
}
|
|
]
|
|
},
|
|
"3e0f0966-5c2f-41af-9bcc-e8f615e03a00": {
|
|
"path": "3e0f0966-5c2f-41af-9bcc-e8f615e03a00",
|
|
"cellName": "Flow 2:\nCSV Export\n- Controller\nto Service",
|
|
"cellId": "3e0f0966-5c2f-41af-9bcc-e8f615e03a00",
|
|
"visible": true,
|
|
"parentCellId": "35864a2c-7bd0-4428-84fc-c0aa90c7f1be"
|
|
},
|
|
"generated-edge-simstep-74e95fb5-863c-4137-a41b-d7a32efa04a5-3e0f0966-5c2f-41af-9bcc-e8f615e03a00": {
|
|
"path": "generated-edge-simstep-74e95fb5-863c-4137-a41b-d7a32efa04a5-3e0f0966-5c2f-41af-9bcc-e8f615e03a00",
|
|
"fileName": "monitorController.js",
|
|
"cellName": "Flow 2: CSV Export - Controller to Service",
|
|
"cellId": "3e0f0966-5c2f-41af-9bcc-e8f615e03a00",
|
|
"visible": true,
|
|
"startLine": 245,
|
|
"endLine": 245,
|
|
"parentPath": "server/src/controllers/v1/monitorController.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Bulk Monitor Management",
|
|
"simStepId": "74e95fb5-863c-4137-a41b-d7a32efa04a5"
|
|
}
|
|
]
|
|
},
|
|
"ad300b1c-6748-40f9-a7c9-5895e0915991": {
|
|
"path": "ad300b1c-6748-40f9-a7c9-5895e0915991",
|
|
"cellName": "Flow 2:\nCSV Export\n- Service\nto Controller",
|
|
"cellId": "ad300b1c-6748-40f9-a7c9-5895e0915991",
|
|
"visible": true,
|
|
"parentCellId": "35864a2c-7bd0-4428-84fc-c0aa90c7f1be"
|
|
},
|
|
"generated-edge-simstep-4deb5e47-2ac4-4638-9ee6-48295d027bcd-ad300b1c-6748-40f9-a7c9-5895e0915991": {
|
|
"path": "generated-edge-simstep-4deb5e47-2ac4-4638-9ee6-48295d027bcd-ad300b1c-6748-40f9-a7c9-5895e0915991",
|
|
"fileName": "monitorService.js",
|
|
"cellName": "Flow 2: CSV Export - Service to Controller",
|
|
"cellId": "ad300b1c-6748-40f9-a7c9-5895e0915991",
|
|
"visible": true,
|
|
"startLine": 432,
|
|
"endLine": 432,
|
|
"parentPath": "server/src/service/v1/business/monitorService.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Bulk Monitor Management",
|
|
"simStepId": "4deb5e47-2ac4-4638-9ee6-48295d027bcd"
|
|
}
|
|
]
|
|
},
|
|
"3dfb432a-2ce4-4f92-98ce-5d114b5f7f03": {
|
|
"path": "3dfb432a-2ce4-4f92-98ce-5d114b5f7f03",
|
|
"cellName": "Flow 2:\nCSV Export\n- Transmit\nFile to\nClient",
|
|
"cellId": "3dfb432a-2ce4-4f92-98ce-5d114b5f7f03",
|
|
"visible": true,
|
|
"parentCellId": "341f2784-67ee-4477-9445-a8c240ee6261"
|
|
},
|
|
"generated-edge-simstep-605f4cbd-1f7f-4e89-b028-f18737ac7fb1-3dfb432a-2ce4-4f92-98ce-5d114b5f7f03": {
|
|
"path": "generated-edge-simstep-605f4cbd-1f7f-4e89-b028-f18737ac7fb1-3dfb432a-2ce4-4f92-98ce-5d114b5f7f03",
|
|
"fileName": "monitorController.js",
|
|
"cellName": "Flow 2: CSV Export - Transmit File to Client",
|
|
"cellId": "3dfb432a-2ce4-4f92-98ce-5d114b5f7f03",
|
|
"visible": true,
|
|
"startLine": 434,
|
|
"endLine": 440,
|
|
"parentPath": "server/src/controllers/v1/monitorController.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "Bulk Monitor Management",
|
|
"simStepId": "605f4cbd-1f7f-4e89-b028-f18737ac7fb1"
|
|
}
|
|
]
|
|
},
|
|
"50f77798-f41b-4f5b-b096-7afc921a0419": {
|
|
"path": "50f77798-f41b-4f5b-b096-7afc921a0419",
|
|
"cellName": "Settings",
|
|
"cellId": "50f77798-f41b-4f5b-b096-7afc921a0419",
|
|
"visible": true,
|
|
"parentCellId": "1a083b4a-787c-4eb4-8029-6700de987679"
|
|
},
|
|
"1716ec41-8b42-4386-9850-55b8a607638e": {
|
|
"path": "1716ec41-8b42-4386-9850-55b8a607638e",
|
|
"cellName": "Logs",
|
|
"cellId": "1716ec41-8b42-4386-9850-55b8a607638e",
|
|
"visible": true,
|
|
"parentCellId": "1a083b4a-787c-4eb4-8029-6700de987679"
|
|
},
|
|
"8ee5d524-e61d-4e39-a729-babf54929def": {
|
|
"path": "8ee5d524-e61d-4e39-a729-babf54929def",
|
|
"cellName": "settingsHooks.js",
|
|
"cellId": "8ee5d524-e61d-4e39-a729-babf54929def",
|
|
"visible": true,
|
|
"parentCellId": "3bf0c0f9-cbb0-4f0c-8cb3-6e2a4abc0961"
|
|
},
|
|
"a1fea5b0-fb7c-4189-9484-9d3312660767": {
|
|
"path": "a1fea5b0-fb7c-4189-9484-9d3312660767",
|
|
"cellName": "settingsController.js",
|
|
"cellId": "a1fea5b0-fb7c-4189-9484-9d3312660767",
|
|
"visible": true,
|
|
"parentCellId": "fc591f7a-d4ac-4565-949d-a87a58a79bbc"
|
|
},
|
|
"5882419e-8a92-4edd-a71a-1252983f9af7": {
|
|
"path": "5882419e-8a92-4edd-a71a-1252983f9af7",
|
|
"cellName": "diagnosticController.js",
|
|
"cellId": "5882419e-8a92-4edd-a71a-1252983f9af7",
|
|
"visible": true,
|
|
"parentCellId": "fc591f7a-d4ac-4565-949d-a87a58a79bbc"
|
|
},
|
|
"d4b34195-7e1e-47a0-9303-603987c81f95": {
|
|
"path": "d4b34195-7e1e-47a0-9303-603987c81f95",
|
|
"cellName": "index.jsx",
|
|
"cellId": "d4b34195-7e1e-47a0-9303-603987c81f95",
|
|
"visible": true,
|
|
"parentCellId": "50f77798-f41b-4f5b-b096-7afc921a0419"
|
|
},
|
|
"d8aa5b9e-f2a7-44c8-8813-d79c3f3238ee": {
|
|
"path": "d8aa5b9e-f2a7-44c8-8813-d79c3f3238ee",
|
|
"cellName": "SettingsEmail.jsx",
|
|
"cellId": "d8aa5b9e-f2a7-44c8-8813-d79c3f3238ee",
|
|
"visible": true,
|
|
"parentCellId": "50f77798-f41b-4f5b-b096-7afc921a0419"
|
|
},
|
|
"e0cb598c-e300-4fd3-8554-db7ffd6201f1": {
|
|
"path": "e0cb598c-e300-4fd3-8554-db7ffd6201f1",
|
|
"cellName": "Diagnostics",
|
|
"cellId": "e0cb598c-e300-4fd3-8554-db7ffd6201f1",
|
|
"visible": true,
|
|
"parentCellId": "1716ec41-8b42-4386-9850-55b8a607638e"
|
|
},
|
|
"643b26c1-3bfb-4c41-8179-96dfc237d99e": {
|
|
"path": "643b26c1-3bfb-4c41-8179-96dfc237d99e",
|
|
"cellName": "diagnosticService.js",
|
|
"cellId": "643b26c1-3bfb-4c41-8179-96dfc237d99e",
|
|
"visible": true,
|
|
"parentCellId": "87d3b101-9443-4ed4-9c4f-f759d41677eb"
|
|
},
|
|
"87e0e2ea-4a6d-460d-95bc-31e2efd9c9cf": {
|
|
"path": "87e0e2ea-4a6d-460d-95bc-31e2efd9c9cf",
|
|
"cellName": "index.jsx",
|
|
"cellId": "87e0e2ea-4a6d-460d-95bc-31e2efd9c9cf",
|
|
"visible": true,
|
|
"parentCellId": "e0cb598c-e300-4fd3-8554-db7ffd6201f1"
|
|
},
|
|
"97908daf-d071-4df5-8366-1f5f4d8d534a": {
|
|
"path": "97908daf-d071-4df5-8366-1f5f4d8d534a",
|
|
"cellName": "Flow 1: Render Settings Page - index.jsx:L25-52",
|
|
"cellId": "97908daf-d071-4df5-8366-1f5f4d8d534a",
|
|
"visible": true,
|
|
"parentCellId": "d4b34195-7e1e-47a0-9303-603987c81f95"
|
|
},
|
|
"client/src/Pages/v1/Settings/index.jsx-simstep-64e9f1af-13b7-4361-a2a9-3f45760e316d": {
|
|
"path": "client/src/Pages/v1/Settings/index.jsx-simstep-64e9f1af-13b7-4361-a2a9-3f45760e316d",
|
|
"fileName": "index.jsx",
|
|
"wiki": "The user navigates to the settings page. The main `Settings` component fetches existing settings using the `useFetchSettings` hook and renders various sub-components for different configuration areas like TimeZone, UI, PageSpeed, Email, etc.",
|
|
"cellName": "Flow 1: Render Settings Page - index.jsx:L25-52",
|
|
"cellId": "97908daf-d071-4df5-8366-1f5f4d8d534a",
|
|
"visible": true,
|
|
"startLine": 25,
|
|
"endLine": 52,
|
|
"parentCellId": "d4b34195-7e1e-47a0-9303-603987c81f95",
|
|
"parentPath": "client/src/Pages/v1/Settings/index.jsx",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "System Administration and Configuration",
|
|
"simStepId": "64e9f1af-13b7-4361-a2a9-3f45760e316d"
|
|
}
|
|
]
|
|
},
|
|
"83596bd1-dfca-4196-b52e-955f6824fafb": {
|
|
"path": "83596bd1-dfca-4196-b52e-955f6824fafb",
|
|
"cellName": "Backend: Retrieve Settings from Database - settingsController.js:L40-49",
|
|
"cellId": "83596bd1-dfca-4196-b52e-955f6824fafb",
|
|
"visible": true,
|
|
"parentCellId": "a1fea5b0-fb7c-4189-9484-9d3312660767"
|
|
},
|
|
"server/src/controllers/v1/settingsController.js-simstep-441b0c45-5f27-478d-8ca8-58fbd5f460ea": {
|
|
"path": "server/src/controllers/v1/settingsController.js-simstep-441b0c45-5f27-478d-8ca8-58fbd5f460ea",
|
|
"fileName": "settingsController.js",
|
|
"wiki": "The `settingsController` handles the GET request. It calls the `settingsService` to fetch settings from the database. Sensitive data like passwords is sanitized, and flags like `emailPasswordSet` are added before sending the data to the client.",
|
|
"cellName": "Backend: Retrieve Settings from Database - settingsController.js:L40-49",
|
|
"cellId": "83596bd1-dfca-4196-b52e-955f6824fafb",
|
|
"visible": true,
|
|
"startLine": 40,
|
|
"endLine": 49,
|
|
"parentCellId": "a1fea5b0-fb7c-4189-9484-9d3312660767",
|
|
"parentPath": "server/src/controllers/v1/settingsController.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "System Administration and Configuration",
|
|
"simStepId": "441b0c45-5f27-478d-8ca8-58fbd5f460ea"
|
|
}
|
|
]
|
|
},
|
|
"09cb194a-0ea4-46e2-b32b-36b62fa87f40": {
|
|
"path": "09cb194a-0ea4-46e2-b32b-36b62fa87f40",
|
|
"cellName": "User Interaction: Modify Email Settings - SettingsEmail.jsx:L119-167",
|
|
"cellId": "09cb194a-0ea4-46e2-b32b-36b62fa87f40",
|
|
"visible": true,
|
|
"parentCellId": "d8aa5b9e-f2a7-44c8-8813-d79c3f3238ee"
|
|
},
|
|
"client/src/Pages/v1/Settings/SettingsEmail.jsx-simstep-ae5c5146-4dbb-4612-9d23-086e57f72474": {
|
|
"path": "client/src/Pages/v1/Settings/SettingsEmail.jsx-simstep-ae5c5146-4dbb-4612-9d23-086e57f72474",
|
|
"fileName": "SettingsEmail.jsx",
|
|
"wiki": "The user interacts with the `SettingsEmail` component, filling in SMTP server details. The component's state is updated via the `handleChange` function passed down from the parent `Settings` component, which prepares the new configuration data.",
|
|
"cellName": "User Interaction: Modify Email Settings - SettingsEmail.jsx:L119-167",
|
|
"cellId": "09cb194a-0ea4-46e2-b32b-36b62fa87f40",
|
|
"visible": true,
|
|
"startLine": 119,
|
|
"endLine": 167,
|
|
"parentCellId": "d8aa5b9e-f2a7-44c8-8813-d79c3f3238ee",
|
|
"parentPath": "client/src/Pages/v1/Settings/SettingsEmail.jsx",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "System Administration and Configuration",
|
|
"simStepId": "ae5c5146-4dbb-4612-9d23-086e57f72474"
|
|
}
|
|
]
|
|
},
|
|
"1b2cf182-9ee3-4218-a7ec-b74e427ccddf": {
|
|
"path": "1b2cf182-9ee3-4218-a7ec-b74e427ccddf",
|
|
"cellName": "API Call: Update Application Settings - settingsHooks.js:L41-67",
|
|
"cellId": "1b2cf182-9ee3-4218-a7ec-b74e427ccddf",
|
|
"visible": true,
|
|
"parentCellId": "8ee5d524-e61d-4e39-a729-babf54929def"
|
|
},
|
|
"client/src/Hooks/v1/settingsHooks.js-simstep-d7098072-9a83-4369-8176-9646ba34e186": {
|
|
"path": "client/src/Hooks/v1/settingsHooks.js-simstep-d7098072-9a83-4369-8176-9646ba34e186",
|
|
"fileName": "settingsHooks.js",
|
|
"wiki": "The `handleSave` function calls `saveSettings` from the `useSaveSettings` hook. This triggers a PUT request to `/api/v1/settings` with the new configuration in the request body.",
|
|
"cellName": "API Call: Update Application Settings - settingsHooks.js:L41-67",
|
|
"cellId": "1b2cf182-9ee3-4218-a7ec-b74e427ccddf",
|
|
"visible": true,
|
|
"startLine": 41,
|
|
"endLine": 67,
|
|
"parentCellId": "8ee5d524-e61d-4e39-a729-babf54929def",
|
|
"parentPath": "client/src/Hooks/v1/settingsHooks.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "System Administration and Configuration",
|
|
"simStepId": "d7098072-9a83-4369-8176-9646ba34e186"
|
|
}
|
|
]
|
|
},
|
|
"cce3b9c8-f3b7-434b-b3c6-d8d164714f86": {
|
|
"path": "cce3b9c8-f3b7-434b-b3c6-d8d164714f86",
|
|
"cellName": "Backend: Persist Updated Settings - settingsController.js:L54-64",
|
|
"cellId": "cce3b9c8-f3b7-434b-b3c6-d8d164714f86",
|
|
"visible": true,
|
|
"parentCellId": "a1fea5b0-fb7c-4189-9484-9d3312660767"
|
|
},
|
|
"server/src/controllers/v1/settingsController.js-simstep-7632e8d2-4086-4169-ae3f-bfbf8d657987": {
|
|
"path": "server/src/controllers/v1/settingsController.js-simstep-7632e8d2-4086-4169-ae3f-bfbf8d657987",
|
|
"fileName": "settingsController.js",
|
|
"wiki": "The `settingsController` receives the PUT request, validates the body, and calls the `db.settingsModule.updateAppSettings` method to update the settings document in the database.",
|
|
"cellName": "Backend: Persist Updated Settings - settingsController.js:L54-64",
|
|
"cellId": "cce3b9c8-f3b7-434b-b3c6-d8d164714f86",
|
|
"visible": true,
|
|
"startLine": 54,
|
|
"endLine": 64,
|
|
"parentCellId": "a1fea5b0-fb7c-4189-9484-9d3312660767",
|
|
"parentPath": "server/src/controllers/v1/settingsController.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "System Administration and Configuration",
|
|
"simStepId": "7632e8d2-4086-4169-ae3f-bfbf8d657987"
|
|
}
|
|
]
|
|
},
|
|
"fff5dde4-8eb8-4c21-9c6d-0845a9749ff3": {
|
|
"path": "fff5dde4-8eb8-4c21-9c6d-0845a9749ff3",
|
|
"cellName": "UI Update: Display Success Confirmation - settingsHooks.js:L58",
|
|
"cellId": "fff5dde4-8eb8-4c21-9c6d-0845a9749ff3",
|
|
"visible": true,
|
|
"parentCellId": "8ee5d524-e61d-4e39-a729-babf54929def"
|
|
},
|
|
"client/src/Hooks/v1/settingsHooks.js-simstep-a157bd07-b969-44f8-914c-3d8393c1605a": {
|
|
"path": "client/src/Hooks/v1/settingsHooks.js-simstep-a157bd07-b969-44f8-914c-3d8393c1605a",
|
|
"fileName": "settingsHooks.js",
|
|
"wiki": "The frontend network service receives the successful API response. The `saveSettings` hook then calls `createToast` with a success message, which is displayed to the user.",
|
|
"cellName": "UI Update: Display Success Confirmation - settingsHooks.js:L58",
|
|
"cellId": "fff5dde4-8eb8-4c21-9c6d-0845a9749ff3",
|
|
"visible": true,
|
|
"startLine": 58,
|
|
"endLine": 58,
|
|
"parentCellId": "8ee5d524-e61d-4e39-a729-babf54929def",
|
|
"parentPath": "client/src/Hooks/v1/settingsHooks.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "System Administration and Configuration",
|
|
"simStepId": "a157bd07-b969-44f8-914c-3d8393c1605a"
|
|
}
|
|
]
|
|
},
|
|
"704e2ec8-9f2f-47e5-852f-c6ada67a02e0": {
|
|
"path": "704e2ec8-9f2f-47e5-852f-c6ada67a02e0",
|
|
"cellName": "Flow 2: Navigate to Diagnostics Page - index.jsx:L14-15",
|
|
"cellId": "704e2ec8-9f2f-47e5-852f-c6ada67a02e0",
|
|
"visible": true,
|
|
"parentCellId": "87e0e2ea-4a6d-460d-95bc-31e2efd9c9cf"
|
|
},
|
|
"client/src/Pages/v1/Logs/Diagnostics/index.jsx-simstep-a9b24b5f-534b-4baf-a185-bac7c32a1c42": {
|
|
"path": "client/src/Pages/v1/Logs/Diagnostics/index.jsx-simstep-a9b24b5f-534b-4baf-a185-bac7c32a1c42",
|
|
"fileName": "index.jsx",
|
|
"wiki": "The user navigates to the 'Logs' page and selects the 'Diagnostics' tab. The `Diagnostics` component renders and immediately calls the `useFetchDiagnostics` hook to retrieve system health data.",
|
|
"cellName": "Flow 2: Navigate to Diagnostics Page - index.jsx:L14-15",
|
|
"cellId": "704e2ec8-9f2f-47e5-852f-c6ada67a02e0",
|
|
"visible": true,
|
|
"startLine": 14,
|
|
"endLine": 15,
|
|
"parentCellId": "87e0e2ea-4a6d-460d-95bc-31e2efd9c9cf",
|
|
"parentPath": "client/src/Pages/v1/Logs/Diagnostics/index.jsx",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "System Administration and Configuration",
|
|
"simStepId": "a9b24b5f-534b-4baf-a185-bac7c32a1c42"
|
|
}
|
|
]
|
|
},
|
|
"09f07e80-185e-4547-aab4-edaf8ae7501e": {
|
|
"path": "09f07e80-185e-4547-aab4-edaf8ae7501e",
|
|
"cellName": "Backend: Gather System Statistics - diagnosticService.js:L39-95",
|
|
"cellId": "09f07e80-185e-4547-aab4-edaf8ae7501e",
|
|
"visible": true,
|
|
"parentCellId": "643b26c1-3bfb-4c41-8179-96dfc237d99e"
|
|
},
|
|
"server/src/service/v1/business/diagnosticService.js-simstep-8fb704ca-67d9-437c-90d8-01302634d568": {
|
|
"path": "server/src/service/v1/business/diagnosticService.js-simstep-8fb704ca-67d9-437c-90d8-01302634d568",
|
|
"fileName": "diagnosticService.js",
|
|
"wiki": "The `diagnosticController` receives the request and calls `diagnosticService.getSystemStats()`. This service uses native Node.js modules like `os` and `v8` to collect metrics on memory, CPU, heap statistics, and process uptime.",
|
|
"cellName": "Backend: Gather System Statistics - diagnosticService.js:L39-95",
|
|
"cellId": "09f07e80-185e-4547-aab4-edaf8ae7501e",
|
|
"visible": true,
|
|
"startLine": 39,
|
|
"endLine": 95,
|
|
"parentCellId": "643b26c1-3bfb-4c41-8179-96dfc237d99e",
|
|
"parentPath": "server/src/service/v1/business/diagnosticService.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "System Administration and Configuration",
|
|
"simStepId": "8fb704ca-67d9-437c-90d8-01302634d568"
|
|
}
|
|
]
|
|
},
|
|
"4b418736-6b72-47e0-917a-d86d4bed9ecd": {
|
|
"path": "4b418736-6b72-47e0-917a-d86d4bed9ecd",
|
|
"cellName": "UI Update: Display System Health - index.jsx:L59-63",
|
|
"cellId": "4b418736-6b72-47e0-917a-d86d4bed9ecd",
|
|
"visible": true,
|
|
"parentCellId": "87e0e2ea-4a6d-460d-95bc-31e2efd9c9cf"
|
|
},
|
|
"client/src/Pages/v1/Logs/Diagnostics/index.jsx-simstep-e6c94f52-a599-4568-a06f-2db18f963817": {
|
|
"path": "client/src/Pages/v1/Logs/Diagnostics/index.jsx-simstep-e6c94f52-a599-4568-a06f-2db18f963817",
|
|
"fileName": "index.jsx",
|
|
"wiki": "The frontend receives the diagnostic data. The `Diagnostics` component passes this data to its children, `Gauges` and `StatusBoxes`, which then render the information as interactive gauges and statistical boxes.",
|
|
"cellName": "UI Update: Display System Health - index.jsx:L59-63",
|
|
"cellId": "4b418736-6b72-47e0-917a-d86d4bed9ecd",
|
|
"visible": true,
|
|
"startLine": 59,
|
|
"endLine": 63,
|
|
"parentCellId": "87e0e2ea-4a6d-460d-95bc-31e2efd9c9cf",
|
|
"parentPath": "client/src/Pages/v1/Logs/Diagnostics/index.jsx",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "System Administration and Configuration",
|
|
"simStepId": "e6c94f52-a599-4568-a06f-2db18f963817"
|
|
}
|
|
]
|
|
},
|
|
"f6d80f09-ae83-4c95-aba0-4efffeda38e0": {
|
|
"path": "f6d80f09-ae83-4c95-aba0-4efffeda38e0",
|
|
"cellName": "API Call:\nFetch Application\nSettings",
|
|
"cellId": "f6d80f09-ae83-4c95-aba0-4efffeda38e0",
|
|
"visible": true
|
|
},
|
|
"generated-edge-simstep-dca4a33c-b666-47b8-896b-370ed9d6f9c5-f6d80f09-ae83-4c95-aba0-4efffeda38e0": {
|
|
"path": "generated-edge-simstep-dca4a33c-b666-47b8-896b-370ed9d6f9c5-f6d80f09-ae83-4c95-aba0-4efffeda38e0",
|
|
"fileName": "index.jsx",
|
|
"cellName": "API Call: Fetch Application Settings",
|
|
"cellId": "f6d80f09-ae83-4c95-aba0-4efffeda38e0",
|
|
"visible": true,
|
|
"startLine": 692,
|
|
"endLine": 698,
|
|
"parentPath": "client/src/Pages/v1/Settings/index.jsx",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "System Administration and Configuration",
|
|
"simStepId": "dca4a33c-b666-47b8-896b-370ed9d6f9c5"
|
|
}
|
|
]
|
|
},
|
|
"195ad532-9858-493e-876a-6ec457811d1d": {
|
|
"path": "195ad532-9858-493e-876a-6ec457811d1d",
|
|
"cellName": "API Response:\nSend Settings\nto Client",
|
|
"cellId": "195ad532-9858-493e-876a-6ec457811d1d",
|
|
"visible": true
|
|
},
|
|
"generated-edge-simstep-aacc9302-6ca8-45c6-acb8-956d8d0242c2-195ad532-9858-493e-876a-6ec457811d1d": {
|
|
"path": "generated-edge-simstep-aacc9302-6ca8-45c6-acb8-956d8d0242c2-195ad532-9858-493e-876a-6ec457811d1d",
|
|
"fileName": "settingsController.js",
|
|
"cellName": "API Response: Send Settings to Client",
|
|
"cellId": "195ad532-9858-493e-876a-6ec457811d1d",
|
|
"visible": true,
|
|
"startLine": 45,
|
|
"endLine": 48,
|
|
"parentPath": "server/src/controllers/v1/settingsController.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "System Administration and Configuration",
|
|
"simStepId": "aacc9302-6ca8-45c6-acb8-956d8d0242c2"
|
|
}
|
|
]
|
|
},
|
|
"8c107d79-f796-49eb-ab88-f553dd6f9d95": {
|
|
"path": "8c107d79-f796-49eb-ab88-f553dd6f9d95",
|
|
"cellName": "User Action:\nSave Settings",
|
|
"cellId": "8c107d79-f796-49eb-ab88-f553dd6f9d95",
|
|
"visible": true,
|
|
"parentCellId": "d3264577-10f0-42fe-9411-7e9df0754d1e"
|
|
},
|
|
"generated-edge-simstep-e7e82a97-1409-4bc5-ae27-b4ff5ba746df-8c107d79-f796-49eb-ab88-f553dd6f9d95": {
|
|
"path": "generated-edge-simstep-e7e82a97-1409-4bc5-ae27-b4ff5ba746df-8c107d79-f796-49eb-ab88-f553dd6f9d95",
|
|
"fileName": "SettingsEmail.jsx",
|
|
"cellName": "User Action: Save Settings",
|
|
"cellId": "8c107d79-f796-49eb-ab88-f553dd6f9d95",
|
|
"visible": true,
|
|
"startLine": 258,
|
|
"endLine": 261,
|
|
"parentPath": "client/src/Pages/v1/Settings/SettingsEmail.jsx",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "System Administration and Configuration",
|
|
"simStepId": "e7e82a97-1409-4bc5-ae27-b4ff5ba746df"
|
|
}
|
|
]
|
|
},
|
|
"ce3ed3ba-a35b-4881-8dfd-f8425b9bf812": {
|
|
"path": "ce3ed3ba-a35b-4881-8dfd-f8425b9bf812",
|
|
"cellName": "Data Transmission:\nSend Updated\nSettings to\nServer",
|
|
"cellId": "ce3ed3ba-a35b-4881-8dfd-f8425b9bf812",
|
|
"visible": true
|
|
},
|
|
"generated-edge-simstep-383387e5-4623-44ab-b2c4-d9ea046f4547-ce3ed3ba-a35b-4881-8dfd-f8425b9bf812": {
|
|
"path": "generated-edge-simstep-383387e5-4623-44ab-b2c4-d9ea046f4547-ce3ed3ba-a35b-4881-8dfd-f8425b9bf812",
|
|
"fileName": "settingsHooks.js",
|
|
"cellName": "Data Transmission: Send Updated Settings to Server",
|
|
"cellId": "ce3ed3ba-a35b-4881-8dfd-f8425b9bf812",
|
|
"visible": true,
|
|
"startLine": 711,
|
|
"endLine": 717,
|
|
"parentPath": "client/src/Hooks/v1/settingsHooks.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "System Administration and Configuration",
|
|
"simStepId": "383387e5-4623-44ab-b2c4-d9ea046f4547"
|
|
}
|
|
]
|
|
},
|
|
"fbe9b160-307e-4f51-8f72-713fda5373c8": {
|
|
"path": "fbe9b160-307e-4f51-8f72-713fda5373c8",
|
|
"cellName": "API Response:\nConfirm Settings\nUpdate",
|
|
"cellId": "fbe9b160-307e-4f51-8f72-713fda5373c8",
|
|
"visible": true
|
|
},
|
|
"generated-edge-simstep-0afcde35-7d51-4939-aae8-bac5ac83c49d-fbe9b160-307e-4f51-8f72-713fda5373c8": {
|
|
"path": "generated-edge-simstep-0afcde35-7d51-4939-aae8-bac5ac83c49d-fbe9b160-307e-4f51-8f72-713fda5373c8",
|
|
"fileName": "settingsController.js",
|
|
"cellName": "API Response: Confirm Settings Update",
|
|
"cellId": "fbe9b160-307e-4f51-8f72-713fda5373c8",
|
|
"visible": true,
|
|
"startLine": 60,
|
|
"endLine": 63,
|
|
"parentPath": "server/src/controllers/v1/settingsController.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "System Administration and Configuration",
|
|
"simStepId": "0afcde35-7d51-4939-aae8-bac5ac83c49d"
|
|
}
|
|
]
|
|
},
|
|
"499dfe1f-77d4-4b26-a12c-45240691109e": {
|
|
"path": "499dfe1f-77d4-4b26-a12c-45240691109e",
|
|
"cellName": "API Call:\nFetch System\nDiagnostics",
|
|
"cellId": "499dfe1f-77d4-4b26-a12c-45240691109e",
|
|
"visible": true
|
|
},
|
|
"generated-edge-simstep-23b8ad7d-8967-4e48-814c-1a7bf5b4dfac-499dfe1f-77d4-4b26-a12c-45240691109e": {
|
|
"path": "generated-edge-simstep-23b8ad7d-8967-4e48-814c-1a7bf5b4dfac-499dfe1f-77d4-4b26-a12c-45240691109e",
|
|
"fileName": "index.jsx",
|
|
"cellName": "API Call: Fetch System Diagnostics",
|
|
"cellId": "499dfe1f-77d4-4b26-a12c-45240691109e",
|
|
"visible": true,
|
|
"startLine": 1113,
|
|
"endLine": 1119,
|
|
"parentPath": "client/src/Pages/v1/Logs/Diagnostics/index.jsx",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "System Administration and Configuration",
|
|
"simStepId": "23b8ad7d-8967-4e48-814c-1a7bf5b4dfac"
|
|
}
|
|
]
|
|
},
|
|
"d0f92604-a6fa-4d85-9716-ea8f32db78e0": {
|
|
"path": "d0f92604-a6fa-4d85-9716-ea8f32db78e0",
|
|
"cellName": "API Response:\nSend Diagnostics\nData to\nClient",
|
|
"cellId": "d0f92604-a6fa-4d85-9716-ea8f32db78e0",
|
|
"visible": true
|
|
},
|
|
"generated-edge-simstep-44a4372f-a903-4c43-a9a5-c7549c875e11-d0f92604-a6fa-4d85-9716-ea8f32db78e0": {
|
|
"path": "generated-edge-simstep-44a4372f-a903-4c43-a9a5-c7549c875e11-d0f92604-a6fa-4d85-9716-ea8f32db78e0",
|
|
"fileName": "diagnosticService.js",
|
|
"cellName": "API Response: Send Diagnostics Data to Client",
|
|
"cellId": "d0f92604-a6fa-4d85-9716-ea8f32db78e0",
|
|
"visible": true,
|
|
"startLine": 52,
|
|
"endLine": 55,
|
|
"parentPath": "server/src/service/v1/business/diagnosticService.js",
|
|
"simSteps": [
|
|
{
|
|
"simulationKey": "System Administration and Configuration",
|
|
"simStepId": "44a4372f-a903-4c43-a9a5-c7549c875e11"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"simulations": {
|
|
"Comprehensive Uptime Monitoring for Various Services": {
|
|
"name": "Comprehensive Uptime Monitoring for Various Services",
|
|
"simSteps": [
|
|
{
|
|
"simStepId": "ab5de0b9-c70d-492c-98d9-8ddee66284ad",
|
|
"diagramNodeId": "7a2da928-a65c-49d8-b0a3-c159a6df2bc5",
|
|
"simStepLabel": "Uptime Monitor Creation: Display Form",
|
|
"simStepDescription": "The user navigates to the 'Create Uptime Monitor' page. The `UptimeCreate` React component renders the form, allowing the user to select the monitor type (HTTP, Ping, Docker, etc.) and input details like URL, name, and check interval.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Pages/v1/Uptime/Create/index.jsx",
|
|
"startLine": "315",
|
|
"endLine": "802",
|
|
"relevantVariables": [
|
|
"UptimeCreate",
|
|
"monitor",
|
|
"setMonitor",
|
|
"onChange",
|
|
"onSubmit"
|
|
]
|
|
},
|
|
"inputDataExample": "{}",
|
|
"outputDataExample": "{\n \"type\": \"http\",\n \"statusWindowSize\": 5,\n \"statusWindowThreshold\": 60,\n \"matchMethod\": \"equal\",\n \"interval\": 60000,\n \"ignoreTlsErrors\": false,\n \"notifications\": [],\n \"url\": \"\",\n \"name\": \"\"\n}"
|
|
},
|
|
{
|
|
"simStepId": "888df086-41bb-469d-9c0a-daf74bdecb9f",
|
|
"diagramNodeId": "0e09aa33-d7c7-4c89-9da8-f0937658f4d3",
|
|
"simStepLabel": "Uptime Monitor Creation: Form Submission",
|
|
"simStepDescription": "After filling the form, the user clicks the 'Create monitor' button, which triggers the `onSubmit` event handler, passing the current state of the form.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Pages/v1/Uptime/Create/index.jsx",
|
|
"startLine": "435",
|
|
"endLine": "443",
|
|
"relevantVariables": [
|
|
"onSubmit"
|
|
]
|
|
},
|
|
"inputDataExample": "{\n \"type\": \"http\",\n \"url\": \"https://google.com\",\n \"name\": \"My Google Monitor\",\n \"interval\": 60000,\n \"notifications\": []\n}",
|
|
"outputDataExample": "{\n \"type\": \"http\",\n \"url\": \"https://google.com\",\n \"name\": \"My Google Monitor\",\n \"interval\": 60000,\n \"notifications\": []\n}"
|
|
},
|
|
{
|
|
"simStepId": "e02ddf57-270e-4f71-b4c4-d5183bb7879a",
|
|
"diagramNodeId": "a81f4ae8-41fe-4d1b-95ce-86abcc67b53c",
|
|
"simStepLabel": "Uptime Monitor Creation: Handle Form Submission and Validation",
|
|
"simStepDescription": "The `onSubmit` function in `UptimeCreate.jsx` is executed. It prevents the default form submission, constructs a `form` object with monitor data, validates it using `monitorValidation`, and then calls the `createMonitor` function from the `useCreateMonitor` hook.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Pages/v1/Uptime/Create/index.jsx",
|
|
"startLine": "170",
|
|
"endLine": "248",
|
|
"relevantVariables": [
|
|
"onSubmit",
|
|
"monitorValidation",
|
|
"createMonitor"
|
|
]
|
|
},
|
|
"inputDataExample": "{\n \"type\": \"http\",\n \"url\": \"google.com\",\n \"name\": \"My Google Monitor\",\n \"interval\": 60000,\n \"notifications\": []\n}",
|
|
"outputDataExample": "{\n \"monitor\": {\n \"url\": \"http://google.com\",\n \"name\": \"My Google Monitor\",\n \"statusWindowSize\": 5,\n \"statusWindowThreshold\": 60,\n \"type\": \"http\",\n \"interval\": 60000,\n \"description\": \"My Google Monitor\",\n \"notifications\": []\n },\n \"redirect\": \"/uptime\"\n}"
|
|
},
|
|
{
|
|
"simStepId": "3fe0afaa-c673-4b52-a0c4-02a3ffd3a075",
|
|
"diagramNodeId": "1f6f04a9-0123-4729-b06a-8f3da6d1b58c",
|
|
"simStepLabel": "Uptime Monitor Creation: Call Network Service",
|
|
"simStepDescription": "The `createMonitor` function from the `useCreateMonitor` hook is called, which in turn calls `networkService.createMonitor` to send the monitor data to the backend API.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Hooks/v1/monitorHooks.js",
|
|
"startLine": "306",
|
|
"endLine": "306",
|
|
"relevantVariables": [
|
|
"networkService.createMonitor"
|
|
]
|
|
},
|
|
"inputDataExample": "{\n \"monitor\": {\n \"url\": \"http://google.com\",\n \"name\": \"My Google Monitor\",\n \"type\": \"http\",\n \"interval\": 60000,\n \"notifications\": []\n }\n}",
|
|
"outputDataExample": "{\n \"monitor\": {\n \"url\": \"http://google.com\",\n \"name\": \"My Google Monitor\",\n \"type\": \"http\",\n \"interval\": 60000,\n \"notifications\": []\n }\n}"
|
|
},
|
|
{
|
|
"simStepId": "14e9986b-c6ce-475e-97ed-da1fa2b6968d",
|
|
"diagramNodeId": "a30ac765-c546-4993-988e-8c8cfdb7532f",
|
|
"simStepLabel": "Uptime Monitor Creation: Send API Request",
|
|
"simStepDescription": "The `createMonitor` method in `NetworkService.js` makes an HTTP POST request to the `/monitors` endpoint on the server, sending the new monitor's data in the request body.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Utils/NetworkService.js",
|
|
"startLine": "119",
|
|
"endLine": "121",
|
|
"relevantVariables": [
|
|
"createMonitor",
|
|
"this.axiosInstance.post"
|
|
]
|
|
},
|
|
"inputDataExample": "{\n \"monitor\": {\n \"url\": \"http://google.com\",\n \"name\": \"My Google Monitor\",\n \"type\": \"http\",\n \"interval\": 60000,\n \"notifications\": []\n }\n}",
|
|
"outputDataExample": "{\n \"status\": 200,\n \"data\": {\n \"_id\": \"60d21b4667d0d8992e610c85\",\n \"name\": \"My Google Monitor\",\n \"url\": \"http://google.com\",\n \"type\": \"http\",\n \"interval\": 60000,\n \"isActive\": true\n }\n}"
|
|
},
|
|
{
|
|
"simStepId": "13dd0564-44a5-43ea-a163-ce1148cc48e7",
|
|
"diagramNodeId": "b6d963d5-c613-407a-9ce9-60a04048dea7",
|
|
"simStepLabel": "Uptime Monitor Creation: API Route to Controller",
|
|
"simStepDescription": "The server's router receives the POST request on `/api/v1/monitors` and forwards it to the `createMonitor` method in the `MonitorController`.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/routes/v1/monitorRoute.js",
|
|
"startLine": "35",
|
|
"endLine": "35",
|
|
"relevantVariables": [
|
|
"this.router.post",
|
|
"this.monitorController.createMonitor"
|
|
]
|
|
},
|
|
"inputDataExample": "{\n \"headers\": {\n \"Authorization\": \"Bearer <jwt>\"\n },\n \"body\": {\n \"name\": \"My Google Monitor\",\n \"url\": \"http://google.com\",\n \"type\": \"http\",\n \"interval\": 60000\n }\n}",
|
|
"outputDataExample": "{\n \"headers\": {\n \"Authorization\": \"Bearer <jwt>\"\n },\n \"body\": {\n \"name\": \"My Google Monitor\",\n \"url\": \"http://google.com\",\n \"type\": \"http\",\n \"interval\": 60000\n }\n}"
|
|
},
|
|
{
|
|
"simStepId": "38fd069d-9c44-4078-954b-3a0899e9acf4",
|
|
"diagramNodeId": "f0409948-75dc-457f-a02d-6b9774258e48",
|
|
"simStepLabel": "Uptime Monitor Creation: Controller to Service",
|
|
"simStepDescription": "The `MonitorController` extracts the user and team ID from the request and calls the `createMonitor` method in the `MonitorService`, passing along the monitor data from the request body.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/controllers/v1/monitorController.js",
|
|
"startLine": "195",
|
|
"endLine": "195",
|
|
"relevantVariables": [
|
|
"this.monitorService.createMonitor"
|
|
]
|
|
},
|
|
"inputDataExample": "{\n \"user\": {\n \"_id\": \"user-123\",\n \"teamId\": \"team-abc\"\n },\n \"body\": {\n \"name\": \"My Google Monitor\",\n \"url\": \"http://google.com\",\n \"type\": \"http\"\n }\n}",
|
|
"outputDataExample": "{\n \"teamId\": \"team-abc\",\n \"userId\": \"user-123\",\n \"body\": {\n \"name\": \"My Google Monitor\",\n \"url\": \"http://google.com\",\n \"type\": \"http\"\n }\n}"
|
|
},
|
|
{
|
|
"simStepId": "a6f4c967-b1a8-4804-bc2e-67f47a7b68f9",
|
|
"diagramNodeId": "a6bccd1d-4272-4df7-a7c8-b3979e37b8d7",
|
|
"simStepLabel": "Uptime Monitor Creation: Service to DB Module",
|
|
"simStepDescription": "The `MonitorService` calls the `createMonitor` method of the `monitorModule` to handle the database interaction.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/service/v1/business/monitorService.js",
|
|
"startLine": "74",
|
|
"endLine": "78",
|
|
"relevantVariables": [
|
|
"this.db.monitorModule.createMonitor"
|
|
]
|
|
},
|
|
"inputDataExample": "{\n \"teamId\": \"team-abc\",\n \"userId\": \"user-123\",\n \"body\": {\n \"name\": \"My Google Monitor\",\n \"url\": \"http://google.com\",\n \"type\": \"http\"\n }\n}",
|
|
"outputDataExample": "{\n \"teamId\": \"team-abc\",\n \"userId\": \"user-123\",\n \"body\": {\n \"name\": \"My Google Monitor\",\n \"url\": \"http://google.com\",\n \"type\": \"http\"\n }\n}"
|
|
},
|
|
{
|
|
"simStepId": "ca3ad309-323a-418d-a171-c16f56fae23c",
|
|
"diagramNodeId": "2d407bfd-e4b0-46b8-99e7-121c507d525f",
|
|
"simStepLabel": "Uptime Monitor Creation: Save Monitor to Database",
|
|
"simStepDescription": "The `monitorModule` creates a new `Monitor` model instance with the provided data and saves it to the MongoDB database. The newly created document, including its generated `_id`, is returned.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/db/v1/modules/monitorModule.js",
|
|
"startLine": "454",
|
|
"endLine": "455",
|
|
"relevantVariables": [
|
|
"this.Monitor",
|
|
"monitor.save"
|
|
]
|
|
},
|
|
"inputDataExample": "{\n \"teamId\": \"team-abc\",\n \"userId\": \"user-123\",\n \"body\": {\n \"name\": \"My Google Monitor\",\n \"url\": \"http://google.com\",\n \"type\": \"http\"\n }\n}",
|
|
"outputDataExample": "{\n \"_id\": \"60d21b4667d0d8992e610c85\",\n \"name\": \"My Google Monitor\",\n \"url\": \"http://google.com\",\n \"type\": \"http\",\n \"interval\": 60000,\n \"userId\": \"user-123\",\n \"teamId\": \"team-abc\",\n \"isActive\": true,\n \"createdAt\": \"2023-01-01T12:00:00Z\",\n \"updatedAt\": \"2023-01-01T12:00:00Z\"\n}"
|
|
},
|
|
{
|
|
"simStepId": "71ec03b6-1166-4c5d-9ada-0875a0866e30",
|
|
"diagramNodeId": "de320ac1-0949-4297-be7c-b9d7a14e0fec",
|
|
"simStepLabel": "Uptime Monitor Creation: Service to Job Queue",
|
|
"simStepDescription": "After successfully saving the monitor to the database, the `MonitorService` returns the new monitor object and then calls `jobQueue.addJob` to schedule the first and subsequent checks for this monitor.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/service/v1/business/monitorService.js",
|
|
"startLine": "80",
|
|
"endLine": "80",
|
|
"relevantVariables": [
|
|
"this.jobQueue.addJob"
|
|
]
|
|
},
|
|
"inputDataExample": "{\n \"_id\": \"60d21b4667d0d8992e610c85\",\n \"name\": \"My Google Monitor\",\n \"url\": \"http://google.com\",\n \"type\": \"http\",\n \"interval\": 60000,\n \"isActive\": true\n}",
|
|
"outputDataExample": "{\n \"_id\": \"60d21b4667d0d8992e610c85\",\n \"name\": \"My Google Monitor\",\n \"url\": \"http://google.com\",\n \"type\": \"http\",\n \"interval\": 60000,\n \"isActive\": true\n}"
|
|
},
|
|
{
|
|
"simStepId": "2702bfca-7611-4562-8d3e-a05af8257871",
|
|
"diagramNodeId": "51e8db5f-2fdd-4ddc-9605-43981db9d940",
|
|
"simStepLabel": "Uptime Monitor Creation: Schedule Job",
|
|
"simStepDescription": "The `SuperSimpleQueue` receives the new monitor and uses its `scheduler.addJob` method to create a recurring job based on the monitor's interval. The monitor object itself is stored as data for the job.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/service/v1/infrastructure/SuperSimpleQueue/SuperSimpleQueue.js",
|
|
"startLine": "50",
|
|
"endLine": "57",
|
|
"relevantVariables": [
|
|
"addJob",
|
|
"this.scheduler.addJob"
|
|
]
|
|
},
|
|
"inputDataExample": "{\n \"_id\": \"60d21b4667d0d8992e610c85\",\n \"name\": \"My Google Monitor\",\n \"url\": \"http://google.com\",\n \"type\": \"http\",\n \"interval\": 60000,\n \"isActive\": true\n}",
|
|
"outputDataExample": "{\n \"id\": \"60d21b4667d0d8992e610c85\",\n \"template\": \"monitor-job\",\n \"repeat\": 60000,\n \"active\": true,\n \"data\": { ...monitor object ... }\n}"
|
|
},
|
|
{
|
|
"simStepId": "e22a708a-a348-4775-8ee3-f32a35446e24",
|
|
"diagramNodeId": "18c13391-0cf7-4303-8180-0a40cfd64b58",
|
|
"simStepLabel": "Service Monitoring: Job Execution",
|
|
"simStepDescription": "The scheduler triggers a monitor job at the specified interval. The `getMonitorJob` function in `SuperSimpleQueueHelper` is executed, which first checks if the monitor is in a maintenance window.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/service/v1/infrastructure/SuperSimpleQueue/SuperSimpleQueueHelper.js",
|
|
"startLine": "27",
|
|
"endLine": "73",
|
|
"relevantVariables": [
|
|
"getMonitorJob",
|
|
"isInMaintenanceWindow"
|
|
]
|
|
},
|
|
"inputDataExample": "{\n \"id\": \"60d21b4667d0d8992e610c85\",\n \"data\": {\n \"_id\": \"60d21b4667d0d8992e610c85\",\n \"name\": \"My Google Monitor\",\n \"url\": \"http://google.com\",\n \"type\": \"http\",\n \"interval\": 60000\n }\n}",
|
|
"outputDataExample": "{\n \"_id\": \"60d21b4667d0d8992e610c85\",\n \"name\": \"My Google Monitor\",\n \"url\": \"http://google.com\",\n \"type\": \"http\",\n \"interval\": 60000\n}"
|
|
},
|
|
{
|
|
"simStepId": "1d7580f2-f107-4008-a207-b8ec07998721",
|
|
"diagramNodeId": "38ba9b22-5b26-432d-a856-0eceb792c737",
|
|
"simStepLabel": "Service Monitoring: Request Service Status",
|
|
"simStepDescription": "Assuming no active maintenance, the job helper calls `networkService.requestStatus`, passing the monitor object to perform the actual availability check.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/service/v1/infrastructure/SuperSimpleQueue/SuperSimpleQueueHelper.js",
|
|
"startLine": "45",
|
|
"endLine": "45",
|
|
"relevantVariables": [
|
|
"this.networkService.requestStatus"
|
|
]
|
|
},
|
|
"inputDataExample": "{\n \"_id\": \"60d21b4667d0d8992e610c85\",\n \"name\": \"My Google Monitor\",\n \"url\": \"http://google.com\",\n \"type\": \"http\",\n \"interval\": 60000\n}",
|
|
"outputDataExample": "{\n \"_id\": \"60d21b4667d0d8992e610c85\",\n \"name\": \"My Google Monitor\",\n \"url\": \"http://google.com\",\n \"type\": \"http\",\n \"interval\": 60000\n}"
|
|
},
|
|
{
|
|
"simStepId": "84f82fea-e306-4e0b-8222-e9705803d51a",
|
|
"diagramNodeId": "5c900373-e6ba-44d5-b341-676a32d659c8",
|
|
"simStepLabel": "Service Monitoring: Perform Network Check",
|
|
"simStepDescription": "The `requestStatus` method in the network service acts as a router. Based on the monitor's `type` (e.g., 'http', 'ping', 'docker'), it calls the corresponding specialized request function (e.g., `requestHttp`) to perform the check and constructs a standardized response object.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/service/v1/infrastructure/networkService.js",
|
|
"startLine": "44",
|
|
"endLine": "59",
|
|
"relevantVariables": [
|
|
"requestStatus",
|
|
"requestHttp",
|
|
"requestPing",
|
|
"requestDocker",
|
|
"requestPort",
|
|
"requestGame"
|
|
]
|
|
},
|
|
"inputDataExample": "{\n \"_id\": \"60d21b4667d0d8992e610c85\",\n \"name\": \"My Google Monitor\",\n \"url\": \"http://google.com\",\n \"type\": \"http\"\n}",
|
|
"outputDataExample": "{\n \"monitorId\": \"60d21b4667d0d8992e610c85\",\n \"type\": \"http\",\n \"status\": true,\n \"code\": 200,\n \"responseTime\": 150,\n \"message\": \"OK\"\n}"
|
|
},
|
|
{
|
|
"simStepId": "9b0ada30-d3e6-4b2c-b3ff-f50615139588",
|
|
"diagramNodeId": "5e80734c-7b72-41be-9068-30cda3ffb425",
|
|
"simStepLabel": "Service Monitoring: Propagate Network Response",
|
|
"simStepDescription": "The network response object, containing the result of the check (status, response time, status code), is returned to the job handler in `SuperSimpleQueueHelper`.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/service/v1/infrastructure/SuperSimpleQueue/SuperSimpleQueueHelper.js",
|
|
"startLine": "45",
|
|
"endLine": "45",
|
|
"relevantVariables": [
|
|
"networkResponse"
|
|
]
|
|
},
|
|
"inputDataExample": "{\n \"monitorId\": \"60d21b4667d0d8992e610c85\",\n \"type\": \"http\",\n \"status\": true,\n \"code\": 200,\n \"responseTime\": 150,\n \"message\": \"OK\"\n}",
|
|
"outputDataExample": "{\n \"monitorId\": \"60d21b4667d0d8992e610c85\",\n \"type\": \"http\",\n \"status\": true,\n \"code\": 200,\n \"responseTime\": 150,\n \"message\": \"OK\"\n}"
|
|
},
|
|
{
|
|
"simStepId": "c66a04c6-113e-4391-ab71-93fc612279ef",
|
|
"diagramNodeId": "45e38f3a-a7c3-4de7-b3dc-589361d793fd",
|
|
"simStepLabel": "Service Monitoring: Update Monitor Status",
|
|
"simStepDescription": "The job handler passes the network response to `statusService.updateStatus`. This service creates a new `Check` document in the database, updates the monitor's status based on a sliding window and threshold, and calculates running statistics.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/service/v1/infrastructure/statusService.js",
|
|
"startLine": "108",
|
|
"endLine": "183",
|
|
"relevantVariables": [
|
|
"updateStatus",
|
|
"buildCheck",
|
|
"insertCheck",
|
|
"updateRunningStats"
|
|
]
|
|
},
|
|
"inputDataExample": "{\n \"monitorId\": \"60d21b4667d0d8992e610c85\",\n \"status\": true,\n \"responseTime\": 150,\n \"code\": 200\n}",
|
|
"outputDataExample": "{\n \"monitor\": { ...updated monitor object ... },\n \"statusChanged\": false,\n \"prevStatus\": true\n}"
|
|
},
|
|
{
|
|
"simStepId": "9896c387-4fca-47ad-82eb-7301286decb7",
|
|
"diagramNodeId": "0a7e4a72-b644-4bd8-afa1-ae8a1d6c111c",
|
|
"simStepLabel": "Service Monitoring: Check for Status Change",
|
|
"simStepDescription": "The result from `statusService`, indicating whether the monitor's overall status changed (e.g., from 'up' to 'down'), is returned to the job handler.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/service/v1/infrastructure/SuperSimpleQueue/SuperSimpleQueueHelper.js",
|
|
"startLine": "51",
|
|
"endLine": "51",
|
|
"relevantVariables": [
|
|
"updatedMonitor",
|
|
"statusChanged",
|
|
"prevStatus"
|
|
]
|
|
},
|
|
"inputDataExample": "{\n \"monitor\": { ...updated monitor object ... },\n \"statusChanged\": false,\n \"prevStatus\": true\n}",
|
|
"outputDataExample": "{\n \"monitor\": { ...updated monitor object ... },\n \"statusChanged\": false,\n \"prevStatus\": true\n}"
|
|
},
|
|
{
|
|
"simStepId": "1a260a75-cf50-4f7a-90b0-c280b512a5cb",
|
|
"diagramNodeId": "9f3ea7fc-16d3-4d36-97eb-66f8808425cc",
|
|
"simStepLabel": "Service Monitoring: Handle Notifications (Conditional)",
|
|
"simStepDescription": "If `statusChanged` is true, the job handler calls `notificationService.handleNotifications`. The service identifies the notification channels associated with the monitor and sends out alerts (e.g., email, webhook, Discord) with details about the status change.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/service/v1/infrastructure/notificationService.js",
|
|
"startLine": "76",
|
|
"endLine": "92",
|
|
"relevantVariables": [
|
|
"handleNotifications",
|
|
"notifyAll",
|
|
"buildStatusEmail",
|
|
"buildWebhookMessage",
|
|
"buildHardwareAlerts"
|
|
]
|
|
},
|
|
"inputDataExample": "{\n \"monitorId\": \"60d21b4667d0d8992e610c85\",\n \"status\": false,\n \"monitor\": { ... },\n \"statusChanged\": true,\n \"prevStatus\": true\n}",
|
|
"outputDataExample": "{}"
|
|
}
|
|
],
|
|
"description": "<ul><li>The core feature of Checkmate is to monitor the availability and response time of services</li><li>Users can configure different types of monitors for various needs</li><li>- Supports multiple protocols including HTTP(s), Ping, Port, and Docker containers</li><li>- Users can set the check frequency, from one to five minutes, to define how often the service is checked</li><li>- Advanced HTTP matching is available, allowing checks against JSON responses using JMESPath, regex, or simple inclusion/equality</li><li>- Game server monitoring is also a specific type of monitor supported by the application</li></ul>",
|
|
"simulationNodesAndEdges": {
|
|
"7a2da928-a65c-49d8-b0a3-c159a6df2bc5": {
|
|
"simStepIds": [
|
|
"ab5de0b9-c70d-492c-98d9-8ddee66284ad"
|
|
]
|
|
},
|
|
"a81f4ae8-41fe-4d1b-95ce-86abcc67b53c": {
|
|
"simStepIds": [
|
|
"e02ddf57-270e-4f71-b4c4-d5183bb7879a"
|
|
]
|
|
},
|
|
"a30ac765-c546-4993-988e-8c8cfdb7532f": {
|
|
"simStepIds": [
|
|
"14e9986b-c6ce-475e-97ed-da1fa2b6968d"
|
|
]
|
|
},
|
|
"f0409948-75dc-457f-a02d-6b9774258e48": {
|
|
"simStepIds": [
|
|
"38fd069d-9c44-4078-954b-3a0899e9acf4"
|
|
]
|
|
},
|
|
"2d407bfd-e4b0-46b8-99e7-121c507d525f": {
|
|
"simStepIds": [
|
|
"ca3ad309-323a-418d-a171-c16f56fae23c"
|
|
]
|
|
},
|
|
"51e8db5f-2fdd-4ddc-9605-43981db9d940": {
|
|
"simStepIds": [
|
|
"2702bfca-7611-4562-8d3e-a05af8257871"
|
|
]
|
|
},
|
|
"18c13391-0cf7-4303-8180-0a40cfd64b58": {
|
|
"simStepIds": [
|
|
"e22a708a-a348-4775-8ee3-f32a35446e24"
|
|
]
|
|
},
|
|
"5c900373-e6ba-44d5-b341-676a32d659c8": {
|
|
"simStepIds": [
|
|
"84f82fea-e306-4e0b-8222-e9705803d51a"
|
|
]
|
|
},
|
|
"45e38f3a-a7c3-4de7-b3dc-589361d793fd": {
|
|
"simStepIds": [
|
|
"c66a04c6-113e-4391-ab71-93fc612279ef"
|
|
]
|
|
},
|
|
"9f3ea7fc-16d3-4d36-97eb-66f8808425cc": {
|
|
"simStepIds": [
|
|
"1a260a75-cf50-4f7a-90b0-c280b512a5cb"
|
|
]
|
|
},
|
|
"0e09aa33-d7c7-4c89-9da8-f0937658f4d3": {
|
|
"simStepIds": [
|
|
"888df086-41bb-469d-9c0a-daf74bdecb9f"
|
|
]
|
|
},
|
|
"1f6f04a9-0123-4729-b06a-8f3da6d1b58c": {
|
|
"simStepIds": [
|
|
"3fe0afaa-c673-4b52-a0c4-02a3ffd3a075"
|
|
]
|
|
},
|
|
"b6d963d5-c613-407a-9ce9-60a04048dea7": {
|
|
"simStepIds": [
|
|
"13dd0564-44a5-43ea-a163-ce1148cc48e7"
|
|
]
|
|
},
|
|
"a6bccd1d-4272-4df7-a7c8-b3979e37b8d7": {
|
|
"simStepIds": [
|
|
"a6f4c967-b1a8-4804-bc2e-67f47a7b68f9"
|
|
]
|
|
},
|
|
"de320ac1-0949-4297-be7c-b9d7a14e0fec": {
|
|
"simStepIds": [
|
|
"71ec03b6-1166-4c5d-9ada-0875a0866e30"
|
|
]
|
|
},
|
|
"38ba9b22-5b26-432d-a856-0eceb792c737": {
|
|
"simStepIds": [
|
|
"1d7580f2-f107-4008-a207-b8ec07998721"
|
|
]
|
|
},
|
|
"5e80734c-7b72-41be-9068-30cda3ffb425": {
|
|
"simStepIds": [
|
|
"9b0ada30-d3e6-4b2c-b3ff-f50615139588"
|
|
]
|
|
},
|
|
"0a7e4a72-b644-4bd8-afa1-ae8a1d6c111c": {
|
|
"simStepIds": [
|
|
"9896c387-4fca-47ad-82eb-7301286decb7"
|
|
]
|
|
}
|
|
},
|
|
"isAIGenerated": true,
|
|
"keywords": "Monitor, checkService, UptimeCreate",
|
|
"generationPrompt": "Comprehensive Uptime Monitoring for Various Services",
|
|
"generationKeywords": "Monitor, checkService, UptimeCreate"
|
|
},
|
|
"Infrastructure and Hardware Health Monitoring": {
|
|
"name": "Infrastructure and Hardware Health Monitoring",
|
|
"simSteps": [
|
|
{
|
|
"simStepId": "80dd889a-1fc9-4d56-b9cf-5b45bf1110b1",
|
|
"diagramNodeId": "9651d084-5c16-4417-89c1-f52ae6572a95",
|
|
"simStepLabel": "Configuration: User Sets Alert Thresholds",
|
|
"simStepDescription": "A user navigates to the 'Create Infrastructure Monitor' page to set up monitoring for a new server. They enable alerts for CPU, memory, and disk usage, and define specific thresholds for each metric. For example, an alert is configured to trigger if CPU usage exceeds 80%.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Pages/v1/Infrastructure/Create/Components/CustomAlertsSection.jsx",
|
|
"startLine": "45",
|
|
"endLine": "53",
|
|
"relevantVariables": [
|
|
"CustomThreshold",
|
|
"METRICS",
|
|
"METRIC_PREFIX",
|
|
"handleCheckboxChange",
|
|
"infrastructureMonitor"
|
|
]
|
|
},
|
|
"inputDataExample": "{\n \"infrastructureMonitor\": {\n \"url\": \"my-server.example.com\",\n \"name\": \"Production Web Server\",\n \"cpu\": false,\n \"usage_cpu\": \"\",\n \"memory\": false,\n \"usage_memory\": \"\",\n \"disk\": false,\n \"usage_disk\": \"\"\n }\n}",
|
|
"outputDataExample": "{\n \"infrastructureMonitor\": {\n \"url\": \"my-server.example.com\",\n \"name\": \"Production Web Server\",\n \"cpu\": true,\n \"usage_cpu\": \"80\",\n \"memory\": true,\n \"usage_memory\": \"75\",\n \"disk\": true,\n \"usage_disk\": \"90\"\n }\n}"
|
|
},
|
|
{
|
|
"simStepId": "815f96af-c28e-4f80-b4ab-18a6fb23eee0",
|
|
"diagramNodeId": "1c5c9857-bf32-40e4-921b-957c252dac2a",
|
|
"simStepLabel": "API Call: Submit Monitor Configuration",
|
|
"simStepDescription": "After configuring the monitor and its alert thresholds, the user saves the configuration. The frontend application constructs a monitor object with `type: 'hardware'` and sends it to the backend via a POST request to create the new monitor.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Hooks/v1/monitorHooks.js",
|
|
"startLine": "386",
|
|
"endLine": "389",
|
|
"relevantVariables": [
|
|
"updatedFields",
|
|
"monitor.type",
|
|
"monitor.thresholds",
|
|
"monitor.secret"
|
|
]
|
|
},
|
|
"inputDataExample": "{\n \"monitor\": {\n \"name\": \"Production Web Server\",\n \"url\": \"http://my-server.example.com\",\n \"type\": \"hardware\",\n \"interval\": 15000,\n \"secret\": \"super-secret-key\",\n \"thresholds\": {\n \"usage_cpu\": 0.8,\n \"usage_memory\": 0.75,\n \"usage_disk\": 0.9\n }\n }\n}",
|
|
"outputDataExample": "{\n \"monitor\": {\n \"name\": \"Production Web Server\",\n \"url\": \"http://my-server.example.com\",\n \"type\": \"hardware\",\n \"interval\": 15000,\n \"secret\": \"super-secret-key\",\n \"thresholds\": {\n \"usage_cpu\": 0.8,\n \"usage_memory\": 0.75,\n \"usage_disk\": 0.9\n }\n }\n}"
|
|
},
|
|
{
|
|
"simStepId": "ed6e7faf-69dd-4d0b-bda8-137739ed288b",
|
|
"diagramNodeId": "4c47b5f2-5363-4816-9745-30e61d184c7a",
|
|
"simStepLabel": "Automated Check: Backend Fetches Hardware Data",
|
|
"simStepDescription": "The Checkmate server's job queue periodically initiates a check for the newly created hardware monitor. It makes an HTTP request to the monitor's URL, which points to the external 'Capture' agent running on the target server.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/service/v1/infrastructure/networkService.js",
|
|
"startLine": "7",
|
|
"endLine": "14",
|
|
"relevantVariables": [
|
|
"TYPE_HARDWARE"
|
|
]
|
|
},
|
|
"inputDataExample": "{\n \"monitor\": {\n \"_id\": \"65ada27a51442afd52857053\",\n \"name\": \"Production Web Server\",\n \"url\": \"http://my-server.example.com\",\n \"type\": \"hardware\",\n \"interval\": 15000\n }\n}",
|
|
"outputDataExample": "{\n \"networkResponse\": {\n \"ok\": true,\n \"status\": 200,\n \"statusText\": \"OK\",\n \"payload\": {\n \"data\": {\n \"cpu\": {\n \"usage_percent\": 0.85\n },\n \"memory\": {\n \"usage_percent\": 0.65\n },\n \"disk\": [\n {\n \"usage_percent\": 0.5\n }\n ]\n }\n }\n }\n}"
|
|
},
|
|
{
|
|
"simStepId": "4434dca1-2048-4458-a70b-b70d569e378d",
|
|
"diagramNodeId": "a64547c9-d9e6-4941-8e5e-f49add06516b",
|
|
"simStepLabel": "Automated Check: Data Received from Capture Agent",
|
|
"simStepDescription": "The 'Capture' agent responds to the server's request with a JSON payload containing detailed hardware metrics, including CPU usage, memory consumption, disk space, and network statistics.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/service/v1/infrastructure/statusService.js",
|
|
"startLine": "266",
|
|
"endLine": "273",
|
|
"relevantVariables": [
|
|
"payload",
|
|
"cpu",
|
|
"memory",
|
|
"disk",
|
|
"host"
|
|
]
|
|
},
|
|
"inputDataExample": "{\n \"data\": {\n \"cpu\": {\n \"physical_core\": 4,\n \"logical_core\": 8,\n \"frequency\": 3400,\n \"usage_percent\": 0.85,\n \"temperature\": [65, 66, 65, 67]\n },\n \"memory\": {\n \"total_bytes\": 17179869184,\n \"used_bytes\": 11166914970,\n \"usage_percent\": 0.65\n },\n \"disk\": [\n {\n \"name\": \"/dev/sda1\",\n \"total_bytes\": 250685575168,\n \"used_bytes\": 125342787584,\n \"usage_percent\": 0.5\n }\n ],\n \"host\": {\n \"os\": \"Ubuntu 22.04 LTS\"\n }\n },\n \"errors\": []\n}",
|
|
"outputDataExample": "{\n \"data\": {\n \"cpu\": {\n \"physical_core\": 4,\n \"logical_core\": 8,\n \"frequency\": 3400,\n \"usage_percent\": 0.85,\n \"temperature\": [65, 66, 65, 67]\n },\n \"memory\": {\n \"total_bytes\": 17179869184,\n \"used_bytes\": 11166914970,\n \"usage_percent\": 0.65\n },\n \"disk\": [\n {\n \"name\": \"/dev/sda1\",\n \"total_bytes\": 250685575168,\n \"used_bytes\": 125342787584,\n \"usage_percent\": 0.5\n }\n ],\n \"host\": {\n \"os\": \"Ubuntu 22.04 LTS\"\n }\n },\n \"errors\": []\n}"
|
|
},
|
|
{
|
|
"simStepId": "e5b90cf2-9369-4741-9803-c835a81c009b",
|
|
"diagramNodeId": "c1bf10c9-8c1a-44f4-8e23-39708f0301e8",
|
|
"simStepLabel": "Automated Check: Process and Store Hardware Data",
|
|
"simStepDescription": "The backend's StatusService receives the payload from the Capture agent. It parses the data and constructs a 'check' document. This document, containing the detailed hardware metrics, is then saved to the database for historical tracking and visualization.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/service/v1/infrastructure/statusService.js",
|
|
"startLine": "265",
|
|
"endLine": "274",
|
|
"relevantVariables": [
|
|
"buildCheck",
|
|
"type",
|
|
"payload",
|
|
"check.cpu",
|
|
"check.memory",
|
|
"check.disk",
|
|
"check.host"
|
|
]
|
|
},
|
|
"inputDataExample": "{\n \"networkResponse\": {\n \"type\": \"hardware\",\n \"payload\": {\n \"data\": {\n \"cpu\": { \"usage_percent\": 0.85 },\n \"memory\": { \"usage_percent\": 0.65 },\n \"disk\": [{ \"usage_percent\": 0.5 }],\n \"host\": { \"os\": \"Ubuntu 22.04 LTS\" }\n }\n }\n }\n}",
|
|
"outputDataExample": "{\n \"check\": {\n \"monitorId\": \"65ada27a51442afd52857053\",\n \"type\": \"hardware\",\n \"status\": true,\n \"cpu\": { \"usage_percent\": 0.85 },\n \"memory\": { \"usage_percent\": 0.65 },\n \"disk\": [{ \"usage_percent\": 0.5 }],\n \"host\": { \"os\": \"Ubuntu 22.04 LTS\" }\n }\n}"
|
|
},
|
|
{
|
|
"simStepId": "b019a6d0-a23a-4a1d-bd21-644f01996f14",
|
|
"diagramNodeId": "7a250d09-50c6-4935-b10c-626b0ebe1fba",
|
|
"simStepLabel": "Automated Check: Pass Data for Alert Evaluation",
|
|
"simStepDescription": "After storing the check data, the system passes the complete network response, including monitor details and the latest metrics, to the notification service to evaluate if any alerts need to be triggered.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/service/v1/infrastructure/notificationService.js",
|
|
"startLine": "60",
|
|
"endLine": "79",
|
|
"relevantVariables": [
|
|
"handleNotifications",
|
|
"networkResponse",
|
|
"monitor.type",
|
|
"thresholds",
|
|
"metrics"
|
|
]
|
|
},
|
|
"inputDataExample": "{\n \"networkResponse\": {\n \"monitor\": {\n \"_id\": \"65ada27a51442afd52857053\",\n \"name\": \"Production Web Server\",\n \"thresholds\": {\n \"usage_cpu\": 0.8\n },\n \"notifications\": [\"65a5b0b3e8a2b0e6e8c7b8e3\"]\n },\n \"payload\": {\n \"data\": {\n \"cpu\": { \"usage_percent\": 0.85 }\n }\n }\n }\n}",
|
|
"outputDataExample": "{\n \"networkResponse\": {\n \"monitor\": {\n \"_id\": \"65ada27a51442afd52857053\",\n \"name\": \"Production Web Server\",\n \"thresholds\": {\n \"usage_cpu\": 0.8\n },\n \"notifications\": [\"65a5b0b3e8a2b0e6e8c7b8e3\"]\n },\n \"payload\": {\n \"data\": {\n \"cpu\": { \"usage_percent\": 0.85 }\n }\n }\n }\n}"
|
|
},
|
|
{
|
|
"simStepId": "07fe8489-1d94-4afb-83f8-7cebb0dff49a",
|
|
"diagramNodeId": "d4f48f1a-61de-4cde-87d2-4b5215464899",
|
|
"simStepLabel": "Automated Check: Evaluate Data Against Thresholds",
|
|
"simStepDescription": "The notification utility function compares the received hardware metrics against the user-defined thresholds stored in the monitor's configuration. In this case, the CPU usage of 85% is greater than the 80% threshold, so an alert condition is met.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/service/v1/infrastructure/notificationUtils.js",
|
|
"startLine": "95",
|
|
"endLine": "109",
|
|
"relevantVariables": [
|
|
"buildHardwareAlerts",
|
|
"thresholds",
|
|
"metrics",
|
|
"cpuThreshold",
|
|
"cpuUsage",
|
|
"alerts"
|
|
]
|
|
},
|
|
"inputDataExample": "{\n \"networkResponse\": {\n \"monitor\": {\n \"thresholds\": {\n \"usage_cpu\": 0.8\n }\n },\n \"payload\": {\n \"data\": {\n \"cpu\": {\n \"usage_percent\": 0.85\n }\n }\n }\n }\n}",
|
|
"outputDataExample": "{\n \"alerts\": {\n \"cpu\": true,\n \"memory\": false,\n \"disk\": false\n }\n}"
|
|
},
|
|
{
|
|
"simStepId": "c691b3b9-88b3-4c88-a399-ff9fd5866194",
|
|
"diagramNodeId": "3d357de8-9fd2-4d0b-9623-f36fce4cf1de",
|
|
"simStepLabel": "Automated Check: Generate Alert Notification Content",
|
|
"simStepDescription": "Since the CPU threshold was breached, the system constructs a user-friendly alert message. For email notifications, it builds an HTML email detailing the alert, including the monitor name, the metric that triggered the alert, the current value, and the threshold.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/service/v1/infrastructure/notificationUtils.js",
|
|
"startLine": "177",
|
|
"endLine": "183",
|
|
"relevantVariables": [
|
|
"buildHardwareEmail",
|
|
"networkResponse",
|
|
"alerts",
|
|
"template",
|
|
"context",
|
|
"subject",
|
|
"html"
|
|
]
|
|
},
|
|
"inputDataExample": "{\n \"networkResponse\": {\n \"monitor\": {\n \"name\": \"Production Web Server\",\n \"url\": \"http://my-server.example.com\"\n }\n },\n \"alerts\": [\n \"Your current CPU usage (85%) is above your threshold (80%)\"\n ]\n}",
|
|
"outputDataExample": "{\n \"subject\": \"Monitor Production Web Server infrastructure alerts\",\n \"html\": \"...HTML content for the email...\"\n}"
|
|
},
|
|
{
|
|
"simStepId": "c27365db-9db6-4cc9-96f0-4f046fd38562",
|
|
"diagramNodeId": "801fe70a-1a19-406c-8f0d-770b0cb74409",
|
|
"simStepLabel": "Visualization: User Views Monitor Details",
|
|
"simStepDescription": "A user navigates to the details page for their 'Production Web Server' monitor in the Checkmate UI to view its performance. The React component for the details page mounts and prepares to fetch data.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Pages/v1/Infrastructure/Details/index.jsx",
|
|
"startLine": "23",
|
|
"endLine": "31",
|
|
"relevantVariables": [
|
|
"InfrastructureDetails",
|
|
"useParams",
|
|
"useState",
|
|
"dateRange",
|
|
"monitorId"
|
|
]
|
|
},
|
|
"inputDataExample": "{\n \"path\": \"/infrastructure/65ada27a51442afd52857053\"\n}",
|
|
"outputDataExample": "{\n \"monitorId\": \"65ada27a51442afd52857053\",\n \"dateRange\": \"recent\"\n}"
|
|
},
|
|
{
|
|
"simStepId": "a5d20172-1c95-4c9e-af39-f86a498734bb",
|
|
"diagramNodeId": "00921831-b1d9-4a5a-ae6f-5ddee7cfc1e4",
|
|
"simStepLabel": "API Call: Request for Historical Hardware Data",
|
|
"simStepDescription": "The frontend makes a GET request to the backend API to fetch the historical hardware data for the specified monitor and the selected time range (e.g., 'recent').",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Utils/NetworkService.js",
|
|
"startLine": "198",
|
|
"endLine": "206",
|
|
"relevantVariables": [
|
|
"getHardwareDetailsByMonitorId",
|
|
"config.monitorId",
|
|
"config.dateRange",
|
|
"this.axiosInstance.get"
|
|
]
|
|
},
|
|
"inputDataExample": "{\n \"monitorId\": \"65ada27a51442afd52857053\",\n \"dateRange\": \"recent\"\n}",
|
|
"outputDataExample": "{\n \"request\": \"GET /api/v1/monitors/hardware/details/65ada27a51442afd52857053?dateRange=recent\"\n}"
|
|
},
|
|
{
|
|
"simStepId": "8502ae1f-f029-446e-9dde-59c2aba87a8a",
|
|
"diagramNodeId": "9ef7c423-f4fc-4caf-9bf5-c1aa3002ca03",
|
|
"simStepLabel": "Backend: Aggregate Historical Data",
|
|
"simStepDescription": "The backend receives the request and executes a database aggregation pipeline. This query fetches all 'hardware' checks for the monitor within the given date range and calculates metrics like average CPU usage, average memory usage, and average temperatures, grouped by time intervals.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/db/v1/modules/monitorModule.js",
|
|
"startLine": "312",
|
|
"endLine": "322",
|
|
"relevantVariables": [
|
|
"getHardwareDetailsById",
|
|
"monitorId",
|
|
"dateRange",
|
|
"buildHardwareDetailsPipeline",
|
|
"hardwareStats"
|
|
]
|
|
},
|
|
"inputDataExample": "{\n \"monitorId\": \"65ada27a51442afd52857053\",\n \"dateRange\": \"recent\"\n}",
|
|
"outputDataExample": "{\n \"stats\": {\n \"checks\": [\n {\n \"_id\": \"2023-10-27T10:00:00Z\",\n \"avgCpuUsage\": 0.85,\n \"avgMemoryUsage\": 0.65\n },\n {\n \"_id\": \"2023-10-27T10:01:00Z\",\n \"avgCpuUsage\": 0.82,\n \"avgMemoryUsage\": 0.66\n }\n ],\n \"latestCheck\": {\n \"cpu\": { \"usage_percent\": 0.85 },\n \"memory\": { \"usage_percent\": 0.65 }\n }\n }\n}"
|
|
},
|
|
{
|
|
"simStepId": "627fcb0c-0282-4b4d-8c55-aceb636e4da0",
|
|
"diagramNodeId": "60308696-6f8a-43c8-b9a1-da199ef500cd",
|
|
"simStepLabel": "API Response: Send Aggregated Data to Frontend",
|
|
"simStepDescription": "The backend sends the aggregated hardware statistics back to the frontend in a structured JSON format, ready for visualization.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/db/v1/modules/monitorModuleQueries.js",
|
|
"startLine": "247",
|
|
"endLine": "262",
|
|
"relevantVariables": [
|
|
"buildHardwareDetailsPipeline",
|
|
"$group",
|
|
"avgCpuUsage",
|
|
"avgMemoryUsage",
|
|
"avgTemperatures"
|
|
]
|
|
},
|
|
"inputDataExample": "{\n \"stats\": {\n \"checks\": [\n {\n \"_id\": \"2023-10-27T10:00:00Z\",\n \"avgCpuUsage\": 0.85,\n \"avgMemoryUsage\": 0.65,\n \"avgTemperature\": [65.5]\n },\n {\n \"_id\": \"2023-10-27T10:01:00Z\",\n \"avgCpuUsage\": 0.82,\n \"avgMemoryUsage\": 0.66,\n \"avgTemperature\": [66.0]\n }\n ],\n \"latestCheck\": {\n \"cpu\": { \"usage_percent\": 0.85, \"physical_core\": 4, \"frequency\": 3400 },\n \"memory\": { \"usage_percent\": 0.65, \"total_bytes\": 17179869184, \"used_bytes\": 11166914970 }\n }\n }\n}",
|
|
"outputDataExample": "{\n \"stats\": {\n \"checks\": [\n {\n \"_id\": \"2023-10-27T10:00:00Z\",\n \"avgCpuUsage\": 0.85,\n \"avgMemoryUsage\": 0.65,\n \"avgTemperature\": [65.5]\n },\n {\n \"_id\": \"2023-10-27T10:01:00Z\",\n \"avgCpuUsage\": 0.82,\n \"avgMemoryUsage\": 0.66,\n \"avgTemperature\": [66.0]\n }\n ],\n \"latestCheck\": {\n \"cpu\": { \"usage_percent\": 0.85, \"physical_core\": 4, \"frequency\": 3400 },\n \"memory\": { \"usage_percent\": 0.65, \"total_bytes\": 17179869184, \"used_bytes\": 11166914970 }\n }\n }\n}"
|
|
},
|
|
{
|
|
"simStepId": "6eedce82-b9c8-4022-95e5-3a6e00628105",
|
|
"diagramNodeId": "9ea2e32d-1ea8-42f2-9a17-613844723ae6",
|
|
"simStepLabel": "Visualization: Frontend Renders Charts and Gauges",
|
|
"simStepDescription": "The frontend components on the Infrastructure Details page receive the aggregated data. The 'GaugeBoxes' component uses the 'latestCheck' data to render real-time gauges for current CPU and memory usage, while the 'AreaChartBoxes' component uses the historical 'checks' data to render time-series charts.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Pages/v1/Infrastructure/Details/Components/GaugeBoxes/index.jsx",
|
|
"startLine": "22",
|
|
"endLine": "51",
|
|
"relevantVariables": [
|
|
"Gauges",
|
|
"latestCheck",
|
|
"memoryUsagePercent",
|
|
"cpuUsagePercent",
|
|
"gauges"
|
|
]
|
|
},
|
|
"inputDataExample": "{\n \"monitor\": {\n \"stats\": {\n \"checks\": [\n { \"_id\": \"2023-10-27T10:00:00Z\", \"avgCpuUsage\": 0.85 },\n { \"_id\": \"2023-10-27T10:01:00Z\", \"avgCpuUsage\": 0.82 }\n ],\n \"latestCheck\": {\n \"cpu\": { \"usage_percent\": 0.85, \"physical_core\": 4, \"frequency\": 3400 },\n \"memory\": { \"usage_percent\": 0.65, \"total_bytes\": 17179869184, \"used_bytes\": 11166914970 }\n }\n }\n }\n}",
|
|
"outputDataExample": "{\n \"rendered_gauges\": [\n {\n \"type\": \"memory\",\n \"value\": \"65%\",\n \"heading\": \"Memory usage\"\n },\n {\n \"type\": \"cpu\",\n \"value\": \"85%\",\n \"heading\": \"CPU usage\"\n }\n ]\n}"
|
|
}
|
|
],
|
|
"description": "<ul><li>Checkmate provides detailed monitoring of server hardware resources, requiring an external agent called 'Capture'</li><li>- Tracks key metrics such as CPU usage, temperature, memory consumption, and disk space</li><li>- Visualizes historical hardware data through detailed charts and real-time gauges</li><li>- Users can configure alert thresholds for each metric (CPU, memory, disk, temperature) to get notified about potential issues proactively</li><li>- Provides insights into network statistics, including data sent/received and packet information</li></ul>",
|
|
"simulationNodesAndEdges": {
|
|
"9651d084-5c16-4417-89c1-f52ae6572a95": {
|
|
"simStepIds": [
|
|
"80dd889a-1fc9-4d56-b9cf-5b45bf1110b1"
|
|
]
|
|
},
|
|
"4c47b5f2-5363-4816-9745-30e61d184c7a": {
|
|
"simStepIds": [
|
|
"ed6e7faf-69dd-4d0b-bda8-137739ed288b"
|
|
]
|
|
},
|
|
"c1bf10c9-8c1a-44f4-8e23-39708f0301e8": {
|
|
"simStepIds": [
|
|
"e5b90cf2-9369-4741-9803-c835a81c009b"
|
|
]
|
|
},
|
|
"d4f48f1a-61de-4cde-87d2-4b5215464899": {
|
|
"simStepIds": [
|
|
"07fe8489-1d94-4afb-83f8-7cebb0dff49a"
|
|
]
|
|
},
|
|
"801fe70a-1a19-406c-8f0d-770b0cb74409": {
|
|
"simStepIds": [
|
|
"c27365db-9db6-4cc9-96f0-4f046fd38562"
|
|
]
|
|
},
|
|
"9ef7c423-f4fc-4caf-9bf5-c1aa3002ca03": {
|
|
"simStepIds": [
|
|
"8502ae1f-f029-446e-9dde-59c2aba87a8a"
|
|
]
|
|
},
|
|
"9ea2e32d-1ea8-42f2-9a17-613844723ae6": {
|
|
"simStepIds": [
|
|
"6eedce82-b9c8-4022-95e5-3a6e00628105"
|
|
]
|
|
},
|
|
"1c5c9857-bf32-40e4-921b-957c252dac2a": {
|
|
"simStepIds": [
|
|
"815f96af-c28e-4f80-b4ab-18a6fb23eee0"
|
|
]
|
|
},
|
|
"a64547c9-d9e6-4941-8e5e-f49add06516b": {
|
|
"simStepIds": [
|
|
"4434dca1-2048-4458-a70b-b70d569e378d"
|
|
]
|
|
},
|
|
"7a250d09-50c6-4935-b10c-626b0ebe1fba": {
|
|
"simStepIds": [
|
|
"b019a6d0-a23a-4a1d-bd21-644f01996f14"
|
|
]
|
|
},
|
|
"3d357de8-9fd2-4d0b-9623-f36fce4cf1de": {
|
|
"simStepIds": [
|
|
"c691b3b9-88b3-4c88-a399-ff9fd5866194"
|
|
]
|
|
},
|
|
"00921831-b1d9-4a5a-ae6f-5ddee7cfc1e4": {
|
|
"simStepIds": [
|
|
"a5d20172-1c95-4c9e-af39-f86a498734bb"
|
|
]
|
|
},
|
|
"60308696-6f8a-43c8-b9a1-da199ef500cd": {
|
|
"simStepIds": [
|
|
"627fcb0c-0282-4b4d-8c55-aceb636e4da0"
|
|
]
|
|
}
|
|
},
|
|
"isAIGenerated": true,
|
|
"keywords": "hardware, InfrastructureDetails, cpu",
|
|
"generationPrompt": "Infrastructure and Hardware Health Monitoring",
|
|
"generationKeywords": "hardware, InfrastructureDetails, cpu"
|
|
},
|
|
"Multi-Channel Alerting and Notifications": {
|
|
"name": "Multi-Channel Alerting and Notifications",
|
|
"simSteps": [
|
|
{
|
|
"simStepId": "e924ec15-1bea-4e3b-befb-a8bf30cbf740",
|
|
"diagramNodeId": "15486629-84b3-463a-962b-06083f69e4bf",
|
|
"simStepLabel": "Flow 1: Render Notification Creation Form",
|
|
"simStepDescription": "User accesses the `/notifications/create` route, which renders the `CreateNotifications` component. This component displays a form for setting up a new notification channel, including fields for name, type, and provider-specific details.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Pages/v1/Notifications/create/index.jsx",
|
|
"startLine": "157",
|
|
"endLine": "321",
|
|
"relevantVariables": [
|
|
"CreateNotifications",
|
|
"notification",
|
|
"onChange",
|
|
"onSubmit"
|
|
]
|
|
},
|
|
"inputDataExample": "{\n \"route\": \"/notifications/create\"\n}",
|
|
"outputDataExample": "{\n \"renderedComponent\": \"CreateNotifications\",\n \"formFields\": [\"notificationName\", \"type\", \"address\", \"slackWebhookUrl\", etc...]\n}"
|
|
},
|
|
{
|
|
"simStepId": "71dbcd41-c6d4-4514-b5a4-6c966ca7ba6f",
|
|
"diagramNodeId": "54497b9a-4910-4df4-b016-480b9ac250a7",
|
|
"simStepLabel": "Flow 1: Submit Form Data for Creation",
|
|
"simStepDescription": "After filling the form, the user clicks 'Save'. The `onSubmit` function is triggered, which calls the `createNotification` function from the `useCreateNotification` hook with the form data.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Pages/v1/Notifications/create/index.jsx",
|
|
"startLine": "96",
|
|
"endLine": "101",
|
|
"relevantVariables": [
|
|
"onSubmit",
|
|
"createNotification"
|
|
]
|
|
},
|
|
"inputDataExample": "{\n \"notificationName\": \"Production Slack Alerts\",\n \"type\": \"slack\",\n \"slackWebhookUrl\": \"https://hooks.slack.com/services/T01ABCD/B01EFGH/xXxXxXxXxX\",\n \"isDefault\": false\n}",
|
|
"outputDataExample": "{\n \"notificationName\": \"Production Slack Alerts\",\n \"type\": \"slack\",\n \"slackWebhookUrl\": \"https://hooks.slack.com/services/T01ABCD/B01EFGH/xXxXxXxXxX\",\n \"isDefault\": false\n}"
|
|
},
|
|
{
|
|
"simStepId": "383c6be8-aa51-4398-9ae3-21035413f73a",
|
|
"diagramNodeId": "a07b805e-e55f-46cb-b54b-765b7813b0ca",
|
|
"simStepLabel": "Flow 1: Frontend API Call",
|
|
"simStepDescription": "The `createNotification` hook executes an asynchronous function that calls `networkService.createNotification` to send the new notification data to the backend API.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Hooks/v1/useNotifications.js",
|
|
"startLine": "14",
|
|
"endLine": "17",
|
|
"relevantVariables": [
|
|
"createNotification",
|
|
"networkService"
|
|
]
|
|
},
|
|
"inputDataExample": "{\n \"notificationName\": \"Production Slack Alerts\",\n \"type\": \"slack\",\n \"slackWebhookUrl\": \"https://hooks.slack.com/services/T01ABCD/B01EFGH/xXxXxXxXxX\",\n \"isDefault\": false\n}",
|
|
"outputDataExample": "{\n \"status\": \"pending\",\n \"promise\": {}\n}"
|
|
},
|
|
{
|
|
"simStepId": "162d8d2f-6cd1-45fa-8711-1ee85c5f86ef",
|
|
"diagramNodeId": "dc135d8d-0515-403d-ae58-f3c04647b2ae",
|
|
"simStepLabel": "Flow 1: HTTP POST Request",
|
|
"simStepDescription": "The `NetworkService` constructs and sends an HTTP POST request to the `/notifications` endpoint with the notification data in the request body.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Utils/NetworkService.js",
|
|
"startLine": "1064",
|
|
"endLine": "1066",
|
|
"relevantVariables": [
|
|
"createNotification",
|
|
"this.axiosInstance"
|
|
]
|
|
},
|
|
"inputDataExample": "{\n \"url\": \"/notifications\",\n \"method\": \"POST\",\n \"data\": {\n \"notificationName\": \"Production Slack Alerts\",\n \"type\": \"slack\",\n \"slackWebhookUrl\": \"https://hooks.slack.com/services/T01ABCD/B01EFGH/xXxXxXxXxX\",\n \"isDefault\": false\n }\n}",
|
|
"outputDataExample": "{\n \"url\": \"/notifications\",\n \"method\": \"POST\",\n \"data\": {\n \"notificationName\": \"Production Slack Alerts\",\n \"type\": \"slack\",\n \"slackWebhookUrl\": \"https://hooks.slack.com/services/T01ABCD/B01EFGH/xXxXxXxXxX\",\n \"isDefault\": false\n }\n}"
|
|
},
|
|
{
|
|
"simStepId": "2f9266c9-4cbc-4b50-a280-cf8b5800d540",
|
|
"diagramNodeId": "d0a4737f-715f-4f50-b6d5-5e4b31f86f93",
|
|
"simStepLabel": "Flow 1: Backend Route Handling",
|
|
"simStepDescription": "The backend server receives the POST request. The Express router matches the `/notifications` path and forwards the request to the `createNotification` method of the `NotificationController`.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/routes/v1/notificationRoute.js",
|
|
"startLine": "10",
|
|
"endLine": "10",
|
|
"relevantVariables": [
|
|
"this.router",
|
|
"this.notificationController.createNotification"
|
|
]
|
|
},
|
|
"inputDataExample": "{\n \"request\": {\n \"path\": \"/notifications\",\n \"method\": \"POST\",\n \"body\": {\n \"notificationName\": \"Production Slack Alerts\",\n \"type\": \"slack\",\n \"slackWebhookUrl\": \"https://hooks.slack.com/services/T01ABCD/B01EFGH/xXxXxXxXxX\"\n }\n }\n}",
|
|
"outputDataExample": "{\n \"handler\": \"notificationController.createNotification\"\n}"
|
|
},
|
|
{
|
|
"simStepId": "73e63d2f-2b43-488d-9e86-170f511673f5",
|
|
"diagramNodeId": "7b9ebb0e-a6b2-438c-bfed-9c851a1bccbc",
|
|
"simStepLabel": "Flow 1: Controller to Database Module",
|
|
"simStepDescription": "The `createNotification` method in the controller validates the request body, appends user/team context, and then calls the `createNotification` method in the `notificationModule` to persist the data.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/controllers/v1/notificationController.js",
|
|
"startLine": "55",
|
|
"endLine": "55",
|
|
"relevantVariables": [
|
|
"body",
|
|
"this.db.notificationModule.createNotification"
|
|
]
|
|
},
|
|
"inputDataExample": "{\n \"notificationName\": \"Production Slack Alerts\",\n \"type\": \"slack\",\n \"slackWebhookUrl\": \"https://hooks.slack.com/services/T01ABCD/B01EFGH/xXxXxXxXxX\",\n \"userId\": \"user-123\",\n \"teamId\": \"team-456\"\n}",
|
|
"outputDataExample": "{\n \"notificationName\": \"Production Slack Alerts\",\n \"type\": \"slack\",\n \"slackWebhookUrl\": \"https://hooks.slack.com/services/T01ABCD/B01EFGH/xXxXxXxXxX\",\n \"userId\": \"user-123\",\n \"teamId\": \"team-456\"\n}"
|
|
},
|
|
{
|
|
"simStepId": "d29ab4ab-be50-4f17-af6e-2c61cec9d0ab",
|
|
"diagramNodeId": "4a796ccf-40a9-4446-a109-6a6eed52e898",
|
|
"simStepLabel": "Flow 1: Database Insertion",
|
|
"simStepDescription": "The `notificationModule` creates a new instance of the `Notification` model with the provided data and saves it to the MongoDB database.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/db/v1/modules/notificationModule.js",
|
|
"startLine": "10",
|
|
"endLine": "13",
|
|
"relevantVariables": [
|
|
"notificationData",
|
|
"this.Notification"
|
|
]
|
|
},
|
|
"inputDataExample": "{\n \"notificationName\": \"Production Slack Alerts\",\n \"type\": \"slack\",\n \"slackWebhookUrl\": \"https://hooks.slack.com/services/T01ABCD/B01EFGH/xXxXxXxXxX\",\n \"userId\": \"user-123\",\n \"teamId\": \"team-456\"\n}",
|
|
"outputDataExample": "{\n \"_id\": \"60d5ecf31c9d440000a1b2c3\",\n \"notificationName\": \"Production Slack Alerts\",\n \"type\": \"slack\",\n \"slackWebhookUrl\": \"https://hooks.slack.com/services/T01ABCD/B01EFGH/xXxXxXxXxX\",\n \"userId\": \"user-123\",\n \"teamId\": \"team-456\",\n \"createdAt\": \"2023-10-27T10:00:00Z\",\n \"updatedAt\": \"2023-10-27T10:00:00Z\"\n}"
|
|
},
|
|
{
|
|
"simStepId": "d390ef45-f2fe-4806-a45a-cc9c84b48a5a",
|
|
"diagramNodeId": "279155cd-ff31-41a2-8f5f-a538f01bfa66",
|
|
"simStepLabel": "Flow 1: User Clicks Test Notification Button",
|
|
"simStepDescription": "The user clicks the 'Test notification' button, which invokes the `onTestNotification` handler. This handler calls the `testNotification` function from the `useTestNotification` hook.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Pages/v1/Notifications/create/index.jsx",
|
|
"startLine": "281",
|
|
"endLine": "285",
|
|
"relevantVariables": [
|
|
"onTestNotification",
|
|
"testNotification"
|
|
]
|
|
},
|
|
"inputDataExample": "{\n \"notificationName\": \"Production Slack Alerts\",\n \"type\": \"slack\",\n \"slackWebhookUrl\": \"https://hooks.slack.com/services/T01ABCD/B01EFGH/xXxXxXxXxX\",\n \"isDefault\": false\n}",
|
|
"outputDataExample": "{\n \"notificationName\": \"Production Slack Alerts\",\n \"type\": \"slack\",\n \"slackWebhookUrl\": \"https://hooks.slack.com/services/T01ABCD/B01EFGH/xXxXxXxXxX\",\n \"isDefault\": false\n}"
|
|
},
|
|
{
|
|
"simStepId": "c1b17b64-90e9-48bc-8927-25d7ebfc3036",
|
|
"diagramNodeId": "29c2c56e-9dc0-4304-bfbf-e0c0f8915a39",
|
|
"simStepLabel": "Flow 1: Backend Receives Test Request",
|
|
"simStepDescription": "The client sends a POST request to `/notifications/test`. The router directs this request to the `testNotification` method in the `NotificationController`.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/routes/v1/notificationRoute.js",
|
|
"startLine": "13",
|
|
"endLine": "13",
|
|
"relevantVariables": [
|
|
"this.router",
|
|
"this.notificationController.testNotification"
|
|
]
|
|
},
|
|
"inputDataExample": "{\n \"request\": {\n \"path\": \"/notifications/test\",\n \"method\": \"POST\",\n \"body\": {\n \"type\": \"slack\",\n \"slackWebhookUrl\": \"https://hooks.slack.com/services/T01ABCD/B01EFGH/xXxXxXxXxX\"\n }\n }\n}",
|
|
"outputDataExample": "{\n \"handler\": \"notificationController.testNotification\"\n}"
|
|
},
|
|
{
|
|
"simStepId": "6f2bf027-50d9-472e-9569-808a64fce7cf",
|
|
"diagramNodeId": "57018b30-e2f4-4eb2-a1da-fe75afbb8c2f",
|
|
"simStepLabel": "Flow 1: Controller to Notification Service",
|
|
"simStepDescription": "The `testNotification` controller method passes the notification configuration from the request body to the `sendTestNotification` method of the `NotificationService`.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/controllers/v1/notificationController.js",
|
|
"startLine": "22",
|
|
"endLine": "22",
|
|
"relevantVariables": [
|
|
"notification",
|
|
"this.notificationService.sendTestNotification"
|
|
]
|
|
},
|
|
"inputDataExample": "{\n \"type\": \"slack\",\n \"slackWebhookUrl\": \"https://hooks.slack.com/services/T01ABCD/B01EFGH/xXxXxXxXxX\"\n}",
|
|
"outputDataExample": "{\n \"type\": \"slack\",\n \"slackWebhookUrl\": \"https://hooks.slack.com/services/T01ABCD/B01EFGH/xXxXxXxXxX\"\n}"
|
|
},
|
|
{
|
|
"simStepId": "f29f9be1-a0cd-43a3-b259-e5105a25ce41",
|
|
"diagramNodeId": "1cc01e08-4a6c-4526-b8a7-5ee8a06c1709",
|
|
"simStepLabel": "Flow 1: Send Test Notification",
|
|
"simStepDescription": "The `NotificationService` prepares a standard test message and calls its internal `sendNotification` method. This method identifies the notification type (e.g., email, Slack) and uses the corresponding service (e.g., EmailService, NetworkService for webhooks) to dispatch the test message.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/service/v1/infrastructure/notificationService.js",
|
|
"startLine": "120",
|
|
"endLine": "123",
|
|
"relevantVariables": [
|
|
"sendTestNotification",
|
|
"sendNotification"
|
|
]
|
|
},
|
|
"inputDataExample": "{\n \"type\": \"slack\",\n \"slackWebhookUrl\": \"https://hooks.slack.com/services/T01ABCD/B01EFGH/xXxXxXxXxX\"\n}",
|
|
"outputDataExample": "{\n \"success\": true\n}"
|
|
},
|
|
{
|
|
"simStepId": "157cec87-9b76-4a1c-9d85-0a6d3decbaa3",
|
|
"diagramNodeId": "28f1eabb-4f24-4944-8a0a-04f41ceb8589",
|
|
"simStepLabel": "Flow 2: Job Execution and Status Update",
|
|
"simStepDescription": "A background job is generated for a monitor. When executed, it performs a network check, saves the result, and updates the monitor's status via `statusService.updateMonitorStatus`.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/service/v2/infrastructure/JobGenerator.ts",
|
|
"startLine": "43",
|
|
"endLine": "66",
|
|
"relevantVariables": [
|
|
"generateJob",
|
|
"networkService.check",
|
|
"statusService.updateMonitorStatus"
|
|
]
|
|
},
|
|
"inputDataExample": "{\n \"monitor\": {\n \"_id\": \"60d5f1b31c9d440000a1b2c4\",\n \"name\": \"Main API\",\n \"type\": \"http\",\n \"url\": \"https://api.example.com/health\",\n \"status\": \"up\"\n }\n}",
|
|
"outputDataExample": "{\n \"updatedMonitor\": {\n \"_id\": \"60d5f1b31c9d440000a1b2c4\",\n \"name\": \"Main API\",\n \"url\": \"https://api.example.com/health\",\n \"status\": \"down\"\n },\n \"statusChanged\": true\n}"
|
|
},
|
|
{
|
|
"simStepId": "b7ec7415-fcae-4077-8c19-302a015b00b5",
|
|
"diagramNodeId": "50797935-1447-47a4-891b-9e886e5601fa",
|
|
"simStepLabel": "Flow 2: Status Change Detected",
|
|
"simStepDescription": "The `updateMonitorStatus` function returns a boolean indicating if the monitor's status has changed (e.g., from 'up' to 'down'). This boolean is used as a condition to trigger notifications.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/service/v2/infrastructure/JobGenerator.ts",
|
|
"startLine": "60",
|
|
"endLine": "60",
|
|
"relevantVariables": [
|
|
"statusChanged"
|
|
]
|
|
},
|
|
"inputDataExample": "{\n \"statusChanged\": true\n}",
|
|
"outputDataExample": "{\n \"statusChanged\": true\n}"
|
|
},
|
|
{
|
|
"simStepId": "55ad645b-118a-478e-a00c-09ef82357008",
|
|
"diagramNodeId": "31fe5a28-0640-4b52-841b-dd02e2ae646e",
|
|
"simStepLabel": "Flow 2: Initiate Notification Handling",
|
|
"simStepDescription": "If the monitor's status has changed, the `handleNotifications` method of the `NotificationService` is invoked with the updated monitor's data.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/service/v2/infrastructure/JobGenerator.ts",
|
|
"startLine": "61",
|
|
"endLine": "61",
|
|
"relevantVariables": [
|
|
"this.notificationService.handleNotifications",
|
|
"updatedMonitor"
|
|
]
|
|
},
|
|
"inputDataExample": "{\n \"updatedMonitor\": {\n \"_id\": \"60d5f1b31c9d440000a1b2c4\",\n \"name\": \"Main API\",\n \"url\": \"https://api.example.com/health\",\n \"status\": \"down\",\n \"notifications\": [\"60d5ecf31c9d440000a1b2c3\"]\n }\n}",
|
|
"outputDataExample": "{\n \"status\": \"pending\",\n \"promise\": {}\n}"
|
|
},
|
|
{
|
|
"simStepId": "b7259d77-c8df-4060-ac03-58728ae3eb54",
|
|
"diagramNodeId": "c778c6b9-c12e-45c0-8682-2c9e892867b0",
|
|
"simStepLabel": "Flow 2: Monitor Data Passed to Notification Service",
|
|
"simStepDescription": "The monitor object, which includes its current status ('down') and a list of associated notification channels, is passed to the `NotificationService`.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/service/v2/infrastructure/NotificationService.ts",
|
|
"startLine": "7",
|
|
"endLine": "7",
|
|
"relevantVariables": [
|
|
"handleNotifications",
|
|
"monitor"
|
|
]
|
|
},
|
|
"inputDataExample": "{\n \"monitor\": {\n \"_id\": \"60d5f1b31c9d440000a1b2c4\",\n \"name\": \"Main API\",\n \"status\": \"down\",\n \"notifications\": [\"60d5ecf31c9d440000a1b2c3\"]\n }\n}",
|
|
"outputDataExample": "{\n \"monitor\": {\n \"_id\": \"60d5f1b31c9d440000a1b2c4\",\n \"name\": \"Main API\",\n \"status\": \"down\",\n \"notifications\": [\"60d5ecf31c9d440000a1b2c3\"]\n }\n}"
|
|
},
|
|
{
|
|
"simStepId": "8d1176f3-c755-401d-9ca8-234689b4b837",
|
|
"diagramNodeId": "78e5cb9f-6a97-4d31-a487-fe7dbce5d7d1",
|
|
"simStepLabel": "Flow 2: Dispatch Alerts",
|
|
"simStepDescription": "The `handleNotifications` method retrieves the full details for each associated notification channel. It then iterates through them, using specific provider services (e.g., `SlackService`, `EmailService`) to format and send a tailored alert message for each channel, notifying users that the monitor is down.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/service/v2/infrastructure/NotificationService.ts",
|
|
"startLine": "28",
|
|
"endLine": "57",
|
|
"relevantVariables": [
|
|
"handleNotifications",
|
|
"channels",
|
|
"emailService.send",
|
|
"slackService.send",
|
|
"discordService.send"
|
|
]
|
|
},
|
|
"inputDataExample": "{\n \"monitor\": {\n \"_id\": \"60d5f1b31c9d440000a1b2c4\",\n \"name\": \"Main API\",\n \"status\": \"down\",\n \"notifications\": [\"60d5ecf31c9d440000a1b2c3\"]\n }\n}",
|
|
"outputDataExample": "{\n \"dispatchResults\": [\n {\n \"channelId\": \"60d5ecf31c9d440000a1b2c3\",\n \"status\": \"success\"\n }\n ]\n}"
|
|
}
|
|
],
|
|
"description": "<ul><li>A critical feature that makes the monitoring data actionable by alerting users when an issue is detected</li><li>- Users can create and manage notification channels for different services</li><li>- Supports a wide range of notification providers including Email, Slack, Discord, Webhooks, PagerDuty, and Matrix</li><li>- Notifications are triggered based on monitor status changes (e</li><li>g</li><li>, from 'up' to 'down') or when hardware metrics cross pre-defined thresholds</li><li>- Users can test notification configurations to ensure they are working correctly before attaching them to monitors</li></ul>",
|
|
"simulationNodesAndEdges": {
|
|
"15486629-84b3-463a-962b-06083f69e4bf": {
|
|
"simStepIds": [
|
|
"e924ec15-1bea-4e3b-befb-a8bf30cbf740"
|
|
]
|
|
},
|
|
"a07b805e-e55f-46cb-b54b-765b7813b0ca": {
|
|
"simStepIds": [
|
|
"383c6be8-aa51-4398-9ae3-21035413f73a"
|
|
]
|
|
},
|
|
"d0a4737f-715f-4f50-b6d5-5e4b31f86f93": {
|
|
"simStepIds": [
|
|
"2f9266c9-4cbc-4b50-a280-cf8b5800d540"
|
|
]
|
|
},
|
|
"4a796ccf-40a9-4446-a109-6a6eed52e898": {
|
|
"simStepIds": [
|
|
"d29ab4ab-be50-4f17-af6e-2c61cec9d0ab"
|
|
]
|
|
},
|
|
"29c2c56e-9dc0-4304-bfbf-e0c0f8915a39": {
|
|
"simStepIds": [
|
|
"c1b17b64-90e9-48bc-8927-25d7ebfc3036"
|
|
]
|
|
},
|
|
"1cc01e08-4a6c-4526-b8a7-5ee8a06c1709": {
|
|
"simStepIds": [
|
|
"f29f9be1-a0cd-43a3-b259-e5105a25ce41"
|
|
]
|
|
},
|
|
"28f1eabb-4f24-4944-8a0a-04f41ceb8589": {
|
|
"simStepIds": [
|
|
"157cec87-9b76-4a1c-9d85-0a6d3decbaa3"
|
|
]
|
|
},
|
|
"31fe5a28-0640-4b52-841b-dd02e2ae646e": {
|
|
"simStepIds": [
|
|
"55ad645b-118a-478e-a00c-09ef82357008"
|
|
]
|
|
},
|
|
"78e5cb9f-6a97-4d31-a487-fe7dbce5d7d1": {
|
|
"simStepIds": [
|
|
"8d1176f3-c755-401d-9ca8-234689b4b837"
|
|
]
|
|
},
|
|
"54497b9a-4910-4df4-b016-480b9ac250a7": {
|
|
"simStepIds": [
|
|
"71dbcd41-c6d4-4514-b5a4-6c966ca7ba6f"
|
|
]
|
|
},
|
|
"dc135d8d-0515-403d-ae58-f3c04647b2ae": {
|
|
"simStepIds": [
|
|
"162d8d2f-6cd1-45fa-8711-1ee85c5f86ef"
|
|
]
|
|
},
|
|
"7b9ebb0e-a6b2-438c-bfed-9c851a1bccbc": {
|
|
"simStepIds": [
|
|
"73e63d2f-2b43-488d-9e86-170f511673f5"
|
|
]
|
|
},
|
|
"279155cd-ff31-41a2-8f5f-a538f01bfa66": {
|
|
"simStepIds": [
|
|
"d390ef45-f2fe-4806-a45a-cc9c84b48a5a"
|
|
]
|
|
},
|
|
"57018b30-e2f4-4eb2-a1da-fe75afbb8c2f": {
|
|
"simStepIds": [
|
|
"6f2bf027-50d9-472e-9569-808a64fce7cf"
|
|
]
|
|
},
|
|
"50797935-1447-47a4-891b-9e886e5601fa": {
|
|
"simStepIds": [
|
|
"b7ec7415-fcae-4077-8c19-302a015b00b5"
|
|
]
|
|
},
|
|
"c778c6b9-c12e-45c0-8682-2c9e892867b0": {
|
|
"simStepIds": [
|
|
"b7259d77-c8df-4060-ac03-58728ae3eb54"
|
|
]
|
|
}
|
|
},
|
|
"isAIGenerated": true,
|
|
"keywords": "NotificationService, sendNotification, createNotification",
|
|
"generationPrompt": "Multi-Channel Alerting and Notifications",
|
|
"generationKeywords": "NotificationService, sendNotification, createNotification"
|
|
},
|
|
"Customizable Public and Private Status Pages": {
|
|
"name": "Customizable Public and Private Status Pages",
|
|
"simSteps": [
|
|
{
|
|
"simStepId": "de7b5d1f-b370-42a4-a410-4178f1e2d3a6",
|
|
"diagramNodeId": "00289d11-0015-4b2a-9c5b-dc9fd0f32b80",
|
|
"simStepLabel": "Create Status Page: User Initiates Creation",
|
|
"simStepDescription": "The user navigates to the 'Create Status Page' screen. The `CreateStatusPage` component renders the UI, including tabs for configuration, and initializes the form state.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Pages/v1/StatusPage/Create/index.jsx",
|
|
"startLine": "26",
|
|
"endLine": "313",
|
|
"relevantVariables": [
|
|
"CreateStatusPage",
|
|
"form",
|
|
"setForm",
|
|
"errors",
|
|
"setErrors",
|
|
"handleFormChange",
|
|
"handleSubmit"
|
|
]
|
|
},
|
|
"inputDataExample": "{}",
|
|
"outputDataExample": "{\"form\":{\"companyName\":\"\",\"url\":\"\",\"timezone\":\"UTC\",\"color\":\"#FF5733\",\"isPublished\":false,\"logo\":null,\"monitors\":[],\"showUptimePercentage\":true,\"showCharts\":true,\"showAdminLoginLink\":false},\"errors\":{}}"
|
|
},
|
|
{
|
|
"simStepId": "d419f7b6-7b9b-4494-9fad-83e3ce208ca4",
|
|
"diagramNodeId": "de23eee2-b60a-4236-a890-3c5b78388bb3",
|
|
"simStepLabel": "Create Status Page: Form Submission",
|
|
"simStepDescription": "The user fills out the form and clicks the 'Save' button, which triggers the `handleSubmit` function. This function validates the form data and calls the `createStatusPage` function from the `useCreateStatusPage` hook.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Pages/v1/StatusPage/Create/index.jsx",
|
|
"startLine": "143",
|
|
"endLine": "159",
|
|
"relevantVariables": [
|
|
"handleSubmit",
|
|
"createStatusPage"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"form\":{\"companyName\":\"My Awesome Service\",\"url\":\"my-awesome-service\",\"timezone\":\"America/New_York\",\"color\":\"#3B82F6\",\"isPublished\":true,\"logo\":{\"src\":\"data:image/png;base64,...\",\"name\":\"logo.png\",\"type\":\"image/png\",\"size\":12345},\"monitors\":[\"65aee7cc1c363d5032a03972\"],\"showUptimePercentage\":true,\"showCharts\":true,\"showAdminLoginLink\":true}}",
|
|
"outputDataExample": "{\"form\":{\"companyName\":\"My Awesome Service\",\"url\":\"my-awesome-service\",\"timezone\":\"America/New_York\",\"color\":\"#3B82F6\",\"isPublished\":true,\"logo\":{\"src\":\"data:image/png;base64,...\",\"name\":\"logo.png\",\"type\":\"image/png\",\"size\":12345},\"monitors\":[\"65aee7cc1c363d5032a03972\"],\"showUptimePercentage\":true,\"showCharts\":true,\"showAdminLoginLink\":true}}"
|
|
},
|
|
{
|
|
"simStepId": "3c99ae6a-b671-4f47-bed0-ddccd8ff5d35",
|
|
"diagramNodeId": "aa5d6d07-05f0-45f3-b19a-199af50e35f1",
|
|
"simStepLabel": "Create Status Page: Client Hook Sends API Request",
|
|
"simStepDescription": "The `useCreateStatusPage` hook receives the form data and uses the `networkService` to send a request to the backend API to create or update the status page.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Pages/v1/StatusPage/Create/Hooks/useCreateStatusPage.jsx",
|
|
"startLine": "8",
|
|
"endLine": "11",
|
|
"relevantVariables": [
|
|
"createStatusPage",
|
|
"networkService.createStatusPage"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"form\":{\"companyName\":\"My Awesome Service\",\"url\":\"my-awesome-service\",\"timezone\":\"America/New_York\",\"color\":\"#3B82F6\",\"isPublished\":true,\"logo\":{\"src\":\"data:image/png;base64,...\"},\"monitors\":[\"65aee7cc1c363d5032a03972\"]}}",
|
|
"outputDataExample": "{}"
|
|
},
|
|
{
|
|
"simStepId": "8a2ab372-73db-4b9f-bc0e-6a20f15a4d79",
|
|
"diagramNodeId": "d7faa713-4204-4a97-a172-d621da36c287",
|
|
"simStepLabel": "Create Status Page: API Call to Backend",
|
|
"simStepDescription": "The `NetworkService` class constructs a `FormData` object from the form data and sends a POST request to the `/api/v1/status-page` endpoint. The logo is sent as a file upload.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Utils/NetworkService.js",
|
|
"startLine": "912",
|
|
"endLine": "944",
|
|
"relevantVariables": [
|
|
"createStatusPage",
|
|
"axiosInstance.post"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"form\":{\"companyName\":\"My Awesome Service\",\"url\":\"my-awesome-service\"...}, \"isCreate\": true}",
|
|
"outputDataExample": "{\"form\":{\"companyName\":\"My Awesome Service\",\"url\":\"my-awesome-service\"...}, \"isCreate\": true}"
|
|
},
|
|
{
|
|
"simStepId": "84f11567-b3c4-42a2-aa7f-d78c1412099a",
|
|
"diagramNodeId": "3efddcad-588f-4492-9808-b0c81c823c96",
|
|
"simStepLabel": "Create Status Page: Backend Route Handling",
|
|
"simStepDescription": "The backend router receives the POST request on `/api/v1/status-page`. It uses `multer` to handle the file upload and forwards the request to the `createStatusPage` method in the `StatusPageController`.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/routes/v1/statusPageRoute.js",
|
|
"startLine": "14",
|
|
"endLine": "14",
|
|
"relevantVariables": [
|
|
"router.post",
|
|
"upload.single",
|
|
"verifyJWT",
|
|
"this.statusPageController.createStatusPage"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"method\":\"POST\",\"url\":\"/api/v1/status-page\",\"body\":{\"companyName\":\"My Awesome Service\",...},\"file\":{...}}",
|
|
"outputDataExample": "{\"req\":{...},\"res\":{...}}"
|
|
},
|
|
{
|
|
"simStepId": "0923a533-c572-4da3-ad87-cdfff111f3bb",
|
|
"diagramNodeId": "a3f28fa6-8268-4c13-95a0-83e3b1abdcb0",
|
|
"simStepLabel": "Create Status Page: Data Passed to Controller",
|
|
"simStepDescription": "The router passes the request object, containing form data in `req.body`, the uploaded logo in `req.file`, and user details in `req.user`, to the controller method.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/routes/v1/statusPageRoute.js",
|
|
"startLine": "14",
|
|
"endLine": "14",
|
|
"relevantVariables": [
|
|
"statusPageController.createStatusPage"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"req\":{\"body\":{\"companyName\":\"My Awesome Service\",...},\"file\":{\"fieldname\":\"logo\",...},\"user\":{\"_id\":\"65aee7cc1c363d5032a03970\",\"teamId\":\"65aee7cc1c363d5032a03971\"}}}",
|
|
"outputDataExample": "{\"req\":{\"body\":{\"companyName\":\"My Awesome Service\",...},\"file\":{\"fieldname\":\"logo\",...},\"user\":{\"_id\":\"65aee7cc1c363d5032a03970\",\"teamId\":\"65aee7cc1c363d5032a03971\"}}}"
|
|
},
|
|
{
|
|
"simStepId": "01694730-8a75-4949-8815-bb4d6e3e2b42",
|
|
"diagramNodeId": "f15ef77e-380f-4768-98cb-7f0dd4113841",
|
|
"simStepLabel": "Create Status Page: Controller Logic",
|
|
"simStepDescription": "The `StatusPageController` validates the incoming request body and file. It then calls the `statusPageModule` to persist the new status page in the database.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/controllers/v1/statusPageController.js",
|
|
"startLine": "18",
|
|
"endLine": "24",
|
|
"relevantVariables": [
|
|
"createStatusPageBodyValidation",
|
|
"imageValidation",
|
|
"this.db.statusPageModule.createStatusPage"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"req\":{\"body\":{...},\"file\":{...},\"user\":{...}}}",
|
|
"outputDataExample": "{\"statusPageData\":{...},\"image\":{...},\"userId\":\"65aee7cc1c363d5032a03970\",\"teamId\":\"65aee7cc1c363d5032a03971\"}"
|
|
},
|
|
{
|
|
"simStepId": "67603f03-c088-4ed0-9f18-072435134cdd",
|
|
"diagramNodeId": "9735611c-924b-49aa-92e8-10d8a86ac288",
|
|
"simStepLabel": "Create Status Page: Data Sent to DB Module",
|
|
"simStepDescription": "The controller passes the processed status page data, image buffer, user ID, and team ID to the `createStatusPage` function in the database module.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/controllers/v1/statusPageController.js",
|
|
"startLine": "21",
|
|
"endLine": "21",
|
|
"relevantVariables": [
|
|
"this.db.statusPageModule.createStatusPage"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"statusPageData\":{\"companyName\":\"My Awesome Service\",...},\"image\":{\"buffer\":<Buffer>,\"mimetype\":\"image/png\"},\"userId\":\"65aee7cc1c363d5032a03970\",\"teamId\":\"65aee7cc1c363d5032a03971\"}",
|
|
"outputDataExample": "{\"statusPageData\":{\"companyName\":\"My Awesome Service\",...},\"image\":{\"buffer\":<Buffer>,\"mimetype\":\"image/png\"},\"userId\":\"65aee7cc1c363d5032a03970\",\"teamId\":\"65aee7cc1c363d5032a03971\"}"
|
|
},
|
|
{
|
|
"simStepId": "b6fa93cd-6fca-4d9e-969a-5400e2437ee8",
|
|
"diagramNodeId": "e234917e-a950-48f5-b864-cd957b2216e1",
|
|
"simStepLabel": "Create Status Page: Database Record Creation",
|
|
"simStepDescription": "The `StatusPageModule` creates a new instance of the `StatusPage` Mongoose model, populates it with the provided data including the image buffer, and saves it to the MongoDB database. It also handles duplicate URL errors.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/db/v1/modules/statusPageModule.js",
|
|
"startLine": "14",
|
|
"endLine": "34",
|
|
"relevantVariables": [
|
|
"createStatusPage",
|
|
"new this.StatusPage",
|
|
"statusPage.save"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"statusPageData\":{...},\"image\":{...},\"userId\":\"...\",\"teamId\":\"...\"}",
|
|
"outputDataExample": "{\"_id\":\"65aee7dd1c363d5032a03975\",\"companyName\":\"My Awesome Service\",\"url\":\"my-awesome-service\",\"userId\":\"65aee7cc1c363d5032a03970\",...}"
|
|
},
|
|
{
|
|
"simStepId": "ea4b3532-baae-4890-a73e-2ca385d0319e",
|
|
"diagramNodeId": "40cb7d7b-2888-44de-bb7d-7735af70ba34",
|
|
"simStepLabel": "Create Status Page: Database Result Returned",
|
|
"simStepDescription": "The newly created status page document is returned from the database module to the controller.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/db/v1/modules/statusPageModule.js",
|
|
"startLine": "27",
|
|
"endLine": "27",
|
|
"relevantVariables": [
|
|
"statusPage"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"_id\":\"65aee7dd1c363d5032a03975\",\"companyName\":\"My Awesome Service\",\"url\":\"my-awesome-service\",...}",
|
|
"outputDataExample": "{\"_id\":\"65aee7dd1c363d5032a03975\",\"companyName\":\"My Awesome Service\",\"url\":\"my-awesome-service\",...}"
|
|
},
|
|
{
|
|
"simStepId": "2a115421-5175-4c8f-8cdd-62f3fe148af5",
|
|
"diagramNodeId": "058ded1f-83ce-40a7-a99d-d178c81fe557",
|
|
"simStepLabel": "Create Status Page: Controller Sends Success Response",
|
|
"simStepDescription": "The controller receives the newly created status page object from the database module and sends a successful JSON response back to the client, including a success message and the new data.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/controllers/v1/statusPageController.js",
|
|
"startLine": "25",
|
|
"endLine": "28",
|
|
"relevantVariables": [
|
|
"res.success"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"_id\":\"65aee7dd1c363d5032a03975\",\"companyName\":\"My Awesome Service\",...}",
|
|
"outputDataExample": "{\"msg\":\"Status page created successfully\",\"data\":{\"_id\":\"65aee7dd1c363d5032a03975\",...}}"
|
|
},
|
|
{
|
|
"simStepId": "210acc07-81c3-4394-b566-41f6031e8eeb",
|
|
"diagramNodeId": "c3f83811-8674-4dbb-9f84-79499f97fb1f",
|
|
"simStepLabel": "Create Status Page: UI Receives Response and Redirects",
|
|
"simStepDescription": "The client-side `handleSubmit` function receives the successful response. It displays a success toast message and navigates the user to the newly created status page.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Pages/v1/StatusPage/Create/index.jsx",
|
|
"startLine": "151",
|
|
"endLine": "156",
|
|
"relevantVariables": [
|
|
"createToast",
|
|
"navigate"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"success\":true}",
|
|
"outputDataExample": "{\"success\":true}"
|
|
},
|
|
{
|
|
"simStepId": "132354d7-df7a-4e03-9d00-16d54f836a1b",
|
|
"diagramNodeId": "30aaee38-f509-4e19-a917-e6d2f4bba61c",
|
|
"simStepLabel": "View Status Page: User Navigates to URL",
|
|
"simStepDescription": "A user accesses a status page URL (e.g., /status/uptime/my-awesome-service). The React router matches the path and renders the `Status` component, which is responsible for fetching and displaying the page details.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Routes/index.jsx",
|
|
"startLine": "148",
|
|
"endLine": "152",
|
|
"relevantVariables": [
|
|
"Route",
|
|
"Status"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"url\":\"/status/uptime/my-awesome-service\"}",
|
|
"outputDataExample": "{}"
|
|
},
|
|
{
|
|
"simStepId": "2ba49e28-1cac-47f5-9118-ab930788736a",
|
|
"diagramNodeId": "0575bf87-5362-4988-b895-7e514148d420",
|
|
"simStepLabel": "View Status Page: Component Triggers Data Fetch",
|
|
"simStepDescription": "The `Status` component mounts and calls the `useStatusPageFetch` hook, which is responsible for initiating the API call to fetch the status page data from the backend.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Pages/v1/StatusPage/Status/index.jsx",
|
|
"startLine": "29",
|
|
"endLine": "29",
|
|
"relevantVariables": [
|
|
"useStatusPageFetch"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"isCreate\":false, \"url\":\"my-awesome-service\"}",
|
|
"outputDataExample": "{\"isCreate\":false, \"url\":\"my-awesome-service\"}"
|
|
},
|
|
{
|
|
"simStepId": "b57bb249-9066-454e-aa8c-89108fdfcc2e",
|
|
"diagramNodeId": "ecfb2d04-2681-4f16-af75-632f69e1a868",
|
|
"simStepLabel": "View Status Page: Client Hook Sends API Request",
|
|
"simStepDescription": "The `useStatusPageFetch` hook uses the `networkService` to send a GET request to the backend API to retrieve the status page data based on its URL.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Pages/v1/StatusPage/Status/Hooks/useStatusPageFetch.jsx",
|
|
"startLine": "15",
|
|
"endLine": "18",
|
|
"relevantVariables": [
|
|
"fetchStatusPage",
|
|
"networkService.getStatusPageByUrl"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"url\":\"my-awesome-service\", \"type\":\"uptime\"}",
|
|
"outputDataExample": "{}"
|
|
},
|
|
{
|
|
"simStepId": "de0714d2-bf1e-4a1a-a389-60793de8b772",
|
|
"diagramNodeId": "ae1c9341-0e39-4d91-a9ac-5cc8a627c247",
|
|
"simStepLabel": "View Status Page: API Call to Backend",
|
|
"simStepDescription": "The `NetworkService` class makes a GET request to the `/api/v1/status-page/:url` endpoint to fetch the status page details.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Utils/NetworkService.js",
|
|
"startLine": "896",
|
|
"endLine": "902",
|
|
"relevantVariables": [
|
|
"getStatusPageByUrl",
|
|
"axiosInstance.get"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"url\":\"my-awesome-service\",\"type\":\"uptime\"}",
|
|
"outputDataExample": "{\"url\":\"my-awesome-service\",\"type\":\"uptime\"}"
|
|
},
|
|
{
|
|
"simStepId": "477c6821-b29b-4b38-8930-ced21b8a75e5",
|
|
"diagramNodeId": "2e26cd2f-1413-4c16-8e63-ea7808ab6c52",
|
|
"simStepLabel": "View Status Page: Backend Route Handling",
|
|
"simStepDescription": "The backend router receives the GET request on `/api/v1/status-page/:url` and forwards it to the `getStatusPageByUrl` method in the `StatusPageController`.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/routes/v1/statusPageRoute.js",
|
|
"startLine": "16",
|
|
"endLine": "16",
|
|
"relevantVariables": [
|
|
"router.get",
|
|
"this.statusPageController.getStatusPageByUrl"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"method\":\"GET\",\"url\":\"/api/v1/status-page/my-awesome-service\"}",
|
|
"outputDataExample": "{\"req\":{...},\"res\":{...}}"
|
|
},
|
|
{
|
|
"simStepId": "b79b8922-4de6-477d-8648-37b4bd9a6767",
|
|
"diagramNodeId": "5735f30c-b55f-444a-9236-f3d75f68ed27",
|
|
"simStepLabel": "View Status Page: Data Passed to Controller",
|
|
"simStepDescription": "The router passes the request object, containing the URL in `req.params`, to the controller method.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/routes/v1/statusPageRoute.js",
|
|
"startLine": "16",
|
|
"endLine": "16",
|
|
"relevantVariables": [
|
|
"statusPageController.getStatusPageByUrl"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"req\":{\"params\":{\"url\":\"my-awesome-service\"}}}",
|
|
"outputDataExample": "{\"req\":{\"params\":{\"url\":\"my-awesome-service\"}}}"
|
|
},
|
|
{
|
|
"simStepId": "5bdbd179-ce8f-4171-a073-af72a99b4468",
|
|
"diagramNodeId": "9f217674-4cd7-4ef8-b088-d5620042a7ba",
|
|
"simStepLabel": "View Status Page: Controller Logic",
|
|
"simStepDescription": "The `StatusPageController` validates the request parameters and calls the `statusPageModule` to retrieve the status page data from the database.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/controllers/v1/statusPageController.js",
|
|
"startLine": "75",
|
|
"endLine": "78",
|
|
"relevantVariables": [
|
|
"getStatusPageByUrl",
|
|
"this.db.statusPageModule.getStatusPageByUrl"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"req\":{\"params\":{\"url\":\"my-awesome-service\"}}}",
|
|
"outputDataExample": "{\"url\":\"my-awesome-service\"}"
|
|
},
|
|
{
|
|
"simStepId": "788307ef-4cfa-4f5a-b2e9-a0bfc7a378d8",
|
|
"diagramNodeId": "dace45d6-fb25-4dae-b940-49ef7d77bbed",
|
|
"simStepLabel": "View Status Page: URL Sent to DB Module",
|
|
"simStepDescription": "The controller passes the URL string to the `getStatusPageByUrl` function in the database module.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/controllers/v1/statusPageController.js",
|
|
"startLine": "78",
|
|
"endLine": "78",
|
|
"relevantVariables": [
|
|
"this.db.statusPageModule.getStatusPageByUrl"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"url\":\"my-awesome-service\"}",
|
|
"outputDataExample": "{\"url\":\"my-awesome-service\"}"
|
|
},
|
|
{
|
|
"simStepId": "ceb044e9-6545-4d04-bf79-ec8146eb8ec9",
|
|
"diagramNodeId": "26da60f9-dde4-44ec-be89-91858cc14f90",
|
|
"simStepLabel": "View Status Page: Database Record Retrieval",
|
|
"simStepDescription": "The `StatusPageModule` executes a complex MongoDB aggregation pipeline to find the status page by its URL, and then look up and join data for all associated monitors and their recent checks.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/db/v1/modules/statusPageModule.js",
|
|
"startLine": "89",
|
|
"endLine": "299",
|
|
"relevantVariables": [
|
|
"getStatusPage",
|
|
"this.StatusPage.aggregate"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"url\":\"my-awesome-service\"}",
|
|
"outputDataExample": "{\"statusPage\":{\"_id\":\"...\",\"companyName\":\"My Awesome Service\",...},\"monitors\":[{\"_id\":\"...\",\"name\":\"Main Website\",...}]}"
|
|
},
|
|
{
|
|
"simStepId": "4d3fad92-8fa9-4a8f-be3b-f09eda2f8dd4",
|
|
"diagramNodeId": "137a5ab7-1e49-42ec-869d-58f7f2380cb3",
|
|
"simStepLabel": "View Status Page: Database Result Returned",
|
|
"simStepDescription": "The aggregated status page and monitor data is returned from the database module to the controller.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/db/v1/modules/statusPageModule.js",
|
|
"startLine": "291",
|
|
"endLine": "291",
|
|
"relevantVariables": [
|
|
"statusPage",
|
|
"normalizedMonitors"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"statusPage\":{...},\"monitors\":[...]}",
|
|
"outputDataExample": "{\"statusPage\":{...},\"monitors\":[...]}"
|
|
},
|
|
{
|
|
"simStepId": "83224406-2f1d-4030-9beb-d65c2baf544d",
|
|
"diagramNodeId": "d76e70e0-41f9-46cc-b775-b2027c5a0d5b",
|
|
"simStepLabel": "View Status Page: Controller Sends Success Response",
|
|
"simStepDescription": "The controller receives the status page data and sends a successful JSON response back to the client.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/controllers/v1/statusPageController.js",
|
|
"startLine": "79",
|
|
"endLine": "82",
|
|
"relevantVariables": [
|
|
"res.success"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"statusPage\":{...},\"monitors\":[...]}",
|
|
"outputDataExample": "{\"msg\":\"Got status page by url successfully\",\"data\":{\"statusPage\":{...},\"monitors\":[...]}}"
|
|
},
|
|
{
|
|
"simStepId": "d5f3c300-9777-4e09-bb05-f1281c2ff29a",
|
|
"diagramNodeId": "04a33e4f-1dfe-4c5a-8b30-01ed0591c380",
|
|
"simStepLabel": "View Status Page: UI Receives Data",
|
|
"simStepDescription": "The `useStatusPageFetch` hook receives the API response, processes the data, and updates the component's state, triggering a re-render.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Pages/v1/StatusPage/Status/Hooks/useStatusPageFetch.jsx",
|
|
"startLine": "20",
|
|
"endLine": "26",
|
|
"relevantVariables": [
|
|
"setStatusPage",
|
|
"setMonitors",
|
|
"getMonitorWithPercentage"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"data\":{\"data\":{\"statusPage\":{...},\"monitors\":[...]}}}",
|
|
"outputDataExample": "{\"statusPage\":{...},\"monitors\":[...]}"
|
|
},
|
|
{
|
|
"simStepId": "3d51e811-a659-442e-97e0-00798cd15647",
|
|
"diagramNodeId": "f59b91de-5196-4a43-9d57-3f28402c0672",
|
|
"simStepLabel": "View Status Page: Component Renders UI",
|
|
"simStepDescription": "The `Status` component re-renders with the fetched data. It displays the company name, logo, overall status bar, and a list of monitors with their individual status and historical uptime charts.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Pages/v1/StatusPage/Status/index.jsx",
|
|
"startLine": "145",
|
|
"endLine": "163",
|
|
"relevantVariables": [
|
|
"ControlsHeader",
|
|
"StatusBar",
|
|
"MonitorsList"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"statusPage\":{...},\"monitors\":[...]}",
|
|
"outputDataExample": "{}"
|
|
}
|
|
],
|
|
"description": "<ul><li>Allows users to create dedicated pages to communicate the status of their services to internal teams or external customers</li><li>- Users can create a status page with a custom URL, company name, and logo</li><li>- Select which monitors to display on the status page, providing granular control over what information is shared</li><li>- Options to show or hide historical charts and uptime percentages for transparency</li><li>- Includes settings for custom CSS and an optional link back to the admin login page</li></ul>",
|
|
"simulationNodesAndEdges": {
|
|
"00289d11-0015-4b2a-9c5b-dc9fd0f32b80": {
|
|
"simStepIds": [
|
|
"de7b5d1f-b370-42a4-a410-4178f1e2d3a6"
|
|
]
|
|
},
|
|
"aa5d6d07-05f0-45f3-b19a-199af50e35f1": {
|
|
"simStepIds": [
|
|
"3c99ae6a-b671-4f47-bed0-ddccd8ff5d35"
|
|
]
|
|
},
|
|
"3efddcad-588f-4492-9808-b0c81c823c96": {
|
|
"simStepIds": [
|
|
"84f11567-b3c4-42a2-aa7f-d78c1412099a"
|
|
]
|
|
},
|
|
"f15ef77e-380f-4768-98cb-7f0dd4113841": {
|
|
"simStepIds": [
|
|
"01694730-8a75-4949-8815-bb4d6e3e2b42"
|
|
]
|
|
},
|
|
"e234917e-a950-48f5-b864-cd957b2216e1": {
|
|
"simStepIds": [
|
|
"b6fa93cd-6fca-4d9e-969a-5400e2437ee8"
|
|
]
|
|
},
|
|
"058ded1f-83ce-40a7-a99d-d178c81fe557": {
|
|
"simStepIds": [
|
|
"2a115421-5175-4c8f-8cdd-62f3fe148af5"
|
|
]
|
|
},
|
|
"30aaee38-f509-4e19-a917-e6d2f4bba61c": {
|
|
"simStepIds": [
|
|
"132354d7-df7a-4e03-9d00-16d54f836a1b"
|
|
]
|
|
},
|
|
"ecfb2d04-2681-4f16-af75-632f69e1a868": {
|
|
"simStepIds": [
|
|
"b57bb249-9066-454e-aa8c-89108fdfcc2e"
|
|
]
|
|
},
|
|
"2e26cd2f-1413-4c16-8e63-ea7808ab6c52": {
|
|
"simStepIds": [
|
|
"477c6821-b29b-4b38-8930-ced21b8a75e5"
|
|
]
|
|
},
|
|
"9f217674-4cd7-4ef8-b088-d5620042a7ba": {
|
|
"simStepIds": [
|
|
"5bdbd179-ce8f-4171-a073-af72a99b4468"
|
|
]
|
|
},
|
|
"26da60f9-dde4-44ec-be89-91858cc14f90": {
|
|
"simStepIds": [
|
|
"ceb044e9-6545-4d04-bf79-ec8146eb8ec9"
|
|
]
|
|
},
|
|
"d76e70e0-41f9-46cc-b775-b2027c5a0d5b": {
|
|
"simStepIds": [
|
|
"83224406-2f1d-4030-9beb-d65c2baf544d"
|
|
]
|
|
},
|
|
"f59b91de-5196-4a43-9d57-3f28402c0672": {
|
|
"simStepIds": [
|
|
"3d51e811-a659-442e-97e0-00798cd15647"
|
|
]
|
|
},
|
|
"de23eee2-b60a-4236-a890-3c5b78388bb3": {
|
|
"simStepIds": [
|
|
"d419f7b6-7b9b-4494-9fad-83e3ce208ca4"
|
|
]
|
|
},
|
|
"d7faa713-4204-4a97-a172-d621da36c287": {
|
|
"simStepIds": [
|
|
"8a2ab372-73db-4b9f-bc0e-6a20f15a4d79"
|
|
]
|
|
},
|
|
"a3f28fa6-8268-4c13-95a0-83e3b1abdcb0": {
|
|
"simStepIds": [
|
|
"0923a533-c572-4da3-ad87-cdfff111f3bb"
|
|
]
|
|
},
|
|
"9735611c-924b-49aa-92e8-10d8a86ac288": {
|
|
"simStepIds": [
|
|
"67603f03-c088-4ed0-9f18-072435134cdd"
|
|
]
|
|
},
|
|
"40cb7d7b-2888-44de-bb7d-7735af70ba34": {
|
|
"simStepIds": [
|
|
"ea4b3532-baae-4890-a73e-2ca385d0319e"
|
|
]
|
|
},
|
|
"c3f83811-8674-4dbb-9f84-79499f97fb1f": {
|
|
"simStepIds": [
|
|
"210acc07-81c3-4394-b566-41f6031e8eeb"
|
|
]
|
|
},
|
|
"0575bf87-5362-4988-b895-7e514148d420": {
|
|
"simStepIds": [
|
|
"2ba49e28-1cac-47f5-9118-ab930788736a"
|
|
]
|
|
},
|
|
"ae1c9341-0e39-4d91-a9ac-5cc8a627c247": {
|
|
"simStepIds": [
|
|
"de0714d2-bf1e-4a1a-a389-60793de8b772"
|
|
]
|
|
},
|
|
"5735f30c-b55f-444a-9236-f3d75f68ed27": {
|
|
"simStepIds": [
|
|
"b79b8922-4de6-477d-8648-37b4bd9a6767"
|
|
]
|
|
},
|
|
"dace45d6-fb25-4dae-b940-49ef7d77bbed": {
|
|
"simStepIds": [
|
|
"788307ef-4cfa-4f5a-b2e9-a0bfc7a378d8"
|
|
]
|
|
},
|
|
"137a5ab7-1e49-42ec-869d-58f7f2380cb3": {
|
|
"simStepIds": [
|
|
"4d3fad92-8fa9-4a8f-be3b-f09eda2f8dd4"
|
|
]
|
|
},
|
|
"04a33e4f-1dfe-4c5a-8b30-01ed0591c380": {
|
|
"simStepIds": [
|
|
"d5f3c300-9777-4e09-bb05-f1281c2ff29a"
|
|
]
|
|
}
|
|
},
|
|
"isAIGenerated": true,
|
|
"keywords": "StatusPage, createStatusPage, getStatusPageByUrl",
|
|
"generationPrompt": "Customizable Public and Private Status Pages",
|
|
"generationKeywords": "StatusPage, createStatusPage, getStatusPageByUrl"
|
|
},
|
|
"Incident History, Analysis, and Management": {
|
|
"name": "Incident History, Analysis, and Management",
|
|
"simSteps": [
|
|
{
|
|
"simStepId": "35195328-9847-4678-b014-9331553f0d19",
|
|
"diagramNodeId": "78a8a7c5-41d3-4453-a7f7-ac632bbef288",
|
|
"simStepLabel": "Navigate to Monitor Details",
|
|
"simStepDescription": "The user navigates to the details page for a specific uptime monitor. The `UptimeDetails` component mounts and initializes its state and hooks.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Pages/v1/Uptime/Details/index.jsx",
|
|
"startLine": "27",
|
|
"endLine": "188",
|
|
"relevantVariables": [
|
|
"UptimeDetails",
|
|
"useParams",
|
|
"useFetchChecksByMonitor"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"url\": \"/uptime/65a12f60e9a5d109f7596a77\"}",
|
|
"outputDataExample": "{\"monitorId\": \"65a12f60e9a5d109f7596a77\"}"
|
|
},
|
|
{
|
|
"simStepId": "49979250-1a32-4da5-95e0-58652fe218f9",
|
|
"diagramNodeId": "e90e4943-6108-46e3-8a2c-a9a1c7361279",
|
|
"simStepLabel": "Trigger Check History Fetch",
|
|
"simStepDescription": "The `UptimeDetails` component calls the `useFetchChecksByMonitor` hook to retrieve the historical check data for the specified monitor.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Pages/v1/Uptime/Details/index.jsx",
|
|
"startLine": "69",
|
|
"endLine": "77",
|
|
"relevantVariables": [
|
|
"useFetchChecksByMonitor"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"monitorId\": \"65a12f60e9a5d109f7596a77\", \"type\": \"http\", \"sortOrder\": \"desc\", \"page\": 0, \"rowsPerPage\": 10}",
|
|
"outputDataExample": "{\"monitorId\": \"65a12f60e9a5d109f7596a77\", \"type\": \"http\", \"sortOrder\": \"desc\", \"page\": 0, \"rowsPerPage\": 10}"
|
|
},
|
|
{
|
|
"simStepId": "8dc4347c-3e9e-40d7-ae6f-54684f2e6956",
|
|
"diagramNodeId": "4a5847d0-91a0-4b4c-8517-2f4ff9a7e8d4",
|
|
"simStepLabel": "Fetch Monitor Checks Hook",
|
|
"simStepDescription": "The `useFetchChecksByMonitor` custom hook executes. It sets the loading state and prepares to call the network service to fetch the data from the backend API.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Hooks/v1/checkHooks.js",
|
|
"startLine": "89",
|
|
"endLine": "121",
|
|
"relevantVariables": [
|
|
"useFetchChecksByMonitor",
|
|
"useEffect",
|
|
"networkService.getChecksByMonitor"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"monitorId\": \"65a12f60e9a5d109f7596a77\", \"page\": 0, \"rowsPerPage\": 10, \"sortOrder\": \"desc\"}",
|
|
"outputDataExample": "{\"config\": {\"monitorId\": \"65a12f60e9a5d109f7596a77\", \"sortOrder\": \"desc\", \"page\": \"0\", \"rowsPerPage\": \"10\", \"status\": undefined}}"
|
|
},
|
|
{
|
|
"simStepId": "336b534d-8d6a-4639-af8e-889b38f51ab1",
|
|
"diagramNodeId": "2b8ae59e-ed8d-4837-9a9b-64eb480f982c",
|
|
"simStepLabel": "API Request for Check History",
|
|
"simStepDescription": "The `NetworkService` constructs and sends an HTTP GET request to the backend API endpoint to retrieve the paginated list of checks for the specified monitor.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Utils/NetworkService.js",
|
|
"startLine": "551",
|
|
"endLine": "562",
|
|
"relevantVariables": [
|
|
"getChecksByMonitor",
|
|
"this.axiosInstance.get"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"config\": {\"monitorId\": \"65a12f60e9a5d109f7596a77\", \"sortOrder\": \"desc\", \"page\": \"0\", \"rowsPerPage\": \"10\"}}",
|
|
"outputDataExample": "{\"config\": {\"monitorId\": \"65a12f60e9a5d109f7596a77\", \"sortOrder\": \"desc\", \"page\": \"0\", \"rowsPerPage\": \"10\"}}"
|
|
},
|
|
{
|
|
"simStepId": "c5fd192f-ea28-48a0-b3e7-5bc04f521192",
|
|
"diagramNodeId": "cdd090be-0b62-45b4-baa0-fec01fc3ffd1",
|
|
"simStepLabel": "Route Request to Controller",
|
|
"simStepDescription": "The backend Express router receives the incoming GET request and matches it to the appropriate route, forwarding the request to the `getChecksByMonitor` method in the `CheckController`.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/routes/v1/checkRoute.js",
|
|
"startLine": "19",
|
|
"endLine": "19",
|
|
"relevantVariables": [
|
|
"this.router.get"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"request\": \"GET /api/v1/checks/65a12f60e9a5d109f7596a77?sortOrder=desc&page=0&rowsPerPage=10\"}",
|
|
"outputDataExample": "{\"controllerMethod\": \"getChecksByMonitor\"}"
|
|
},
|
|
{
|
|
"simStepId": "4f73f0fe-b390-4fe1-a354-eb0857835126",
|
|
"diagramNodeId": "839ba9f6-8a34-4919-a04a-13fba1795c61",
|
|
"simStepLabel": "Forward Request to Service Layer",
|
|
"simStepDescription": "The `CheckController` validates the request parameters and calls the `CheckService` to handle the business logic of fetching the monitor checks.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/controllers/v1/checkController.js",
|
|
"startLine": "81",
|
|
"endLine": "85",
|
|
"relevantVariables": [
|
|
"getChecksByMonitor",
|
|
"this.checkService.getChecksByMonitor"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"monitorId\": \"65a12f60e9a5d109f7596a77\", \"query\": {\"sortOrder\": \"desc\", \"page\": \"0\", \"rowsPerPage\": \"10\"}, \"teamId\": \"65a12f50e9a5d109f7596a66\"}",
|
|
"outputDataExample": "{\"monitorId\": \"65a12f60e9a5d109f7596a77\", \"query\": {\"sortOrder\": \"desc\", \"page\": \"0\", \"rowsPerPage\": \"10\"}, \"teamId\": \"65a12f50e9a5d109f7596a66\"}"
|
|
},
|
|
{
|
|
"simStepId": "83fea05d-8306-4a73-a43f-882cdd14f50f",
|
|
"diagramNodeId": "499b46a2-f2a2-4ccd-aecd-012eade2bd23",
|
|
"simStepLabel": "Fetch Checks from Database",
|
|
"simStepDescription": "The `CheckService` calls the `checkModule` to interact with the database. It passes the necessary parameters to query for the check history.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/service/v1/business/checkService.js",
|
|
"startLine": "36",
|
|
"endLine": "45",
|
|
"relevantVariables": [
|
|
"getChecksByMonitor",
|
|
"this.db.checkModule.getChecksByMonitor"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"monitorId\": \"65a12f60e9a5d109f7596a77\", \"query\": {\"sortOrder\": \"desc\", \"page\": \"0\", \"rowsPerPage\": \"10\"}, \"teamId\": \"65a12f50e9a5d109f7596a66\"}",
|
|
"outputDataExample": "{\"monitorId\": \"65a12f60e9a5d109f7596a77\", \"sortOrder\": \"desc\", \"dateRange\": undefined, \"filter\": undefined, \"ack\": undefined, \"page\": \"0\", \"rowsPerPage\": \"10\", \"status\": undefined}"
|
|
},
|
|
{
|
|
"simStepId": "65da1a9e-041c-4656-9c5b-0a92b761a9be",
|
|
"diagramNodeId": "42d3bc70-701a-4be0-96b4-d6c2f0519b49",
|
|
"simStepLabel": "Execute Database Query",
|
|
"simStepDescription": "The `checkModule` constructs and executes a MongoDB aggregation pipeline on the `Check` collection to find, sort, and paginate the historical checks for the given monitor.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/db/v1/modules/checkModule.js",
|
|
"startLine": "28",
|
|
"endLine": "108",
|
|
"relevantVariables": [
|
|
"getChecksByMonitor",
|
|
"this.Check.aggregate"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"monitorId\": \"65a12f60e9a5d109f7596a77\", \"sortOrder\": -1, \"page\": 0, \"rowsPerPage\": 10}",
|
|
"outputDataExample": "{\"monitorId\": \"65a12f60e9a5d109f7596a77\", \"sortOrder\": -1, \"page\": 0, \"rowsPerPage\": 10}"
|
|
},
|
|
{
|
|
"simStepId": "5768fdc5-045c-48ef-b0c9-79769403648f",
|
|
"diagramNodeId": "14df9f01-1358-442d-96f5-eab9a4c4abbf",
|
|
"simStepLabel": "Return Check Data",
|
|
"simStepDescription": "The database returns the query results, which flow back up through the `checkModule` and `checkService`. The `checkController` then formats a successful JSON response.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/controllers/v1/checkController.js",
|
|
"startLine": "87",
|
|
"endLine": "90",
|
|
"relevantVariables": [
|
|
"res.success"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"checksCount\": 152, \"checks\": [{\"_id\": \"...\", \"status\": false}, {\"...\"}]}",
|
|
"outputDataExample": "{\"msg\": \"Got checks successfully\", \"data\": {\"checksCount\": 152, \"checks\": [{\"_id\": \"...\"}]}}"
|
|
},
|
|
{
|
|
"simStepId": "2c1bdec8-d0e6-4163-a99c-f27899b987c5",
|
|
"diagramNodeId": "6c5b028c-356c-43c8-a35a-b47448cd8695",
|
|
"simStepLabel": "API Response with Check History",
|
|
"simStepDescription": "The backend sends the HTTP response containing the historical check data back to the client.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Utils/NetworkService.js",
|
|
"startLine": "560",
|
|
"endLine": "560",
|
|
"relevantVariables": [
|
|
"this.axiosInstance.get"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"success\": true, \"msg\": \"Got checks successfully\", \"data\": {\"checksCount\": 152, \"checks\": [{\"_id\": \"65a13f60e9a5d109f7596b88\", \"status\": false, \"httpStatusCode\": 503, \"responseTime\": 1200}, {\"_id\": \"65a13f50e9a5d109f7596b77\", \"status\": true, \"httpStatusCode\": 200, \"responseTime\": 250}]}}",
|
|
"outputDataExample": "{\"success\": true, \"msg\": \"Got checks successfully\", \"data\": {\"checksCount\": 152, \"checks\": [{\"_id\": \"65a13f60e9a5d109f7596b88\", \"status\": false, \"httpStatusCode\": 503, \"responseTime\": 1200}, {\"_id\": \"65a13f50e9a5d109f7596b77\", \"status\": true, \"httpStatusCode\": 200, \"responseTime\": 250}]}}"
|
|
},
|
|
{
|
|
"simStepId": "faba07f3-7460-47ae-924d-f92f5b2e821d",
|
|
"diagramNodeId": "ceb9cda3-968d-44aa-b223-49902adb93b4",
|
|
"simStepLabel": "Update Frontend State",
|
|
"simStepDescription": "The `useFetchChecksByMonitor` hook receives the data from the API call and updates the component's state with the new list of checks and the total count.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Hooks/v1/checkHooks.js",
|
|
"startLine": "109",
|
|
"endLine": "110",
|
|
"relevantVariables": [
|
|
"setChecks",
|
|
"setChecksCount"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"data\": {\"checksCount\": 152, \"checks\": [{\"_id\": \"...\"}]}}",
|
|
"outputDataExample": "{\"checks\": [{\"_id\": \"...\"}], \"checksCount\": 152}"
|
|
},
|
|
{
|
|
"simStepId": "9405dce1-0565-4dfa-9539-a048472acda9",
|
|
"diagramNodeId": "74b0dd89-9fea-4219-af1f-9571316a9d5a",
|
|
"simStepLabel": "Pass Data to UI Components",
|
|
"simStepDescription": "The state update triggers a re-render of the `UptimeDetails` page, passing the `checks` and `checksCount` as props to child components like `ResponseTable`.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Pages/v1/Uptime/Details/index.jsx",
|
|
"startLine": "175",
|
|
"endLine": "186",
|
|
"relevantVariables": [
|
|
"ResponseTable",
|
|
"checks",
|
|
"checksCount"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"checks\": [{\"_id\": \"65a13f60e9a5d109f7596b88\", \"status\": false, \"httpStatusCode\": 503}, {\"_id\": \"65a13f50e9a5d109f7596b77\", \"status\": true, \"httpStatusCode\": 200}], \"checksCount\": 152}",
|
|
"outputDataExample": "{\"checks\": [{\"_id\": \"65a13f60e9a5d109f7596b88\", \"status\": false, \"httpStatusCode\": 503}, {\"_id\": \"65a13f50e9a5d109f7596b77\", \"status\": true, \"httpStatusCode\": 200}], \"checksCount\": 152}"
|
|
},
|
|
{
|
|
"simStepId": "2b1651cd-2e70-4cc6-b2bb-23f94fa73d66",
|
|
"diagramNodeId": "c996f7ca-9384-4252-b343-7bfc049d14bb",
|
|
"simStepLabel": "Render Historical Data Table",
|
|
"simStepDescription": "The `ResponseTable` component receives the list of checks and renders them in a data table, allowing the user to view the incident history, including status, response time, and when the check occurred.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Pages/v1/Uptime/Details/Components/ResponseTable/index.jsx",
|
|
"startLine": "11",
|
|
"endLine": "92",
|
|
"relevantVariables": [
|
|
"ResponseTable",
|
|
"Table",
|
|
"TablePagination"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"checks\": [{\"_id\": \"65a13f60e9a5d109f7596b88\", \"status\": false, \"httpStatusCode\": 503}, {\"_id\": \"65a13f50e9a5d109f7596b77\", \"status\": true, \"httpStatusCode\": 200}]}",
|
|
"outputDataExample": "{\"tableRows\": [{\"id\": \"status\", \"content\": \"Status\", \"render\": \"...\"}, {\"id\": \"httpStatus\", \"content\": \"HTTP Status\", \"render\": \"...\"}]}"
|
|
}
|
|
],
|
|
"description": "<ul><li>Provides detailed historical data and tools to manage monitoring events, which are treated as incidents</li><li>- Every check result is stored, creating a comprehensive log of uptime, downtime, and response time history for each monitor</li><li>- The UI includes detailed views with charts and tables to analyze performance trends and past incidents</li><li>- Users can acknowledge incidents (failed checks), which helps in tracking the response to an outage</li><li>- All historical check data can be purged on a per-monitor or per-team basis</li></ul>",
|
|
"simulationNodesAndEdges": {
|
|
"78a8a7c5-41d3-4453-a7f7-ac632bbef288": {
|
|
"simStepIds": [
|
|
"35195328-9847-4678-b014-9331553f0d19"
|
|
]
|
|
},
|
|
"4a5847d0-91a0-4b4c-8517-2f4ff9a7e8d4": {
|
|
"simStepIds": [
|
|
"8dc4347c-3e9e-40d7-ae6f-54684f2e6956"
|
|
]
|
|
},
|
|
"cdd090be-0b62-45b4-baa0-fec01fc3ffd1": {
|
|
"simStepIds": [
|
|
"c5fd192f-ea28-48a0-b3e7-5bc04f521192"
|
|
]
|
|
},
|
|
"499b46a2-f2a2-4ccd-aecd-012eade2bd23": {
|
|
"simStepIds": [
|
|
"83fea05d-8306-4a73-a43f-882cdd14f50f"
|
|
]
|
|
},
|
|
"14df9f01-1358-442d-96f5-eab9a4c4abbf": {
|
|
"simStepIds": [
|
|
"5768fdc5-045c-48ef-b0c9-79769403648f"
|
|
]
|
|
},
|
|
"ceb9cda3-968d-44aa-b223-49902adb93b4": {
|
|
"simStepIds": [
|
|
"faba07f3-7460-47ae-924d-f92f5b2e821d"
|
|
]
|
|
},
|
|
"c996f7ca-9384-4252-b343-7bfc049d14bb": {
|
|
"simStepIds": [
|
|
"2b1651cd-2e70-4cc6-b2bb-23f94fa73d66"
|
|
]
|
|
},
|
|
"e90e4943-6108-46e3-8a2c-a9a1c7361279": {
|
|
"simStepIds": [
|
|
"49979250-1a32-4da5-95e0-58652fe218f9"
|
|
]
|
|
},
|
|
"2b8ae59e-ed8d-4837-9a9b-64eb480f982c": {
|
|
"simStepIds": [
|
|
"336b534d-8d6a-4639-af8e-889b38f51ab1"
|
|
]
|
|
},
|
|
"839ba9f6-8a34-4919-a04a-13fba1795c61": {
|
|
"simStepIds": [
|
|
"4f73f0fe-b390-4fe1-a354-eb0857835126"
|
|
]
|
|
},
|
|
"42d3bc70-701a-4be0-96b4-d6c2f0519b49": {
|
|
"simStepIds": [
|
|
"65da1a9e-041c-4656-9c5b-0a92b761a9be"
|
|
]
|
|
},
|
|
"6c5b028c-356c-43c8-a35a-b47448cd8695": {
|
|
"simStepIds": [
|
|
"2c1bdec8-d0e6-4163-a99c-f27899b987c5"
|
|
]
|
|
},
|
|
"74b0dd89-9fea-4219-af1f-9571316a9d5a": {
|
|
"simStepIds": [
|
|
"9405dce1-0565-4dfa-9539-a048472acda9"
|
|
]
|
|
}
|
|
},
|
|
"isAIGenerated": true,
|
|
"keywords": "Check, getChecksByMonitor, ResponseTable",
|
|
"generationPrompt": "Incident History, Analysis, and Management",
|
|
"generationKeywords": "Check, getChecksByMonitor, ResponseTable"
|
|
},
|
|
"Website Performance and Page Speed Monitoring": {
|
|
"name": "Website Performance and Page Speed Monitoring",
|
|
"simSteps": [
|
|
{
|
|
"simStepId": "b0cc6e6a-961e-4ea9-aa8a-6bfa44d6ba12",
|
|
"diagramNodeId": "0622b212-3a4a-484d-9b7a-125864d785cd",
|
|
"simStepLabel": "Create PageSpeed Monitor",
|
|
"simStepDescription": "The user navigates to the PageSpeed creation page, fills in the details for a new monitor (URL, name, interval), and submits the form. This triggers the `handleSubmit` function, which calls the `createMonitor` hook to send the data to the backend API.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Pages/v1/PageSpeed/Create/index.jsx",
|
|
"startLine": "111",
|
|
"endLine": "143",
|
|
"relevantVariables": [
|
|
"handleSubmit",
|
|
"createMonitor",
|
|
"updateMonitor",
|
|
"monitor",
|
|
"form"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"formState\": {\"url\": \"https://example.com\",\"name\": \"Example Homepage\",\"type\": \"pagespeed\",\"interval\": 180000}}",
|
|
"outputDataExample": "{\"monitor\": {\"url\": \"https://example.com\",\"name\": \"Example Homepage\",\"type\": \"pagespeed\",\"interval\": 180000}, \"redirect\": \"/pagespeed\"}"
|
|
},
|
|
{
|
|
"simStepId": "f8df1cad-6051-466e-a13e-47d710ba1c14",
|
|
"diagramNodeId": "b8e83b0a-69ff-4c34-a7fe-cb8c9ba85438",
|
|
"simStepLabel": "API Call: Create Monitor",
|
|
"simStepDescription": "The frontend sends a POST request to the backend API to create a new monitor record in the database. This request includes the monitor's configuration details.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Pages/v1/PageSpeed/Create/index.jsx",
|
|
"startLine": "119",
|
|
"endLine": "119",
|
|
"relevantVariables": [
|
|
"createMonitor"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"monitor\": {\"url\": \"https://example.com\",\"name\": \"Example Homepage\",\"type\": \"pagespeed\",\"notifications\": [],\"interval\": 180000}, \"redirect\": \"/pagespeed\"}",
|
|
"outputDataExample": "{\"monitor\": {\"url\": \"https://example.com\",\"name\": \"Example Homepage\",\"type\": \"pagespeed\",\"notifications\": [],\"interval\": 180000}, \"redirect\": \"/pagespeed\"}"
|
|
},
|
|
{
|
|
"simStepId": "53968267-0c6e-42f4-88b3-cd90f44532ae",
|
|
"diagramNodeId": "6527fb47-157e-4bba-9aed-adde061c5689",
|
|
"simStepLabel": "Backend Requests PageSpeed Analysis",
|
|
"simStepDescription": "A background job for the newly created monitor triggers the `NetworkService` to request a performance analysis from the Google PageSpeed Insights API. It constructs the API URL using the monitor's target URL and the configured PageSpeed API key.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/service/v2/infrastructure/NetworkService.ts",
|
|
"startLine": "129",
|
|
"endLine": "162",
|
|
"relevantVariables": [
|
|
"requestPagespeed",
|
|
"apiKey",
|
|
"pagespeedUrl",
|
|
"pagespeedResponse"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"monitor\": {\"_id\": \"64b9a6b3e1b6f0b3e8a7d1c0\",\"url\": \"https://example.com\",\"type\": \"pagespeed\"}}",
|
|
"outputDataExample": "{\"statusResponse\": {\"monitorId\": \"64b9a6b3e1b6f0b3e8a7d1c0\",\"status\": \"up\",\"responseTime\": 450, \"payload\": {\"lighthouseResult\": {...}}}}"
|
|
},
|
|
{
|
|
"simStepId": "0b380571-3896-4365-b5dc-187494f02e0d",
|
|
"diagramNodeId": "0d3c8091-3d91-4e42-9b46-7e35ed726a7a",
|
|
"simStepLabel": "Google PageSpeed API Response",
|
|
"simStepDescription": "The Google PageSpeed Insights API responds with a detailed JSON payload containing the Lighthouse analysis results, including scores for performance, accessibility, SEO, and best practices.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/service/v2/infrastructure/NetworkService.ts",
|
|
"startLine": "156",
|
|
"endLine": "156",
|
|
"relevantVariables": [
|
|
"payload"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"lighthouseResult\": {\"categories\": {\"performance\": {\"score\": 0.92},\"accessibility\": {\"score\": 0.98},\"best-practices\": {\"score\": 1},\"seo\": {\"score\": 0.95}},\"audits\": {\"first-contentful-paint\": {\"score\": 0.99,\"numericValue\": 850},\"largest-contentful-paint\": {\"score\": 0.91,\"numericValue\": 1450}}}}",
|
|
"outputDataExample": "{\"lighthouseResult\": {\"categories\": {\"performance\": {\"score\": 0.92},\"accessibility\": {\"score\": 0.98},\"best-practices\": {\"score\": 1},\"seo\": {\"score\": 0.95}},\"audits\": {\"first-contentful-paint\": {\"score\": 0.99,\"numericValue\": 850},\"largest-contentful-paint\": {\"score\": 0.91,\"numericValue\": 1450}}}}"
|
|
},
|
|
{
|
|
"simStepId": "01206383-2db8-4b18-84d0-be2a0289c196",
|
|
"diagramNodeId": "f89cbd87-c961-4f8b-92b6-714da57718d5",
|
|
"simStepLabel": "Backend Processes Lighthouse Data",
|
|
"simStepDescription": "The `CheckService` receives the raw data from the Google API. The `buildPagespeedCheck` function extracts and transforms the relevant scores and audit details into a structured `Check` object, preparing it for database storage.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/service/v2/business/CheckService.ts",
|
|
"startLine": "82",
|
|
"endLine": "102",
|
|
"relevantVariables": [
|
|
"buildPagespeedCheck",
|
|
"isPagespeedPayload",
|
|
"lighthouseResult",
|
|
"check.lighthouse"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"statusResponse\": {\"payload\": {\"lighthouseResult\": {\"categories\": {\"performance\": {\"score\": 0.92},\"accessibility\": {\"score\": 0.98},\"best-practices\": {\"score\": 1},\"seo\": {\"score\": 0.95}},\"audits\": {\"cumulative-layout-shift\": {},\"speed-index\": {},\"first-contentful-paint\": {},\"largest-contentful-paint\": {},\"total-blocking-time\": {}}}}}}",
|
|
"outputDataExample": "{\"check\": {\"lighthouse\": {\"accessibility\": 0.98,\"bestPractices\": 1,\"seo\": 0.95,\"performance\": 0.92,\"audits\": {\"cls\": {},\"si\": {},\"fcp\": {},\"lcp\": {},\"tbt\": {}}}}}"
|
|
},
|
|
{
|
|
"simStepId": "a629a102-0df1-4798-a7a2-45c8f6cdad29",
|
|
"diagramNodeId": "27c7191b-80a2-475b-9371-e106108aff1c",
|
|
"simStepLabel": "Store Processed Check Data",
|
|
"simStepDescription": "The processed and structured check data, containing the key performance metrics, is saved to the 'checks' collection in the database, associated with the corresponding monitor ID.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/db/v2/models/checks/Check.ts",
|
|
"startLine": "237",
|
|
"endLine": "268",
|
|
"relevantVariables": [
|
|
"lighthouse"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"check\": {\"monitorId\": \"64b9a6b3e1b6f0b3e8a7d1c0\", \"status\": \"up\", \"responseTime\": 450, \"lighthouse\": {\"performance\": 0.92, \"accessibility\": 0.98, \"bestPractices\": 1, \"seo\": 0.95, \"audits\": {...}}}}",
|
|
"outputDataExample": "{\"check\": {\"monitorId\": \"64b9a6b3e1b6f0b3e8a7d1c0\", \"status\": \"up\", \"responseTime\": 450, \"lighthouse\": {\"performance\": 0.92, \"accessibility\": 0.98, \"bestPractices\": 1, \"seo\": 0.95, \"audits\": {...}}}}"
|
|
},
|
|
{
|
|
"simStepId": "5616ac6d-c281-4879-82f1-6590c721c8f7",
|
|
"diagramNodeId": "ca6ee27b-1fbf-49de-978a-d6de259cc3d5",
|
|
"simStepLabel": "Backend Aggregates Performance Data",
|
|
"simStepDescription": "When a user views the details of a PageSpeed monitor, the frontend requests historical data. The `MonitorService` on the backend uses a MongoDB aggregation pipeline to group checks by time intervals and calculate average scores for metrics like performance, SEO, etc. This is defined by helper functions like `getPageSpeedGroup`.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/service/v2/business/MonitorService.ts",
|
|
"startLine": "106",
|
|
"endLine": "120",
|
|
"relevantVariables": [
|
|
"getPageSpeedGroup",
|
|
"accessibility",
|
|
"bestPractices",
|
|
"seo",
|
|
"performance"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"monitorId\": \"64b9a6b3e1b6f0b3e8a7d1c0\", \"range\": \"7d\"}",
|
|
"outputDataExample": "[{\"_id\": \"2023-07-20T10:00:00Z\", \"avgResponseTime\": 450, \"performance\": 0.92, \"seo\": 0.95, \"accessibility\": 0.98, \"bestPractices\": 1.0}, {\"_id\": \"2023-07-20T11:00:00Z\", \"avgResponseTime\": 465, \"performance\": 0.91, \"seo\": 0.95, \"accessibility\": 0.98, \"bestPractices\": 1.0}]"
|
|
},
|
|
{
|
|
"simStepId": "4ed43eaf-fa8f-4fce-af87-8a5f74dd5c08",
|
|
"diagramNodeId": "7be432cd-2587-4eab-abdc-f7b9c1923597",
|
|
"simStepLabel": "Aggregated Data Transmitted to Frontend",
|
|
"simStepDescription": "The backend sends the aggregated and time-series formatted performance data to the frontend in a JSON response.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/service/v2/business/MonitorService.ts",
|
|
"startLine": "368",
|
|
"endLine": "372",
|
|
"relevantVariables": [
|
|
"Check.aggregate"
|
|
]
|
|
},
|
|
"inputDataExample": "[{\"_id\": \"2023-07-20T10:00:00Z\", \"performance\": 0.92, \"seo\": 0.95, \"accessibility\": 0.98}, {\"_id\": \"2023-07-20T11:00:00Z\", \"performance\": 0.91, \"seo\": 0.95, \"accessibility\": 0.98}]",
|
|
"outputDataExample": "[{\"_id\": \"2023-07-20T10:00:00Z\", \"performance\": 0.92, \"seo\": 0.95, \"accessibility\": 0.98}, {\"_id\": \"2023-07-20T11:00:00Z\", \"performance\": 0.91, \"seo\": 0.95, \"accessibility\": 0.98}]"
|
|
},
|
|
{
|
|
"simStepId": "0ec0eb06-05eb-4204-b077-9e47eb2cc316",
|
|
"diagramNodeId": "9ef9e218-4742-487a-9a88-5c70e788ccdc",
|
|
"simStepLabel": "Frontend Renders Performance Charts",
|
|
"simStepDescription": "The `PageSpeedDetails` component receives the historical data from the backend. It then passes this data to specialized child components like `PageSpeedAreaChart` and `PerformanceReport` to render visualizations of the website's performance over time.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Pages/v1/PageSpeed/Details/index.jsx",
|
|
"startLine": "91",
|
|
"endLine": "126",
|
|
"relevantVariables": [
|
|
"PageSpeedStatusBoxes",
|
|
"MonitorTimeFrameHeader",
|
|
"PageSpeedAreaChart",
|
|
"PerformanceReport",
|
|
"monitor",
|
|
"audits"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"monitor\": {\"checks\": [{\"createdAt\": \"2023-07-20T10:00:00Z\", \"performance\": 0.92, \"seo\": 0.95}, {\"createdAt\": \"2023-07-20T11:00:00Z\", \"performance\": 0.91, \"seo\": 0.95}]}}",
|
|
"outputDataExample": "{\"renderedUI\": \"A page with charts and graphs showing performance trends.\"}"
|
|
}
|
|
],
|
|
"description": "<ul><li>Integrates with Google's PageSpeed Insights to monitor and analyze web page performance</li><li>- Tracks key web vitals and performance metrics such as SEO, Accessibility, Best Practices, and Performance scores</li><li>- Provides a grid view of all page speed monitors for a quick overview of website health</li><li>- Detailed reports show historical performance data, allowing users to track improvements or regressions over time</li><li>- This feature requires a Google PageSpeed API key to be configured in the settings</li></ul>",
|
|
"simulationNodesAndEdges": {
|
|
"0622b212-3a4a-484d-9b7a-125864d785cd": {
|
|
"simStepIds": [
|
|
"b0cc6e6a-961e-4ea9-aa8a-6bfa44d6ba12"
|
|
]
|
|
},
|
|
"6527fb47-157e-4bba-9aed-adde061c5689": {
|
|
"simStepIds": [
|
|
"53968267-0c6e-42f4-88b3-cd90f44532ae"
|
|
]
|
|
},
|
|
"f89cbd87-c961-4f8b-92b6-714da57718d5": {
|
|
"simStepIds": [
|
|
"01206383-2db8-4b18-84d0-be2a0289c196"
|
|
]
|
|
},
|
|
"ca6ee27b-1fbf-49de-978a-d6de259cc3d5": {
|
|
"simStepIds": [
|
|
"5616ac6d-c281-4879-82f1-6590c721c8f7"
|
|
]
|
|
},
|
|
"9ef9e218-4742-487a-9a88-5c70e788ccdc": {
|
|
"simStepIds": [
|
|
"0ec0eb06-05eb-4204-b077-9e47eb2cc316"
|
|
]
|
|
},
|
|
"b8e83b0a-69ff-4c34-a7fe-cb8c9ba85438": {
|
|
"simStepIds": [
|
|
"f8df1cad-6051-466e-a13e-47d710ba1c14"
|
|
]
|
|
},
|
|
"0d3c8091-3d91-4e42-9b46-7e35ed726a7a": {
|
|
"simStepIds": [
|
|
"0b380571-3896-4365-b5dc-187494f02e0d"
|
|
]
|
|
},
|
|
"27c7191b-80a2-475b-9371-e106108aff1c": {
|
|
"simStepIds": [
|
|
"a629a102-0df1-4798-a7a2-45c8f6cdad29"
|
|
]
|
|
},
|
|
"7be432cd-2587-4eab-abdc-f7b9c1923597": {
|
|
"simStepIds": [
|
|
"4ed43eaf-fa8f-4fce-af87-8a5f74dd5c08"
|
|
]
|
|
}
|
|
},
|
|
"isAIGenerated": true,
|
|
"keywords": "pagespeed, lighthouse, performance",
|
|
"generationPrompt": "Website Performance and Page Speed Monitoring",
|
|
"generationKeywords": "pagespeed, lighthouse, performance"
|
|
},
|
|
"Scheduled Maintenance Windows": {
|
|
"name": "Scheduled Maintenance Windows",
|
|
"simSteps": [
|
|
{
|
|
"simStepId": "2401ef7a-8d8e-4056-868a-547ab213daf1",
|
|
"diagramNodeId": "20335f29-a2ac-4e0c-aba6-28707748ecd4",
|
|
"simStepLabel": "Flow: Create Maintenance Window - User Interaction",
|
|
"simStepDescription": "A user navigates to the 'Create Maintenance Window' page. They fill out a form with details such as a name, start date/time, duration, recurrence, and select the monitors to which this window will apply.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Pages/v1/Maintenance/CreateMaintenance/index.jsx",
|
|
"startLine": "46",
|
|
"endLine": "131",
|
|
"relevantVariables": [
|
|
"CreateMaintenance",
|
|
"form",
|
|
"setForm",
|
|
"handleFormChange",
|
|
"handleSubmit"
|
|
]
|
|
},
|
|
"inputDataExample": "{}",
|
|
"outputDataExample": "{\"name\":\"Server Patching Window\",\"startDate\":\"2023-10-27T00:00:00.000Z\",\"startTime\":\"2023-10-27T02:00:00.000Z\",\"duration\":\"60\",\"durationUnit\":\"minutes\",\"repeat\":\"none\",\"monitors\":[{\"_id\":\"652ff379963e792a5a3a0e4e\",\"name\":\"Main Production Server\"}]}"
|
|
},
|
|
{
|
|
"simStepId": "f881435b-3bc2-453d-b6bf-56ad3a12f120",
|
|
"diagramNodeId": "d3bdc6ff-875e-472e-88c8-eb10b20c526e",
|
|
"simStepLabel": "Flow: Create Maintenance Window - Form Submission",
|
|
"simStepDescription": "Upon clicking the 'Create Maintenance' button, the form state is passed to the `handleSubmit` function which then calls the `handleSubmitForm` action from a custom hook.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Pages/v1/Maintenance/CreateMaintenance/index.jsx",
|
|
"startLine": "108",
|
|
"endLine": "109",
|
|
"relevantVariables": [
|
|
"handleSubmit",
|
|
"handleSubmitForm"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"name\":\"Server Patching Window\",\"startDate\":\"2023-10-27T00:00:00.000Z\",\"startTime\":\"2023-10-27T02:00:00.000Z\",\"duration\":\"60\",\"durationUnit\":\"minutes\",\"repeat\":\"none\",\"monitors\":[{\"_id\":\"652ff379963e792a5a3a0e4e\",\"name\":\"Main Production Server\"}]}",
|
|
"outputDataExample": "{\"name\":\"Server Patching Window\",\"startDate\":\"2023-10-27T00:00:00.000Z\",\"startTime\":\"2023-10-27T02:00:00.000Z\",\"duration\":\"60\",\"durationUnit\":\"minutes\",\"repeat\":\"none\",\"monitors\":[{\"_id\":\"652ff379963e792a5a3a0e4e\",\"name\":\"Main Production Server\"}]}"
|
|
},
|
|
{
|
|
"simStepId": "5e0d7085-099b-478a-afaa-47ad4dd07043",
|
|
"diagramNodeId": "5bdfdfa4-5d93-49fa-b05c-905813e6cf9d",
|
|
"simStepLabel": "Flow: Create Maintenance Window - Prepare API Request",
|
|
"simStepDescription": "The `handleSubmitForm` hook processes the form data, calculates start and end timestamps, and constructs a request object. It then determines whether to call `createMaintenanceWindow` or `editMaintenanceWindow` on the network service.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Pages/v1/Maintenance/CreateMaintenance/hooks/useMaintenanceActions.jsx",
|
|
"startLine": "25",
|
|
"endLine": "58",
|
|
"relevantVariables": [
|
|
"handleSubmitForm",
|
|
"networkService.createMaintenanceWindow",
|
|
"networkService.editMaintenanceWindow"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"form\":{\"name\":\"Server Patching Window\",\"startDate\":\"2023-10-27T00:00:00.000Z\",\"startTime\":\"2023-10-27T02:00:00.000Z\",\"duration\":\"60\",\"durationUnit\":\"minutes\",\"repeat\":\"none\",\"monitors\":[{\"_id\":\"652ff379963e792a5a3a0e4e\"}]}}",
|
|
"outputDataExample": "{\"maintenanceWindow\":{\"name\":\"Server Patching Window\",\"start\":\"2023-10-27T02:00:00.000Z\",\"end\":\"2023-10-27T03:00:00.000Z\",\"repeat\":0,\"oneTime\":true,\"monitors\":[\"652ff379963e792a5a3a0e4e\"],\"expiry\":\"2023-10-27T03:00:00.000Z\"}}"
|
|
},
|
|
{
|
|
"simStepId": "0660b48b-139f-4ecf-b7d9-f12f544e0ab5",
|
|
"diagramNodeId": "fd5e4447-123b-4b2d-8bce-1d1ae7cb00af",
|
|
"simStepLabel": "Flow: Create Maintenance Window - API Call",
|
|
"simStepDescription": "The `NetworkService` sends the prepared maintenance window data as a POST request to the `/api/v1/maintenance-window` endpoint.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Utils/NetworkService.js",
|
|
"startLine": "762",
|
|
"endLine": "766",
|
|
"relevantVariables": [
|
|
"createMaintenanceWindow",
|
|
"this.axiosInstance.post"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"maintenanceWindow\":{\"name\":\"Server Patching Window\",\"start\":\"2023-10-27T02:00:00.000Z\",\"end\":\"2023-10-27T03:00:00.000Z\",\"repeat\":0,\"oneTime\":true,\"monitors\":[\"652ff379963e792a5a3a0e4e\"],\"expiry\":\"2023-10-27T03:00:00.000Z\"}}",
|
|
"outputDataExample": "{\"maintenanceWindow\":{\"name\":\"Server Patching Window\",\"start\":\"2023-10-27T02:00:00.000Z\",\"end\":\"2023-10-27T03:00:00.000Z\",\"repeat\":0,\"oneTime\":true,\"monitors\":[\"652ff379963e792a5a3a0e4e\"],\"expiry\":\"2023-10-27T03:00:00.000Z\"}}"
|
|
},
|
|
{
|
|
"simStepId": "3e93ef65-8e2c-405b-8dc1-56d8e93937b3",
|
|
"diagramNodeId": "a391e8ea-9dbe-4fe4-90df-bf475d8b7ef8",
|
|
"simStepLabel": "Flow: Create Maintenance Window - API Routing",
|
|
"simStepDescription": "The backend Express server receives the request. The routing configuration maps the `/api/v1/maintenance-window` path to the `maintenanceWindowRoutes`, which in turn directs the POST request to the `createMaintenanceWindows` method in the controller.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/config/routes.js",
|
|
"startLine": "43",
|
|
"endLine": "43",
|
|
"relevantVariables": [
|
|
"app",
|
|
"verifyJWT",
|
|
"maintenanceWindowRoutes"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"method\":\"POST\",\"url\":\"/api/v1/maintenance-window\",\"body\":{\"name\":\"Server Patching Window\",\"start\":\"2023-10-27T02:00:00.000Z\",\"end\":\"2023-10-27T03:00:00.000Z\",\"repeat\":0,\"oneTime\":true,\"monitors\":[\"652ff379963e792a5a3a0e4e\"]}}",
|
|
"outputDataExample": "{\"controllerMethod\":\"createMaintenanceWindows\",\"params\":{}}"
|
|
},
|
|
{
|
|
"simStepId": "e4cc5ce8-6da9-4281-9204-29c061ab13ce",
|
|
"diagramNodeId": "e2588541-3ffc-47c6-8f8a-41d30ea7fc72",
|
|
"simStepLabel": "Flow: Create Maintenance Window - Controller Invocation",
|
|
"simStepDescription": "The request and response objects are passed from the router to the `createMaintenanceWindows` controller method.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/routes/v1/maintenanceWindowRoute.js",
|
|
"startLine": "10",
|
|
"endLine": "10",
|
|
"relevantVariables": [
|
|
"this.router.post",
|
|
"this.mwController.createMaintenanceWindows"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"req\": {\"body\": {\"name\":\"Server Patching Window\", \"monitors\":[\"652ff379963e792a5a3a0e4e\"]}, \"user\": {\"teamId\":\"652ff379963e792a5a3a0e4d\"}}}",
|
|
"outputDataExample": "{\"req\": {\"body\": {\"name\":\"Server Patching Window\", \"monitors\":[\"652ff379963e792a5a3a0e4e\"]}, \"user\": {\"teamId\":\"652ff379963e792a5a3a0e4d\"}}}"
|
|
},
|
|
{
|
|
"simStepId": "95fc1919-339d-4659-98cb-3dc50f662075",
|
|
"diagramNodeId": "0fae6e75-38ea-444d-a1bf-0f820ba443b9",
|
|
"simStepLabel": "Flow: Create Maintenance Window - Controller Logic",
|
|
"simStepDescription": "The `maintenanceWindowController` validates the request body using Joi, ensures a `teamId` exists on the user object, and then calls the `maintenanceWindowService` to handle the business logic of creating the window.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/controllers/v1/maintenanceWindowController.js",
|
|
"startLine": "27",
|
|
"endLine": "41",
|
|
"relevantVariables": [
|
|
"createMaintenanceWindows",
|
|
"createMaintenanceWindowBodyValidation",
|
|
"this.maintenanceWindowService.createMaintenanceWindow"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"req\": {\"body\": {\"name\":\"Server Patching Window\", \"monitors\":[\"652ff379963e792a5a3a0e4e\"]}, \"user\": {\"teamId\":\"652ff379963e792a5a3a0e4d\"}}}",
|
|
"outputDataExample": "{\"teamId\":\"652ff379963e792a5a3a0e4d\",\"body\":{\"name\":\"Server Patching Window\",\"monitors\":[\"652ff379963e792a5a3a0e4e\"]}}"
|
|
},
|
|
{
|
|
"simStepId": "c3d1a95c-e93d-499a-8830-a6d870902414",
|
|
"diagramNodeId": "e1d59cf6-0d96-4e0a-ad17-2a7984a9157f",
|
|
"simStepLabel": "Flow: Create Maintenance Window - Service Layer Call",
|
|
"simStepDescription": "The controller passes the teamId and request body to the `createMaintenanceWindow` method in the `maintenanceWindowService`.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/controllers/v1/maintenanceWindowController.js",
|
|
"startLine": "35",
|
|
"endLine": "35",
|
|
"relevantVariables": [
|
|
"this.maintenanceWindowService.createMaintenanceWindow"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"teamId\":\"652ff379963e792a5a3a0e4d\",\"body\":{\"name\":\"Server Patching Window\",\"monitors\":[\"652ff379963e792a5a3a0e4e\"]}}",
|
|
"outputDataExample": "{\"teamId\":\"652ff379963e792a5a3a0e4d\",\"body\":{\"name\":\"Server Patching Window\",\"monitors\":[\"652ff379963e792a5a3a0e4e\"]}}"
|
|
},
|
|
{
|
|
"simStepId": "6e2cf739-1514-4c37-9874-10b68a47010e",
|
|
"diagramNodeId": "560d268b-ef0f-4cd2-bcfe-9dc0a0e2ce6f",
|
|
"simStepLabel": "Flow: Create Maintenance Window - Business Logic Execution",
|
|
"simStepDescription": "The `maintenanceWindowService` verifies that all monitors specified in the request belong to the user's team. It then iterates through each monitor ID and prepares a separate database transaction to create a maintenance window record for each one.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/service/v1/business/maintenanceWindowService.js",
|
|
"startLine": "18",
|
|
"endLine": "39",
|
|
"relevantVariables": [
|
|
"createMaintenanceWindow",
|
|
"this.db.monitorModule.getMonitorsByIds",
|
|
"this.db.maintenanceWindowModule.createMaintenanceWindow",
|
|
"Promise.all"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"teamId\":\"652ff379963e792a5a3a0e4d\",\"body\":{\"name\":\"Server Patching Window\",\"start\":\"2023-10-27T02:00:00.000Z\",\"end\":\"2023-10-27T03:00:00.000Z\",\"monitors\":[\"652ff379963e792a5a3a0e4e\"]}}",
|
|
"outputDataExample": "[{\"teamId\":\"652ff379963e792a5a3a0e4d\",\"monitorId\":\"652ff379963e792a5a3a0e4e\",\"name\":\"Server Patching Window\",\"start\":\"2023-10-27T02:00:00.000Z\",\"end\":\"2023-10-27T03:00:00.000Z\"}]"
|
|
},
|
|
{
|
|
"simStepId": "80aed28e-68b6-47bf-8bc9-ededb4824066",
|
|
"diagramNodeId": "12d0ab8a-392f-48fa-9efa-06ffe1f3a252",
|
|
"simStepLabel": "Flow: Create Maintenance Window - Database Module Call",
|
|
"simStepDescription": "For each monitor, the service layer calls the `createMaintenanceWindow` method in the `maintenanceWindowModule`, passing the structured data for the new record.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/service/v1/business/maintenanceWindowService.js",
|
|
"startLine": "28",
|
|
"endLine": "37",
|
|
"relevantVariables": [
|
|
"dbTransactions",
|
|
"this.db.maintenanceWindowModule.createMaintenanceWindow"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"teamId\":\"652ff379963e792a5a3a0e4d\",\"monitorId\":\"652ff379963e792a5a3a0e4e\",\"name\":\"Server Patching Window\",\"start\":\"2023-10-27T02:00:00.000Z\",\"end\":\"2023-10-27T03:00:00.000Z\",\"oneTime\":true}",
|
|
"outputDataExample": "{\"teamId\":\"652ff379963e792a5a3a0e4d\",\"monitorId\":\"652ff379963e792a5a3a0e4e\",\"name\":\"Server Patching Window\",\"start\":\"2023-10-27T02:00:00.000Z\",\"end\":\"2023-10-27T03:00:00.000Z\",\"oneTime\":true}"
|
|
},
|
|
{
|
|
"simStepId": "a3c47fd4-c701-46c2-9aff-94a667b3e368",
|
|
"diagramNodeId": "3890b98d-a133-4279-a961-5d2facc6a17a",
|
|
"simStepLabel": "Flow: Create Maintenance Window - Database Record Creation",
|
|
"simStepDescription": "The `maintenanceWindowModule` instantiates a new `MaintenanceWindow` Mongoose model. If the window is a one-time event, it sets an `expiry` field to the end time for automatic cleanup by MongoDB's TTL index. Finally, it saves the new document to the database.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/db/v1/modules/maintenanceWindowModule.js",
|
|
"startLine": "7",
|
|
"endLine": "22",
|
|
"relevantVariables": [
|
|
"createMaintenanceWindow",
|
|
"this.MaintenanceWindow",
|
|
"maintenanceWindow.save"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"teamId\":\"652ff379963e792a5a3a0e4d\",\"monitorId\":\"652ff379963e792a5a3a0e4e\",\"name\":\"Server Patching Window\",\"start\":\"2023-10-27T02:00:00.000Z\",\"end\":\"2023-10-27T03:00:00.000Z\",\"oneTime\":true}",
|
|
"outputDataExample": "{\"_id\":\"653ba9a6331a31004887396a\",\"monitorId\":\"652ff379963e792a5a3a0e4e\",\"teamId\":\"652ff379963e792a5a3a0e4d\",\"name\":\"Server Patching Window\",\"active\":true,\"start\":\"2023-10-27T02:00:00.000Z\",\"end\":\"2023-10-27T03:00:00.000Z\",\"expiry\":\"2023-10-27T03:00:00.000Z\"}"
|
|
},
|
|
{
|
|
"simStepId": "69fdc2a9-837f-466c-9562-a12319019580",
|
|
"diagramNodeId": "fcf4eef4-394c-4872-9124-f7a0b32cdc3b",
|
|
"simStepLabel": "Flow: Create Maintenance Window - API Response",
|
|
"simStepDescription": "After the database operations are complete, a success response is sent back through the layers to the frontend.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/controllers/v1/maintenanceWindowController.js",
|
|
"startLine": "37",
|
|
"endLine": "39",
|
|
"relevantVariables": [
|
|
"res.success",
|
|
"this.stringService.maintenanceWindowCreate"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"msg\":\"Maintenance Window created successfully.\"}",
|
|
"outputDataExample": "{\"msg\":\"Maintenance Window created successfully.\"}"
|
|
},
|
|
{
|
|
"simStepId": "ebe8fd52-f2a1-4a98-a71b-b04d6f4cdadc",
|
|
"diagramNodeId": "a5a84b08-8c70-4023-8d08-b74e23aab4d7",
|
|
"simStepLabel": "Flow: Create Maintenance Window - UI Update",
|
|
"simStepDescription": "The frontend receives the success response. A success toast message is displayed, and the user is navigated back to the main maintenance windows table.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Pages/v1/Maintenance/CreateMaintenance/index.jsx",
|
|
"startLine": "111",
|
|
"endLine": "119",
|
|
"relevantVariables": [
|
|
"request",
|
|
"createToast",
|
|
"navigate"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"data\":{\"msg\":\"Maintenance Window created successfully.\"}}",
|
|
"outputDataExample": "{}"
|
|
},
|
|
{
|
|
"simStepId": "82b5ea14-bb00-4511-aba4-76196029fd81",
|
|
"diagramNodeId": "d145bb4c-e1e0-473a-b6bc-decc932b738b",
|
|
"simStepLabel": "Flow: View Maintenance Windows - Page Load",
|
|
"simStepDescription": "User navigates to the '/maintenance' page. The `Maintenance` component mounts and triggers a `useEffect` hook to fetch the list of maintenance windows.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Pages/v1/Maintenance/index.jsx",
|
|
"startLine": "25",
|
|
"endLine": "47",
|
|
"relevantVariables": [
|
|
"useEffect",
|
|
"networkService.getMaintenanceWindowsByTeamId"
|
|
]
|
|
},
|
|
"inputDataExample": "{}",
|
|
"outputDataExample": "{\"page\":0,\"rowsPerPage\":5}"
|
|
},
|
|
{
|
|
"simStepId": "7e20cd6c-d24e-4540-86d6-d6a9fa087314",
|
|
"diagramNodeId": "7f921125-500f-4902-abc3-936ecac033d8",
|
|
"simStepLabel": "Flow: View Maintenance Windows - API Call",
|
|
"simStepDescription": "The `networkService` makes a GET request to the backend API to fetch the maintenance windows for the user's team, including pagination parameters.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Utils/NetworkService.js",
|
|
"startLine": "824",
|
|
"endLine": "824",
|
|
"relevantVariables": [
|
|
"getMaintenanceWindowsByTeamId",
|
|
"this.axiosInstance.get"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"page\":0,\"rowsPerPage\":5}",
|
|
"outputDataExample": "{\"page\":0,\"rowsPerPage\":5}"
|
|
},
|
|
{
|
|
"simStepId": "1251da83-5949-4e24-a1d2-fc74ff785aa9",
|
|
"diagramNodeId": "c35a065c-2808-402c-877e-9055d956ce0d",
|
|
"simStepLabel": "Flow: View Maintenance Windows - Controller and Service",
|
|
"simStepDescription": "The backend routes the request to `maintenanceWindowController.getMaintenanceWindowsByTeamId`. This controller calls the corresponding service, which in turn calls the database module to query for the data.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/controllers/v1/maintenanceWindowController.js",
|
|
"startLine": "75",
|
|
"endLine": "75",
|
|
"relevantVariables": [
|
|
"this.maintenanceWindowService.getMaintenanceWindowsByTeamId"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"teamId\":\"652ff379963e792a5a3a0e4d\",\"query\":{\"page\":\"0\",\"rowsPerPage\":\"5\"}}",
|
|
"outputDataExample": "{\"teamId\":\"652ff379963e792a5a3a0e4d\",\"query\":{\"page\":\"0\",\"rowsPerPage\":\"5\"}}"
|
|
},
|
|
{
|
|
"simStepId": "feb8bd4f-339f-4132-a709-89c63c4efa9c",
|
|
"diagramNodeId": "c3127c74-43f1-42d7-8da6-b0a494c3658f",
|
|
"simStepLabel": "Flow: View Maintenance Windows - Database Query",
|
|
"simStepDescription": "The service layer invokes the database module to fetch the maintenance windows from the database.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/service/v1/business/maintenanceWindowService.js",
|
|
"startLine": "48",
|
|
"endLine": "48",
|
|
"relevantVariables": [
|
|
"this.db.maintenanceWindowModule.getMaintenanceWindowsByTeamId"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"teamId\":\"652ff379963e792a5a3a0e4d\",\"query\":{\"page\":\"0\",\"rowsPerPage\":\"5\"}}",
|
|
"outputDataExample": "{\"teamId\":\"652ff379963e792a5a3a0e4d\",\"query\":{\"page\":\"0\",\"rowsPerPage\":\"5\"}}"
|
|
},
|
|
{
|
|
"simStepId": "9bfbae5a-f487-40ef-86f5-04a1cc3c7662",
|
|
"diagramNodeId": "27d9160a-4f8d-4dff-a09b-1678bc28cf2c",
|
|
"simStepLabel": "Flow: View Maintenance Windows - Data Retrieval",
|
|
"simStepDescription": "The `maintenanceWindowModule` constructs a MongoDB query to find all maintenance windows for the given `teamId`, applying pagination (skip, limit) and sorting. It executes the query and returns the results along with the total count.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/db/v1/modules/maintenanceWindowModule.js",
|
|
"startLine": "37",
|
|
"endLine": "66",
|
|
"relevantVariables": [
|
|
"getMaintenanceWindowsByTeamId",
|
|
"this.MaintenanceWindow.countDocuments",
|
|
"this.MaintenanceWindow.find"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"teamId\":\"652ff379963e792a5a3a0e4d\",\"query\":{\"page\":\"0\",\"rowsPerPage\":\"5\"}}",
|
|
"outputDataExample": "{\"maintenanceWindows\":[{\"_id\":\"653ba9a6331a31004887396a\",\"name\":\"Server Patching Window\"}],\"maintenanceWindowCount\":1}"
|
|
},
|
|
{
|
|
"simStepId": "eda86dca-dea6-4671-a079-7d212f4f18c4",
|
|
"diagramNodeId": "6c9979cd-1cc1-4227-b535-2ec3a10ca27e",
|
|
"simStepLabel": "Flow: View Maintenance Windows - Data Return to Frontend",
|
|
"simStepDescription": "The fetched data is sent back in the API response to the client.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/controllers/v1/maintenanceWindowController.js",
|
|
"startLine": "77",
|
|
"endLine": "80",
|
|
"relevantVariables": [
|
|
"res.success"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"data\":{\"maintenanceWindows\":[{\"_id\":\"653ba9a6331a31004887396a\",\"name\":\"Server Patching Window\"}],\"maintenanceWindowCount\":1}}",
|
|
"outputDataExample": "{\"data\":{\"maintenanceWindows\":[{\"_id\":\"653ba9a6331a31004887396a\",\"name\":\"Server Patching Window\"}],\"maintenanceWindowCount\":1}}"
|
|
},
|
|
{
|
|
"simStepId": "acf97639-e291-4ca6-81a6-d0487397f42a",
|
|
"diagramNodeId": "970e2002-7c0e-40ef-80d8-e5e6d0a60735",
|
|
"simStepLabel": "Flow: View Maintenance Windows - UI Rendering",
|
|
"simStepDescription": "The client receives the data and updates its state. The `MaintenanceTable` component then renders the list of maintenance windows in a table, displaying their names, schedules, and providing actions like edit or delete.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Pages/v1/Maintenance/MaintenanceTable/index.jsx",
|
|
"startLine": "195",
|
|
"endLine": "201",
|
|
"relevantVariables": [
|
|
"Table",
|
|
"headers",
|
|
"maintenanceWindows"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"maintenanceWindows\":[{\"_id\":\"653ba9a6331a31004887396a\",\"name\":\"Server Patching Window\"}],\"maintenanceWindowCount\":1}",
|
|
"outputDataExample": "{}"
|
|
},
|
|
{
|
|
"simStepId": "a47affaf-b952-46d6-9709-6120a77690e1",
|
|
"diagramNodeId": "23630a1f-7452-4373-a864-7ec7821137f2",
|
|
"simStepLabel": "Flow: Monitor Suppression - Job Execution Start",
|
|
"simStepDescription": "The `SuperSimpleQueue` processing system picks up a job to check a specific monitor. The job handler is retrieved from `SuperSimpleQueueHelper`.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/service/v1/infrastructure/SuperSimpleQueue/SuperSimpleQueueHelper.js",
|
|
"startLine": "30",
|
|
"endLine": "45",
|
|
"relevantVariables": [
|
|
"getMonitorJob",
|
|
"this.isInMaintenanceWindow"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"monitor\":{\"_id\":\"652ff379963e792a5a3a0e4e\",\"teamId\":\"652ff379963e792a5a3a0e4d\",\"name\":\"Main Production Server\"}}",
|
|
"outputDataExample": "{\"monitorId\":\"652ff379963e792a5a3a0e4e\",\"teamId\":\"652ff379963e792a5a3a0e4d\"}"
|
|
},
|
|
{
|
|
"simStepId": "87583096-f1ec-4160-ae52-5238f32ed0ab",
|
|
"diagramNodeId": "c99291bb-7316-440e-9a7f-323ee39e26b8",
|
|
"simStepLabel": "Flow: Monitor Suppression - Maintenance Check Call",
|
|
"simStepDescription": "Before performing the monitor check, the `getMonitorJob` function calls `isInMaintenanceWindow`, passing the monitor's ID and team ID to see if it should be suppressed.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/service/v1/infrastructure/SuperSimpleQueue/SuperSimpleQueueHelper.js",
|
|
"startLine": "36",
|
|
"endLine": "36",
|
|
"relevantVariables": [
|
|
"this.isInMaintenanceWindow"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"monitorId\":\"652ff379963e792a5a3a0e4e\",\"teamId\":\"652ff379963e792a5a3a0e4d\"}",
|
|
"outputDataExample": "{\"monitorId\":\"652ff379963e792a5a3a0e4e\",\"teamId\":\"652ff379963e792a5a3a0e4d\"}"
|
|
},
|
|
{
|
|
"simStepId": "2127e749-80b4-499a-ae14-8dc2dcc9db9b",
|
|
"diagramNodeId": "fc78b5b6-7fad-4f8f-a5a3-c7c38931daba",
|
|
"simStepLabel": "Flow: Monitor Suppression - Fetching Maintenance Windows",
|
|
"simStepDescription": "The `isInMaintenanceWindow` function calls the database module to fetch all maintenance windows associated with the given monitor ID and team ID.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/service/v1/infrastructure/SuperSimpleQueue/SuperSimpleQueueHelper.js",
|
|
"startLine": "80",
|
|
"endLine": "83",
|
|
"relevantVariables": [
|
|
"this.db.maintenanceWindowModule.getMaintenanceWindowsByMonitorId"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"monitorId\":\"652ff379963e792a5a3a0e4e\",\"teamId\":\"652ff379963e792a5a3a0e4d\"}",
|
|
"outputDataExample": "{\"monitorId\":\"652ff379963e792a5a3a0e4e\",\"teamId\":\"652ff379963e792a5a3a0e4d\"}"
|
|
},
|
|
{
|
|
"simStepId": "e6542e14-556d-482a-8c35-f7b03997be49",
|
|
"diagramNodeId": "8a13e585-2310-420b-9e92-211b6d65f201",
|
|
"simStepLabel": "Flow: Monitor Suppression - Database Result Return",
|
|
"simStepDescription": "The database module returns a list of maintenance window documents that match the monitor ID.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/db/v1/modules/maintenanceWindowModule.js",
|
|
"startLine": "69",
|
|
"endLine": "76",
|
|
"relevantVariables": [
|
|
"getMaintenanceWindowsByMonitorId",
|
|
"this.MaintenanceWindow.find"
|
|
]
|
|
},
|
|
"inputDataExample": "[{\"_id\":\"653ba9a6331a31004887396a\",\"monitorId\":\"652ff379963e792a5a3a0e4e\",\"active\":true,\"start\":\"2023-10-27T02:00:00.000Z\",\"end\":\"2023-10-27T03:00:00.000Z\"}]",
|
|
"outputDataExample": "[{\"_id\":\"653ba9a6331a31004887396a\",\"monitorId\":\"652ff379963e792a5a3a0e4e\",\"active\":true,\"start\":\"2023-10-27T02:00:00.000Z\",\"end\":\"2023-10-27T03:00:00.000Z\"}]"
|
|
},
|
|
{
|
|
"simStepId": "6ba6b9d1-5fc3-454e-8744-2022b5192ed9",
|
|
"diagramNodeId": "0fe32416-db43-49b9-9438-3796ba1a0add",
|
|
"simStepLabel": "Flow: Monitor Suppression - Time Evaluation",
|
|
"simStepDescription": "The `isInMaintenanceWindow` function iterates through the returned windows. For each active window, it checks if the current time (`new Date()`) is between the `start` and `end` times.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/service/v1/infrastructure/SuperSimpleQueue/SuperSimpleQueueHelper.js",
|
|
"startLine": "85",
|
|
"endLine": "113",
|
|
"relevantVariables": [
|
|
"maintenanceWindows.reduce",
|
|
"start",
|
|
"end",
|
|
"now"
|
|
]
|
|
},
|
|
"inputDataExample": "[{\"_id\":\"653ba9a6331a31004887396a\",\"monitorId\":\"652ff379963e792a5a3a0e4e\",\"active\":true,\"start\":\"2023-10-27T02:00:00.000Z\",\"end\":\"2023-10-27T03:00:00.000Z\"}]",
|
|
"outputDataExample": "true"
|
|
},
|
|
{
|
|
"simStepId": "a715d98f-60bf-4f32-aae6-21ee4e09f4da",
|
|
"diagramNodeId": "40f4d9df-4c0f-4384-901c-8d7117e3b538",
|
|
"simStepLabel": "Flow: Monitor Suppression - Return Suppression Flag",
|
|
"simStepDescription": "The boolean result (true if in maintenance, false otherwise) is returned to the `getMonitorJob` function.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/service/v1/infrastructure/SuperSimpleQueue/SuperSimpleQueueHelper.js",
|
|
"startLine": "114",
|
|
"endLine": "114",
|
|
"relevantVariables": [
|
|
"maintenanceWindowIsActive"
|
|
]
|
|
},
|
|
"inputDataExample": "true",
|
|
"outputDataExample": "true"
|
|
},
|
|
{
|
|
"simStepId": "e59fe64e-f06b-4855-b631-923bb5a68540",
|
|
"diagramNodeId": "01e042c3-40b4-416a-8d9e-6d6fd323d60b",
|
|
"simStepLabel": "Flow: Monitor Suppression - Conditional Job Termination",
|
|
"simStepDescription": "If the `isInMaintenanceWindow` function returns true, the `getMonitorJob` logs that the monitor is in a maintenance window and terminates its execution for this cycle, effectively suppressing the check.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/service/v1/infrastructure/SuperSimpleQueue/SuperSimpleQueueHelper.js",
|
|
"startLine": "37",
|
|
"endLine": "44",
|
|
"relevantVariables": [
|
|
"maintenanceWindowActive",
|
|
"this.logger.info",
|
|
"return"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"maintenanceWindowActive\": true}",
|
|
"outputDataExample": "{\"message\":\"Monitor 652ff379963e792a5a3a0e4e is in maintenance window\"}"
|
|
}
|
|
],
|
|
"description": "<ul><li>Allows users to schedule maintenance periods to prevent false alarms and avoid skewing uptime statistics during planned downtime</li><li>- Users can define a start and end time for a maintenance window</li><li>- Specific monitors or all monitors can be associated with a maintenance window</li><li>- During a scheduled maintenance, notifications for associated monitors are suppressed</li><li>- Provides a central table to view all active, upcoming, and past maintenance windows</li></ul>",
|
|
"simulationNodesAndEdges": {
|
|
"20335f29-a2ac-4e0c-aba6-28707748ecd4": {
|
|
"simStepIds": [
|
|
"2401ef7a-8d8e-4056-868a-547ab213daf1"
|
|
]
|
|
},
|
|
"5bdfdfa4-5d93-49fa-b05c-905813e6cf9d": {
|
|
"simStepIds": [
|
|
"5e0d7085-099b-478a-afaa-47ad4dd07043"
|
|
]
|
|
},
|
|
"a391e8ea-9dbe-4fe4-90df-bf475d8b7ef8": {
|
|
"simStepIds": [
|
|
"3e93ef65-8e2c-405b-8dc1-56d8e93937b3"
|
|
]
|
|
},
|
|
"0fae6e75-38ea-444d-a1bf-0f820ba443b9": {
|
|
"simStepIds": [
|
|
"95fc1919-339d-4659-98cb-3dc50f662075"
|
|
]
|
|
},
|
|
"560d268b-ef0f-4cd2-bcfe-9dc0a0e2ce6f": {
|
|
"simStepIds": [
|
|
"6e2cf739-1514-4c37-9874-10b68a47010e"
|
|
]
|
|
},
|
|
"3890b98d-a133-4279-a961-5d2facc6a17a": {
|
|
"simStepIds": [
|
|
"a3c47fd4-c701-46c2-9aff-94a667b3e368"
|
|
]
|
|
},
|
|
"a5a84b08-8c70-4023-8d08-b74e23aab4d7": {
|
|
"simStepIds": [
|
|
"ebe8fd52-f2a1-4a98-a71b-b04d6f4cdadc"
|
|
]
|
|
},
|
|
"d145bb4c-e1e0-473a-b6bc-decc932b738b": {
|
|
"simStepIds": [
|
|
"82b5ea14-bb00-4511-aba4-76196029fd81"
|
|
]
|
|
},
|
|
"c35a065c-2808-402c-877e-9055d956ce0d": {
|
|
"simStepIds": [
|
|
"1251da83-5949-4e24-a1d2-fc74ff785aa9"
|
|
]
|
|
},
|
|
"27d9160a-4f8d-4dff-a09b-1678bc28cf2c": {
|
|
"simStepIds": [
|
|
"9bfbae5a-f487-40ef-86f5-04a1cc3c7662"
|
|
]
|
|
},
|
|
"970e2002-7c0e-40ef-80d8-e5e6d0a60735": {
|
|
"simStepIds": [
|
|
"acf97639-e291-4ca6-81a6-d0487397f42a"
|
|
]
|
|
},
|
|
"23630a1f-7452-4373-a864-7ec7821137f2": {
|
|
"simStepIds": [
|
|
"a47affaf-b952-46d6-9709-6120a77690e1"
|
|
]
|
|
},
|
|
"fc78b5b6-7fad-4f8f-a5a3-c7c38931daba": {
|
|
"simStepIds": [
|
|
"2127e749-80b4-499a-ae14-8dc2dcc9db9b"
|
|
]
|
|
},
|
|
"0fe32416-db43-49b9-9438-3796ba1a0add": {
|
|
"simStepIds": [
|
|
"6ba6b9d1-5fc3-454e-8744-2022b5192ed9"
|
|
]
|
|
},
|
|
"01e042c3-40b4-416a-8d9e-6d6fd323d60b": {
|
|
"simStepIds": [
|
|
"e59fe64e-f06b-4855-b631-923bb5a68540"
|
|
]
|
|
},
|
|
"d3bdc6ff-875e-472e-88c8-eb10b20c526e": {
|
|
"simStepIds": [
|
|
"f881435b-3bc2-453d-b6bf-56ad3a12f120"
|
|
]
|
|
},
|
|
"fd5e4447-123b-4b2d-8bce-1d1ae7cb00af": {
|
|
"simStepIds": [
|
|
"0660b48b-139f-4ecf-b7d9-f12f544e0ab5"
|
|
]
|
|
},
|
|
"e2588541-3ffc-47c6-8f8a-41d30ea7fc72": {
|
|
"simStepIds": [
|
|
"e4cc5ce8-6da9-4281-9204-29c061ab13ce"
|
|
]
|
|
},
|
|
"e1d59cf6-0d96-4e0a-ad17-2a7984a9157f": {
|
|
"simStepIds": [
|
|
"c3d1a95c-e93d-499a-8830-a6d870902414"
|
|
]
|
|
},
|
|
"12d0ab8a-392f-48fa-9efa-06ffe1f3a252": {
|
|
"simStepIds": [
|
|
"80aed28e-68b6-47bf-8bc9-ededb4824066"
|
|
]
|
|
},
|
|
"fcf4eef4-394c-4872-9124-f7a0b32cdc3b": {
|
|
"simStepIds": [
|
|
"69fdc2a9-837f-466c-9562-a12319019580"
|
|
]
|
|
},
|
|
"7f921125-500f-4902-abc3-936ecac033d8": {
|
|
"simStepIds": [
|
|
"7e20cd6c-d24e-4540-86d6-d6a9fa087314"
|
|
]
|
|
},
|
|
"c3127c74-43f1-42d7-8da6-b0a494c3658f": {
|
|
"simStepIds": [
|
|
"feb8bd4f-339f-4132-a709-89c63c4efa9c"
|
|
]
|
|
},
|
|
"6c9979cd-1cc1-4227-b535-2ec3a10ca27e": {
|
|
"simStepIds": [
|
|
"eda86dca-dea6-4671-a079-7d212f4f18c4"
|
|
]
|
|
},
|
|
"c99291bb-7316-440e-9a7f-323ee39e26b8": {
|
|
"simStepIds": [
|
|
"87583096-f1ec-4160-ae52-5238f32ed0ab"
|
|
]
|
|
},
|
|
"8a13e585-2310-420b-9e92-211b6d65f201": {
|
|
"simStepIds": [
|
|
"e6542e14-556d-482a-8c35-f7b03997be49"
|
|
]
|
|
},
|
|
"40f4d9df-4c0f-4384-901c-8d7117e3b538": {
|
|
"simStepIds": [
|
|
"a715d98f-60bf-4f32-aae6-21ee4e09f4da"
|
|
]
|
|
}
|
|
},
|
|
"isAIGenerated": true,
|
|
"keywords": "MaintenanceWindow, createMaintenanceWindow, maintenanceWindowController",
|
|
"generationPrompt": "Scheduled Maintenance Windows",
|
|
"generationKeywords": "MaintenanceWindow, createMaintenanceWindow, maintenanceWindowController"
|
|
},
|
|
"User and Team Management with Role-Based Access": {
|
|
"name": "User and Team Management with Role-Based Access",
|
|
"simSteps": [
|
|
{
|
|
"simStepId": "2d5a952a-ce62-4948-9309-96b28ad74e59",
|
|
"diagramNodeId": "3de2d413-5e9b-49f4-9409-74be32c52e0f",
|
|
"simStepLabel": "Client: Conditional UI Rendering Based on Role",
|
|
"simStepDescription": "A user with 'superadmin' or 'admin' role navigates to the Account page. The application checks the user's role stored in the Redux state to conditionally render the 'Team' management tab. Non-admin users will not see this option.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Pages/v1/Account/index.jsx",
|
|
"startLine": "37",
|
|
"endLine": "41",
|
|
"relevantVariables": [
|
|
"user.role",
|
|
"requiredRoles",
|
|
"hideTeams"
|
|
]
|
|
},
|
|
"inputDataExample": "{\n \"user\": {\n \"_id\": \"60f8f7b3a7b3c2a3e4f5a6b7\",\n \"firstName\": \"Jane\",\n \"lastName\": \"Doe\",\n \"email\": \"jane.doe@example.com\",\n \"role\": [\"superadmin\"],\n \"teamId\": \"60f8f7b3a7b3c2a3e4f5a6b8\"\n }\n}",
|
|
"outputDataExample": "{\n \"hideTeams\": false,\n \"tabList\": [\n {\n \"name\": \"Profile\",\n \"value\": \"profile\"\n },\n {\n \"name\": \"Password\",\n \"value\": \"password\"\n },\n {\n \"name\": \"Team\",\n \"value\": \"team\"\n }\n ]\n}"
|
|
},
|
|
{
|
|
"simStepId": "10f80ada-2d0a-4e98-bd5d-057e7d4fe6de",
|
|
"diagramNodeId": "c441312f-f3c6-48c6-b1b9-7c12749d91bb",
|
|
"simStepLabel": "Client: User Navigates to Team Panel",
|
|
"simStepDescription": "The user clicks on the 'Team' tab, which navigates them to the team management view. The user's role data is implicitly passed through the application state to render the appropriate components.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Pages/v1/Account/index.jsx",
|
|
"startLine": "98",
|
|
"endLine": "98",
|
|
"relevantVariables": [
|
|
"TeamPanel"
|
|
]
|
|
},
|
|
"inputDataExample": "{\n \"navigationPath\": \"/account/team\",\n \"userState\": {\n \"role\": [\"superadmin\"]\n }\n}",
|
|
"outputDataExample": "{\n \"navigationPath\": \"/account/team\",\n \"userState\": {\n \"role\": [\"superadmin\"]\n }\n}"
|
|
},
|
|
{
|
|
"simStepId": "eebaca25-d588-49c4-a35c-9abc82fde580",
|
|
"diagramNodeId": "b27f1bba-c655-40c6-a1dc-71e78c590c92",
|
|
"simStepLabel": "Client: Initiate User Invitation",
|
|
"simStepDescription": "In the `TeamPanel`, the admin clicks the 'Add Team Member' button, then selects 'Invite a team member'. A dialog opens, prompting for the new user's email and role. After filling the form and clicking 'E-mail token', the `handleInviteMember` function is triggered to start the invitation process.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Pages/v1/Account/components/TeamPanel.jsx",
|
|
"startLine": "348",
|
|
"endLine": "354",
|
|
"relevantVariables": [
|
|
"handleInviteMember",
|
|
"Button"
|
|
]
|
|
},
|
|
"inputDataExample": "{\n \"email\": \"new.developer@example.com\",\n \"role\": [\"user\"]\n}",
|
|
"outputDataExample": "{\n \"apiCall\": \"networkService.sendInviteEmail\",\n \"payload\": {\n \"email\": \"new.developer@example.com\",\n \"role\": [\"user\"]\n }\n}"
|
|
},
|
|
{
|
|
"simStepId": "16d87608-4458-430c-b459-cd9b1d413fa6",
|
|
"diagramNodeId": "3530244f-2689-444e-bcbf-611db2e3c000",
|
|
"simStepLabel": "API Call: Send Invitation Request",
|
|
"simStepDescription": "The client sends a POST request to the `/api/v1/invite/send` endpoint. The request includes the new user's email and selected role in the body, and the admin's authentication token in the headers.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/routes/v1/inviteRoute.js",
|
|
"startLine": "14",
|
|
"endLine": "14",
|
|
"relevantVariables": [
|
|
"this.router.post"
|
|
]
|
|
},
|
|
"inputDataExample": "{\n \"endpoint\": \"/api/v1/invite/send\",\n \"method\": \"POST\",\n \"headers\": {\n \"Authorization\": \"Bearer <jwt_token>\"\n },\n \"body\": {\n \"email\": \"new.developer@example.com\",\n \"role\": [\"user\"]\n }\n}",
|
|
"outputDataExample": "{\n \"endpoint\": \"/api/v1/invite/send\",\n \"method\": \"POST\",\n \"headers\": {\n \"Authorization\": \"Bearer <jwt_token>\"\n },\n \"body\": {\n \"email\": \"new.developer@example.com\",\n \"role\": [\"user\"]\n }\n}"
|
|
},
|
|
{
|
|
"simStepId": "50dd7316-7d01-43f7-9036-d97d51a9c178",
|
|
"diagramNodeId": "8b3cb6c2-ed57-4510-be15-decb8e3c89e1",
|
|
"simStepLabel": "Server: Role-Based Access Control Middleware",
|
|
"simStepDescription": "The server receives the request. Before reaching the main controller, the `isAllowed` middleware intercepts the request. It verifies the JWT from the request header and checks if the user's role (e.g., 'superadmin') is present in the list of allowed roles for this route (`['admin', 'superadmin']`).",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/middleware/v1/isAllowed.js",
|
|
"startLine": "39",
|
|
"endLine": "44",
|
|
"relevantVariables": [
|
|
"decoded.role",
|
|
"allowedRoles",
|
|
"hasRole"
|
|
]
|
|
},
|
|
"inputDataExample": "{\n \"req\": {\n \"user\": {\n \"_id\": \"60f8f7b3a7b3c2a3e4f5a6b7\",\n \"role\": [\"superadmin\"],\n \"teamId\": \"60f8f7b3a7b3c2a3e4f5a6b8\"\n },\n \"headers\": {\n \"authorization\": \"Bearer <jwt_token>\"\n }\n },\n \"allowedRoles\": [\"admin\", \"superadmin\"]\n}",
|
|
"outputDataExample": "{\n \"result\": \"next() called\",\n \"req\": {\n \"user\": {\n \"_id\": \"60f8f7b3a7b3c2a3e4f5a6b7\",\n \"role\": [\"superadmin\"],\n \"teamId\": \"60f8f7b3a7b3c2a3e4f5a6b8\"\n },\n \"headers\": {\n \"authorization\": \"Bearer <jwt_token>\"\n }\n }\n}"
|
|
},
|
|
{
|
|
"simStepId": "6c024d4c-178b-45fc-8bca-4fc6c00549a4",
|
|
"diagramNodeId": "2ee1c4e8-90fb-4470-ad9f-6ffed5420853",
|
|
"simStepLabel": "Server: Forward Request to Controller",
|
|
"simStepDescription": "Since the user's role is authorized, the middleware calls `next()` to pass the request object, now populated with user data, to the next handler in the chain: `inviteController.sendInviteEmail`.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/controllers/v1/inviteController.js",
|
|
"startLine": "61",
|
|
"endLine": "68",
|
|
"relevantVariables": [
|
|
"sendInviteEmail",
|
|
"this.inviteService.sendInviteEmail"
|
|
]
|
|
},
|
|
"inputDataExample": "{\n \"req\": {\n \"user\": {\n \"_id\": \"60f8f7b3a7b3c2a3e4f5a6b7\",\n \"firstName\": \"Jane\",\n \"role\": [\"superadmin\"],\n \"teamId\": \"60f8f7b3a7b3c2a3e4f5a6b8\"\n },\n \"body\": {\n \"email\": \"new.developer@example.com\",\n \"role\": [\"user\"]\n }\n }\n}",
|
|
"outputDataExample": "{\n \"req\": {\n \"user\": {\n \"_id\": \"60f8f7b3a7b3c2a3e4f5a6b7\",\n \"firstName\": \"Jane\",\n \"role\": [\"superadmin\"],\n \"teamId\": \"60f8f7b3a7b3c2a3e4f5a6b8\"\n },\n \"body\": {\n \"email\": \"new.developer@example.com\",\n \"role\": [\"user\"]\n }\n }\n}"
|
|
},
|
|
{
|
|
"simStepId": "55fe9963-30d2-47f8-859f-b485a77064c4",
|
|
"diagramNodeId": "ae858158-8db6-4917-8fda-0966a953f6ed",
|
|
"simStepLabel": "Server: Process Invitation in Service Layer",
|
|
"simStepDescription": "The `inviteController` calls the `inviteService`. The service layer handles the business logic: it first requests an invitation token from the database module and then instructs the email service to send the invitation.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/service/v1/business/inviteService.js",
|
|
"startLine": "24",
|
|
"endLine": "28",
|
|
"relevantVariables": [
|
|
"sendInviteEmail",
|
|
"this.db.inviteModule.requestInviteToken",
|
|
"this.emailService.sendInviteEmail"
|
|
]
|
|
},
|
|
"inputDataExample": "{\n \"inviteRequest\": {\n \"email\": \"new.developer@example.com\",\n \"role\": [\"user\"],\n \"teamId\": \"60f8f7b3a7b3c2a3e4f5a6b8\"\n },\n \"firstName\": \"Jane\"\n}",
|
|
"outputDataExample": "{\n \"inviteToken\": {\n \"token\": \"a1b2c3d4e5f6...\",\n \"email\": \"new.developer@example.com\"\n }\n}"
|
|
},
|
|
{
|
|
"simStepId": "c796f8ad-d548-45f3-8d62-67f59c6c1aa4",
|
|
"diagramNodeId": "bdd52e6f-ddf7-4966-b3af-957f9553082f",
|
|
"simStepLabel": "Database Query: Create and Store Invite Token",
|
|
"simStepDescription": "The `inviteService` calls the `inviteModule` to generate and persist a unique invitation token. This involves creating a new document in the `InviteToken` collection with the invitee's details and a securely generated random token.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/db/v1/modules/inviteModule.js",
|
|
"startLine": "23",
|
|
"endLine": "26",
|
|
"relevantVariables": [
|
|
"requestInviteToken",
|
|
"InviteToken",
|
|
"invite.save"
|
|
]
|
|
},
|
|
"inputDataExample": "{\n \"email\": \"new.developer@example.com\",\n \"role\": [\"user\"],\n \"teamId\": \"60f8f7b3a7b3c2a3e4f5a6b8\"\n}",
|
|
"outputDataExample": "{\n \"_id\": \"61f8f7b3a7b3c2a3e4f5a6b9\",\n \"email\": \"new.developer@example.com\",\n \"role\": [\"user\"],\n \"teamId\": \"60f8f7b3a7b3c2a3e4f5a6b8\",\n \"token\": \"a1b2c3d4e5f6...\",\n \"createdAt\": \"2023-10-27T10:00:00.000Z\"\n}"
|
|
},
|
|
{
|
|
"simStepId": "7d1f86f2-c8d5-48fb-a8c1-b337dc56271f",
|
|
"diagramNodeId": "a7be2d0b-0227-4228-a0a6-074f7324fd89",
|
|
"simStepLabel": "Server: Dispatch Invitation Email",
|
|
"simStepDescription": "After successfully storing the token, the `inviteService` uses the `emailService` to compose and send an email to the new user. The email contains a unique registration link including the generated token.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/service/v1/business/inviteService.js",
|
|
"startLine": "26",
|
|
"endLine": "28",
|
|
"relevantVariables": [
|
|
"this.emailService.sendInviteEmail",
|
|
"inviteToken"
|
|
]
|
|
},
|
|
"inputDataExample": "{\n \"to\": \"new.developer@example.com\",\n \"token\": \"a1b2c3d4e5f6...\",\n \"inviterName\": \"Jane\"\n}",
|
|
"outputDataExample": "{\n \"status\": \"success\",\n \"messageId\": \"<message-id@example.com>\"\n}"
|
|
},
|
|
{
|
|
"simStepId": "6ba5094d-d1e6-4ec3-8917-28cdb30f2ef9",
|
|
"diagramNodeId": "52732a37-82b8-40a7-b12d-dc1b82380b2d",
|
|
"simStepLabel": "API Response: Send Confirmation to Client",
|
|
"simStepDescription": "The server's controller, having successfully processed the invitation, sends a JSON response back to the client indicating that the invite was sent successfully.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/controllers/v1/inviteController.js",
|
|
"startLine": "69",
|
|
"endLine": "72",
|
|
"relevantVariables": [
|
|
"res.success"
|
|
]
|
|
},
|
|
"inputDataExample": "{\n \"success\": true,\n \"msg\": \"Invite sent successfully\",\n \"data\": {\n \"token\": \"a1b2c3d4e5f6...\",\n \"email\": \"new.developer@example.com\"\n }\n}",
|
|
"outputDataExample": "{\n \"success\": true,\n \"msg\": \"Invite sent successfully\",\n \"data\": {\n \"token\": \"a1b2c3d4e5f6...\",\n \"email\": \"new.developer@example.com\"\n }\n}"
|
|
},
|
|
{
|
|
"simStepId": "700f35e0-b39d-417c-b0a8-0612feade977",
|
|
"diagramNodeId": "02d87257-883c-4822-a421-823c983532ec",
|
|
"simStepLabel": "Client: Display Success Feedback",
|
|
"simStepDescription": "The client application receives the successful API response. It then closes the invitation dialog and displays a toast notification to the admin, confirming that the invitation has been sent.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Pages/v1/Account/components/TeamPanel.jsx",
|
|
"startLine": "145",
|
|
"endLine": "149",
|
|
"relevantVariables": [
|
|
"createToast",
|
|
"closeInviteModal"
|
|
]
|
|
},
|
|
"inputDataExample": "{\n \"response\": {\n \"status\": 200,\n \"data\": {\n \"success\": true,\n \"msg\": \"Invite sent successfully\"\n }\n }\n}",
|
|
"outputDataExample": "{\n \"uiState\": {\n \"toast\": {\n \"type\": \"success\",\n \"message\": \"Invite sent successfully\"\n }\n }\n}"
|
|
}
|
|
],
|
|
"description": "<ul><li>Enables collaborative use of the application within an organization with proper access controls</li><li>- The system supports multiple users organized into teams</li><li>- Implements role-based access control (RBAC) with roles like 'superadmin' and 'admin', restricting access to sensitive areas like settings and user management</li><li>- Superadmins can invite new users to the team via email, assigning them a specific role</li><li>- Users can manage their own profiles and change their passwords</li></ul>",
|
|
"simulationNodesAndEdges": {
|
|
"3de2d413-5e9b-49f4-9409-74be32c52e0f": {
|
|
"simStepIds": [
|
|
"2d5a952a-ce62-4948-9309-96b28ad74e59"
|
|
]
|
|
},
|
|
"b27f1bba-c655-40c6-a1dc-71e78c590c92": {
|
|
"simStepIds": [
|
|
"eebaca25-d588-49c4-a35c-9abc82fde580"
|
|
]
|
|
},
|
|
"8b3cb6c2-ed57-4510-be15-decb8e3c89e1": {
|
|
"simStepIds": [
|
|
"50dd7316-7d01-43f7-9036-d97d51a9c178"
|
|
]
|
|
},
|
|
"ae858158-8db6-4917-8fda-0966a953f6ed": {
|
|
"simStepIds": [
|
|
"55fe9963-30d2-47f8-859f-b485a77064c4"
|
|
]
|
|
},
|
|
"a7be2d0b-0227-4228-a0a6-074f7324fd89": {
|
|
"simStepIds": [
|
|
"7d1f86f2-c8d5-48fb-a8c1-b337dc56271f"
|
|
]
|
|
},
|
|
"02d87257-883c-4822-a421-823c983532ec": {
|
|
"simStepIds": [
|
|
"700f35e0-b39d-417c-b0a8-0612feade977"
|
|
]
|
|
},
|
|
"c441312f-f3c6-48c6-b1b9-7c12749d91bb": {
|
|
"simStepIds": [
|
|
"10f80ada-2d0a-4e98-bd5d-057e7d4fe6de"
|
|
]
|
|
},
|
|
"3530244f-2689-444e-bcbf-611db2e3c000": {
|
|
"simStepIds": [
|
|
"16d87608-4458-430c-b459-cd9b1d413fa6"
|
|
]
|
|
},
|
|
"2ee1c4e8-90fb-4470-ad9f-6ffed5420853": {
|
|
"simStepIds": [
|
|
"6c024d4c-178b-45fc-8bca-4fc6c00549a4"
|
|
]
|
|
},
|
|
"bdd52e6f-ddf7-4966-b3af-957f9553082f": {
|
|
"simStepIds": [
|
|
"c796f8ad-d548-45f3-8d62-67f59c6c1aa4"
|
|
]
|
|
},
|
|
"52732a37-82b8-40a7-b12d-dc1b82380b2d": {
|
|
"simStepIds": [
|
|
"6ba5094d-d1e6-4ec3-8917-28cdb30f2ef9"
|
|
]
|
|
}
|
|
},
|
|
"isAIGenerated": true,
|
|
"keywords": "isAllowed, RoleProtectedRoute, Team",
|
|
"generationPrompt": "User and Team Management with Role-Based Access",
|
|
"generationKeywords": "isAllowed, RoleProtectedRoute, Team"
|
|
},
|
|
"Bulk Monitor Management": {
|
|
"name": "Bulk Monitor Management",
|
|
"simSteps": [
|
|
{
|
|
"simStepId": "a29da01e-8c5a-4e6d-8d3c-e49af528e4fa",
|
|
"diagramNodeId": "c4caeba8-ed9a-4cbc-9888-38cc8ca55362",
|
|
"simStepLabel": "Flow 1: CSV Import - Navigate to Bulk Import Page",
|
|
"simStepDescription": "The user navigates to the \"/uptime/bulk-import\" URL, which is routed to the BulkImport component for rendering the UI.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Routes/index.jsx",
|
|
"startLine": "88",
|
|
"endLine": "91",
|
|
"relevantVariables": [
|
|
"Route",
|
|
"BulkImport"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"url\": \"/uptime/bulk-import\"}",
|
|
"outputDataExample": "{\"component\": \"BulkImport\"}"
|
|
},
|
|
{
|
|
"simStepId": "ef0bbcff-9535-4c0e-a5ca-96c457f89139",
|
|
"diagramNodeId": "c9a012bc-d53f-494f-82f2-1ee3f40ce646",
|
|
"simStepLabel": "Flow 1: CSV Import - Render UI",
|
|
"simStepDescription": "The BulkImport component is rendered, displaying the file upload interface to the user.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Pages/v1/Uptime/BulkImport/index.jsx",
|
|
"startLine": "16",
|
|
"endLine": "50",
|
|
"relevantVariables": [
|
|
"BulkImport"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"props\": {}}",
|
|
"outputDataExample": "{\"props\": {}}"
|
|
},
|
|
{
|
|
"simStepId": "bbd04d55-fc6a-4ba8-bcde-5a4dc263d6eb",
|
|
"diagramNodeId": "6f1948fa-e84a-4f8e-8f3b-8f24c511b3d8",
|
|
"simStepLabel": "Flow 1: CSV Import - User Selects File",
|
|
"simStepDescription": "The user clicks the 'Select File' button, triggering the file input. When a file is chosen, the `handleFileChange` function validates that it's a CSV file and updates the component's state.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Pages/v1/Uptime/BulkImport/Upload.jsx",
|
|
"startLine": "23",
|
|
"endLine": "31",
|
|
"relevantVariables": [
|
|
"handleFileChange",
|
|
"selectedFile",
|
|
"setError",
|
|
"setFile"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"event\": {\"target\": {\"files\": [{\"name\": \"monitors_to_import.csv\", \"type\": \"text/csv\", \"size\": 512}]}}}",
|
|
"outputDataExample": "{\"stateUpdate\": {\"selectedFile\": {\"name\": \"monitors_to_import.csv\", \"type\": \"text/csv\", \"size\": 512}}}"
|
|
},
|
|
{
|
|
"simStepId": "610120d2-0521-4444-b245-feb97239a389",
|
|
"diagramNodeId": "e03a8ce2-c2cd-4147-8bab-63d6c2cf0a48",
|
|
"simStepLabel": "Flow 1: CSV Import - File State Update",
|
|
"simStepDescription": "The selected file object is passed from the UploadFile component to the parent BulkImport component via the `onFileSelect` prop, updating its `selectedFile` state.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Pages/v1/Uptime/BulkImport/index.jsx",
|
|
"startLine": "22",
|
|
"endLine": "22",
|
|
"relevantVariables": [
|
|
"setSelectedFile"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"selectedFile\": {\"name\": \"monitors_to_import.csv\", \"type\": \"text/csv\", \"size\": 512}}",
|
|
"outputDataExample": "{\"selectedFile\": {\"name\": \"monitors_to_import.csv\", \"type\": \"text/csv\", \"size\": 512}}"
|
|
},
|
|
{
|
|
"simStepId": "0139fcaa-eb46-4176-b7bd-1cb15e7f1f4c",
|
|
"diagramNodeId": "dd2f9356-fad3-47d4-81d5-a5e038298e2b",
|
|
"simStepLabel": "Flow 1: CSV Import - Submit Upload",
|
|
"simStepDescription": "The user clicks the submit button, which executes the `handleSubmit` function. This function calls the `createBulkMonitors` function provided by the `useCreateBulkMonitors` custom hook.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Pages/v1/Uptime/BulkImport/index.jsx",
|
|
"startLine": "32",
|
|
"endLine": "45",
|
|
"relevantVariables": [
|
|
"handleSubmit",
|
|
"createBulkMonitors",
|
|
"selectedFile",
|
|
"user"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"selectedFile\": {\"name\": \"monitors_to_import.csv\", \"type\": \"text/csv\", \"size\": 512}}",
|
|
"outputDataExample": "null"
|
|
},
|
|
{
|
|
"simStepId": "a365d018-e80c-419c-80b3-5ffc8f14dc5c",
|
|
"diagramNodeId": "b8c0292d-afbb-4648-b484-1c27be96d52f",
|
|
"simStepLabel": "Flow 1: CSV Import - Prepare Form Data",
|
|
"simStepDescription": "The `useCreateBulkMonitors` hook creates a `FormData` object and appends the selected CSV file to it, preparing it for the network request.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Hooks/v1/monitorHooks.js",
|
|
"startLine": "490",
|
|
"endLine": "493",
|
|
"relevantVariables": [
|
|
"createBulkMonitors",
|
|
"formData"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"file\": {\"name\": \"monitors_to_import.csv\", \"type\": \"text/csv\", \"size\": 512}}",
|
|
"outputDataExample": "{\"formData\": {\"csvFile\": \"<File Object>\"}}"
|
|
},
|
|
{
|
|
"simStepId": "2fc087b3-033d-4cf5-81f2-e35b99a14bce",
|
|
"diagramNodeId": "5967e576-f542-4c0b-a3f4-9446ae992721",
|
|
"simStepLabel": "Flow 1: CSV Import - Send API Request",
|
|
"simStepDescription": "The NetworkService sends the `FormData` containing the CSV file to the backend via a POST request to the `/monitors/bulk` endpoint. The `Content-Type` is set to `multipart/form-data`.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Utils/NetworkService.js",
|
|
"startLine": "978",
|
|
"endLine": "983",
|
|
"relevantVariables": [
|
|
"createBulkMonitors",
|
|
"this.axiosInstance.post"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"url\": \"/monitors/bulk\", \"formData\": {\"csvFile\": \"<File Object>\"}}",
|
|
"outputDataExample": "{\"promise\": \"<Pending Axios Promise>\"}"
|
|
},
|
|
{
|
|
"simStepId": "e6dec1dc-33cb-4669-a3b0-7a3c0b233185",
|
|
"diagramNodeId": "23715cce-c83a-44c0-9853-4c95b85e5ecd",
|
|
"simStepLabel": "Flow 1: CSV Import - Transmit Data to Server",
|
|
"simStepDescription": "The HTTP POST request containing the multipart form data is transmitted from the client to the server's API endpoint.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/routes/v1/monitorRoute.js",
|
|
"startLine": "46",
|
|
"endLine": "46",
|
|
"relevantVariables": [
|
|
"this.router.post",
|
|
"upload.single",
|
|
"this.monitorController.createBulkMonitors"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"request\": {\"method\": \"POST\", \"endpoint\": \"/api/v1/monitors/bulk\", \"headers\": {\"Content-Type\": \"multipart/form-data\"}, \"body\": \"---boundary\\nContent-Disposition: form-data; name=\\\"csvFile\\\"; filename=\\\"monitors.csv\\\"\\n...\"}}",
|
|
"outputDataExample": "{\"request\": {\"method\": \"POST\", \"endpoint\": \"/api/v1/monitors/bulk\", \"headers\": {\"Content-Type\": \"multipart/form-data\"}, \"body\": \"---boundary\\nContent-Disposition: form-data; name=\\\"csvFile\\\"; filename=\\\"monitors.csv\\\"\\n...\"}}"
|
|
},
|
|
{
|
|
"simStepId": "07bf3d83-047d-4e51-9f96-8c9c64848500",
|
|
"diagramNodeId": "c1ac3c26-996a-43ef-9c34-4c2776188784",
|
|
"simStepLabel": "Flow 1: CSV Import - Server Receives Request",
|
|
"simStepDescription": "The server's monitor route receives the request. The `multer` middleware processes the file upload, making the file available in `req.file`. The request is then passed to the `createBulkMonitors` controller method.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/routes/v1/monitorRoute.js",
|
|
"startLine": "46",
|
|
"endLine": "46",
|
|
"relevantVariables": [
|
|
"this.router.post",
|
|
"upload.single",
|
|
"this.monitorController.createBulkMonitors"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"request\": {\"endpoint\": \"/monitors/bulk\"}}",
|
|
"outputDataExample": "{\"req.file\": {\"fieldname\": \"csvFile\", \"originalname\": \"monitors.csv\", \"buffer\": \"<Buffer ...>\"}}"
|
|
},
|
|
{
|
|
"simStepId": "c53d3f62-73fe-4fad-9835-ef2c8cf52894",
|
|
"diagramNodeId": "20d0e690-a569-4c6f-8238-916cac920553",
|
|
"simStepLabel": "Flow 1: CSV Import - Route to Controller",
|
|
"simStepDescription": "The request object, now populated with the uploaded file buffer by the middleware, is passed from the routing layer to the monitor controller for business logic processing.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/controllers/v1/monitorController.js",
|
|
"startLine": "206",
|
|
"endLine": "212",
|
|
"relevantVariables": [
|
|
"createBulkMonitors",
|
|
"req.file"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"req\": {\"file\": {\"buffer\": \"<Buffer 6e 61 ...>\"}, \"user\": {\"_id\": \"user_123\", \"teamId\": \"team_abc\"}}}",
|
|
"outputDataExample": "{\"req\": {\"file\": {\"buffer\": \"<Buffer 6e 61 ...>\"}, \"user\": {\"_id\": \"user_123\", \"teamId\": \"team_abc\"}}}"
|
|
},
|
|
{
|
|
"simStepId": "a3799570-64bf-481e-9ffe-31dbad8a36e4",
|
|
"diagramNodeId": "0e520a6d-34bf-467b-a894-e73979364478",
|
|
"simStepLabel": "Flow 1: CSV Import - Controller Processes Data",
|
|
"simStepDescription": "The controller validates the presence of the file and extracts the file data (buffer), `userId`, and `teamId`. It then calls the `monitorService.createBulkMonitors` method to handle the core logic.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/controllers/v1/monitorController.js",
|
|
"startLine": "228",
|
|
"endLine": "232",
|
|
"relevantVariables": [
|
|
"fileData",
|
|
"monitors",
|
|
"this.monitorService.createBulkMonitors"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"file\": {\"buffer\": \"<Buffer 6e 61 ...>\"}, \"user\": {\"_id\": \"user_123\", \"teamId\": \"team_abc\"}}",
|
|
"outputDataExample": "null"
|
|
},
|
|
{
|
|
"simStepId": "6038422c-ab83-4fc6-a58b-c75734276118",
|
|
"diagramNodeId": "7292bf6e-431d-4a9d-94ce-2bcfabcaa79d",
|
|
"simStepLabel": "Flow 1: CSV Import - Controller to Service",
|
|
"simStepDescription": "The file buffer and user/team identifiers are passed from the controller to the monitor service layer.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/service/v1/business/monitorService.js",
|
|
"startLine": "84",
|
|
"endLine": "84",
|
|
"relevantVariables": [
|
|
"createBulkMonitors"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"fileData\": \"<Buffer 6e 61 ...>\", \"userId\": \"user_123\", \"teamId\": \"team_abc\"}",
|
|
"outputDataExample": "{\"fileData\": \"<Buffer 6e 61 ...>\", \"userId\": \"user_123\", \"teamId\": \"team_abc\"}"
|
|
},
|
|
{
|
|
"simStepId": "2c7c3082-e4b6-4525-860f-2ffcd9e86db1",
|
|
"diagramNodeId": "6139e487-1dd5-405a-ba7d-ededec4b282e",
|
|
"simStepLabel": "Flow 1: CSV Import - Service Parses CSV",
|
|
"simStepDescription": "The monitor service uses the `papaparse` library to parse the CSV file buffer into a JSON object array. In the `complete` callback, it enriches each record with `userId` and `teamId`.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/service/v1/business/monitorService.js",
|
|
"startLine": "85",
|
|
"endLine": "134",
|
|
"relevantVariables": [
|
|
"papaparse.parse",
|
|
"enrichedData",
|
|
"this.db.monitorModule.createBulkMonitors"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"fileData\": \"name,type,url\\nGoogle,http,https://google.com\\n\"}",
|
|
"outputDataExample": "{\"enrichedData\": [{\"name\": \"Google\", \"type\": \"http\", \"url\": \"https://google.com\", \"userId\": \"user_123\", \"teamId\": \"team_abc\"}]}"
|
|
},
|
|
{
|
|
"simStepId": "0115fb69-4959-4b32-bd90-1dcd3c2231f6",
|
|
"diagramNodeId": "b55a0dc6-f596-4e5f-9265-63588b46b519",
|
|
"simStepLabel": "Flow 1: CSV Import - Service to Database Module",
|
|
"simStepDescription": "The array of parsed and enriched monitor objects is passed to the database module for persistence.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/service/v1/business/monitorService.js",
|
|
"startLine": "126",
|
|
"endLine": "126",
|
|
"relevantVariables": [
|
|
"this.db.monitorModule.createBulkMonitors"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"enrichedData\": [{\"name\": \"Google\", \"type\": \"http\", \"url\": \"https://google.com\", \"userId\": \"user_123\", \"teamId\": \"team_abc\"}]}",
|
|
"outputDataExample": "{\"enrichedData\": [{\"name\": \"Google\", \"type\": \"http\", \"url\": \"https://google.com\", \"userId\": \"user_123\", \"teamId\": \"team_abc\"}]}"
|
|
},
|
|
{
|
|
"simStepId": "70f18c21-2918-402e-9c35-1bdce8bc82d4",
|
|
"diagramNodeId": "d9d519af-5c4d-4494-929e-a869581c1dc4",
|
|
"simStepLabel": "Flow 1: CSV Import - Database Bulk Save",
|
|
"simStepDescription": "The `monitorModule` uses `Monitor.bulkSave` to efficiently insert all the new monitor documents into the MongoDB database in a single operation.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/db/v1/modules/monitorModule.js",
|
|
"startLine": "465",
|
|
"endLine": "468",
|
|
"relevantVariables": [
|
|
"createBulkMonitors",
|
|
"this.Monitor.bulkSave"
|
|
]
|
|
},
|
|
"inputDataExample": "[{\"name\": \"Google\", \"type\": \"http\", \"url\": \"https://google.com\"}]",
|
|
"outputDataExample": "[{\"_id\": \"monitor_xyz\", \"name\": \"Google\"}]"
|
|
},
|
|
{
|
|
"simStepId": "2ee7bd94-d131-4dd8-bdf8-68433d00472d",
|
|
"diagramNodeId": "f27c60ef-fb40-43e2-9750-c2617bdeaf43",
|
|
"simStepLabel": "Flow 1: CSV Import - Database to Service",
|
|
"simStepDescription": "The newly created monitor documents, now with database-generated `_id`s, are returned from the database module back to the service layer.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/db/v1/modules/monitorModule.js",
|
|
"startLine": "467",
|
|
"endLine": "467",
|
|
"relevantVariables": [
|
|
"monitors"
|
|
]
|
|
},
|
|
"inputDataExample": "[{\"_id\": \"monitor_xyz\", \"name\": \"Google\"}]",
|
|
"outputDataExample": "[{\"_id\": \"monitor_xyz\", \"name\": \"Google\"}]"
|
|
},
|
|
{
|
|
"simStepId": "66fbf913-e662-4bd9-ada6-077be9e37f07",
|
|
"diagramNodeId": "1e1d975f-7f0f-4132-bd71-2563b35e99b3",
|
|
"simStepLabel": "Flow 1: CSV Import - Enqueue Monitor Jobs",
|
|
"simStepDescription": "After the monitors are saved, the service iterates through them and adds a new job to the `jobQueue` for each one, scheduling them for their first check. It then resolves the promise, returning the data up the call stack.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/service/v1/business/monitorService.js",
|
|
"startLine": "128",
|
|
"endLine": "132",
|
|
"relevantVariables": [
|
|
"Promise.all",
|
|
"this.jobQueue.addJob"
|
|
]
|
|
},
|
|
"inputDataExample": "[{\"_id\": \"monitor_xyz\", \"name\": \"Google\"}]",
|
|
"outputDataExample": "[{\"_id\": \"monitor_xyz\", \"name\": \"Google\"}]"
|
|
},
|
|
{
|
|
"simStepId": "94d5772d-3f46-4d43-b764-3493db5c4971",
|
|
"diagramNodeId": "c449f81a-d6af-4f7a-b2d8-050a9a9ee0f9",
|
|
"simStepLabel": "Flow 1: CSV Import - Service to Controller",
|
|
"simStepDescription": "The final list of created monitors is passed back to the controller.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/controllers/v1/monitorController.js",
|
|
"startLine": "230",
|
|
"endLine": "230",
|
|
"relevantVariables": [
|
|
"monitors"
|
|
]
|
|
},
|
|
"inputDataExample": "[{\"_id\": \"monitor_xyz\", \"name\": \"Google\"}]",
|
|
"outputDataExample": "[{\"_id\": \"monitor_xyz\", \"name\": \"Google\"}]"
|
|
},
|
|
{
|
|
"simStepId": "f5377571-156f-4c5c-8bab-b6dacdf0fea6",
|
|
"diagramNodeId": "72b55fa1-d944-4e46-ac98-f6a6cb201afa",
|
|
"simStepLabel": "Flow 1: CSV Import - Send Success Response",
|
|
"simStepDescription": "The controller constructs a successful JSON response containing a message and the data for the newly created monitors, and sends it back to the client.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/controllers/v1/monitorController.js",
|
|
"startLine": "232",
|
|
"endLine": "235",
|
|
"relevantVariables": [
|
|
"res.success"
|
|
]
|
|
},
|
|
"inputDataExample": "[{\"_id\": \"monitor_xyz\", \"name\": \"Google\"}]",
|
|
"outputDataExample": "{\"msg\": \"Monitors created successfully.\", \"data\": [{\"_id\": \"monitor_xyz\"}]}"
|
|
},
|
|
{
|
|
"simStepId": "c60a3adb-dd81-41b0-95e4-a0a6d23f9dd0",
|
|
"diagramNodeId": "926a330c-a9c5-4983-a4b5-70359813e49a",
|
|
"simStepLabel": "Flow 1: CSV Import - Transmit Success to Client",
|
|
"simStepDescription": "The server sends the successful HTTP response back to the client's browser.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Hooks/v1/monitorHooks.js",
|
|
"startLine": "494",
|
|
"endLine": "494",
|
|
"relevantVariables": [
|
|
"response"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"status\": 200, \"body\": {\"msg\": \"Monitors created successfully!\", \"data\": [{\"_id\": \"monitor_xyz\"}]}}",
|
|
"outputDataExample": "{\"status\": 200, \"body\": {\"msg\": \"Monitors created successfully!\", \"data\": [{\"_id\": \"monitor_xyz\"}]}}"
|
|
},
|
|
{
|
|
"simStepId": "72b3f16d-290d-4a61-8748-2ad90d63ec68",
|
|
"diagramNodeId": "ae3b7e23-ed64-40aa-9760-389f0a869f8d",
|
|
"simStepLabel": "Flow 1: CSV Import - Client Handles Success",
|
|
"simStepDescription": "The client-side promise resolves. The `handleSubmit` function in the `BulkImport` component receives the success status, displays a success toast message, and navigates the user to the main uptime monitoring page.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Pages/v1/Uptime/BulkImport/index.jsx",
|
|
"startLine": "37",
|
|
"endLine": "41",
|
|
"relevantVariables": [
|
|
"createToast",
|
|
"navigate"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"success\": true, \"data\": [{\"_id\": \"monitor_xyz\"}]}",
|
|
"outputDataExample": "{\"navigation\": \"/uptime\"}"
|
|
},
|
|
{
|
|
"simStepId": "63d8d81f-f436-4594-a6eb-8c0fd2110bc1",
|
|
"diagramNodeId": "26d76516-fd7e-4ae8-956a-d077de4257fa",
|
|
"simStepLabel": "Flow 2: CSV Export - Initiate Export",
|
|
"simStepDescription": "An admin user clicks an 'Export to CSV' button in the UI. This action triggers a call to the `/monitors/export` API endpoint to begin the export process.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/routes/v1/monitorRoute.js",
|
|
"startLine": "45",
|
|
"endLine": "45",
|
|
"relevantVariables": [
|
|
"this.router.get",
|
|
"this.monitorController.exportMonitorsToCSV"
|
|
]
|
|
},
|
|
"inputDataExample": "{}",
|
|
"outputDataExample": "{\"request\": {\"method\": \"GET\", \"endpoint\": \"/api/v1/monitors/export\"}}"
|
|
},
|
|
{
|
|
"simStepId": "53cebb8e-cf45-49eb-a7d3-98fd87af21b4",
|
|
"diagramNodeId": "febea87e-5033-479c-ba7a-eb35d98db899",
|
|
"simStepLabel": "Flow 2: CSV Export - Transmit Request to Server",
|
|
"simStepDescription": "An HTTP GET request is sent from the client to the server to fetch the monitor data as a CSV file.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/routes/v1/monitorRoute.js",
|
|
"startLine": "45",
|
|
"endLine": "45",
|
|
"relevantVariables": [
|
|
"this.router.get",
|
|
"this.monitorController.exportMonitorsToCSV"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"request\": {\"method\": \"GET\", \"endpoint\": \"/api/v1/monitors/export\"}}",
|
|
"outputDataExample": "{\"request\": {\"method\": \"GET\", \"endpoint\": \"/api/v1/monitors/export\"}}"
|
|
},
|
|
{
|
|
"simStepId": "d9db3f40-8add-4551-9323-274348b9800f",
|
|
"diagramNodeId": "a3106388-6a3d-4b68-a3fc-3761a0d54f98",
|
|
"simStepLabel": "Flow 2: CSV Export - Controller Handles Request",
|
|
"simStepDescription": "The `exportMonitorsToCSV` method in the monitor controller is invoked. It retrieves the `teamId` from the authenticated user's session and calls the monitor service to perform the export.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/controllers/v1/monitorController.js",
|
|
"startLine": "427",
|
|
"endLine": "434",
|
|
"relevantVariables": [
|
|
"exportMonitorsToCSV",
|
|
"teamId",
|
|
"this.monitorService.exportMonitorsToCSV"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"req\": {\"user\": {\"teamId\": \"team_abc\"}}}",
|
|
"outputDataExample": "{\"teamId\": \"team_abc\"}"
|
|
},
|
|
{
|
|
"simStepId": "74e95fb5-863c-4137-a41b-d7a32efa04a5",
|
|
"diagramNodeId": "3e0f0966-5c2f-41af-9bcc-e8f615e03a00",
|
|
"simStepLabel": "Flow 2: CSV Export - Controller to Service",
|
|
"simStepDescription": "The `teamId` is passed from the controller to the monitor service to ensure only monitors belonging to the correct team are exported.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/service/v1/business/monitorService.js",
|
|
"startLine": "245",
|
|
"endLine": "245",
|
|
"relevantVariables": [
|
|
"exportMonitorsToCSV",
|
|
"teamId"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"teamId\": \"team_abc\"}",
|
|
"outputDataExample": "{\"teamId\": \"team_abc\"}"
|
|
},
|
|
{
|
|
"simStepId": "85cd1d5d-7ffb-49c5-aacb-907048003fc5",
|
|
"diagramNodeId": "ab9cb862-0ac7-45a3-9888-f64e87bdda54",
|
|
"simStepLabel": "Flow 2: CSV Export - Generate CSV",
|
|
"simStepDescription": "The monitor service fetches all monitors for the given `teamId` from the database. It then maps the data into the required format and uses `papaparse` to convert the JSON array into a CSV-formatted string.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/service/v1/business/monitorService.js",
|
|
"startLine": "245",
|
|
"endLine": "266",
|
|
"relevantVariables": [
|
|
"getMonitorsByTeamId",
|
|
"csvData",
|
|
"this.papaparse.unparse"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"teamId\": \"team_abc\"}",
|
|
"outputDataExample": "{\"csv\": \"name,description,type,url,interval,port,ignoreTlsErrors,isActive\\nMy Website,,http,https://example.com,60,,false,true\"}"
|
|
},
|
|
{
|
|
"simStepId": "4deb5e47-2ac4-4638-9ee6-48295d027bcd",
|
|
"diagramNodeId": "ad300b1c-6748-40f9-a7c9-5895e0915991",
|
|
"simStepLabel": "Flow 2: CSV Export - Service to Controller",
|
|
"simStepDescription": "The generated CSV string is returned from the service layer to the controller.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/controllers/v1/monitorController.js",
|
|
"startLine": "432",
|
|
"endLine": "432",
|
|
"relevantVariables": [
|
|
"csv"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"csv\": \"name,description,type,url,...\\nMy Website,,http,https://example.com,...\"}",
|
|
"outputDataExample": "{\"csv\": \"name,description,type,url,...\\nMy Website,,http,https://example.com,...\"}"
|
|
},
|
|
{
|
|
"simStepId": "256095b8-5e3a-4c20-abd9-be9e6a9d0bad",
|
|
"diagramNodeId": "f151f89d-6399-48f0-aecd-5eb1572b48cc",
|
|
"simStepLabel": "Flow 2: CSV Export - Send File Response",
|
|
"simStepDescription": "The controller receives the CSV string and uses the `res.file` method to send it back to the client as a file. It sets the `Content-Type` to `text/csv` and `Content-Disposition` to trigger a download with the filename `monitors.csv`.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/controllers/v1/monitorController.js",
|
|
"startLine": "434",
|
|
"endLine": "440",
|
|
"relevantVariables": [
|
|
"res.file",
|
|
"csv"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"csv\": \"name,description,type,url,...\\nMy Website,,http,https://example.com,...\"}",
|
|
"outputDataExample": "{\"responseHeaders\": {\"Content-Type\": \"text/csv\", \"Content-Disposition\": \"attachment; filename=\\\"monitors.csv\\\"\"}}"
|
|
},
|
|
{
|
|
"simStepId": "605f4cbd-1f7f-4e89-b028-f18737ac7fb1",
|
|
"diagramNodeId": "3dfb432a-2ce4-4f92-98ce-5d114b5f7f03",
|
|
"simStepLabel": "Flow 2: CSV Export - Transmit File to Client",
|
|
"simStepDescription": "The server sends the HTTP response, which contains the CSV data and headers, to the client's browser.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/controllers/v1/monitorController.js",
|
|
"startLine": "434",
|
|
"endLine": "440",
|
|
"relevantVariables": [
|
|
"res.file"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"httpResponse\": {\"headers\": {\"Content-Disposition\": \"attachment; filename=\\\"monitors.csv\\\"\"}, \"body\": \"name,description,...\\n...\"}}",
|
|
"outputDataExample": "{\"httpResponse\": {\"headers\": {\"Content-Disposition\": \"attachment; filename=\\\"monitors.csv\\\"\"}, \"body\": \"name,description,...\\n...\"}}"
|
|
},
|
|
{
|
|
"simStepId": "60abdb27-4078-4678-a010-0f6938d4be48",
|
|
"diagramNodeId": "d8877474-7203-484f-bd47-fc69e3c7c482",
|
|
"simStepLabel": "Flow 2: CSV Export - Browser Prompts Download",
|
|
"simStepDescription": "The browser receives the server's response. The `Content-Disposition` header instructs the browser to prompt the user to save the received data as a file named `monitors.csv`, completing the export process.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/controllers/v1/monitorController.js",
|
|
"startLine": "434",
|
|
"endLine": "440",
|
|
"relevantVariables": [
|
|
"res.file"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"httpResponse\": {\"headers\": {\"Content-Disposition\": \"attachment; filename=\\\"monitors.csv\\\"\"}}}",
|
|
"outputDataExample": "{\"userAction\": \"File Save Dialog\"}"
|
|
}
|
|
],
|
|
"description": "<ul><li>Provides efficiency tools for managing a large number of monitors</li><li>- Users can import multiple monitors at once by uploading a CSV file, saving significant time during initial setup</li><li>- A template CSV is provided to guide the user on the required format and available fields</li><li>- All existing monitors can be exported to a CSV file, useful for backups or migrations</li><li>- Superadmins have the ability to delete all monitors for a team in a single action</li></ul>",
|
|
"simulationNodesAndEdges": {
|
|
"c4caeba8-ed9a-4cbc-9888-38cc8ca55362": {
|
|
"simStepIds": [
|
|
"a29da01e-8c5a-4e6d-8d3c-e49af528e4fa"
|
|
]
|
|
},
|
|
"6f1948fa-e84a-4f8e-8f3b-8f24c511b3d8": {
|
|
"simStepIds": [
|
|
"bbd04d55-fc6a-4ba8-bcde-5a4dc263d6eb"
|
|
]
|
|
},
|
|
"dd2f9356-fad3-47d4-81d5-a5e038298e2b": {
|
|
"simStepIds": [
|
|
"0139fcaa-eb46-4176-b7bd-1cb15e7f1f4c"
|
|
]
|
|
},
|
|
"5967e576-f542-4c0b-a3f4-9446ae992721": {
|
|
"simStepIds": [
|
|
"2fc087b3-033d-4cf5-81f2-e35b99a14bce"
|
|
]
|
|
},
|
|
"c1ac3c26-996a-43ef-9c34-4c2776188784": {
|
|
"simStepIds": [
|
|
"07bf3d83-047d-4e51-9f96-8c9c64848500"
|
|
]
|
|
},
|
|
"0e520a6d-34bf-467b-a894-e73979364478": {
|
|
"simStepIds": [
|
|
"a3799570-64bf-481e-9ffe-31dbad8a36e4"
|
|
]
|
|
},
|
|
"6139e487-1dd5-405a-ba7d-ededec4b282e": {
|
|
"simStepIds": [
|
|
"2c7c3082-e4b6-4525-860f-2ffcd9e86db1"
|
|
]
|
|
},
|
|
"d9d519af-5c4d-4494-929e-a869581c1dc4": {
|
|
"simStepIds": [
|
|
"70f18c21-2918-402e-9c35-1bdce8bc82d4"
|
|
]
|
|
},
|
|
"1e1d975f-7f0f-4132-bd71-2563b35e99b3": {
|
|
"simStepIds": [
|
|
"66fbf913-e662-4bd9-ada6-077be9e37f07"
|
|
]
|
|
},
|
|
"72b55fa1-d944-4e46-ac98-f6a6cb201afa": {
|
|
"simStepIds": [
|
|
"f5377571-156f-4c5c-8bab-b6dacdf0fea6"
|
|
]
|
|
},
|
|
"ae3b7e23-ed64-40aa-9760-389f0a869f8d": {
|
|
"simStepIds": [
|
|
"72b3f16d-290d-4a61-8748-2ad90d63ec68"
|
|
]
|
|
},
|
|
"26d76516-fd7e-4ae8-956a-d077de4257fa": {
|
|
"simStepIds": [
|
|
"63d8d81f-f436-4594-a6eb-8c0fd2110bc1"
|
|
]
|
|
},
|
|
"a3106388-6a3d-4b68-a3fc-3761a0d54f98": {
|
|
"simStepIds": [
|
|
"d9db3f40-8add-4551-9323-274348b9800f"
|
|
]
|
|
},
|
|
"ab9cb862-0ac7-45a3-9888-f64e87bdda54": {
|
|
"simStepIds": [
|
|
"85cd1d5d-7ffb-49c5-aacb-907048003fc5"
|
|
]
|
|
},
|
|
"f151f89d-6399-48f0-aecd-5eb1572b48cc": {
|
|
"simStepIds": [
|
|
"256095b8-5e3a-4c20-abd9-be9e6a9d0bad"
|
|
]
|
|
},
|
|
"d8877474-7203-484f-bd47-fc69e3c7c482": {
|
|
"simStepIds": [
|
|
"60abdb27-4078-4678-a010-0f6938d4be48"
|
|
]
|
|
},
|
|
"c9a012bc-d53f-494f-82f2-1ee3f40ce646": {
|
|
"simStepIds": [
|
|
"ef0bbcff-9535-4c0e-a5ca-96c457f89139"
|
|
]
|
|
},
|
|
"e03a8ce2-c2cd-4147-8bab-63d6c2cf0a48": {
|
|
"simStepIds": [
|
|
"610120d2-0521-4444-b245-feb97239a389"
|
|
]
|
|
},
|
|
"b8c0292d-afbb-4648-b484-1c27be96d52f": {
|
|
"simStepIds": [
|
|
"a365d018-e80c-419c-80b3-5ffc8f14dc5c"
|
|
]
|
|
},
|
|
"23715cce-c83a-44c0-9853-4c95b85e5ecd": {
|
|
"simStepIds": [
|
|
"e6dec1dc-33cb-4669-a3b0-7a3c0b233185"
|
|
]
|
|
},
|
|
"20d0e690-a569-4c6f-8238-916cac920553": {
|
|
"simStepIds": [
|
|
"c53d3f62-73fe-4fad-9835-ef2c8cf52894"
|
|
]
|
|
},
|
|
"7292bf6e-431d-4a9d-94ce-2bcfabcaa79d": {
|
|
"simStepIds": [
|
|
"6038422c-ab83-4fc6-a58b-c75734276118"
|
|
]
|
|
},
|
|
"b55a0dc6-f596-4e5f-9265-63588b46b519": {
|
|
"simStepIds": [
|
|
"0115fb69-4959-4b32-bd90-1dcd3c2231f6"
|
|
]
|
|
},
|
|
"f27c60ef-fb40-43e2-9750-c2617bdeaf43": {
|
|
"simStepIds": [
|
|
"2ee7bd94-d131-4dd8-bdf8-68433d00472d"
|
|
]
|
|
},
|
|
"c449f81a-d6af-4f7a-b2d8-050a9a9ee0f9": {
|
|
"simStepIds": [
|
|
"94d5772d-3f46-4d43-b764-3493db5c4971"
|
|
]
|
|
},
|
|
"926a330c-a9c5-4983-a4b5-70359813e49a": {
|
|
"simStepIds": [
|
|
"c60a3adb-dd81-41b0-95e4-a0a6d23f9dd0"
|
|
]
|
|
},
|
|
"febea87e-5033-479c-ba7a-eb35d98db899": {
|
|
"simStepIds": [
|
|
"53cebb8e-cf45-49eb-a7d3-98fd87af21b4"
|
|
]
|
|
},
|
|
"3e0f0966-5c2f-41af-9bcc-e8f615e03a00": {
|
|
"simStepIds": [
|
|
"74e95fb5-863c-4137-a41b-d7a32efa04a5"
|
|
]
|
|
},
|
|
"ad300b1c-6748-40f9-a7c9-5895e0915991": {
|
|
"simStepIds": [
|
|
"4deb5e47-2ac4-4638-9ee6-48295d027bcd"
|
|
]
|
|
},
|
|
"3dfb432a-2ce4-4f92-98ce-5d114b5f7f03": {
|
|
"simStepIds": [
|
|
"605f4cbd-1f7f-4e89-b028-f18737ac7fb1"
|
|
]
|
|
}
|
|
},
|
|
"isAIGenerated": true,
|
|
"keywords": "bulkImport, createBulkMonitors, exportMonitorsToCSV",
|
|
"generationPrompt": "Bulk Monitor Management",
|
|
"generationKeywords": "bulkImport, createBulkMonitors, exportMonitorsToCSV"
|
|
},
|
|
"System Administration and Configuration": {
|
|
"name": "System Administration and Configuration",
|
|
"simSteps": [
|
|
{
|
|
"simStepId": "64e9f1af-13b7-4361-a2a9-3f45760e316d",
|
|
"diagramNodeId": "97908daf-d071-4df5-8366-1f5f4d8d534a",
|
|
"simStepLabel": "Flow 1: Render Settings Page",
|
|
"simStepDescription": "The user navigates to the settings page. The main `Settings` component fetches existing settings using the `useFetchSettings` hook and renders various sub-components for different configuration areas like TimeZone, UI, PageSpeed, Email, etc.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Pages/v1/Settings/index.jsx",
|
|
"startLine": "25",
|
|
"endLine": "52",
|
|
"relevantVariables": [
|
|
"useFetchSettings",
|
|
"settingsData",
|
|
"setSettingsData",
|
|
"isApiKeySet",
|
|
"isEmailPasswordSet"
|
|
]
|
|
},
|
|
"inputDataExample": "{}",
|
|
"outputDataExample": "{\"settingsData\": {}, \"errors\": {}, \"isApiKeySet\": false, \"isEmailPasswordSet\": false}"
|
|
},
|
|
{
|
|
"simStepId": "dca4a33c-b666-47b8-896b-370ed9d6f9c5",
|
|
"diagramNodeId": "f6d80f09-ae83-4c95-aba0-4efffeda38e0",
|
|
"simStepLabel": "API Call: Fetch Application Settings",
|
|
"simStepDescription": "The `useFetchSettings` hook triggers a GET request to the `/api/v1/settings` endpoint to retrieve the current application configuration.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Utils/NetworkService.js",
|
|
"startLine": "692",
|
|
"endLine": "698",
|
|
"relevantVariables": [
|
|
"getAppSettings"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"method\": \"GET\", \"url\": \"/api/v1/settings\"}",
|
|
"outputDataExample": "{\"method\": \"GET\", \"url\": \"/api/v1/settings\"}"
|
|
},
|
|
{
|
|
"simStepId": "441b0c45-5f27-478d-8ca8-58fbd5f460ea",
|
|
"diagramNodeId": "83596bd1-dfca-4196-b52e-955f6824fafb",
|
|
"simStepLabel": "Backend: Retrieve Settings from Database",
|
|
"simStepDescription": "The `settingsController` handles the GET request. It calls the `settingsService` to fetch settings from the database. Sensitive data like passwords is sanitized, and flags like `emailPasswordSet` are added before sending the data to the client.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/controllers/v1/settingsController.js",
|
|
"startLine": "40",
|
|
"endLine": "49",
|
|
"relevantVariables": [
|
|
"getAppSettings",
|
|
"settingsService.getDBSettings",
|
|
"buildAppSettings"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"request\": \"GET /api/v1/settings\"}",
|
|
"outputDataExample": "{\"msg\": \"Got app settings successfully\", \"data\": {\"emailPasswordSet\": false, \"pagespeedKeySet\": false, \"settings\": {\"checkTTL\": 7, \"timezone\": \"America/Toronto\"}}}"
|
|
},
|
|
{
|
|
"simStepId": "aacc9302-6ca8-45c6-acb8-956d8d0242c2",
|
|
"diagramNodeId": "195ad532-9858-493e-876a-6ec457811d1d",
|
|
"simStepLabel": "API Response: Send Settings to Client",
|
|
"simStepDescription": "The backend responds to the GET request with a JSON object containing the application settings, which will be used to populate the UI.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/controllers/v1/settingsController.js",
|
|
"startLine": "45",
|
|
"endLine": "48",
|
|
"relevantVariables": [
|
|
"res.success"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"msg\": \"Got app settings successfully\", \"data\": {\"emailPasswordSet\": false, \"pagespeedKeySet\": false, \"settings\": {\"checkTTL\": 7, \"timezone\": \"America/Toronto\", \"systemEmailHost\": \"\", \"systemEmailPort\": \"\", \"systemEmailSecure\": false, \"systemEmailUser\": \"\", \"systemEmailAddress\": \"\"}}}",
|
|
"outputDataExample": "{\"msg\": \"Got app settings successfully\", \"data\": {\"emailPasswordSet\": false, \"pagespeedKeySet\": false, \"settings\": {\"checkTTL\": 7, \"timezone\": \"America/Toronto\", \"systemEmailHost\": \"\", \"systemEmailPort\": \"\", \"systemEmailSecure\": false, \"systemEmailUser\": \"\", \"systemEmailAddress\": \"\"}}}"
|
|
},
|
|
{
|
|
"simStepId": "ae5c5146-4dbb-4612-9d23-086e57f72474",
|
|
"diagramNodeId": "09cb194a-0ea4-46e2-b32b-36b62fa87f40",
|
|
"simStepLabel": "User Interaction: Modify Email Settings",
|
|
"simStepDescription": "The user interacts with the `SettingsEmail` component, filling in SMTP server details. The component's state is updated via the `handleChange` function passed down from the parent `Settings` component, which prepares the new configuration data.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Pages/v1/Settings/SettingsEmail.jsx",
|
|
"startLine": "119",
|
|
"endLine": "167",
|
|
"relevantVariables": [
|
|
"handleChange",
|
|
"handlePasswordChange",
|
|
"TextInput",
|
|
"systemEmailHost",
|
|
"systemEmailPort",
|
|
"systemEmailUser",
|
|
"systemEmailPassword"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"settingsData\": {\"settings\": {\"systemEmailHost\": \"\"}}}",
|
|
"outputDataExample": "{\"settingsData\": {\"settings\": {\"systemEmailHost\": \"smtp.gmail.com\", \"systemEmailPort\": \"465\", \"systemEmailUser\": \"user@gmail.com\", \"systemEmailAddress\": \"user@gmail.com\", \"systemEmailPassword\": \"app-password-123\"}}}"
|
|
},
|
|
{
|
|
"simStepId": "e7e82a97-1409-4bc5-ae27-b4ff5ba746df",
|
|
"diagramNodeId": "8c107d79-f796-49eb-ab88-f553dd6f9d95",
|
|
"simStepLabel": "User Action: Save Settings",
|
|
"simStepDescription": "The user clicks the 'Save' button. This action triggers the `handleSave` function, which validates the new settings and prepares to send them to the backend.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Pages/v1/Settings/index.jsx",
|
|
"startLine": "258",
|
|
"endLine": "261",
|
|
"relevantVariables": [
|
|
"handleSave"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"settingsData\": {\"settings\": {\"systemEmailHost\": \"smtp.gmail.com\", \"systemEmailPort\": \"465\", \"systemEmailUser\": \"user@gmail.com\", \"systemEmailAddress\": \"user@gmail.com\", \"systemEmailPassword\": \"app-password-123\"}}}",
|
|
"outputDataExample": "{\"settingsData\": {\"settings\": {\"systemEmailHost\": \"smtp.gmail.com\", \"systemEmailPort\": \"465\", \"systemEmailUser\": \"user@gmail.com\", \"systemEmailAddress\": \"user@gmail.com\", \"systemEmailPassword\": \"app-password-123\"}}}"
|
|
},
|
|
{
|
|
"simStepId": "d7098072-9a83-4369-8176-9646ba34e186",
|
|
"diagramNodeId": "1b2cf182-9ee3-4218-a7ec-b74e427ccddf",
|
|
"simStepLabel": "API Call: Update Application Settings",
|
|
"simStepDescription": "The `handleSave` function calls `saveSettings` from the `useSaveSettings` hook. This triggers a PUT request to `/api/v1/settings` with the new configuration in the request body.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Hooks/v1/settingsHooks.js",
|
|
"startLine": "41",
|
|
"endLine": "67",
|
|
"relevantVariables": [
|
|
"saveSettings",
|
|
"networkService.updateAppSettings"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"settings\": {\"systemEmailHost\": \"smtp.gmail.com\", \"systemEmailPort\": \"465\", \"systemEmailUser\": \"user@gmail.com\", \"systemEmailAddress\": \"user@gmail.com\", \"systemEmailPassword\": \"app-password-123\"}}",
|
|
"outputDataExample": "{\"settings\": {\"systemEmailHost\": \"smtp.gmail.com\", \"systemEmailPort\": \"465\", \"systemEmailUser\": \"user@gmail.com\", \"systemEmailAddress\": \"user@gmail.com\", \"systemEmailPassword\": \"app-password-123\"}}"
|
|
},
|
|
{
|
|
"simStepId": "383387e5-4623-44ab-b2c4-d9ea046f4547",
|
|
"diagramNodeId": "ce3ed3ba-a35b-4881-8dfd-f8425b9bf812",
|
|
"simStepLabel": "Data Transmission: Send Updated Settings to Server",
|
|
"simStepDescription": "The PUT request containing the new settings is sent to the backend API endpoint for processing and persistence.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Utils/NetworkService.js",
|
|
"startLine": "711",
|
|
"endLine": "717",
|
|
"relevantVariables": [
|
|
"updateAppSettings",
|
|
"this.axiosInstance.put"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"settings\": {\"systemEmailHost\": \"smtp.gmail.com\", \"systemEmailPort\": \"465\", \"systemEmailUser\": \"user@gmail.com\", \"systemEmailAddress\": \"user@gmail.com\", \"systemEmailPassword\": \"app-password-123\"}}",
|
|
"outputDataExample": "{\"settings\": {\"systemEmailHost\": \"smtp.gmail.com\", \"systemEmailPort\": \"465\", \"systemEmailUser\": \"user@gmail.com\", \"systemEmailAddress\": \"user@gmail.com\", \"systemEmailPassword\": \"app-password-123\"}}"
|
|
},
|
|
{
|
|
"simStepId": "7632e8d2-4086-4169-ae3f-bfbf8d657987",
|
|
"diagramNodeId": "cce3b9c8-f3b7-434b-b3c6-d8d164714f86",
|
|
"simStepLabel": "Backend: Persist Updated Settings",
|
|
"simStepDescription": "The `settingsController` receives the PUT request, validates the body, and calls the `db.settingsModule.updateAppSettings` method to update the settings document in the database.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/controllers/v1/settingsController.js",
|
|
"startLine": "54",
|
|
"endLine": "64",
|
|
"relevantVariables": [
|
|
"updateAppSettings",
|
|
"updateAppSettingsBodyValidation",
|
|
"db.settingsModule.updateAppSettings"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"settings\": {\"systemEmailHost\": \"smtp.gmail.com\", \"systemEmailPort\": \"465\", \"systemEmailUser\": \"user@gmail.com\", \"systemEmailAddress\": \"user@gmail.com\", \"systemEmailPassword\": \"app-password-123\"}}",
|
|
"outputDataExample": "{\"msg\": \"Updated app settings successfully\", \"data\": {\"emailPasswordSet\": true, \"settings\": {\"systemEmailHost\": \"smtp.gmail.com\", ...}}}"
|
|
},
|
|
{
|
|
"simStepId": "0afcde35-7d51-4939-aae8-bac5ac83c49d",
|
|
"diagramNodeId": "fbe9b160-307e-4f51-8f72-713fda5373c8",
|
|
"simStepLabel": "API Response: Confirm Settings Update",
|
|
"simStepDescription": "The backend sends a success response to the client, including the newly saved (and sanitized) settings, confirming the update.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/controllers/v1/settingsController.js",
|
|
"startLine": "60",
|
|
"endLine": "63",
|
|
"relevantVariables": [
|
|
"res.success"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"msg\": \"Updated app settings successfully\", \"data\": {\"emailPasswordSet\": true, \"pagespeedKeySet\": false, \"settings\": {\"checkTTL\": 7, \"timezone\": \"America/Toronto\", \"systemEmailHost\": \"smtp.gmail.com\", \"systemEmailPort\": 465, \"systemEmailUser\": \"user@gmail.com\", \"systemEmailAddress\": \"user@gmail.com\"}}}",
|
|
"outputDataExample": "{\"msg\": \"Updated app settings successfully\", \"data\": {\"emailPasswordSet\": true, \"pagespeedKeySet\": false, \"settings\": {\"checkTTL\": 7, \"timezone\": \"America/Toronto\", \"systemEmailHost\": \"smtp.gmail.com\", \"systemEmailPort\": 465, \"systemEmailUser\": \"user@gmail.com\", \"systemEmailAddress\": \"user@gmail.com\"}}}"
|
|
},
|
|
{
|
|
"simStepId": "a157bd07-b969-44f8-914c-3d8393c1605a",
|
|
"diagramNodeId": "fff5dde4-8eb8-4c21-9c6d-0845a9749ff3",
|
|
"simStepLabel": "UI Update: Display Success Confirmation",
|
|
"simStepDescription": "The frontend network service receives the successful API response. The `saveSettings` hook then calls `createToast` with a success message, which is displayed to the user.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Hooks/v1/settingsHooks.js",
|
|
"startLine": "58",
|
|
"endLine": "58",
|
|
"relevantVariables": [
|
|
"createToast",
|
|
"t(\"settingsSuccessSaved\")"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"body\": \"Settings saved successfully\"}",
|
|
"outputDataExample": "{}"
|
|
},
|
|
{
|
|
"simStepId": "a9b24b5f-534b-4baf-a185-bac7c32a1c42",
|
|
"diagramNodeId": "704e2ec8-9f2f-47e5-852f-c6ada67a02e0",
|
|
"simStepLabel": "Flow 2: Navigate to Diagnostics Page",
|
|
"simStepDescription": "The user navigates to the 'Logs' page and selects the 'Diagnostics' tab. The `Diagnostics` component renders and immediately calls the `useFetchDiagnostics` hook to retrieve system health data.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Pages/v1/Logs/Diagnostics/index.jsx",
|
|
"startLine": "14",
|
|
"endLine": "15",
|
|
"relevantVariables": [
|
|
"useFetchDiagnostics",
|
|
"diagnostics"
|
|
]
|
|
},
|
|
"inputDataExample": "{}",
|
|
"outputDataExample": "{}"
|
|
},
|
|
{
|
|
"simStepId": "23b8ad7d-8967-4e48-814c-1a7bf5b4dfac",
|
|
"diagramNodeId": "499dfe1f-77d4-4b26-a12c-45240691109e",
|
|
"simStepLabel": "API Call: Fetch System Diagnostics",
|
|
"simStepDescription": "The `useFetchDiagnostics` hook triggers a GET request to the `/api/v1/diagnostic/system` endpoint to fetch real-time system metrics.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Utils/NetworkService.js",
|
|
"startLine": "1113",
|
|
"endLine": "1119",
|
|
"relevantVariables": [
|
|
"getDiagnostics",
|
|
"this.axiosInstance.get"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"method\": \"GET\", \"url\": \"/api/v1/diagnostic/system\"}",
|
|
"outputDataExample": "{\"method\": \"GET\", \"url\": \"/api/v1/diagnostic/system\"}"
|
|
},
|
|
{
|
|
"simStepId": "8fb704ca-67d9-437c-90d8-01302634d568",
|
|
"diagramNodeId": "09f07e80-185e-4547-aab4-edaf8ae7501e",
|
|
"simStepLabel": "Backend: Gather System Statistics",
|
|
"simStepDescription": "The `diagnosticController` receives the request and calls `diagnosticService.getSystemStats()`. This service uses native Node.js modules like `os` and `v8` to collect metrics on memory, CPU, heap statistics, and process uptime.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/service/v1/business/diagnosticService.js",
|
|
"startLine": "39",
|
|
"endLine": "95",
|
|
"relevantVariables": [
|
|
"getSystemStats",
|
|
"os",
|
|
"process.memoryUsage",
|
|
"process.cpuUsage",
|
|
"v8.getHeapStatistics",
|
|
"process.uptime"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"request\": \"GET /api/v1/diagnostic/system\"}",
|
|
"outputDataExample": "{\"osStats\": {\"totalMemoryBytes\": 16777216000, \"freeMemoryBytes\": 1572864000}, \"memoryUsage\": {\"rss\": 123456789}, \"cpuUsage\": {\"usagePercentage\": 12.5}, \"v8HeapStats\": {\"usedHeapSizeBytes\": 54321098}, \"uptimeMs\": 86400000}"
|
|
},
|
|
{
|
|
"simStepId": "44a4372f-a903-4c43-a9a5-c7549c875e11",
|
|
"diagramNodeId": "d0f92604-a6fa-4d85-9716-ea8f32db78e0",
|
|
"simStepLabel": "API Response: Send Diagnostics Data to Client",
|
|
"simStepDescription": "The backend responds with a JSON object containing the comprehensive system diagnostics data.",
|
|
"isEdge": 1,
|
|
"sourceCodeMapping": {
|
|
"filePath": "server/src/controllers/v1/diagnosticController.js",
|
|
"startLine": "52",
|
|
"endLine": "55",
|
|
"relevantVariables": [
|
|
"res.success"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"msg\": \"OK\", \"data\": {\"osStats\": {\"totalMemoryBytes\": 16777216000, \"freeMemoryBytes\": 1572864000}, \"memoryUsage\": {\"rss\": 123456789}, \"cpuUsage\": {\"usagePercentage\": 12.5}, \"v8HeapStats\": {\"usedHeapSizeBytes\": 54321098}, \"uptimeMs\": 86400000}}",
|
|
"outputDataExample": "{\"msg\": \"OK\", \"data\": {\"osStats\": {\"totalMemoryBytes\": 16777216000, \"freeMemoryBytes\": 1572864000}, \"memoryUsage\": {\"rss\": 123456789}, \"cpuUsage\": {\"usagePercentage\": 12.5}, \"v8HeapStats\": {\"usedHeapSizeBytes\": 54321098}, \"uptimeMs\": 86400000}}"
|
|
},
|
|
{
|
|
"simStepId": "e6c94f52-a599-4568-a06f-2db18f963817",
|
|
"diagramNodeId": "4b418736-6b72-47e0-917a-d86d4bed9ecd",
|
|
"simStepLabel": "UI Update: Display System Health",
|
|
"simStepDescription": "The frontend receives the diagnostic data. The `Diagnostics` component passes this data to its children, `Gauges` and `StatusBoxes`, which then render the information as interactive gauges and statistical boxes.",
|
|
"isEdge": 0,
|
|
"sourceCodeMapping": {
|
|
"filePath": "client/src/Pages/v1/Logs/Diagnostics/index.jsx",
|
|
"startLine": "59",
|
|
"endLine": "63",
|
|
"relevantVariables": [
|
|
"Gauges",
|
|
"StatusBoxes",
|
|
"diagnostics"
|
|
]
|
|
},
|
|
"inputDataExample": "{\"diagnostics\": {\"osStats\": {\"totalMemoryBytes\": 16777216000, \"freeMemoryBytes\": 1572864000}, \"cpuUsage\": {\"usagePercentage\": 12.5}, \"v8HeapStats\": {\"usedHeapSizeBytes\": 54321098}, \"uptimeMs\": 86400000}}",
|
|
"outputDataExample": "{}"
|
|
}
|
|
],
|
|
"description": "<ul><li>Provides centralized settings for administrators to configure and maintain the Checkmate instance</li><li>- Admins can configure global application settings, including email server (SMTP) details for sending alerts</li><li>- UI settings like theme (light/dark) and default timezone can be customized</li><li>- Data retention policies, such as the Time-To-Live (TTL) for check history, can be adjusted</li><li>- A diagnostics page provides system information and logs for troubleshooting and monitoring the health of the Checkmate application itself</li></ul>",
|
|
"simulationNodesAndEdges": {
|
|
"97908daf-d071-4df5-8366-1f5f4d8d534a": {
|
|
"simStepIds": [
|
|
"64e9f1af-13b7-4361-a2a9-3f45760e316d"
|
|
]
|
|
},
|
|
"83596bd1-dfca-4196-b52e-955f6824fafb": {
|
|
"simStepIds": [
|
|
"441b0c45-5f27-478d-8ca8-58fbd5f460ea"
|
|
]
|
|
},
|
|
"09cb194a-0ea4-46e2-b32b-36b62fa87f40": {
|
|
"simStepIds": [
|
|
"ae5c5146-4dbb-4612-9d23-086e57f72474"
|
|
]
|
|
},
|
|
"1b2cf182-9ee3-4218-a7ec-b74e427ccddf": {
|
|
"simStepIds": [
|
|
"d7098072-9a83-4369-8176-9646ba34e186"
|
|
]
|
|
},
|
|
"cce3b9c8-f3b7-434b-b3c6-d8d164714f86": {
|
|
"simStepIds": [
|
|
"7632e8d2-4086-4169-ae3f-bfbf8d657987"
|
|
]
|
|
},
|
|
"fff5dde4-8eb8-4c21-9c6d-0845a9749ff3": {
|
|
"simStepIds": [
|
|
"a157bd07-b969-44f8-914c-3d8393c1605a"
|
|
]
|
|
},
|
|
"704e2ec8-9f2f-47e5-852f-c6ada67a02e0": {
|
|
"simStepIds": [
|
|
"a9b24b5f-534b-4baf-a185-bac7c32a1c42"
|
|
]
|
|
},
|
|
"09f07e80-185e-4547-aab4-edaf8ae7501e": {
|
|
"simStepIds": [
|
|
"8fb704ca-67d9-437c-90d8-01302634d568"
|
|
]
|
|
},
|
|
"4b418736-6b72-47e0-917a-d86d4bed9ecd": {
|
|
"simStepIds": [
|
|
"e6c94f52-a599-4568-a06f-2db18f963817"
|
|
]
|
|
},
|
|
"f6d80f09-ae83-4c95-aba0-4efffeda38e0": {
|
|
"simStepIds": [
|
|
"dca4a33c-b666-47b8-896b-370ed9d6f9c5"
|
|
]
|
|
},
|
|
"195ad532-9858-493e-876a-6ec457811d1d": {
|
|
"simStepIds": [
|
|
"aacc9302-6ca8-45c6-acb8-956d8d0242c2"
|
|
]
|
|
},
|
|
"8c107d79-f796-49eb-ab88-f553dd6f9d95": {
|
|
"simStepIds": [
|
|
"e7e82a97-1409-4bc5-ae27-b4ff5ba746df"
|
|
]
|
|
},
|
|
"ce3ed3ba-a35b-4881-8dfd-f8425b9bf812": {
|
|
"simStepIds": [
|
|
"383387e5-4623-44ab-b2c4-d9ea046f4547"
|
|
]
|
|
},
|
|
"fbe9b160-307e-4f51-8f72-713fda5373c8": {
|
|
"simStepIds": [
|
|
"0afcde35-7d51-4939-aae8-bac5ac83c49d"
|
|
]
|
|
},
|
|
"499dfe1f-77d4-4b26-a12c-45240691109e": {
|
|
"simStepIds": [
|
|
"23b8ad7d-8967-4e48-814c-1a7bf5b4dfac"
|
|
]
|
|
},
|
|
"d0f92604-a6fa-4d85-9716-ea8f32db78e0": {
|
|
"simStepIds": [
|
|
"44a4372f-a903-4c43-a9a5-c7549c875e11"
|
|
]
|
|
}
|
|
},
|
|
"isAIGenerated": true,
|
|
"keywords": "Settings, updateAppSettings, diagnostic",
|
|
"generationPrompt": "System Administration and Configuration",
|
|
"generationKeywords": "Settings, updateAppSettings, diagnostic"
|
|
}
|
|
},
|
|
"cellToPath": {
|
|
"0b23ea66-3e37-4643-b3b9-acb87ea02bae": "client",
|
|
"98af25c7-efc2-43d2-a273-c8da4e1038ad": "server",
|
|
"d3264577-10f0-42fe-9411-7e9df0754d1e": "client/src",
|
|
"35864a2c-7bd0-4428-84fc-c0aa90c7f1be": "server/src",
|
|
"f0feab85-316a-41b5-a2f1-629220018846": "client/src/Pages",
|
|
"4295a047-076f-4c07-95dd-b3123b6614f7": "client/src/Hooks",
|
|
"02b07589-ec21-4366-b7d2-9071e8f3bad8": "client/src/Utils",
|
|
"ffaaf471-ac3c-4ea3-a5a9-d5255169e54b": "server/src/routes",
|
|
"478e649c-1d1b-41d2-9b7b-6927e1dec7e1": "server/src/controllers",
|
|
"99e9b746-7809-41f4-a433-1de7cc90574b": "server/src/service",
|
|
"15ee5d81-a0cf-4614-80b8-7a1123ab20b8": "server/src/db",
|
|
"1a083b4a-787c-4eb4-8029-6700de987679": "client/src/Pages/v1",
|
|
"3bf0c0f9-cbb0-4f0c-8cb3-6e2a4abc0961": "client/src/Hooks/v1",
|
|
"16731e9d-3f73-4055-9d79-5ca9be679f68": "client/src/Utils/NetworkService.js",
|
|
"d3375a20-2776-4771-b806-649bbeb541bd": "server/src/routes/v1",
|
|
"fc591f7a-d4ac-4565-949d-a87a58a79bbc": "server/src/controllers/v1",
|
|
"bbbe53d6-f595-498a-ae45-e08611f39c3d": "server/src/service/v1",
|
|
"58c5a3fd-1e69-4ca4-a64e-314f5644bdaf": "server/src/db/v1",
|
|
"7090fcdb-09be-4c85-86fd-e73553bbb2ff": "client/src/Pages/v1/Uptime",
|
|
"595cf0e8-2f86-4543-b51c-b2aeac307f4b": "client/src/Hooks/v1/monitorHooks.js",
|
|
"10611636-ec73-4a26-87a5-654ae64a4843": "server/src/routes/v1/monitorRoute.js",
|
|
"341f2784-67ee-4477-9445-a8c240ee6261": "server/src/controllers/v1/monitorController.js",
|
|
"87d3b101-9443-4ed4-9c4f-f759d41677eb": "server/src/service/v1/business",
|
|
"1670815f-860d-4ea4-92e1-b238a799d3dc": "server/src/service/v1/infrastructure",
|
|
"82cb3dbe-c922-438a-a912-255376f4b380": "server/src/db/v1/modules",
|
|
"3dba5acc-cf25-40b7-ad21-9cd715454cd5": "client/src/Pages/v1/Uptime/Create",
|
|
"b4e479df-9b21-4430-9383-84831f503c2e": "server/src/service/v1/business/monitorService.js",
|
|
"dda70a36-2d1d-4e46-8bcc-52d0d474bf7b": "server/src/service/v1/infrastructure/SuperSimpleQueue",
|
|
"00406786-9663-440a-96b6-919d544732c0": "server/src/service/v1/infrastructure/networkService.js",
|
|
"fbd7d244-2f37-453c-8c83-a23a260b26cc": "server/src/service/v1/infrastructure/statusService.js",
|
|
"2ff1f030-2080-48da-bbbe-90302fdfc2f7": "server/src/service/v1/infrastructure/notificationService.js",
|
|
"630b3ece-2648-48d5-99b5-ef9611de2ad5": "server/src/db/v1/modules/monitorModule.js",
|
|
"391ad99e-3114-4f54-a6ca-fd89b33c7e06": "client/src/Pages/v1/Uptime/Create/index.jsx",
|
|
"d9c0127e-31aa-4509-b5c9-f7017d10d69a": "server/src/service/v1/infrastructure/SuperSimpleQueue/SuperSimpleQueue.js",
|
|
"04c12e9a-e025-457c-a634-5f7472a42985": "server/src/service/v1/infrastructure/SuperSimpleQueue/SuperSimpleQueueHelper.js",
|
|
"7a2da928-a65c-49d8-b0a3-c159a6df2bc5": "client/src/Pages/v1/Uptime/Create/index.jsx-simstep-ab5de0b9-c70d-492c-98d9-8ddee66284ad",
|
|
"a81f4ae8-41fe-4d1b-95ce-86abcc67b53c": "client/src/Pages/v1/Uptime/Create/index.jsx-simstep-e02ddf57-270e-4f71-b4c4-d5183bb7879a",
|
|
"a30ac765-c546-4993-988e-8c8cfdb7532f": "client/src/Utils/NetworkService.js-simstep-14e9986b-c6ce-475e-97ed-da1fa2b6968d",
|
|
"f0409948-75dc-457f-a02d-6b9774258e48": "server/src/controllers/v1/monitorController.js-simstep-38fd069d-9c44-4078-954b-3a0899e9acf4",
|
|
"2d407bfd-e4b0-46b8-99e7-121c507d525f": "server/src/db/v1/modules/monitorModule.js-simstep-ca3ad309-323a-418d-a171-c16f56fae23c",
|
|
"51e8db5f-2fdd-4ddc-9605-43981db9d940": "server/src/service/v1/infrastructure/SuperSimpleQueue/SuperSimpleQueue.js-simstep-2702bfca-7611-4562-8d3e-a05af8257871",
|
|
"18c13391-0cf7-4303-8180-0a40cfd64b58": "server/src/service/v1/infrastructure/SuperSimpleQueue/SuperSimpleQueueHelper.js-simstep-e22a708a-a348-4775-8ee3-f32a35446e24",
|
|
"5c900373-e6ba-44d5-b341-676a32d659c8": "server/src/service/v1/infrastructure/networkService.js-simstep-84f82fea-e306-4e0b-8222-e9705803d51a",
|
|
"45e38f3a-a7c3-4de7-b3dc-589361d793fd": "server/src/service/v1/infrastructure/statusService.js-simstep-c66a04c6-113e-4391-ab71-93fc612279ef",
|
|
"9f3ea7fc-16d3-4d36-97eb-66f8808425cc": "server/src/service/v1/infrastructure/notificationService.js-simstep-1a260a75-cf50-4f7a-90b0-c280b512a5cb",
|
|
"0e09aa33-d7c7-4c89-9da8-f0937658f4d3": "generated-edge-simstep-888df086-41bb-469d-9c0a-daf74bdecb9f-0e09aa33-d7c7-4c89-9da8-f0937658f4d3",
|
|
"1f6f04a9-0123-4729-b06a-8f3da6d1b58c": "generated-edge-simstep-3fe0afaa-c673-4b52-a0c4-02a3ffd3a075-1f6f04a9-0123-4729-b06a-8f3da6d1b58c",
|
|
"b6d963d5-c613-407a-9ce9-60a04048dea7": "generated-edge-simstep-13dd0564-44a5-43ea-a163-ce1148cc48e7-b6d963d5-c613-407a-9ce9-60a04048dea7",
|
|
"a6bccd1d-4272-4df7-a7c8-b3979e37b8d7": "generated-edge-simstep-a6f4c967-b1a8-4804-bc2e-67f47a7b68f9-a6bccd1d-4272-4df7-a7c8-b3979e37b8d7",
|
|
"de320ac1-0949-4297-be7c-b9d7a14e0fec": "generated-edge-simstep-71ec03b6-1166-4c5d-9ada-0875a0866e30-de320ac1-0949-4297-be7c-b9d7a14e0fec",
|
|
"38ba9b22-5b26-432d-a856-0eceb792c737": "generated-edge-simstep-1d7580f2-f107-4008-a207-b8ec07998721-38ba9b22-5b26-432d-a856-0eceb792c737",
|
|
"5e80734c-7b72-41be-9068-30cda3ffb425": "generated-edge-simstep-9b0ada30-d3e6-4b2c-b3ff-f50615139588-5e80734c-7b72-41be-9068-30cda3ffb425",
|
|
"0a7e4a72-b644-4bd8-afa1-ae8a1d6c111c": "generated-edge-simstep-9896c387-4fca-47ad-82eb-7301286decb7-0a7e4a72-b644-4bd8-afa1-ae8a1d6c111c",
|
|
"3f26b33e-477f-41df-a78a-3e3e4f4209ae": "client/src/Pages/v1/Infrastructure",
|
|
"74019e8a-3148-4a32-aae2-5afd16f3eb9b": "client/src/Pages/v1/Infrastructure/Create",
|
|
"591128f9-0994-4e01-a1ab-f23357f97aff": "client/src/Pages/v1/Infrastructure/Details",
|
|
"4940977f-933d-4bbc-b19e-749647b44d25": "server/src/service/v1/infrastructure/notificationUtils.js",
|
|
"a0b22a5a-59e1-47e3-8218-a4ad083b1b71": "server/src/db/v1/modules/monitorModuleQueries.js",
|
|
"ceded1fc-87a9-43c8-a756-746be3d4ad8d": "client/src/Pages/v1/Infrastructure/Create/Components",
|
|
"e292c552-b3df-4bac-bd9a-8f44c260a5aa": "client/src/Pages/v1/Infrastructure/Details/index.jsx",
|
|
"e97d4e61-483e-4ac5-85a1-0ff72fcdd449": "client/src/Pages/v1/Infrastructure/Details/Components",
|
|
"83800be3-2a0e-4419-b379-3f995f4050e7": "client/src/Pages/v1/Infrastructure/Create/Components/CustomAlertsSection.jsx",
|
|
"6a7c7720-a399-4d4d-8225-36e0b2f59731": "client/src/Pages/v1/Infrastructure/Details/Components/GaugeBoxes",
|
|
"8fe3d890-3605-407d-b06c-1d890a354e46": "client/src/Pages/v1/Infrastructure/Details/Components/GaugeBoxes/index.jsx",
|
|
"9651d084-5c16-4417-89c1-f52ae6572a95": "client/src/Pages/v1/Infrastructure/Create/Components/CustomAlertsSection.jsx-simstep-80dd889a-1fc9-4d56-b9cf-5b45bf1110b1",
|
|
"4c47b5f2-5363-4816-9745-30e61d184c7a": "server/src/service/v1/infrastructure/networkService.js-simstep-ed6e7faf-69dd-4d0b-bda8-137739ed288b",
|
|
"c1bf10c9-8c1a-44f4-8e23-39708f0301e8": "server/src/service/v1/infrastructure/statusService.js-simstep-e5b90cf2-9369-4741-9803-c835a81c009b",
|
|
"d4f48f1a-61de-4cde-87d2-4b5215464899": "server/src/service/v1/infrastructure/notificationUtils.js-simstep-07fe8489-1d94-4afb-83f8-7cebb0dff49a",
|
|
"801fe70a-1a19-406c-8f0d-770b0cb74409": "client/src/Pages/v1/Infrastructure/Details/index.jsx-simstep-c27365db-9db6-4cc9-96f0-4f046fd38562",
|
|
"9ef7c423-f4fc-4caf-9bf5-c1aa3002ca03": "server/src/db/v1/modules/monitorModule.js-simstep-8502ae1f-f029-446e-9dde-59c2aba87a8a",
|
|
"9ea2e32d-1ea8-42f2-9a17-613844723ae6": "client/src/Pages/v1/Infrastructure/Details/Components/GaugeBoxes/index.jsx-simstep-6eedce82-b9c8-4022-95e5-3a6e00628105",
|
|
"1c5c9857-bf32-40e4-921b-957c252dac2a": "generated-edge-simstep-815f96af-c28e-4f80-b4ab-18a6fb23eee0-1c5c9857-bf32-40e4-921b-957c252dac2a",
|
|
"a64547c9-d9e6-4941-8e5e-f49add06516b": "generated-edge-simstep-4434dca1-2048-4458-a70b-b70d569e378d-a64547c9-d9e6-4941-8e5e-f49add06516b",
|
|
"7a250d09-50c6-4935-b10c-626b0ebe1fba": "generated-edge-simstep-b019a6d0-a23a-4a1d-bd21-644f01996f14-7a250d09-50c6-4935-b10c-626b0ebe1fba",
|
|
"3d357de8-9fd2-4d0b-9623-f36fce4cf1de": "generated-edge-simstep-c691b3b9-88b3-4c88-a399-ff9fd5866194-3d357de8-9fd2-4d0b-9623-f36fce4cf1de",
|
|
"00921831-b1d9-4a5a-ae6f-5ddee7cfc1e4": "generated-edge-simstep-a5d20172-1c95-4c9e-af39-f86a498734bb-00921831-b1d9-4a5a-ae6f-5ddee7cfc1e4",
|
|
"60308696-6f8a-43c8-b9a1-da199ef500cd": "generated-edge-simstep-627fcb0c-0282-4b4d-8c55-aceb636e4da0-60308696-6f8a-43c8-b9a1-da199ef500cd",
|
|
"feefae96-61b8-4ac5-a37c-592ed4b2330e": "server/src/service/v2",
|
|
"b3575a92-df07-4cf7-810f-8e5e0672d666": "client/src/Pages/v1/Notifications",
|
|
"cd2428fd-6545-48dd-b685-5261311b7532": "client/src/Hooks/v1/useNotifications.js",
|
|
"96250197-23af-4059-9904-fd6751f70ad5": "server/src/routes/v1/notificationRoute.js",
|
|
"8e5941e1-e577-455f-bbf2-83a418ad5908": "server/src/controllers/v1/notificationController.js",
|
|
"3f8ff792-40c8-4ae6-9af5-ff8b90da2f9f": "server/src/service/v2/infrastructure",
|
|
"a6fb23f0-73bc-40ee-bb3c-ed93605a2bcb": "client/src/Pages/v1/Notifications/create",
|
|
"62daeac4-9402-448a-972c-cb8cb760671c": "server/src/db/v1/modules/notificationModule.js",
|
|
"159e569d-31d8-4883-b443-4ec08b21a044": "server/src/service/v2/infrastructure/JobGenerator.ts",
|
|
"c6d9907f-0a05-4153-a27f-47c3a1c4c0aa": "server/src/service/v2/infrastructure/NotificationService.ts",
|
|
"b71b02fb-d08e-4fcf-b959-de1b9547d9c2": "client/src/Pages/v1/Notifications/create/index.jsx",
|
|
"15486629-84b3-463a-962b-06083f69e4bf": "client/src/Pages/v1/Notifications/create/index.jsx-simstep-e924ec15-1bea-4e3b-befb-a8bf30cbf740",
|
|
"a07b805e-e55f-46cb-b54b-765b7813b0ca": "client/src/Hooks/v1/useNotifications.js-simstep-383c6be8-aa51-4398-9ae3-21035413f73a",
|
|
"d0a4737f-715f-4f50-b6d5-5e4b31f86f93": "server/src/routes/v1/notificationRoute.js-simstep-2f9266c9-4cbc-4b50-a280-cf8b5800d540",
|
|
"4a796ccf-40a9-4446-a109-6a6eed52e898": "server/src/db/v1/modules/notificationModule.js-simstep-d29ab4ab-be50-4f17-af6e-2c61cec9d0ab",
|
|
"29c2c56e-9dc0-4304-bfbf-e0c0f8915a39": "server/src/routes/v1/notificationRoute.js-simstep-c1b17b64-90e9-48bc-8927-25d7ebfc3036",
|
|
"1cc01e08-4a6c-4526-b8a7-5ee8a06c1709": "server/src/service/v1/infrastructure/notificationService.js-simstep-f29f9be1-a0cd-43a3-b259-e5105a25ce41",
|
|
"28f1eabb-4f24-4944-8a0a-04f41ceb8589": "server/src/service/v2/infrastructure/JobGenerator.ts-simstep-157cec87-9b76-4a1c-9d85-0a6d3decbaa3",
|
|
"31fe5a28-0640-4b52-841b-dd02e2ae646e": "server/src/service/v2/infrastructure/JobGenerator.ts-simstep-55ad645b-118a-478e-a00c-09ef82357008",
|
|
"78e5cb9f-6a97-4d31-a487-fe7dbce5d7d1": "server/src/service/v2/infrastructure/NotificationService.ts-simstep-8d1176f3-c755-401d-9ca8-234689b4b837",
|
|
"54497b9a-4910-4df4-b016-480b9ac250a7": "generated-edge-simstep-71dbcd41-c6d4-4514-b5a4-6c966ca7ba6f-54497b9a-4910-4df4-b016-480b9ac250a7",
|
|
"dc135d8d-0515-403d-ae58-f3c04647b2ae": "generated-edge-simstep-162d8d2f-6cd1-45fa-8711-1ee85c5f86ef-dc135d8d-0515-403d-ae58-f3c04647b2ae",
|
|
"7b9ebb0e-a6b2-438c-bfed-9c851a1bccbc": "generated-edge-simstep-73e63d2f-2b43-488d-9e86-170f511673f5-7b9ebb0e-a6b2-438c-bfed-9c851a1bccbc",
|
|
"279155cd-ff31-41a2-8f5f-a538f01bfa66": "generated-edge-simstep-d390ef45-f2fe-4806-a45a-cc9c84b48a5a-279155cd-ff31-41a2-8f5f-a538f01bfa66",
|
|
"57018b30-e2f4-4eb2-a1da-fe75afbb8c2f": "generated-edge-simstep-6f2bf027-50d9-472e-9569-808a64fce7cf-57018b30-e2f4-4eb2-a1da-fe75afbb8c2f",
|
|
"50797935-1447-47a4-891b-9e886e5601fa": "generated-edge-simstep-b7ec7415-fcae-4077-8c19-302a015b00b5-50797935-1447-47a4-891b-9e886e5601fa",
|
|
"c778c6b9-c12e-45c0-8682-2c9e892867b0": "generated-edge-simstep-b7259d77-c8df-4060-ac03-58728ae3eb54-c778c6b9-c12e-45c0-8682-2c9e892867b0",
|
|
"987f145b-5df6-4c30-bf1c-2a2d2b0e5cdc": "client/src/Routes",
|
|
"c4d7e7dd-75b1-44f1-a34a-6ed290a8e562": "client/src/Routes/index.jsx",
|
|
"9d662180-8b65-4426-ad37-cfed4bc01fb4": "client/src/Pages/v1/StatusPage",
|
|
"773e1065-b0a5-46a9-b0cc-6b963f69f5cc": "server/src/routes/v1/statusPageRoute.js",
|
|
"17a4f435-5a8e-4433-84a6-9ac17362709a": "server/src/controllers/v1/statusPageController.js",
|
|
"08602a28-f073-484e-9403-7eb798126dd4": "client/src/Pages/v1/StatusPage/Create",
|
|
"8ef70566-37d9-48fb-b5e8-37e5b68768a2": "client/src/Pages/v1/StatusPage/Status",
|
|
"f8541fe3-4bcf-4833-a226-66b5301adf58": "server/src/db/v1/modules/statusPageModule.js",
|
|
"e2d2bbf6-dffd-4edf-8c5d-34088d9d4745": "client/src/Pages/v1/StatusPage/Create/index.jsx",
|
|
"56f6775e-9843-4ca2-bc8c-1c263b6c35e9": "client/src/Pages/v1/StatusPage/Create/Hooks",
|
|
"e1e6f5e0-fd8c-4260-aa4f-cdb096c6b1c3": "client/src/Pages/v1/StatusPage/Status/index.jsx",
|
|
"79da0721-d810-4f7f-9cf9-3ea462bf0bff": "client/src/Pages/v1/StatusPage/Status/Hooks",
|
|
"3945e05f-2d99-4d6d-9a3e-b6c75ea3c45a": "client/src/Pages/v1/StatusPage/Create/Hooks/useCreateStatusPage.jsx",
|
|
"5b2cdab8-66f1-40a1-9621-0efaf54e04ae": "client/src/Pages/v1/StatusPage/Status/Hooks/useStatusPageFetch.jsx",
|
|
"00289d11-0015-4b2a-9c5b-dc9fd0f32b80": "client/src/Pages/v1/StatusPage/Create/index.jsx-simstep-de7b5d1f-b370-42a4-a410-4178f1e2d3a6",
|
|
"aa5d6d07-05f0-45f3-b19a-199af50e35f1": "client/src/Pages/v1/StatusPage/Create/Hooks/useCreateStatusPage.jsx-simstep-3c99ae6a-b671-4f47-bed0-ddccd8ff5d35",
|
|
"3efddcad-588f-4492-9808-b0c81c823c96": "server/src/routes/v1/statusPageRoute.js-simstep-84f11567-b3c4-42a2-aa7f-d78c1412099a",
|
|
"f15ef77e-380f-4768-98cb-7f0dd4113841": "server/src/controllers/v1/statusPageController.js-simstep-01694730-8a75-4949-8815-bb4d6e3e2b42",
|
|
"e234917e-a950-48f5-b864-cd957b2216e1": "server/src/db/v1/modules/statusPageModule.js-simstep-b6fa93cd-6fca-4d9e-969a-5400e2437ee8",
|
|
"058ded1f-83ce-40a7-a99d-d178c81fe557": "server/src/controllers/v1/statusPageController.js-simstep-2a115421-5175-4c8f-8cdd-62f3fe148af5",
|
|
"30aaee38-f509-4e19-a917-e6d2f4bba61c": "client/src/Routes/index.jsx-simstep-132354d7-df7a-4e03-9d00-16d54f836a1b",
|
|
"ecfb2d04-2681-4f16-af75-632f69e1a868": "client/src/Pages/v1/StatusPage/Status/Hooks/useStatusPageFetch.jsx-simstep-b57bb249-9066-454e-aa8c-89108fdfcc2e",
|
|
"2e26cd2f-1413-4c16-8e63-ea7808ab6c52": "server/src/routes/v1/statusPageRoute.js-simstep-477c6821-b29b-4b38-8930-ced21b8a75e5",
|
|
"9f217674-4cd7-4ef8-b088-d5620042a7ba": "server/src/controllers/v1/statusPageController.js-simstep-5bdbd179-ce8f-4171-a073-af72a99b4468",
|
|
"26da60f9-dde4-44ec-be89-91858cc14f90": "server/src/db/v1/modules/statusPageModule.js-simstep-ceb044e9-6545-4d04-bf79-ec8146eb8ec9",
|
|
"d76e70e0-41f9-46cc-b775-b2027c5a0d5b": "server/src/controllers/v1/statusPageController.js-simstep-83224406-2f1d-4030-9beb-d65c2baf544d",
|
|
"f59b91de-5196-4a43-9d57-3f28402c0672": "client/src/Pages/v1/StatusPage/Status/index.jsx-simstep-3d51e811-a659-442e-97e0-00798cd15647",
|
|
"de23eee2-b60a-4236-a890-3c5b78388bb3": "generated-edge-simstep-d419f7b6-7b9b-4494-9fad-83e3ce208ca4-de23eee2-b60a-4236-a890-3c5b78388bb3",
|
|
"d7faa713-4204-4a97-a172-d621da36c287": "generated-edge-simstep-8a2ab372-73db-4b9f-bc0e-6a20f15a4d79-d7faa713-4204-4a97-a172-d621da36c287",
|
|
"a3f28fa6-8268-4c13-95a0-83e3b1abdcb0": "generated-edge-simstep-0923a533-c572-4da3-ad87-cdfff111f3bb-a3f28fa6-8268-4c13-95a0-83e3b1abdcb0",
|
|
"9735611c-924b-49aa-92e8-10d8a86ac288": "generated-edge-simstep-67603f03-c088-4ed0-9f18-072435134cdd-9735611c-924b-49aa-92e8-10d8a86ac288",
|
|
"40cb7d7b-2888-44de-bb7d-7735af70ba34": "generated-edge-simstep-ea4b3532-baae-4890-a73e-2ca385d0319e-40cb7d7b-2888-44de-bb7d-7735af70ba34",
|
|
"c3f83811-8674-4dbb-9f84-79499f97fb1f": "generated-edge-simstep-210acc07-81c3-4394-b566-41f6031e8eeb-c3f83811-8674-4dbb-9f84-79499f97fb1f",
|
|
"0575bf87-5362-4988-b895-7e514148d420": "generated-edge-simstep-2ba49e28-1cac-47f5-9118-ab930788736a-0575bf87-5362-4988-b895-7e514148d420",
|
|
"ae1c9341-0e39-4d91-a9ac-5cc8a627c247": "generated-edge-simstep-de0714d2-bf1e-4a1a-a389-60793de8b772-ae1c9341-0e39-4d91-a9ac-5cc8a627c247",
|
|
"5735f30c-b55f-444a-9236-f3d75f68ed27": "generated-edge-simstep-b79b8922-4de6-477d-8648-37b4bd9a6767-5735f30c-b55f-444a-9236-f3d75f68ed27",
|
|
"dace45d6-fb25-4dae-b940-49ef7d77bbed": "generated-edge-simstep-788307ef-4cfa-4f5a-b2e9-a0bfc7a378d8-dace45d6-fb25-4dae-b940-49ef7d77bbed",
|
|
"137a5ab7-1e49-42ec-869d-58f7f2380cb3": "generated-edge-simstep-4d3fad92-8fa9-4a8f-be3b-f09eda2f8dd4-137a5ab7-1e49-42ec-869d-58f7f2380cb3",
|
|
"04a33e4f-1dfe-4c5a-8b30-01ed0591c380": "generated-edge-simstep-d5f3c300-9777-4e09-bb05-f1281c2ff29a-04a33e4f-1dfe-4c5a-8b30-01ed0591c380",
|
|
"933a6cdc-349c-4725-b7ae-14cf780bfde8": "client/src/Hooks/v1/checkHooks.js",
|
|
"d18dbe1d-2f2c-4336-bd21-47c1670f7bab": "server/src/routes/v1/checkRoute.js",
|
|
"d983e54f-2fbe-496a-932d-a827e1124804": "server/src/controllers/v1/checkController.js",
|
|
"273f3009-69d0-46fe-af57-3cd94a24b55b": "client/src/Pages/v1/Uptime/Details",
|
|
"f90db867-e1e7-4554-b446-fa78fc6a8578": "server/src/service/v1/business/checkService.js",
|
|
"860b5eec-a1ce-4e1f-a316-e1586f03af96": "server/src/db/v1/modules/checkModule.js",
|
|
"1807d5b9-54be-430b-8997-cada4dd9b521": "client/src/Pages/v1/Uptime/Details/index.jsx",
|
|
"6aed78bb-62f1-4ac1-9b9a-9d5977e87404": "client/src/Pages/v1/Uptime/Details/Components",
|
|
"5ac0878f-d238-4763-8464-a85b4885a40f": "client/src/Pages/v1/Uptime/Details/Components/ResponseTable",
|
|
"d3f74ac7-3b9a-4cae-8d77-a0d5d605bb27": "client/src/Pages/v1/Uptime/Details/Components/ResponseTable/index.jsx",
|
|
"78a8a7c5-41d3-4453-a7f7-ac632bbef288": "client/src/Pages/v1/Uptime/Details/index.jsx-simstep-35195328-9847-4678-b014-9331553f0d19",
|
|
"4a5847d0-91a0-4b4c-8517-2f4ff9a7e8d4": "client/src/Hooks/v1/checkHooks.js-simstep-8dc4347c-3e9e-40d7-ae6f-54684f2e6956",
|
|
"cdd090be-0b62-45b4-baa0-fec01fc3ffd1": "server/src/routes/v1/checkRoute.js-simstep-c5fd192f-ea28-48a0-b3e7-5bc04f521192",
|
|
"499b46a2-f2a2-4ccd-aecd-012eade2bd23": "server/src/service/v1/business/checkService.js-simstep-83fea05d-8306-4a73-a43f-882cdd14f50f",
|
|
"14df9f01-1358-442d-96f5-eab9a4c4abbf": "server/src/controllers/v1/checkController.js-simstep-5768fdc5-045c-48ef-b0c9-79769403648f",
|
|
"ceb9cda3-968d-44aa-b223-49902adb93b4": "client/src/Hooks/v1/checkHooks.js-simstep-faba07f3-7460-47ae-924d-f92f5b2e821d",
|
|
"c996f7ca-9384-4252-b343-7bfc049d14bb": "client/src/Pages/v1/Uptime/Details/Components/ResponseTable/index.jsx-simstep-2b1651cd-2e70-4cc6-b2bb-23f94fa73d66",
|
|
"e90e4943-6108-46e3-8a2c-a9a1c7361279": "generated-edge-simstep-49979250-1a32-4da5-95e0-58652fe218f9-e90e4943-6108-46e3-8a2c-a9a1c7361279",
|
|
"2b8ae59e-ed8d-4837-9a9b-64eb480f982c": "generated-edge-simstep-336b534d-8d6a-4639-af8e-889b38f51ab1-2b8ae59e-ed8d-4837-9a9b-64eb480f982c",
|
|
"839ba9f6-8a34-4919-a04a-13fba1795c61": "generated-edge-simstep-4f73f0fe-b390-4fe1-a354-eb0857835126-839ba9f6-8a34-4919-a04a-13fba1795c61",
|
|
"42d3bc70-701a-4be0-96b4-d6c2f0519b49": "generated-edge-simstep-65da1a9e-041c-4656-9c5b-0a92b761a9be-42d3bc70-701a-4be0-96b4-d6c2f0519b49",
|
|
"6c5b028c-356c-43c8-a35a-b47448cd8695": "generated-edge-simstep-2c1bdec8-d0e6-4163-a99c-f27899b987c5-6c5b028c-356c-43c8-a35a-b47448cd8695",
|
|
"74b0dd89-9fea-4219-af1f-9571316a9d5a": "generated-edge-simstep-9405dce1-0565-4dfa-9539-a048472acda9-74b0dd89-9fea-4219-af1f-9571316a9d5a",
|
|
"e2f99143-54b7-44dc-b566-1c2fb901bd16": "server/src/db/v2",
|
|
"043d3dac-d4bb-449b-a3a7-270d53b66dac": "client/src/Pages/v1/PageSpeed",
|
|
"7ef79284-534a-466f-a1f1-4e3a2f56be9d": "server/src/service/v2/business",
|
|
"b53384d7-b989-4ac7-bd68-1c3621174ef4": "server/src/db/v2/models",
|
|
"414c500b-7b68-42ba-8110-e855efbee750": "client/src/Pages/v1/PageSpeed/Create",
|
|
"581b4919-8b0c-4f0d-ae67-ad6de11d8c8b": "client/src/Pages/v1/PageSpeed/Details",
|
|
"50aeed0b-bc13-43f7-bb15-cb1b12b2caa7": "server/src/service/v2/infrastructure/NetworkService.ts",
|
|
"f0ebd5da-21bb-4d96-8ff9-ca10409acc80": "server/src/service/v2/business/CheckService.ts",
|
|
"7a3824cd-24c8-4b32-8b1d-e0bf357262c4": "server/src/service/v2/business/MonitorService.ts",
|
|
"64e3bb0a-67f5-4269-9e7d-94fe91ac78fc": "server/src/db/v2/models/checks",
|
|
"5ffe0baa-054a-4e5b-8b29-1254f07ea975": "client/src/Pages/v1/PageSpeed/Create/index.jsx",
|
|
"c4a7bb58-1d9c-4690-b6b8-460c1cc33702": "client/src/Pages/v1/PageSpeed/Details/index.jsx",
|
|
"1425ec43-f0f4-4c8b-a140-176c079219d6": "server/src/db/v2/models/checks/Check.ts",
|
|
"0622b212-3a4a-484d-9b7a-125864d785cd": "client/src/Pages/v1/PageSpeed/Create/index.jsx-simstep-b0cc6e6a-961e-4ea9-aa8a-6bfa44d6ba12",
|
|
"6527fb47-157e-4bba-9aed-adde061c5689": "server/src/service/v2/infrastructure/NetworkService.ts-simstep-53968267-0c6e-42f4-88b3-cd90f44532ae",
|
|
"f89cbd87-c961-4f8b-92b6-714da57718d5": "server/src/service/v2/business/CheckService.ts-simstep-01206383-2db8-4b18-84d0-be2a0289c196",
|
|
"ca6ee27b-1fbf-49de-978a-d6de259cc3d5": "server/src/service/v2/business/MonitorService.ts-simstep-5616ac6d-c281-4879-82f1-6590c721c8f7",
|
|
"9ef9e218-4742-487a-9a88-5c70e788ccdc": "client/src/Pages/v1/PageSpeed/Details/index.jsx-simstep-0ec0eb06-05eb-4204-b077-9e47eb2cc316",
|
|
"b8e83b0a-69ff-4c34-a7fe-cb8c9ba85438": "generated-edge-simstep-f8df1cad-6051-466e-a13e-47d710ba1c14-b8e83b0a-69ff-4c34-a7fe-cb8c9ba85438",
|
|
"0d3c8091-3d91-4e42-9b46-7e35ed726a7a": "generated-edge-simstep-0b380571-3896-4365-b5dc-187494f02e0d-0d3c8091-3d91-4e42-9b46-7e35ed726a7a",
|
|
"27c7191b-80a2-475b-9371-e106108aff1c": "generated-edge-simstep-a629a102-0df1-4798-a7a2-45c8f6cdad29-27c7191b-80a2-475b-9371-e106108aff1c",
|
|
"7be432cd-2587-4eab-abdc-f7b9c1923597": "generated-edge-simstep-4ed43eaf-fa8f-4fce-af87-8a5f74dd5c08-7be432cd-2587-4eab-abdc-f7b9c1923597",
|
|
"fe47576c-c186-4950-82a5-b2fd24eb2561": "server/src/config",
|
|
"cb53d612-9b89-47da-911c-165d0382a7d8": "server/src/config/routes.js",
|
|
"8021b55d-2d3a-4416-b598-e134e76c9434": "client/src/Pages/v1/Maintenance",
|
|
"5f21f109-1967-416f-a649-9b48e78b90f6": "server/src/routes/v1/maintenanceWindowRoute.js",
|
|
"a0cae18c-3c0e-40d3-ab03-eef7eace65d6": "server/src/controllers/v1/maintenanceWindowController.js",
|
|
"6f7119ac-d65a-4fdf-a6f2-31052e0f5549": "client/src/Pages/v1/Maintenance/CreateMaintenance",
|
|
"1eae6263-aaa2-4206-b92e-1e67f529c1c9": "client/src/Pages/v1/Maintenance/index.jsx",
|
|
"5ad4d33f-0932-479c-bb57-22ce6405758f": "client/src/Pages/v1/Maintenance/MaintenanceTable",
|
|
"26b8daff-aa48-4baa-9d6c-05f771bf0990": "server/src/service/v1/business/maintenanceWindowService.js",
|
|
"95ed6c41-ebeb-4c08-98c3-bab8b426789e": "server/src/db/v1/modules/maintenanceWindowModule.js",
|
|
"92c244d2-e6a7-4804-a643-1e8d36baf9c6": "client/src/Pages/v1/Maintenance/CreateMaintenance/index.jsx",
|
|
"015a17fc-3fcf-45e0-8936-19f5e2ca86a3": "client/src/Pages/v1/Maintenance/CreateMaintenance/hooks",
|
|
"e7ec5ca9-6d25-4bf2-9695-639556f7d141": "client/src/Pages/v1/Maintenance/MaintenanceTable/index.jsx",
|
|
"6ad0396e-9b38-4f5d-9ad9-6c9fcb4434f4": "client/src/Pages/v1/Maintenance/CreateMaintenance/hooks/useMaintenanceActions.jsx",
|
|
"20335f29-a2ac-4e0c-aba6-28707748ecd4": "client/src/Pages/v1/Maintenance/CreateMaintenance/index.jsx-simstep-2401ef7a-8d8e-4056-868a-547ab213daf1",
|
|
"5bdfdfa4-5d93-49fa-b05c-905813e6cf9d": "client/src/Pages/v1/Maintenance/CreateMaintenance/hooks/useMaintenanceActions.jsx-simstep-5e0d7085-099b-478a-afaa-47ad4dd07043",
|
|
"a391e8ea-9dbe-4fe4-90df-bf475d8b7ef8": "server/src/config/routes.js-simstep-3e93ef65-8e2c-405b-8dc1-56d8e93937b3",
|
|
"0fae6e75-38ea-444d-a1bf-0f820ba443b9": "server/src/controllers/v1/maintenanceWindowController.js-simstep-95fc1919-339d-4659-98cb-3dc50f662075",
|
|
"560d268b-ef0f-4cd2-bcfe-9dc0a0e2ce6f": "server/src/service/v1/business/maintenanceWindowService.js-simstep-6e2cf739-1514-4c37-9874-10b68a47010e",
|
|
"3890b98d-a133-4279-a961-5d2facc6a17a": "server/src/db/v1/modules/maintenanceWindowModule.js-simstep-a3c47fd4-c701-46c2-9aff-94a667b3e368",
|
|
"a5a84b08-8c70-4023-8d08-b74e23aab4d7": "client/src/Pages/v1/Maintenance/CreateMaintenance/index.jsx-simstep-ebe8fd52-f2a1-4a98-a71b-b04d6f4cdadc",
|
|
"d145bb4c-e1e0-473a-b6bc-decc932b738b": "client/src/Pages/v1/Maintenance/index.jsx-simstep-82b5ea14-bb00-4511-aba4-76196029fd81",
|
|
"c35a065c-2808-402c-877e-9055d956ce0d": "server/src/controllers/v1/maintenanceWindowController.js-simstep-1251da83-5949-4e24-a1d2-fc74ff785aa9",
|
|
"27d9160a-4f8d-4dff-a09b-1678bc28cf2c": "server/src/db/v1/modules/maintenanceWindowModule.js-simstep-9bfbae5a-f487-40ef-86f5-04a1cc3c7662",
|
|
"970e2002-7c0e-40ef-80d8-e5e6d0a60735": "client/src/Pages/v1/Maintenance/MaintenanceTable/index.jsx-simstep-acf97639-e291-4ca6-81a6-d0487397f42a",
|
|
"23630a1f-7452-4373-a864-7ec7821137f2": "server/src/service/v1/infrastructure/SuperSimpleQueue/SuperSimpleQueueHelper.js-simstep-a47affaf-b952-46d6-9709-6120a77690e1",
|
|
"fc78b5b6-7fad-4f8f-a5a3-c7c38931daba": "server/src/service/v1/infrastructure/SuperSimpleQueue/SuperSimpleQueueHelper.js-simstep-2127e749-80b4-499a-ae14-8dc2dcc9db9b",
|
|
"0fe32416-db43-49b9-9438-3796ba1a0add": "server/src/service/v1/infrastructure/SuperSimpleQueue/SuperSimpleQueueHelper.js-simstep-6ba6b9d1-5fc3-454e-8744-2022b5192ed9",
|
|
"01e042c3-40b4-416a-8d9e-6d6fd323d60b": "server/src/service/v1/infrastructure/SuperSimpleQueue/SuperSimpleQueueHelper.js-simstep-e59fe64e-f06b-4855-b631-923bb5a68540",
|
|
"d3bdc6ff-875e-472e-88c8-eb10b20c526e": "generated-edge-simstep-f881435b-3bc2-453d-b6bf-56ad3a12f120-d3bdc6ff-875e-472e-88c8-eb10b20c526e",
|
|
"fd5e4447-123b-4b2d-8bce-1d1ae7cb00af": "generated-edge-simstep-0660b48b-139f-4ecf-b7d9-f12f544e0ab5-fd5e4447-123b-4b2d-8bce-1d1ae7cb00af",
|
|
"e2588541-3ffc-47c6-8f8a-41d30ea7fc72": "generated-edge-simstep-e4cc5ce8-6da9-4281-9204-29c061ab13ce-e2588541-3ffc-47c6-8f8a-41d30ea7fc72",
|
|
"e1d59cf6-0d96-4e0a-ad17-2a7984a9157f": "generated-edge-simstep-c3d1a95c-e93d-499a-8830-a6d870902414-e1d59cf6-0d96-4e0a-ad17-2a7984a9157f",
|
|
"12d0ab8a-392f-48fa-9efa-06ffe1f3a252": "generated-edge-simstep-80aed28e-68b6-47bf-8bc9-ededb4824066-12d0ab8a-392f-48fa-9efa-06ffe1f3a252",
|
|
"fcf4eef4-394c-4872-9124-f7a0b32cdc3b": "generated-edge-simstep-69fdc2a9-837f-466c-9562-a12319019580-fcf4eef4-394c-4872-9124-f7a0b32cdc3b",
|
|
"7f921125-500f-4902-abc3-936ecac033d8": "generated-edge-simstep-7e20cd6c-d24e-4540-86d6-d6a9fa087314-7f921125-500f-4902-abc3-936ecac033d8",
|
|
"c3127c74-43f1-42d7-8da6-b0a494c3658f": "generated-edge-simstep-feb8bd4f-339f-4132-a709-89c63c4efa9c-c3127c74-43f1-42d7-8da6-b0a494c3658f",
|
|
"6c9979cd-1cc1-4227-b535-2ec3a10ca27e": "generated-edge-simstep-eda86dca-dea6-4671-a079-7d212f4f18c4-6c9979cd-1cc1-4227-b535-2ec3a10ca27e",
|
|
"c99291bb-7316-440e-9a7f-323ee39e26b8": "generated-edge-simstep-87583096-f1ec-4160-ae52-5238f32ed0ab-c99291bb-7316-440e-9a7f-323ee39e26b8",
|
|
"8a13e585-2310-420b-9e92-211b6d65f201": "generated-edge-simstep-e6542e14-556d-482a-8c35-f7b03997be49-8a13e585-2310-420b-9e92-211b6d65f201",
|
|
"40f4d9df-4c0f-4384-901c-8d7117e3b538": "generated-edge-simstep-a715d98f-60bf-4f32-aae6-21ee4e09f4da-40f4d9df-4c0f-4384-901c-8d7117e3b538",
|
|
"a968db5d-8f6d-4fd7-9df0-8b332b521703": "server/src/middleware",
|
|
"09082f73-e215-465f-9206-0a963fb4c7cb": "server/src/middleware/v1",
|
|
"3cad7666-0d1a-4e31-b6ca-70d9c3a46b19": "client/src/Pages/v1/Account",
|
|
"9edafb8a-3661-4a7e-8510-a47f3cbc7564": "server/src/routes/v1/inviteRoute.js",
|
|
"001fa2e4-eadd-4474-b2ec-79d7ea43465f": "server/src/middleware/v1/isAllowed.js",
|
|
"6a186805-9d50-4bc3-9d56-e627a7ec2eb8": "server/src/controllers/v1/inviteController.js",
|
|
"33960806-1b9e-4d61-a163-e4bebf82d87a": "client/src/Pages/v1/Account/index.jsx",
|
|
"425a4c15-043f-4d05-8832-da00e18f97b9": "client/src/Pages/v1/Account/components",
|
|
"570278b7-9b72-4299-9fd9-46b253b48e9b": "server/src/service/v1/business/inviteService.js",
|
|
"08853f8a-f596-4df0-9190-dad04f54caef": "server/src/db/v1/modules/inviteModule.js",
|
|
"1145f351-2257-411d-86f7-30bf8c26ad68": "client/src/Pages/v1/Account/components/TeamPanel.jsx",
|
|
"3de2d413-5e9b-49f4-9409-74be32c52e0f": "client/src/Pages/v1/Account/index.jsx-simstep-2d5a952a-ce62-4948-9309-96b28ad74e59",
|
|
"b27f1bba-c655-40c6-a1dc-71e78c590c92": "client/src/Pages/v1/Account/components/TeamPanel.jsx-simstep-eebaca25-d588-49c4-a35c-9abc82fde580",
|
|
"8b3cb6c2-ed57-4510-be15-decb8e3c89e1": "server/src/middleware/v1/isAllowed.js-simstep-50dd7316-7d01-43f7-9036-d97d51a9c178",
|
|
"ae858158-8db6-4917-8fda-0966a953f6ed": "server/src/service/v1/business/inviteService.js-simstep-55fe9963-30d2-47f8-859f-b485a77064c4",
|
|
"a7be2d0b-0227-4228-a0a6-074f7324fd89": "server/src/service/v1/business/inviteService.js-simstep-7d1f86f2-c8d5-48fb-a8c1-b337dc56271f",
|
|
"02d87257-883c-4822-a421-823c983532ec": "client/src/Pages/v1/Account/components/TeamPanel.jsx-simstep-700f35e0-b39d-417c-b0a8-0612feade977",
|
|
"c441312f-f3c6-48c6-b1b9-7c12749d91bb": "generated-edge-simstep-10f80ada-2d0a-4e98-bd5d-057e7d4fe6de-c441312f-f3c6-48c6-b1b9-7c12749d91bb",
|
|
"3530244f-2689-444e-bcbf-611db2e3c000": "generated-edge-simstep-16d87608-4458-430c-b459-cd9b1d413fa6-3530244f-2689-444e-bcbf-611db2e3c000",
|
|
"2ee1c4e8-90fb-4470-ad9f-6ffed5420853": "generated-edge-simstep-6c024d4c-178b-45fc-8bca-4fc6c00549a4-2ee1c4e8-90fb-4470-ad9f-6ffed5420853",
|
|
"bdd52e6f-ddf7-4966-b3af-957f9553082f": "generated-edge-simstep-c796f8ad-d548-45f3-8d62-67f59c6c1aa4-bdd52e6f-ddf7-4966-b3af-957f9553082f",
|
|
"52732a37-82b8-40a7-b12d-dc1b82380b2d": "generated-edge-simstep-6ba5094d-d1e6-4ec3-8917-28cdb30f2ef9-52732a37-82b8-40a7-b12d-dc1b82380b2d",
|
|
"56dae13e-5735-4089-a9a4-e18be315aff7": "client/src/Pages/v1/Uptime/BulkImport",
|
|
"29b6ad3c-9538-47bc-8796-aab942dc4b71": "client/src/Pages/v1/Uptime/BulkImport/index.jsx",
|
|
"cd84476a-1c8b-4781-811f-58fb9944365b": "client/src/Pages/v1/Uptime/BulkImport/Upload.jsx",
|
|
"c4caeba8-ed9a-4cbc-9888-38cc8ca55362": "client/src/Routes/index.jsx-simstep-a29da01e-8c5a-4e6d-8d3c-e49af528e4fa",
|
|
"6f1948fa-e84a-4f8e-8f3b-8f24c511b3d8": "client/src/Pages/v1/Uptime/BulkImport/Upload.jsx-simstep-bbd04d55-fc6a-4ba8-bcde-5a4dc263d6eb",
|
|
"dd2f9356-fad3-47d4-81d5-a5e038298e2b": "client/src/Pages/v1/Uptime/BulkImport/index.jsx-simstep-0139fcaa-eb46-4176-b7bd-1cb15e7f1f4c",
|
|
"5967e576-f542-4c0b-a3f4-9446ae992721": "client/src/Utils/NetworkService.js-simstep-2fc087b3-033d-4cf5-81f2-e35b99a14bce",
|
|
"c1ac3c26-996a-43ef-9c34-4c2776188784": "server/src/routes/v1/monitorRoute.js-simstep-07bf3d83-047d-4e51-9f96-8c9c64848500",
|
|
"0e520a6d-34bf-467b-a894-e73979364478": "server/src/controllers/v1/monitorController.js-simstep-a3799570-64bf-481e-9ffe-31dbad8a36e4",
|
|
"6139e487-1dd5-405a-ba7d-ededec4b282e": "server/src/service/v1/business/monitorService.js-simstep-2c7c3082-e4b6-4525-860f-2ffcd9e86db1",
|
|
"d9d519af-5c4d-4494-929e-a869581c1dc4": "server/src/db/v1/modules/monitorModule.js-simstep-70f18c21-2918-402e-9c35-1bdce8bc82d4",
|
|
"1e1d975f-7f0f-4132-bd71-2563b35e99b3": "server/src/service/v1/business/monitorService.js-simstep-66fbf913-e662-4bd9-ada6-077be9e37f07",
|
|
"72b55fa1-d944-4e46-ac98-f6a6cb201afa": "server/src/controllers/v1/monitorController.js-simstep-f5377571-156f-4c5c-8bab-b6dacdf0fea6",
|
|
"ae3b7e23-ed64-40aa-9760-389f0a869f8d": "client/src/Pages/v1/Uptime/BulkImport/index.jsx-simstep-72b3f16d-290d-4a61-8748-2ad90d63ec68",
|
|
"26d76516-fd7e-4ae8-956a-d077de4257fa": "server/src/routes/v1/monitorRoute.js-simstep-63d8d81f-f436-4594-a6eb-8c0fd2110bc1",
|
|
"a3106388-6a3d-4b68-a3fc-3761a0d54f98": "server/src/controllers/v1/monitorController.js-simstep-d9db3f40-8add-4551-9323-274348b9800f",
|
|
"ab9cb862-0ac7-45a3-9888-f64e87bdda54": "server/src/service/v1/business/monitorService.js-simstep-85cd1d5d-7ffb-49c5-aacb-907048003fc5",
|
|
"f151f89d-6399-48f0-aecd-5eb1572b48cc": "server/src/controllers/v1/monitorController.js-simstep-256095b8-5e3a-4c20-abd9-be9e6a9d0bad",
|
|
"d8877474-7203-484f-bd47-fc69e3c7c482": "server/src/controllers/v1/monitorController.js-simstep-60abdb27-4078-4678-a010-0f6938d4be48",
|
|
"c9a012bc-d53f-494f-82f2-1ee3f40ce646": "generated-edge-simstep-ef0bbcff-9535-4c0e-a5ca-96c457f89139-c9a012bc-d53f-494f-82f2-1ee3f40ce646",
|
|
"e03a8ce2-c2cd-4147-8bab-63d6c2cf0a48": "generated-edge-simstep-610120d2-0521-4444-b245-feb97239a389-e03a8ce2-c2cd-4147-8bab-63d6c2cf0a48",
|
|
"b8c0292d-afbb-4648-b484-1c27be96d52f": "generated-edge-simstep-a365d018-e80c-419c-80b3-5ffc8f14dc5c-b8c0292d-afbb-4648-b484-1c27be96d52f",
|
|
"23715cce-c83a-44c0-9853-4c95b85e5ecd": "generated-edge-simstep-e6dec1dc-33cb-4669-a3b0-7a3c0b233185-23715cce-c83a-44c0-9853-4c95b85e5ecd",
|
|
"20d0e690-a569-4c6f-8238-916cac920553": "generated-edge-simstep-c53d3f62-73fe-4fad-9835-ef2c8cf52894-20d0e690-a569-4c6f-8238-916cac920553",
|
|
"7292bf6e-431d-4a9d-94ce-2bcfabcaa79d": "generated-edge-simstep-6038422c-ab83-4fc6-a58b-c75734276118-7292bf6e-431d-4a9d-94ce-2bcfabcaa79d",
|
|
"b55a0dc6-f596-4e5f-9265-63588b46b519": "generated-edge-simstep-0115fb69-4959-4b32-bd90-1dcd3c2231f6-b55a0dc6-f596-4e5f-9265-63588b46b519",
|
|
"f27c60ef-fb40-43e2-9750-c2617bdeaf43": "generated-edge-simstep-2ee7bd94-d131-4dd8-bdf8-68433d00472d-f27c60ef-fb40-43e2-9750-c2617bdeaf43",
|
|
"c449f81a-d6af-4f7a-b2d8-050a9a9ee0f9": "generated-edge-simstep-94d5772d-3f46-4d43-b764-3493db5c4971-c449f81a-d6af-4f7a-b2d8-050a9a9ee0f9",
|
|
"926a330c-a9c5-4983-a4b5-70359813e49a": "generated-edge-simstep-c60a3adb-dd81-41b0-95e4-a0a6d23f9dd0-926a330c-a9c5-4983-a4b5-70359813e49a",
|
|
"febea87e-5033-479c-ba7a-eb35d98db899": "generated-edge-simstep-53cebb8e-cf45-49eb-a7d3-98fd87af21b4-febea87e-5033-479c-ba7a-eb35d98db899",
|
|
"3e0f0966-5c2f-41af-9bcc-e8f615e03a00": "generated-edge-simstep-74e95fb5-863c-4137-a41b-d7a32efa04a5-3e0f0966-5c2f-41af-9bcc-e8f615e03a00",
|
|
"ad300b1c-6748-40f9-a7c9-5895e0915991": "generated-edge-simstep-4deb5e47-2ac4-4638-9ee6-48295d027bcd-ad300b1c-6748-40f9-a7c9-5895e0915991",
|
|
"3dfb432a-2ce4-4f92-98ce-5d114b5f7f03": "generated-edge-simstep-605f4cbd-1f7f-4e89-b028-f18737ac7fb1-3dfb432a-2ce4-4f92-98ce-5d114b5f7f03",
|
|
"50f77798-f41b-4f5b-b096-7afc921a0419": "client/src/Pages/v1/Settings",
|
|
"1716ec41-8b42-4386-9850-55b8a607638e": "client/src/Pages/v1/Logs",
|
|
"8ee5d524-e61d-4e39-a729-babf54929def": "client/src/Hooks/v1/settingsHooks.js",
|
|
"a1fea5b0-fb7c-4189-9484-9d3312660767": "server/src/controllers/v1/settingsController.js",
|
|
"5882419e-8a92-4edd-a71a-1252983f9af7": "server/src/controllers/v1/diagnosticController.js",
|
|
"d4b34195-7e1e-47a0-9303-603987c81f95": "client/src/Pages/v1/Settings/index.jsx",
|
|
"d8aa5b9e-f2a7-44c8-8813-d79c3f3238ee": "client/src/Pages/v1/Settings/SettingsEmail.jsx",
|
|
"e0cb598c-e300-4fd3-8554-db7ffd6201f1": "client/src/Pages/v1/Logs/Diagnostics",
|
|
"643b26c1-3bfb-4c41-8179-96dfc237d99e": "server/src/service/v1/business/diagnosticService.js",
|
|
"87e0e2ea-4a6d-460d-95bc-31e2efd9c9cf": "client/src/Pages/v1/Logs/Diagnostics/index.jsx",
|
|
"97908daf-d071-4df5-8366-1f5f4d8d534a": "client/src/Pages/v1/Settings/index.jsx-simstep-64e9f1af-13b7-4361-a2a9-3f45760e316d",
|
|
"83596bd1-dfca-4196-b52e-955f6824fafb": "server/src/controllers/v1/settingsController.js-simstep-441b0c45-5f27-478d-8ca8-58fbd5f460ea",
|
|
"09cb194a-0ea4-46e2-b32b-36b62fa87f40": "client/src/Pages/v1/Settings/SettingsEmail.jsx-simstep-ae5c5146-4dbb-4612-9d23-086e57f72474",
|
|
"1b2cf182-9ee3-4218-a7ec-b74e427ccddf": "client/src/Hooks/v1/settingsHooks.js-simstep-d7098072-9a83-4369-8176-9646ba34e186",
|
|
"cce3b9c8-f3b7-434b-b3c6-d8d164714f86": "server/src/controllers/v1/settingsController.js-simstep-7632e8d2-4086-4169-ae3f-bfbf8d657987",
|
|
"fff5dde4-8eb8-4c21-9c6d-0845a9749ff3": "client/src/Hooks/v1/settingsHooks.js-simstep-a157bd07-b969-44f8-914c-3d8393c1605a",
|
|
"704e2ec8-9f2f-47e5-852f-c6ada67a02e0": "client/src/Pages/v1/Logs/Diagnostics/index.jsx-simstep-a9b24b5f-534b-4baf-a185-bac7c32a1c42",
|
|
"09f07e80-185e-4547-aab4-edaf8ae7501e": "server/src/service/v1/business/diagnosticService.js-simstep-8fb704ca-67d9-437c-90d8-01302634d568",
|
|
"4b418736-6b72-47e0-917a-d86d4bed9ecd": "client/src/Pages/v1/Logs/Diagnostics/index.jsx-simstep-e6c94f52-a599-4568-a06f-2db18f963817",
|
|
"f6d80f09-ae83-4c95-aba0-4efffeda38e0": "generated-edge-simstep-dca4a33c-b666-47b8-896b-370ed9d6f9c5-f6d80f09-ae83-4c95-aba0-4efffeda38e0",
|
|
"195ad532-9858-493e-876a-6ec457811d1d": "generated-edge-simstep-aacc9302-6ca8-45c6-acb8-956d8d0242c2-195ad532-9858-493e-876a-6ec457811d1d",
|
|
"8c107d79-f796-49eb-ab88-f553dd6f9d95": "generated-edge-simstep-e7e82a97-1409-4bc5-ae27-b4ff5ba746df-8c107d79-f796-49eb-ab88-f553dd6f9d95",
|
|
"ce3ed3ba-a35b-4881-8dfd-f8425b9bf812": "generated-edge-simstep-383387e5-4623-44ab-b2c4-d9ea046f4547-ce3ed3ba-a35b-4881-8dfd-f8425b9bf812",
|
|
"fbe9b160-307e-4f51-8f72-713fda5373c8": "generated-edge-simstep-0afcde35-7d51-4939-aae8-bac5ac83c49d-fbe9b160-307e-4f51-8f72-713fda5373c8",
|
|
"499dfe1f-77d4-4b26-a12c-45240691109e": "generated-edge-simstep-23b8ad7d-8967-4e48-814c-1a7bf5b4dfac-499dfe1f-77d4-4b26-a12c-45240691109e",
|
|
"d0f92604-a6fa-4d85-9716-ea8f32db78e0": "generated-edge-simstep-44a4372f-a903-4c43-a9a5-c7549c875e11-d0f92604-a6fa-4d85-9716-ea8f32db78e0"
|
|
}
|
|
} |