Files
conti-docs/Architecture-Diagram/network-architecture-diagram.drawio
T
Guangfei.Zhao cc0b00fd4f Update README and tech-selection documents for clarity and accuracy
- Revised the README.md to clarify the purpose of the tech-selection documents, distinguishing between external and internal materials.
- Added a new internal document, Flutter-vs-UniApp-Speaker.md, summarizing key points from the presentation deck.
- Updated Flutter-vs-UniApp-deck.standalone.html to enhance descriptions of HarmonyOS support and installation package sizes.
2026-09-02 09:49:29 +08:00

612 lines
66 KiB
Plaintext

<mxfile host="65bd71144e" compressed="false" pages="2">
<diagram id="network-architecture" name="Network Architecture">
<mxGraphModel dx="898" dy="770" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1800" pageHeight="1100" math="0" shadow="0">
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<mxCell id="2" value="Continental Retail APP Network Architecture" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=28;fontStyle=1;fontColor=#1f2937;" parent="1" vertex="1">
<mxGeometry x="60" y="28" width="620" height="40" as="geometry"/>
</mxCell>
<mxCell id="3" value="Primary route: Mobile App -&gt; App Backend. F6 API access is backend-only, F6 H5 is embedded-only, and Mini direct access is retained only for limited legacy compatibility." style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=13;fontColor=#4b5563;" parent="1" vertex="1">
<mxGeometry x="60" y="68" width="980" height="24" as="geometry"/>
</mxCell>
<mxCell id="4" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#d1d5db;strokeWidth=1.5;" parent="1" vertex="1">
<mxGeometry x="1490" y="26" width="240" height="74" as="geometry"/>
</mxCell>
<mxCell id="5" value="Version: v1.0&lt;br&gt;Date: 2026-08-31&lt;div&gt;Page: Network Architecture&lt;/div&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=top;fontSize=12;fontColor=#374151;spacingTop=8;spacingLeft=10;" parent="1" vertex="1">
<mxGeometry x="1500" y="34" width="220" height="56" as="geometry"/>
</mxCell>
<mxCell id="6" value="Mobile App" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dbeafe;strokeColor=#2563eb;strokeWidth=2;fontSize=18;fontStyle=1;fontColor=#1e3a8a;" parent="1" vertex="1">
<mxGeometry x="770" y="120" width="250" height="70" as="geometry"/>
</mxCell>
<mxCell id="7" value="Native Shell + WebView&lt;br&gt;Scan / Camera / Upload / JSBridge" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#eff6ff;strokeColor=#93c5fd;fontSize=13;fontColor=#1f2937;" parent="1" vertex="1">
<mxGeometry x="1060" y="124" width="300" height="62" as="geometry"/>
</mxCell>
<mxCell id="8" value="Internet" style="shape=cloud;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#94a3b8;strokeWidth=1.8;fontSize=16;fontStyle=1;fontColor=#1f2937;" parent="1" vertex="1">
<mxGeometry x="820" y="220" width="150" height="80" as="geometry"/>
</mxCell>
<mxCell id="9" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#eef6ff;strokeColor=#2563eb;strokeWidth=2;" parent="1" vertex="1">
<mxGeometry x="610" y="340" width="580" height="530" as="geometry"/>
</mxCell>
<mxCell id="10" value="Primary App Backend Domain (Azure China)" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;fontSize=22;fontStyle=1;fontColor=#1e3a8a;" parent="1" vertex="1">
<mxGeometry x="670" y="360" width="460" height="30" as="geometry"/>
</mxCell>
<mxCell id="11" value="Public Ingress Zone" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff7ed;strokeColor=#f59e0b;strokeWidth=1.4;fontStyle=1;verticalAlign=top;align=left;spacingTop=8;spacingLeft=10;fontColor=#1f2937;" parent="1" vertex="1">
<mxGeometry x="640" y="410" width="520" height="130" as="geometry"/>
</mxCell>
<mxCell id="12" value="WAF / Application Gateway" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#fb923c;strokeWidth=1.5;fontSize=14;fontStyle=1;fontColor=#1f2937;" parent="1" vertex="1">
<mxGeometry x="680" y="460" width="190" height="58" as="geometry"/>
</mxCell>
<mxCell id="13" value="Public Load Balancer" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#fb923c;strokeWidth=1.5;fontSize=14;fontStyle=1;fontColor=#1f2937;" parent="1" vertex="1">
<mxGeometry x="930" y="460" width="180" height="58" as="geometry"/>
</mxCell>
<mxCell id="14" value="Private Application Zone" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#e0f2fe;strokeColor=#38bdf8;strokeWidth=1.4;fontStyle=1;verticalAlign=top;align=left;spacingTop=8;spacingLeft=10;fontColor=#1f2937;" parent="1" vertex="1">
<mxGeometry x="640" y="570" width="520" height="270" as="geometry"/>
</mxCell>
<mxCell id="15" value="NSG / Access Control" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f5f3ff;strokeColor=#a78bfa;strokeWidth=1.4;fontSize=14;fontStyle=1;fontColor=#1f2937;" parent="1" vertex="1">
<mxGeometry x="690" y="610" width="420" height="42" as="geometry"/>
</mxCell>
<mxCell id="16" value="App Backend BFF / Unified APIs" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#60a5fa;strokeWidth=1.5;fontSize=14;fontStyle=1;fontColor=#1f2937;" parent="1" vertex="1">
<mxGeometry x="680" y="700" width="180" height="80" as="geometry"/>
</mxCell>
<mxCell id="17" value="Business Aggregation / Orchestration" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#60a5fa;strokeWidth=1.5;fontSize=14;fontStyle=1;fontColor=#1f2937;" parent="1" vertex="1">
<mxGeometry x="900" y="700" width="200" height="80" as="geometry"/>
</mxCell>
<mxCell id="18" value="F6 Integration Adapter" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#60a5fa;strokeWidth=1.5;fontSize=14;fontStyle=1;fontColor=#1f2937;" parent="1" vertex="1">
<mxGeometry x="790" y="790" width="200" height="38" as="geometry"/>
</mxCell>
<mxCell id="19" value="Identity / Store Context&lt;br&gt;Menu / Config / WebView Ticket" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f8fafc;strokeColor=#cbd5e1;strokeWidth=1;fontSize=12;fontColor=#374151;" parent="1" vertex="1">
<mxGeometry x="680" y="660" width="180" height="40" as="geometry"/>
</mxCell>
<mxCell id="20" value="Unified Error / Audit&#xa;Logging / Security / Trace ID" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f8fafc;strokeColor=#cbd5e1;strokeWidth=1;fontSize=12;fontColor=#374151;" parent="1" vertex="1">
<mxGeometry x="900" y="660" width="200" height="40" as="geometry"/>
</mxCell>
<mxCell id="21" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f0fdf4;strokeColor=#16a34a;strokeWidth=2;" parent="1" vertex="1">
<mxGeometry x="60" y="340" width="460" height="530" as="geometry"/>
</mxCell>
<mxCell id="22" value="Mini Program Backend VPC" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;fontSize=22;fontStyle=1;fontColor=#166534;" parent="1" vertex="1">
<mxGeometry x="100" y="360" width="380" height="30" as="geometry"/>
</mxCell>
<mxCell id="78" value="Independent VPC / network boundary" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dcfce7;strokeColor=#86efac;strokeWidth=1;fontSize=12;fontColor=#166534;" parent="1" vertex="1">
<mxGeometry x="165" y="390" width="250" height="28" as="geometry"/>
</mxCell>
<mxCell id="23" value="Public Ingress Zone" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ecfdf5;strokeColor=#4ade80;strokeWidth=1.4;fontStyle=1;verticalAlign=top;align=left;spacingTop=8;spacingLeft=10;fontColor=#1f2937;" parent="1" vertex="1">
<mxGeometry x="90" y="410" width="400" height="120" as="geometry"/>
</mxCell>
<mxCell id="24" value="Mini Gateway / Firewall" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#4ade80;strokeWidth=1.5;fontSize=14;fontStyle=1;fontColor=#1f2937;" parent="1" vertex="1">
<mxGeometry x="200" y="458" width="180" height="56" as="geometry"/>
</mxCell>
<mxCell id="26" value="Independent Mini Services" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ecfdf5;strokeColor=#4ade80;strokeWidth=1.4;fontStyle=1;verticalAlign=top;align=left;spacingTop=8;spacingLeft=10;fontColor=#1f2937;" parent="1" vertex="1">
<mxGeometry x="90" y="585" width="400" height="188" as="geometry"/>
</mxCell>
<mxCell id="33" value="O2O / Warranty / 马上下单 / ROOS&lt;br&gt;Shared Capabilities" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#4ade80;strokeWidth=1.4;fontSize=14;fontStyle=1;fontColor=#1f2937;" parent="1" vertex="1">
<mxGeometry x="155" y="655" width="270" height="80" as="geometry"/>
</mxCell>
<mxCell id="77" value="Independent domain retained. App-facing flows should converge through App Backend. Only selected legacy modules may still direct-connect." style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f0fdf4;strokeColor=#86efac;fontSize=13;fontColor=#166534;" parent="1" vertex="1">
<mxGeometry x="105" y="792" width="370" height="42" as="geometry"/>
</mxCell>
<mxCell id="34" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff7ed;strokeColor=#ea580c;strokeWidth=2;" parent="1" vertex="1">
<mxGeometry x="1280" y="340" width="450" height="530" as="geometry"/>
</mxCell>
<mxCell id="35" value="F6 Supplier VPC (Alibaba Cloud)" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;fontSize=21;fontStyle=1;fontColor=#c2410c;" parent="1" vertex="1">
<mxGeometry x="1310" y="360" width="390" height="30" as="geometry"/>
</mxCell>
<mxCell id="79" value="Supplier-managed VPC / network boundary" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffedd5;strokeColor=#fdba74;strokeWidth=1;fontSize=12;fontColor=#9a3412;" parent="1" vertex="1">
<mxGeometry x="1362" y="390" width="285" height="28" as="geometry"/>
</mxCell>
<mxCell id="36" value="Public Access Zone" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff7ed;strokeColor=#fb923c;strokeWidth=1.4;fontStyle=1;verticalAlign=top;align=left;spacingTop=8;spacingLeft=10;fontColor=#1f2937;" parent="1" vertex="1">
<mxGeometry x="1310" y="410" width="390" height="130" as="geometry"/>
</mxCell>
<mxCell id="37" value="Access Gateway / WAF" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#fb923c;strokeWidth=1.5;fontSize=14;fontStyle=1;fontColor=#1f2937;" parent="1" vertex="1">
<mxGeometry x="1340" y="460" width="160" height="58" as="geometry"/>
</mxCell>
<mxCell id="38" value="Load Balancer" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#fb923c;strokeWidth=1.5;fontSize=14;fontStyle=1;fontColor=#1f2937;" parent="1" vertex="1">
<mxGeometry x="1530" y="460" width="140" height="58" as="geometry"/>
</mxCell>
<mxCell id="39" value="Allowlisted B2B API Gateway" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#fb923c;strokeWidth=1.5;fontSize=13;fontStyle=1;fontColor=#1f2937;" parent="1" vertex="1">
<mxGeometry x="1400" y="418" width="210" height="34" as="geometry"/>
</mxCell>
<mxCell id="40" value="Private Service Zone" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff7ed;strokeColor=#fb923c;strokeWidth=1.4;fontStyle=1;verticalAlign=top;align=left;spacingTop=8;spacingLeft=10;fontColor=#1f2937;" parent="1" vertex="1">
<mxGeometry x="1310" y="565" width="390" height="240" as="geometry"/>
</mxCell>
<mxCell id="41" value="Security Group / Access Policy" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f5f3ff;strokeColor=#a78bfa;strokeWidth=1.4;fontSize=14;fontStyle=1;fontColor=#1f2937;" parent="1" vertex="1">
<mxGeometry x="1340" y="603" width="330" height="42" as="geometry"/>
</mxCell>
<mxCell id="42" value="F6 WebView Pages" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#fdba74;strokeWidth=1.4;fontSize=14;fontStyle=1;fontColor=#1f2937;" parent="1" vertex="1">
<mxGeometry x="1340" y="690" width="150" height="78" as="geometry"/>
</mxCell>
<mxCell id="43" value="F6 Capability APIs&#xa;(Backend Only)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#fdba74;strokeWidth=1.4;fontSize=14;fontStyle=1;fontColor=#1f2937;" parent="1" vertex="1">
<mxGeometry x="1520" y="690" width="150" height="78" as="geometry"/>
</mxCell>
<mxCell id="44" value="Procurement / Promotion / ERP capabilities are consumed through backend integration. App direct access is allowed only for embedded F6 H5 pages." style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff7ed;strokeColor=#fdba74;fontSize=13;fontColor=#92400e;" parent="1" vertex="1">
<mxGeometry x="1340" y="792" width="330" height="48" as="geometry"/>
</mxCell>
<mxCell id="45" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f8fafc;strokeColor=#d1d5db;strokeWidth=1.2;" parent="1" vertex="1">
<mxGeometry x="60" y="910" width="1670" height="150" as="geometry"/>
</mxCell>
<mxCell id="46" value="Architecture Principles" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=18;fontStyle=1;fontColor=#111827;" parent="1" vertex="1">
<mxGeometry x="86" y="930" width="220" height="24" as="geometry"/>
</mxCell>
<mxCell id="47" value="1. `Mobile App &amp;lt;-&amp;gt; App Backend` uses bidirectional HTTPS / REST API traffic.&lt;br&gt;2. `App -&amp;gt; F6` appears only in the Embedded H5 scenario.&lt;br&gt;3. `App Backend &amp;lt;-&amp;gt; F6 API` uses HTTPS / B2B API through `F6 Integration Adapter`.&lt;br&gt;4. `Mini Program Backend` remains an independent domain and integrates through HTTPS / Internal API.&lt;br&gt;5. Unified controls include HTTPS/TLS, Trace ID, audit logging, config switches, and normalized error handling." style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=top;fontSize=14;fontColor=#374151;spacingTop=4;" parent="1" vertex="1">
<mxGeometry x="86" y="966" width="980" height="84" as="geometry"/>
</mxCell>
<mxCell id="48" value="Legend" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=18;fontStyle=1;fontColor=#111827;" parent="1" vertex="1">
<mxGeometry x="1160" y="930" width="80" height="24" as="geometry"/>
</mxCell>
<mxCell id="49" value="" style="shape=line;html=1;strokeColor=#2563eb;strokeWidth=2;" parent="1" vertex="1">
<mxGeometry x="1168" y="974" width="72" height="10" as="geometry"/>
</mxCell>
<mxCell id="50" value="Primary route" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=13;fontColor=#1f2937;" parent="1" vertex="1">
<mxGeometry x="1250" y="965" width="120" height="24" as="geometry"/>
</mxCell>
<mxCell id="51" value="" style="shape=line;html=1;strokeColor=#16a34a;strokeWidth=2;" parent="1" vertex="1">
<mxGeometry x="1168" y="1008" width="72" height="10" as="geometry"/>
</mxCell>
<mxCell id="52" value="VPC backend integration" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=13;fontColor=#1f2937;" parent="1" vertex="1">
<mxGeometry x="1250" y="999" width="140" height="24" as="geometry"/>
</mxCell>
<mxCell id="53" value="" style="shape=line;html=1;strokeColor=#f97316;strokeWidth=2;" parent="1" vertex="1">
<mxGeometry x="1420" y="974" width="72" height="10" as="geometry"/>
</mxCell>
<mxCell id="54" value="F6 H5 route" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=13;fontColor=#1f2937;" parent="1" vertex="1">
<mxGeometry x="1502" y="965" width="110" height="24" as="geometry"/>
</mxCell>
<mxCell id="55" value="" style="shape=line;html=1;strokeColor=#6b7280;strokeWidth=2;dashed=1;dashPattern=8 8;" parent="1" vertex="1">
<mxGeometry x="1420" y="1008" width="72" height="10" as="geometry"/>
</mxCell>
<mxCell id="56" value="Legacy compatibility" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=13;fontColor=#1f2937;" parent="1" vertex="1">
<mxGeometry x="1502" y="999" width="150" height="24" as="geometry"/>
</mxCell>
<mxCell id="57" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#2563eb;strokeWidth=1.2;fontSize=12;fontColor=#1e3a8a;" parent="1" source="6" target="7" edge="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="58" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#2563eb;strokeWidth=1.4;" parent="1" source="6" target="8" edge="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="59" value="HTTPS / REST API" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=block;startFill=1;endArrow=block;endFill=1;strokeColor=#2563eb;strokeWidth=1.5;fontSize=12;fontColor=#1e3a8a;labelBackgroundColor=#ffffff;" parent="1" source="8" target="12" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="900" y="350"/>
<mxPoint x="775" y="350"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="60" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#f97316;strokeWidth=1.5;fontSize=12;fontColor=#c2410c;" parent="1" source="8" target="37" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1420" y="260"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="61" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#2563eb;strokeWidth=1.2;" parent="1" source="12" target="13" edge="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="62" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#2563eb;strokeWidth=1.2;" parent="1" source="13" target="16" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1020" y="600"/>
<mxPoint x="770" y="600"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="63" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#2563eb;strokeWidth=1.4;" parent="1" source="16" target="17" edge="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="64" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#16a34a;strokeWidth=1.4;fontSize=12;fontColor=#166534;exitX=0;exitY=0.75;exitDx=0;exitDy=0;" parent="1" source="17" target="18" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="880" y="760"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="65" value="HTTPS / B2B API" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=block;startFill=1;endArrow=block;endFill=1;strokeColor=#16a34a;strokeWidth=1.4;fontSize=12;fontColor=#166534;labelBackgroundColor=#ffffff;" parent="1" source="18" target="39" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1240" y="810"/>
<mxPoint x="1240" y="435"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="66" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#16a34a;strokeWidth=1.4;" parent="1" source="39" target="43" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1505" y="571"/>
<mxPoint x="1595" y="571"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="67" value="HTTPS / Internal API" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=block;startFill=1;endArrow=block;endFill=1;strokeColor=#16a34a;strokeWidth=1.4;fontSize=12;fontColor=#166534;labelBackgroundColor=#ffffff;startSize=6;" parent="1" source="17" target="24" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1060" y="850"/>
<mxPoint x="580" y="850"/>
<mxPoint x="580" y="610"/>
<mxPoint x="290" y="610"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="74" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#f97316;strokeWidth=1.2;" parent="1" source="37" target="38" edge="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="75" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#f97316;strokeWidth=1.2;" parent="1" source="38" target="42" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1690" y="489"/>
<mxPoint x="1690" y="660"/>
<mxPoint x="1415" y="660"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="76" value="Legacy only" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;dashed=1;dashPattern=8 8;strokeColor=#6b7280;strokeWidth=1.2;fontSize=12;fontColor=#4b5563;labelBackgroundColor=#ffffff;" parent="1" source="8" target="24" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="320" y="300"/>
<mxPoint x="290" y="300"/>
<mxPoint x="290" y="486"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="cXHFUXgN8kNcZhofBCdT-80" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.63;entryY=1.012;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="33" target="33" edge="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
</root>
</mxGraphModel>
</diagram>
<diagram id="network-topology" name="Network Topology">
<mxGraphModel dx="898" dy="770" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1800" pageHeight="1100" math="0" shadow="0">
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<mxCell id="nt-title" value="Continental Retail APP Network Topology" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=28;fontStyle=1;fontColor=#1f2937;" parent="1" vertex="1">
<mxGeometry x="60" y="28" width="700" height="40" as="geometry"/>
</mxCell>
<mxCell id="nt-subtitle" value="Topology view focused on network boundaries, public ingress points, and allowed cross-domain connectivity." style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=13;fontColor=#4b5563;" parent="1" vertex="1">
<mxGeometry x="60" y="68" width="940" height="24" as="geometry"/>
</mxCell>
<mxCell id="nt-version-box" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#9ca3af;strokeWidth=1.5;" parent="1" vertex="1">
<mxGeometry x="1490" y="26" width="240" height="74" as="geometry"/>
</mxCell>
<mxCell id="nt-version-text" value="Version: v1.0&lt;br&gt;Date: 2026-08-31&lt;br&gt;Page: Network Topology" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=top;fontSize=12;fontColor=#374151;spacingTop=8;spacingLeft=10;" parent="1" vertex="1">
<mxGeometry x="1500" y="32" width="220" height="62" as="geometry"/>
</mxCell>
<mxCell id="nt-public-zone" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f9fafb;strokeColor=#9ca3af;strokeWidth=1.5;dashed=1;dashPattern=8 8;" parent="1" vertex="1">
<mxGeometry x="680" y="145" width="440" height="650" as="geometry"/>
</mxCell>
<mxCell id="nt-public-zone-title" value="Public Network" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;fontSize=18;fontStyle=1;fontColor=#111827;" parent="1" vertex="1">
<mxGeometry x="810" y="165" width="180" height="28" as="geometry"/>
</mxCell>
<mxCell id="nt-mobile" value="Mobile App" style="shape=mxgraph.aws4.mobile_client;html=1;fillColor=#f3f4f6;strokeColor=#111827;strokeWidth=2;fontSize=16;fontStyle=1;fontColor=#111827;labelPosition=center;verticalLabelPosition=bottom;align=center;verticalAlign=top;spacingTop=8;" parent="1" vertex="1">
<mxGeometry x="864" y="215" width="72" height="95" as="geometry"/>
</mxCell>
<mxCell id="nt-internet" value="Internet" style="shape=cloud;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#374151;strokeWidth=2;fontSize=18;fontStyle=1;fontColor=#1f2937;" parent="1" vertex="1">
<mxGeometry x="795" y="365" width="210" height="110" as="geometry"/>
</mxCell>
<mxCell id="nt-dns" value="Public DNS / Domain" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;fillColor=#ffffff;strokeColor=#6b7280;strokeWidth=1.4;fontSize=13;fontStyle=1;fontColor=#111827;" parent="1" vertex="1">
<mxGeometry x="825" y="535" width="150" height="74" as="geometry"/>
</mxCell>
<mxCell id="nt-azure" value="Azure China&lt;br&gt;Primary App Backend VNet" style="shape=mxgraph.azure.cloud;html=1;fillColor=#ffffff;strokeColor=#111827;strokeWidth=2;fontSize=18;fontStyle=1;fontColor=#111827;verticalAlign=top;spacingTop=18;" parent="1" vertex="1">
<mxGeometry x="80" y="255" width="520" height="470" as="geometry"/>
</mxCell>
<mxCell id="nt-azure-boundary" value="VNet boundary" style="shape=rect;rounded=0;whiteSpace=wrap;html=1;fillColor=none;strokeColor=#111827;strokeWidth=1.8;dashed=1;dashPattern=6 6;fontSize=13;fontColor=#111827;verticalAlign=top;align=left;spacingTop=8;spacingLeft=10;" parent="1" vertex="1">
<mxGeometry x="125" y="345" width="430" height="330" as="geometry"/>
</mxCell>
<mxCell id="nt-azure-dmz" value="Public DMZ Subnet" style="shape=rect;rounded=0;whiteSpace=wrap;html=1;fillColor=#f9fafb;strokeColor=#374151;strokeWidth=1.4;fontStyle=1;verticalAlign=top;align=left;spacingTop=8;spacingLeft=10;fontColor=#1f2937;" parent="1" vertex="1">
<mxGeometry x="160" y="380" width="360" height="98" as="geometry"/>
</mxCell>
<mxCell id="nt-azure-ingress" value="WAF / App Gateway&lt;br&gt;+ Public LB" style="shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;fillColor=#ffffff;strokeColor=#374151;strokeWidth=1.5;fontSize=13;fontStyle=1;fontColor=#1f2937;" parent="1" vertex="1">
<mxGeometry x="235" y="412" width="210" height="58" as="geometry"/>
</mxCell>
<mxCell id="nt-azure-private" value="Private Application Subnet" style="shape=rect;rounded=0;whiteSpace=wrap;html=1;fillColor=#f3f4f6;strokeColor=#6b7280;strokeWidth=1.4;fontStyle=1;verticalAlign=top;align=left;spacingTop=8;spacingLeft=10;fontColor=#1f2937;" parent="1" vertex="1">
<mxGeometry x="160" y="505" width="360" height="150" as="geometry"/>
</mxCell>
<mxCell id="nt-app-backend" value="" style="shape=mxgraph.azure.app_services;html=1;fillColor=#ffffff;strokeColor=#374151;strokeWidth=1.5;fontSize=13;fontStyle=1;fontColor=#1f2937;labelPosition=center;verticalLabelPosition=bottom;align=center;verticalAlign=top;spacingTop=6;" parent="1" vertex="1">
<mxGeometry x="230" y="556" width="110" height="74" as="geometry"/>
</mxCell>
<mxCell id="nt-f6-adapter" value="F6 Integration&lt;br&gt;Adapter" style="shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;fillColor=#ffffff;strokeColor=#374151;strokeWidth=1.5;fontSize=13;fontStyle=1;fontColor=#1f2937;" parent="1" vertex="1">
<mxGeometry x="370" y="556" width="130" height="58" as="geometry"/>
</mxCell>
<mxCell id="nt-nsg" value="NSG / Access Rules" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f3f4f6;strokeColor=#6b7280;strokeWidth=1.3;fontSize=12;fontStyle=1;fontColor=#111827;" parent="1" vertex="1">
<mxGeometry x="230" y="505" width="220" height="32" as="geometry"/>
</mxCell>
<mxCell id="nt-mini" value="Mini Program Backend&lt;br&gt;Independent VPC" style="shape=mxgraph.azure.cloud;html=1;fillColor=#ffffff;strokeColor=#111827;strokeWidth=2;fontSize=18;fontStyle=1;fontColor=#111827;verticalAlign=top;spacingTop=18;" parent="1" vertex="1">
<mxGeometry x="80" y="720" width="430" height="360" as="geometry"/>
</mxCell>
<mxCell id="nt-mini-boundary" value="VPC boundary" style="shape=rect;rounded=0;whiteSpace=wrap;html=1;fillColor=none;strokeColor=#111827;strokeWidth=1.8;dashed=1;dashPattern=6 6;fontSize=13;fontColor=#111827;verticalAlign=top;align=left;spacingTop=8;spacingLeft=10;" parent="1" vertex="1">
<mxGeometry x="125" y="820" width="340" height="225" as="geometry"/>
</mxCell>
<mxCell id="nt-mini-gw" value="Mini Gateway&lt;br&gt;/ Firewall" style="shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;fillColor=#ffffff;strokeColor=#374151;strokeWidth=1.5;fontSize=13;fontStyle=1;fontColor=#1f2937;" parent="1" vertex="1">
<mxGeometry x="160" y="875" width="150" height="58" as="geometry"/>
</mxCell>
<mxCell id="nt-mini-svc" value="Mini Services&lt;br&gt;O2O / Warranty&lt;br&gt;马上下单 / ROOS" style="shape=datastore;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;fillColor=#ffffff;strokeColor=#374151;strokeWidth=1.5;fontSize=13;fontStyle=1;fontColor=#1f2937;" parent="1" vertex="1">
<mxGeometry x="285" y="935" width="150" height="92" as="geometry"/>
</mxCell>
<mxCell id="nt-f6" value="F6 Supplier VPC&lt;br&gt;Alibaba Cloud" style="shape=mxgraph.azure.cloud;html=1;fillColor=#f9fafb;strokeColor=#111827;strokeWidth=2;fontSize=18;fontStyle=1;fontColor=#111827;verticalAlign=top;spacingTop=18;" parent="1" vertex="1">
<mxGeometry x="1200" y="255" width="520" height="540" as="geometry"/>
</mxCell>
<mxCell id="nt-f6-boundary" value="Supplier-managed VPC boundary" style="shape=rect;rounded=0;whiteSpace=wrap;html=1;fillColor=none;strokeColor=#111827;strokeWidth=1.8;dashed=1;dashPattern=6 6;fontSize=13;fontColor=#111827;verticalAlign=top;align=left;spacingTop=8;spacingLeft=10;" parent="1" vertex="1">
<mxGeometry x="1245" y="345" width="430" height="390" as="geometry"/>
</mxCell>
<mxCell id="nt-f6-public" value="Public Access Subnet" style="shape=rect;rounded=0;whiteSpace=wrap;html=1;fillColor=#f9fafb;strokeColor=#374151;strokeWidth=1.4;fontStyle=1;verticalAlign=top;align=left;spacingTop=8;spacingLeft=10;fontColor=#1f2937;" parent="1" vertex="1">
<mxGeometry x="1280" y="380" width="360" height="130" as="geometry"/>
</mxCell>
<mxCell id="nt-f6-h5-ingress" value="Access Gateway / WAF&lt;br&gt;+ Load Balancer" style="shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;fillColor=#ffffff;strokeColor=#374151;strokeWidth=1.5;fontSize=13;fontStyle=1;fontColor=#1f2937;" parent="1" vertex="1">
<mxGeometry x="1305" y="425" width="190" height="58" as="geometry"/>
</mxCell>
<mxCell id="nt-f6-api-gw" value="Allowlisted&lt;br&gt;B2B API Gateway" style="shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;fillColor=#ffffff;strokeColor=#374151;strokeWidth=1.5;fontSize=13;fontStyle=1;fontColor=#1f2937;" parent="1" vertex="1">
<mxGeometry x="1510" y="425" width="150" height="58" as="geometry"/>
</mxCell>
<mxCell id="nt-f6-private" value="Private Service Subnet" style="shape=rect;rounded=0;whiteSpace=wrap;html=1;fillColor=#f3f4f6;strokeColor=#6b7280;strokeWidth=1.4;fontStyle=1;verticalAlign=top;align=left;spacingTop=8;spacingLeft=10;fontColor=#1f2937;" parent="1" vertex="1">
<mxGeometry x="1280" y="540" width="360" height="165" as="geometry"/>
</mxCell>
<mxCell id="nt-f6-h5" value="F6 WebView&lt;br&gt;Pages" style="shape=mxgraph.aws4.client;html=1;fillColor=#ffffff;strokeColor=#6b7280;strokeWidth=1.5;fontSize=13;fontStyle=1;fontColor=#1f2937;labelPosition=center;verticalLabelPosition=bottom;align=center;verticalAlign=top;spacingTop=6;" parent="1" vertex="1">
<mxGeometry x="1325" y="595" width="92" height="74" as="geometry"/>
</mxCell>
<mxCell id="nt-f6-api" value="F6 Capability APIs&lt;br&gt;Backend Only" style="shape=datastore;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;fillColor=#ffffff;strokeColor=#6b7280;strokeWidth=1.5;fontSize=13;fontStyle=1;fontColor=#1f2937;" parent="1" vertex="1">
<mxGeometry x="1490" y="595" width="150" height="74" as="geometry"/>
</mxCell>
<mxCell id="nt-notes-box" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f9fafb;strokeColor=#9ca3af;strokeWidth=1.2;" parent="1" vertex="1">
<mxGeometry x="1000" y="875" width="720" height="155" as="geometry"/>
</mxCell>
<mxCell id="nt-notes-title" value="Topology Reading" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=18;fontStyle=1;fontColor=#111827;" parent="1" vertex="1">
<mxGeometry x="1030" y="895" width="180" height="24" as="geometry"/>
</mxCell>
<mxCell id="nt-notes-text" value="1. This page is network-centric: VNet/VPC boundaries are the main objects.&lt;br&gt;2. Public traffic enters only through exposed ingress nodes.&lt;br&gt;3. Backend integration crosses network boundaries through controlled gateways.&lt;br&gt;4. Mini direct access is shown as a legacy exception, not a target route." style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=top;fontSize=14;fontColor=#374151;spacingTop=4;" parent="1" vertex="1">
<mxGeometry x="1030" y="930" width="650" height="88" as="geometry"/>
</mxCell>
<mxCell id="nt-legend-box" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#9ca3af;strokeWidth=1.2;" parent="1" vertex="1">
<mxGeometry x="640" y="877" width="320" height="180" as="geometry"/>
</mxCell>
<mxCell id="nt-legend-title" value="Legend" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=18;fontStyle=1;fontColor=#111827;" parent="1" vertex="1">
<mxGeometry x="670" y="885" width="90" height="24" as="geometry"/>
</mxCell>
<mxCell id="nt-legend-primary-line" value="" style="shape=line;html=1;strokeColor=#111827;strokeWidth=2;" parent="1" vertex="1">
<mxGeometry x="675" y="928" width="70" height="10" as="geometry"/>
</mxCell>
<mxCell id="nt-legend-primary-text" value="Primary App route" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=13;fontColor=#1f2937;" parent="1" vertex="1">
<mxGeometry x="760" y="919" width="150" height="24" as="geometry"/>
</mxCell>
<mxCell id="nt-legend-backend-line" value="" style="shape=line;html=1;strokeColor=#111827;strokeWidth=2;" parent="1" vertex="1">
<mxGeometry x="675" y="962" width="70" height="10" as="geometry"/>
</mxCell>
<mxCell id="nt-legend-backend-text" value="Backend integration" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=13;fontColor=#1f2937;" parent="1" vertex="1">
<mxGeometry x="760" y="953" width="160" height="24" as="geometry"/>
</mxCell>
<mxCell id="nt-legend-h5-line" value="" style="shape=line;html=1;strokeColor=#111827;strokeWidth=2;dashed=1;dashPattern=2 4;" parent="1" vertex="1">
<mxGeometry x="675" y="996" width="70" height="10" as="geometry"/>
</mxCell>
<mxCell id="nt-legend-h5-text" value="F6 WebView route" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=13;fontColor=#1f2937;" parent="1" vertex="1">
<mxGeometry x="760" y="987" width="160" height="24" as="geometry"/>
</mxCell>
<mxCell id="nt-legend-legacy-line" value="" style="shape=line;html=1;strokeColor=#6b7280;strokeWidth=2;dashed=1;dashPattern=8 8;" parent="1" vertex="1">
<mxGeometry x="675" y="1030" width="70" height="10" as="geometry"/>
</mxCell>
<mxCell id="nt-legend-legacy-text" value="Legacy compatibility" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=13;fontColor=#1f2937;" parent="1" vertex="1">
<mxGeometry x="760" y="1021" width="170" height="24" as="geometry"/>
</mxCell>
<mxCell id="nt-e-mobile-internet" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#111827;strokeWidth=1.5;" parent="1" source="nt-mobile" target="nt-internet" edge="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="nt-e-internet-dns" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#111827;strokeWidth=1.2;" parent="1" source="nt-internet" target="nt-dns" edge="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="nt-e-dns-azure" value="HTTPS / REST API" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=block;startFill=1;endArrow=block;endFill=1;strokeColor=#111827;strokeWidth=1.5;fontSize=12;fontColor=#111827;labelBackgroundColor=#ffffff;" parent="1" source="nt-dns" target="nt-azure-ingress" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="600" y="572"/>
<mxPoint x="600" y="441"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="nt-e-azure-ingress-app" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#111827;strokeWidth=1.3;" parent="1" source="nt-azure-ingress" target="nt-app-backend" edge="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="nt-e-app-adapter" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#111827;strokeWidth=1.4;" parent="1" source="nt-app-backend" target="nt-f6-adapter" edge="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="nt-e-adapter-f6-api-gw" value="HTTPS / allowlisted B2B API" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=block;startFill=1;endArrow=block;endFill=1;strokeColor=#111827;strokeWidth=1;fontSize=12;fontColor=#111827;labelBackgroundColor=#ffffff;" parent="1" source="nt-f6-adapter" target="nt-f6-api-gw" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="435" y="640"/>
<mxPoint x="1160" y="640"/>
<mxPoint x="1160" y="500"/>
<mxPoint x="1585" y="500"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="nt-e-f6-api-gw-api" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#111827;strokeWidth=1.3;" parent="1" source="nt-f6-api-gw" target="nt-f6-api" edge="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="nt-e-app-mini" value="HTTPS / Internal API" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=block;startFill=1;endArrow=block;endFill=1;strokeColor=#111827;strokeWidth=1.8;fontSize=12;fontColor=#111827;labelBackgroundColor=#ffffff;" parent="1" source="nt-app-backend" target="nt-mini-gw" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="285" y="690"/>
<mxPoint x="235" y="690"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="nt-e-mini-gw-svc" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#111827;strokeWidth=1.3;" parent="1" source="nt-mini-gw" target="nt-mini-svc" edge="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="nt-e-dns-f6-h5" value="HTTPS / embedded WebView" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#111827;strokeWidth=1.4;fontSize=12;fontColor=#111827;labelBackgroundColor=#ffffff;dashed=1;dashPattern=2 4;" parent="1" source="nt-dns" target="nt-f6-h5-ingress" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1080" y="572"/>
<mxPoint x="1080" y="454"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="nt-e-f6-h5-ingress-h5" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#111827;strokeWidth=1.2;dashed=1;dashPattern=2 4;" parent="1" source="nt-f6-h5-ingress" target="nt-f6-h5" edge="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="nt-e-legacy-mini" value="legacy only" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;dashed=1;dashPattern=8 8;strokeColor=#6b7280;strokeWidth=1.3;fontSize=12;fontColor=#4b5563;labelBackgroundColor=#ffffff;" parent="1" source="nt-dns" target="nt-mini-gw" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="640" y="572"/>
<mxPoint x="640" y="904"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="OBjgTYgMnUBFrRI9yGty-1" value="&lt;span style=&quot;color: rgb(31, 41, 55); font-weight: 700; white-space: nowrap;&quot;&gt;App Backend&lt;/span&gt;&lt;br style=&quot;color: rgb(31, 41, 55); font-weight: 700; white-space: nowrap;&quot;&gt;&lt;span style=&quot;color: rgb(31, 41, 55); font-weight: 700; white-space: nowrap;&quot;&gt;BFF + Orchestration&lt;/span&gt;" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontSize=10;" parent="1" vertex="1">
<mxGeometry x="230" y="557" width="110" height="73" as="geometry"/>
</mxCell>
</root>
</mxGraphModel>
</diagram>
<diagram id="environment-segmentation" name="Environment Segmentation">
<mxGraphModel dx="898" dy="770" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1800" pageHeight="1100" math="0" shadow="0">
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<mxCell id="es-title" value="Continental Retail APP Environment Segmentation" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=28;fontStyle=1;fontColor=#1f2937;" parent="1" vertex="1">
<mxGeometry x="60" y="28" width="760" height="40" as="geometry"/>
</mxCell>
<mxCell id="es-subtitle" value="DEV, UAT, and PROD are isolated network environments. App-facing APIs use controlled public ingress; application and data services remain private." style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=13;fontColor=#4b5563;" parent="1" vertex="1">
<mxGeometry x="60" y="68" width="1180" height="24" as="geometry"/>
</mxCell>
<mxCell id="es-version-box" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#9ca3af;strokeWidth=1.5;" parent="1" vertex="1">
<mxGeometry x="1490" y="26" width="240" height="74" as="geometry"/>
</mxCell>
<mxCell id="es-version-text" value="Version: v1.0&lt;br&gt;Date: 2026-08-31&lt;br&gt;Page: Environment Segmentation" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=top;fontSize=12;fontColor=#374151;spacingTop=8;spacingLeft=10;" parent="1" vertex="1">
<mxGeometry x="1500" y="32" width="220" height="62" as="geometry"/>
</mxCell>
<mxCell id="es-mobile" value="Mobile App" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dbeafe;strokeColor=#2563eb;strokeWidth=2;fontSize=16;fontStyle=1;fontColor=#1e3a8a;" parent="1" vertex="1">
<mxGeometry x="805" y="125" width="190" height="55" as="geometry"/>
</mxCell>
<mxCell id="es-internet" value="Internet" style="shape=cloud;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#94a3b8;strokeWidth=1.8;fontSize=15;fontStyle=1;fontColor=#1f2937;" parent="1" vertex="1">
<mxGeometry x="830" y="215" width="140" height="58" as="geometry"/>
</mxCell>
<mxCell id="es-dev" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#14532d;strokeColor=#14532d;strokeWidth=2;" parent="1" vertex="1">
<mxGeometry x="60" y="310" width="510" height="650" as="geometry"/>
</mxCell>
<mxCell id="es-dev-title" value="DEV Environment - Isolated VNet / VPC" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;fontSize=21;fontStyle=1;fontColor=#ffffff;" parent="1" vertex="1">
<mxGeometry x="80" y="325" width="470" height="30" as="geometry"/>
</mxCell>
<mxCell id="es-dev-cidr" value="VNet / VPC CIDR: [DEV CIDR TBD]" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#bbf7d0;strokeColor=#4ade80;fontSize=12;fontColor=#14532d;" parent="1" vertex="1">
<mxGeometry x="188" y="360" width="255" height="26" as="geometry"/>
</mxCell>
<mxCell id="es-dev-public" value="Public App API Ingress Subnet [CIDR TBD]" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dcfce7;strokeColor=#22c55e;strokeWidth=1.4;fontStyle=1;verticalAlign=top;align=left;spacingTop=8;spacingLeft=10;fontColor=#14532d;" parent="1" vertex="1">
<mxGeometry x="90" y="405" width="450" height="120" as="geometry"/>
</mxCell>
<mxCell id="es-dev-ingress" value="WAF / Application Gateway&lt;br&gt;Public App API Endpoint" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#22c55e;strokeWidth=1.5;fontSize=14;fontStyle=1;fontColor=#14532d;" parent="1" vertex="1">
<mxGeometry x="193" y="445" width="245" height="58" as="geometry"/>
</mxCell>
<mxCell id="es-dev-app" value="Private Application Subnet [CIDR TBD] - No public IP" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dcfce7;strokeColor=#22c55e;strokeWidth=1.4;fontStyle=1;verticalAlign=top;align=left;spacingTop=8;spacingLeft=10;fontColor=#14532d;" parent="1" vertex="1">
<mxGeometry x="90" y="550" width="450" height="150" as="geometry"/>
</mxCell>
<mxCell id="es-dev-services" value="BFF / Orchestration&lt;br&gt;Integration Adapters / Internal Services" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#22c55e;strokeWidth=1.5;fontSize=14;fontStyle=1;fontColor=#14532d;" parent="1" vertex="1">
<mxGeometry x="170" y="600" width="290" height="64" as="geometry"/>
</mxCell>
<mxCell id="es-dev-data" value="Private Data / Private Endpoint Subnet [CIDR TBD]" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#bbf7d0;strokeColor=#4ade80;strokeWidth=1.4;fontStyle=1;verticalAlign=top;align=left;spacingTop=8;spacingLeft=10;fontColor=#14532d;" parent="1" vertex="1">
<mxGeometry x="90" y="725" width="450" height="105" as="geometry"/>
</mxCell>
<mxCell id="es-dev-data-service" value="Database / Cache / Secrets / Logging" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#4ade80;strokeWidth=1.4;fontSize=13;fontStyle=1;fontColor=#14532d;" parent="1" vertex="1">
<mxGeometry x="175" y="770" width="280" height="42" as="geometry"/>
</mxCell>
<mxCell id="es-dev-admin" value="Approved remote admin IP ranges&lt;br&gt;VPN / White List" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#22c55e;strokeWidth=1.5;fontSize=12;fontStyle=1;fontColor=#14532d;" parent="1" vertex="1">
<mxGeometry x="210" y="865" width="210" height="55" as="geometry"/>
</mxCell>
<mxCell id="es-uat" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ede9fe;strokeColor=#7e22ce;strokeWidth=2;" parent="1" vertex="1">
<mxGeometry x="645" y="310" width="510" height="650" as="geometry"/>
</mxCell>
<mxCell id="es-uat-title" value="UAT Environment - Isolated VNet / VPC" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;fontSize=21;fontStyle=1;fontColor=#6b21a8;" parent="1" vertex="1">
<mxGeometry x="665" y="325" width="470" height="30" as="geometry"/>
</mxCell>
<mxCell id="es-uat-cidr" value="VNet / VPC CIDR: [UAT CIDR TBD]" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ddd6fe;strokeColor=#a78bfa;fontSize=12;fontColor=#6b21a8;" parent="1" vertex="1">
<mxGeometry x="773" y="360" width="255" height="26" as="geometry"/>
</mxCell>
<mxCell id="es-uat-public" value="Public App API Ingress Subnet [CIDR TBD]" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f5f3ff;strokeColor=#8b5cf6;strokeWidth=1.4;fontStyle=1;verticalAlign=top;align=left;spacingTop=8;spacingLeft=10;fontColor=#6b21a8;" parent="1" vertex="1">
<mxGeometry x="675" y="405" width="450" height="120" as="geometry"/>
</mxCell>
<mxCell id="es-uat-ingress" value="WAF / Application Gateway&lt;br&gt;Public App API Endpoint Only" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#8b5cf6;strokeWidth=1.5;fontSize=14;fontStyle=1;fontColor=#6b21a8;" parent="1" vertex="1">
<mxGeometry x="778" y="445" width="245" height="58" as="geometry"/>
</mxCell>
<mxCell id="es-uat-app" value="Private Application Subnet [CIDR TBD] - Internal only" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f5f3ff;strokeColor=#8b5cf6;strokeWidth=1.4;fontStyle=1;verticalAlign=top;align=left;spacingTop=8;spacingLeft=10;fontColor=#6b21a8;" parent="1" vertex="1">
<mxGeometry x="675" y="550" width="450" height="150" as="geometry"/>
</mxCell>
<mxCell id="es-uat-services" value="BFF / Orchestration&lt;br&gt;Integration Adapters / Internal Services" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#8b5cf6;strokeWidth=1.5;fontSize=14;fontStyle=1;fontColor=#6b21a8;" parent="1" vertex="1">
<mxGeometry x="755" y="600" width="290" height="64" as="geometry"/>
</mxCell>
<mxCell id="es-uat-data" value="Private Data / Private Endpoint Subnet [CIDR TBD]" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ede9fe;strokeColor=#a78bfa;strokeWidth=1.4;fontStyle=1;verticalAlign=top;align=left;spacingTop=8;spacingLeft=10;fontColor=#6b21a8;" parent="1" vertex="1">
<mxGeometry x="675" y="725" width="450" height="105" as="geometry"/>
</mxCell>
<mxCell id="es-uat-data-service" value="Database / Cache / Secrets / Logging" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#a78bfa;strokeWidth=1.4;fontSize=13;fontStyle=1;fontColor=#6b21a8;" parent="1" vertex="1">
<mxGeometry x="760" y="770" width="280" height="42" as="geometry"/>
</mxCell>
<mxCell id="es-prod" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#7f1d1d;strokeColor=#7f1d1d;strokeWidth=2;" parent="1" vertex="1">
<mxGeometry x="1230" y="310" width="510" height="650" as="geometry"/>
</mxCell>
<mxCell id="es-prod-title" value="PROD Environment - Isolated VNet / VPC" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;fontSize=21;fontStyle=1;fontColor=#ffffff;" parent="1" vertex="1">
<mxGeometry x="1250" y="325" width="470" height="30" as="geometry"/>
</mxCell>
<mxCell id="es-prod-cidr" value="VNet / VPC CIDR: [PROD CIDR TBD]" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fecaca;strokeColor=#f87171;fontSize=12;fontColor=#7f1d1d;" parent="1" vertex="1">
<mxGeometry x="1352" y="360" width="265" height="26" as="geometry"/>
</mxCell>
<mxCell id="es-prod-public" value="Public App API Ingress Subnet [CIDR TBD]" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fef2f2;strokeColor=#ef4444;strokeWidth=1.4;fontStyle=1;verticalAlign=top;align=left;spacingTop=8;spacingLeft=10;fontColor=#7f1d1d;" parent="1" vertex="1">
<mxGeometry x="1260" y="405" width="450" height="120" as="geometry"/>
</mxCell>
<mxCell id="es-prod-ingress" value="WAF / Application Gateway&lt;br&gt;Public App API Endpoint Only" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#ef4444;strokeWidth=1.5;fontSize=14;fontStyle=1;fontColor=#7f1d1d;" parent="1" vertex="1">
<mxGeometry x="1363" y="445" width="245" height="58" as="geometry"/>
</mxCell>
<mxCell id="es-prod-app" value="Private Application Subnet [CIDR TBD] - Internal only" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fef2f2;strokeColor=#ef4444;strokeWidth=1.4;fontStyle=1;verticalAlign=top;align=left;spacingTop=8;spacingLeft=10;fontColor=#7f1d1d;" parent="1" vertex="1">
<mxGeometry x="1260" y="550" width="450" height="150" as="geometry"/>
</mxCell>
<mxCell id="es-prod-services" value="BFF / Orchestration&lt;br&gt;Integration Adapters / Internal Services" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#ef4444;strokeWidth=1.5;fontSize=14;fontStyle=1;fontColor=#7f1d1d;" parent="1" vertex="1">
<mxGeometry x="1340" y="600" width="290" height="64" as="geometry"/>
</mxCell>
<mxCell id="es-prod-data" value="Private Data / Private Endpoint Subnet [CIDR TBD]" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fee2e2;strokeColor=#f87171;strokeWidth=1.4;fontStyle=1;verticalAlign=top;align=left;spacingTop=8;spacingLeft=10;fontColor=#7f1d1d;" parent="1" vertex="1">
<mxGeometry x="1260" y="725" width="450" height="105" as="geometry"/>
</mxCell>
<mxCell id="es-prod-data-service" value="Database / Cache / Secrets / Logging" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#f87171;strokeWidth=1.4;fontSize=13;fontStyle=1;fontColor=#7f1d1d;" parent="1" vertex="1">
<mxGeometry x="1345" y="770" width="280" height="42" as="geometry"/>
</mxCell>
<mxCell id="es-notes" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f8fafc;strokeColor=#d1d5db;strokeWidth=1.2;" parent="1" vertex="1">
<mxGeometry x="60" y="990" width="1680" height="80" as="geometry"/>
</mxCell>
<mxCell id="es-notes-text" value="Isolation: separate subscription/account and VNet/VPC per environment; no cross-environment routing. DEV remote admin: approved IP ranges via VPN / Bastion only.&lt;br&gt;Public ingress: bidirectional HTTPS / REST API to App-facing endpoints only; private application and data subnets have no public IP and accept approved same-environment traffic only." style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;fontSize=13;fontColor=#374151;" parent="1" vertex="1">
<mxGeometry x="72" y="995" width="1645" height="70" as="geometry"/>
</mxCell>
<mxCell id="es-e-mobile-internet" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=block;startFill=1;endArrow=block;endFill=1;strokeColor=#2563eb;strokeWidth=1.5;" parent="1" source="es-mobile" target="es-internet" edge="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="es-e-internet-dev" value="HTTPS / REST API" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=block;startFill=1;endArrow=block;endFill=1;strokeColor=#166534;strokeWidth=1.4;fontSize=12;fontColor=#14532d;labelBackgroundColor=#ffffff;" parent="1" source="es-internet" target="es-dev-ingress" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="315" y="285"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="es-e-internet-uat" value="HTTPS / REST API" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=block;startFill=1;endArrow=block;endFill=1;strokeColor=#7e22ce;strokeWidth=1.4;fontSize=12;fontColor=#6b21a8;labelBackgroundColor=#ffffff;" parent="1" source="es-internet" target="es-uat-ingress" edge="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="es-e-internet-prod" value="HTTPS / REST API" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=block;startFill=1;endArrow=block;endFill=1;strokeColor=#b91c1c;strokeWidth=1.4;fontSize=12;fontColor=#7f1d1d;labelBackgroundColor=#ffffff;" parent="1" source="es-internet" target="es-prod-ingress" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1485" y="285"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="es-e-dev-ingress-app" value="private TLS" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#166534;strokeWidth=1.3;fontSize=11;fontColor=#14532d;labelBackgroundColor=#ffffff;" parent="1" source="es-dev-ingress" target="es-dev-services" edge="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="es-e-uat-ingress-app" value="private TLS" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#7e22ce;strokeWidth=1.3;fontSize=11;fontColor=#6b21a8;labelBackgroundColor=#ffffff;" parent="1" source="es-uat-ingress" target="es-uat-services" edge="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="es-e-prod-ingress-app" value="private TLS" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#b91c1c;strokeWidth=1.3;fontSize=11;fontColor=#7f1d1d;labelBackgroundColor=#ffffff;" parent="1" source="es-prod-ingress" target="es-prod-services" edge="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="es-e-dev-app-data" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#166534;strokeWidth=1.2;" parent="1" source="es-dev-services" target="es-dev-data-service" edge="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="es-e-uat-app-data" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#7e22ce;strokeWidth=1.2;" parent="1" source="es-uat-services" target="es-uat-data-service" edge="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="es-e-prod-app-data" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#b91c1c;strokeWidth=1.2;" parent="1" source="es-prod-services" target="es-prod-data-service" edge="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="es-e-dev-admin" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;dashed=1;dashPattern=8 8;strokeColor=#166534;strokeWidth=1.2;" parent="1" source="es-dev-admin" target="es-dev-services" edge="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>