Files
conti-docs/Architecture-Diagram/architecture-diagram.drawio
T

1313 lines
121 KiB
Plaintext
Raw Normal View History

<mxfile host="Electron" agent="Codex" compressed="false" pages="5">
<diagram id="system-overview" name="System Overview">
<mxGraphModel dx="2357" dy="1802" grid="0" gridSize="8" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="0" pageScale="1" pageWidth="2384" pageHeight="1504" background="#FFFFFF" math="1" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="KMS15cxpBdj745l8hprU-158" parent="1" style="rounded=0;whiteSpace=wrap;html=1;" value="" vertex="1">
<mxGeometry height="1450" width="2336" x="24" y="-58" as="geometry" />
</mxCell>
<mxCell id="102" parent="1" style="rounded=0;arcSize=12;html=1;whiteSpace=wrap;fillColor=#f8fafc;strokeColor=#cbd5e1;strokeWidth=1.2;" value="" vertex="1">
<mxGeometry height="1248" width="2256" x="64" y="128" as="geometry" />
</mxCell>
<mxCell id="103" parent="1" style="rounded=1;arcSize=12;html=1;whiteSpace=wrap;fillColor=#e0f2fe;strokeColor=#7dd3fc;strokeWidth=1.5;" value="" vertex="1">
<mxGeometry height="928" width="416" x="112" y="184" as="geometry" />
</mxCell>
<mxCell id="104" parent="1" style="rounded=1;arcSize=12;html=1;whiteSpace=wrap;fillColor=#dbeafe;strokeColor=#2563eb;strokeWidth=1.5;" value="" vertex="1">
<mxGeometry height="928" width="520" x="560" y="184" as="geometry" />
</mxCell>
<mxCell id="105" parent="1" style="rounded=1;arcSize=12;html=1;whiteSpace=wrap;fillColor=#dcfce7;strokeColor=#22c55e;strokeWidth=1.5;" value="" vertex="1">
<mxGeometry height="928" width="520" x="1112" y="184" as="geometry" />
</mxCell>
<mxCell id="106" parent="1" style="rounded=1;arcSize=12;html=1;whiteSpace=wrap;fillColor=#ffedd5;strokeColor=#f97316;strokeWidth=1.5;" value="" vertex="1">
<mxGeometry height="928" width="608" x="1664" y="184" as="geometry" />
</mxCell>
<mxCell id="107" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;fontSize=26;fontStyle=1;fontColor=#0f172a;" value="Mobile App" vertex="1">
<mxGeometry height="28" width="192" x="224" y="206" as="geometry" />
</mxCell>
<mxCell id="108" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;fontSize=28;fontStyle=1;fontColor=#1d4ed8;" value="App Backend" vertex="1">
<mxGeometry height="28" width="176" x="732" y="206" as="geometry" />
</mxCell>
<mxCell id="109" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;fontSize=24;fontStyle=1;fontColor=#15803d;" value="Mini Program Backend Domain" vertex="1">
<mxGeometry height="28" width="360" x="1192" y="206" as="geometry" />
</mxCell>
<mxCell id="110" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;fontSize=26;fontStyle=1;fontColor=#c2410c;" value="F6 Supplier Domain" vertex="1">
<mxGeometry height="28" width="200" x="1868" y="206" as="geometry" />
</mxCell>
<mxCell id="111" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=18;fontStyle=1;fontColor=#0f172a;" value="App Shell and Entry" vertex="1">
<mxGeometry height="24" width="220" x="144" y="258" as="geometry" />
</mxCell>
<mxCell id="112" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=18;fontStyle=1;fontColor=#1d4ed8;" value="Context and Control" vertex="1">
<mxGeometry height="24" width="220" x="592" y="258" as="geometry" />
</mxCell>
<mxCell id="113" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=18;fontStyle=1;fontColor=#15803d;" value="Retained Business Systems" vertex="1">
<mxGeometry height="24" width="240" x="1144" y="258" as="geometry" />
</mxCell>
<mxCell id="114" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=18;fontStyle=1;fontColor=#c2410c;" value="Supplier Pages and APIs" vertex="1">
<mxGeometry height="24" width="240" x="1696" y="258" as="geometry" />
</mxCell>
<mxCell id="115" parent="1" style="rounded=1;arcSize=20;html=1;whiteSpace=wrap;fillColor=#ffffff;strokeColor=#38bdf8;strokeWidth=1.5;fontSize=20;fontColor=#1e293b;fontStyle=1" value="Login / Agreement / App Shell&#xa;Single mobile entry for store users" vertex="1">
<mxGeometry height="96" width="352" x="144" y="296" as="geometry" />
</mxCell>
<mxCell id="116" parent="1" style="rounded=1;arcSize=20;html=1;whiteSpace=wrap;fillColor=#ffffff;strokeColor=#38bdf8;strokeWidth=1.5;fontSize=20;fontColor=#1e293b;fontStyle=1" value="WebView + JSBridge&#xa;Embedded WebView only for F6 pages" vertex="1">
<mxGeometry height="88" width="352" x="144" y="424" as="geometry" />
</mxCell>
<mxCell id="117" parent="1" style="rounded=1;arcSize=20;html=1;whiteSpace=wrap;fillColor=#ffffff;strokeColor=#38bdf8;strokeWidth=1.5;fontSize=20;fontColor=#1e293b;fontStyle=1" value="Native Capabilities&lt;br&gt;Scan, camera, upload, Bluetooth, Notifications, Payment" vertex="1">
<mxGeometry height="88" width="352" x="144" y="544" as="geometry" />
</mxCell>
<mxCell id="118" parent="1" style="rounded=1;arcSize=20;html=1;whiteSpace=wrap;fillColor=#ffffff;strokeColor=#38bdf8;strokeWidth=1.5;fontSize=20;fontColor=#1e293b;fontStyle=1" value="Store-Aware Session Holder&#xa;Keeps current store and role locally" vertex="1">
<mxGeometry height="88" width="352" x="144" y="664" as="geometry" />
</mxCell>
<mxCell id="119" parent="1" style="rounded=1;arcSize=20;html=1;whiteSpace=wrap;fillColor=#ffffff;strokeColor=#2563eb;strokeWidth=1.5;fontSize=20;fontColor=#1e293b;fontStyle=1" value="Auth and Token Center&#xa;Login, refresh, logout, identity trust" vertex="1">
<mxGeometry height="96" width="456" x="592" y="296" as="geometry" />
</mxCell>
<mxCell id="120" parent="1" style="rounded=1;arcSize=20;html=1;whiteSpace=wrap;fillColor=#ffffff;strokeColor=#2563eb;strokeWidth=1.5;fontSize=20;fontColor=#1e293b;fontStyle=1" value="Store Context + Menu + Permission + Config&#xa;Owns current store, role scope, menu baseline" vertex="1">
<mxGeometry height="96" width="456" x="592" y="424" as="geometry" />
</mxCell>
<mxCell id="121" parent="1" style="rounded=1;arcSize=20;html=1;whiteSpace=wrap;fillColor=#ffffff;strokeColor=#2563eb;strokeWidth=1.5;fontSize=20;fontColor=#1e293b;fontStyle=1" value="Workbench Aggregation&#xa;Builds home tiles, reminders, and summary views" vertex="1">
<mxGeometry height="88" width="456" x="592" y="552" as="geometry" />
</mxCell>
<mxCell id="122" parent="1" style="rounded=1;arcSize=20;html=1;whiteSpace=wrap;fillColor=#ffffff;strokeColor=#2563eb;strokeWidth=1.5;fontSize=20;fontColor=#1e293b;fontStyle=1" value="Business Orchestration&#xa;Normalizes order, procurement, and workflow context" vertex="1">
<mxGeometry height="88" width="456" x="592" y="672" as="geometry" />
</mxCell>
<mxCell id="123" parent="1" style="rounded=1;arcSize=20;html=1;whiteSpace=wrap;fillColor=#ffffff;strokeColor=#ea580c;strokeWidth=1.5;fontSize=20;fontColor=#1e293b;fontStyle=1" value="WebView Ticket and Signing Entry&#xa;Prepares supplier session and trace context" vertex="1">
<mxGeometry height="88" width="456" x="592" y="792" as="geometry" />
</mxCell>
<mxCell id="124" parent="1" style="rounded=1;arcSize=20;html=1;whiteSpace=wrap;fillColor=#ffffff;strokeColor=#22c55e;strokeWidth=1.5;fontSize=20;fontStyle=1;fontColor=#1e293b;" value="O2O" vertex="1">
<mxGeometry height="72" width="168" x="1160" y="316" as="geometry" />
</mxCell>
<mxCell id="125" parent="1" style="rounded=1;arcSize=20;html=1;whiteSpace=wrap;fillColor=#ffffff;strokeColor=#22c55e;strokeWidth=1.5;fontSize=20;fontStyle=1;fontColor=#1e293b;" value="延保" vertex="1">
<mxGeometry height="72" width="168" x="1392" y="316" as="geometry" />
</mxCell>
<mxCell id="126" parent="1" style="rounded=1;arcSize=20;html=1;whiteSpace=wrap;fillColor=#ffffff;strokeColor=#22c55e;strokeWidth=1.5;fontSize=20;fontStyle=1;fontColor=#1e293b;" value="马上下单" vertex="1">
<mxGeometry height="72" width="168" x="1160" y="420" as="geometry" />
</mxCell>
<mxCell id="127" parent="1" style="rounded=1;arcSize=20;html=1;whiteSpace=wrap;fillColor=#ffffff;strokeColor=#22c55e;strokeWidth=1.5;fontSize=20;fontStyle=1;fontColor=#1e293b;" value="ROOS" vertex="1">
<mxGeometry height="72" width="168" x="1392" y="420" as="geometry" />
</mxCell>
<mxCell id="128" parent="1" style="rounded=1;arcSize=20;html=1;whiteSpace=wrap;fillColor=#f0fdf4;strokeColor=#86efac;strokeWidth=1.4;fontSize=20;fontColor=#166534;fontStyle=1" value="Retained source systems&#xa;Still own historical business data and workflows" vertex="1">
<mxGeometry height="96" width="400" x="1160" y="548" as="geometry" />
</mxCell>
<mxCell id="130" parent="1" style="shape=document;boundedLbl=1;html=1;whiteSpace=wrap;fillColor=#ffffff;strokeColor=#f97316;strokeWidth=1.5;fontSize=20;fontStyle=1;fontColor=#1e293b;" value="F6 WebView Pages" vertex="1">
<mxGeometry height="88" width="224" x="1712" y="308" as="geometry" />
</mxCell>
<mxCell id="131" parent="1" style="rounded=1;arcSize=20;html=1;whiteSpace=wrap;fillColor=#ffffff;strokeColor=#f97316;strokeWidth=1.5;fontSize=20;fontStyle=1;fontColor=#1e293b;" value="F6 Capability APIs" vertex="1">
<mxGeometry height="88" width="224" x="1984" y="308" as="geometry" />
</mxCell>
<mxCell id="134" parent="1" style="rounded=1;arcSize=20;html=1;whiteSpace=wrap;fillColor=#ffffff;strokeColor=#f97316;strokeWidth=1.5;fontSize=20;fontColor=#1e293b;fontStyle=1" value="API examples&#xa;Procurement, activity, inventory sync" vertex="1">
<mxGeometry height="88" width="224" x="1984" y="564" as="geometry" />
</mxCell>
<mxCell id="135" parent="1" style="rounded=1;arcSize=12;html=1;whiteSpace=wrap;fillColor=#f8fafc;strokeColor=#cbd5e1;strokeWidth=1.2;" value="" vertex="1">
<mxGeometry height="184" width="2096" x="112" y="1144" as="geometry" />
</mxCell>
<mxCell id="136" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=20;fontStyle=1;fontColor=#334155;" value="External Services" vertex="1">
<mxGeometry height="24" width="180" x="144" y="1168" as="geometry" />
</mxCell>
<mxCell id="137" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=20;fontStyle=1;fontColor=#334155;" value="Governance Rules" vertex="1">
<mxGeometry height="24" width="180" x="1160" y="1168" as="geometry" />
</mxCell>
<mxCell id="138" parent="1" style="ellipse;shape=cloud;html=1;whiteSpace=wrap;fillColor=#dbeafe;strokeColor=#2563eb;strokeWidth=1.4;fontSize=16;fontColor=#1e293b;" value="SMS" vertex="1">
<mxGeometry height="72" width="176" x="152" y="1212" as="geometry" />
</mxCell>
<mxCell id="139" parent="1" style="ellipse;shape=cloud;html=1;whiteSpace=wrap;fillColor=#dbeafe;strokeColor=#2563eb;strokeWidth=1.4;fontSize=16;fontColor=#1e293b;" value="Marketing / CRM" vertex="1">
<mxGeometry height="72" width="224" x="368" y="1212" as="geometry" />
</mxCell>
<mxCell id="140" parent="1" style="ellipse;shape=cloud;html=1;whiteSpace=wrap;fillColor=#dbeafe;strokeColor=#2563eb;strokeWidth=1.4;fontSize=16;fontColor=#1e293b;" value="WeCom" vertex="1">
<mxGeometry height="72" width="176" x="632" y="1212" as="geometry" />
</mxCell>
<mxCell id="141" parent="1" style="rounded=1;arcSize=20;html=1;whiteSpace=wrap;fillColor=#ffffff;strokeColor=#2563eb;strokeWidth=1.5;fontSize=16;fontColor=#1e293b;" value="App -&gt; App Backend is primary" vertex="1">
<mxGeometry height="72" width="224" x="1160" y="1212" as="geometry" />
</mxCell>
<mxCell id="142" parent="1" style="rounded=1;arcSize=20;html=1;whiteSpace=wrap;fillColor=#ffffff;strokeColor=#f97316;strokeWidth=1.5;fontSize=16;fontColor=#1e293b;" value="App -&gt; F6 only in Embedded WebView" vertex="1">
<mxGeometry height="72" width="224" x="1416" y="1212" as="geometry" />
</mxCell>
<mxCell id="143" parent="1" style="rounded=1;arcSize=20;html=1;whiteSpace=wrap;fillColor=#ffffff;strokeColor=#f97316;strokeWidth=1.5;fontSize=16;fontColor=#1e293b;" value="F6 APIs go through Adapter" vertex="1">
<mxGeometry height="72" width="224" x="1672" y="1212" as="geometry" />
</mxCell>
<mxCell id="144" parent="1" style="rounded=1;arcSize=20;html=1;whiteSpace=wrap;fillColor=#ffffff;strokeColor=#dc2626;strokeWidth=1.5;fontSize=16;fontColor=#1e293b;" value="Mini direct access is legacy-only" vertex="1">
<mxGeometry height="72" width="248" x="1928" y="1212" as="geometry" />
</mxCell>
<mxCell id="145" edge="1" parent="1" source="115" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#2563eb;strokeWidth=1;endArrow=block;endFill=1;jumpStyle=arc;jumpSize=8;" target="119" value="">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="154" connectable="0" parent="145" style="edgeLabel;html=1;align=center;verticalAlign=middle;fontSize=13;fontColor=#1d4ed8;" value="primary route" vertex="1">
<mxGeometry relative="1" x="0.5" as="geometry">
<mxPoint y="-14" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="146" edge="1" parent="1" source="118" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#2563eb;strokeWidth=1;endArrow=block;endFill=1;jumpStyle=arc;jumpSize=8;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" target="120" value="">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="552" y="708" />
<mxPoint x="552" y="472" />
</Array>
<mxPoint x="528" y="691.0000000000002" as="sourcePoint" />
<mxPoint x="852" y="525" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="155" connectable="0" parent="146" style="edgeLabel;html=1;align=center;verticalAlign=middle;fontSize=13;fontColor=#1d4ed8;" value="primary route" vertex="1">
<mxGeometry relative="1" x="0.5" as="geometry">
<mxPoint y="-14" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="147" edge="1" parent="1" source="121" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#64748b;strokeWidth=1;dashed=1;dashPattern=6 4;endArrow=block;endFill=1;jumpStyle=arc;jumpSize=8;" target="124" value="">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="820" y="536" />
<mxPoint x="1352" y="536" />
<mxPoint x="1352" y="352" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="156" connectable="0" parent="147" style="edgeLabel;html=1;align=center;verticalAlign=middle;fontSize=13;fontColor=#64748b;" value="aggregated call" vertex="1">
<mxGeometry relative="1" x="0.5" as="geometry">
<mxPoint y="-14" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="148" edge="1" parent="1" source="121" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#64748b;strokeWidth=1;dashed=1;dashPattern=6 4;endArrow=block;endFill=1;jumpStyle=arc;jumpSize=8;" target="125" value="">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="820" y="536" />
<mxPoint x="1376" y="536" />
<mxPoint x="1376" y="352" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="149" edge="1" parent="1" source="122" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#64748b;strokeWidth=1;dashed=1;dashPattern=6 4;endArrow=block;endFill=1;jumpStyle=arc;jumpSize=8;" target="126" value="">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1120" y="716" />
<mxPoint x="1120" y="456" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="150" edge="1" parent="1" source="122" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#64748b;strokeWidth=1;dashed=1;dashPattern=6 4;endArrow=block;endFill=1;jumpStyle=arc;jumpSize=8;" target="127" value="">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="820" y="662" />
<mxPoint x="1616" y="662" />
<mxPoint x="1616" y="456" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="151" edge="1" parent="1" source="123" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#ea580c;strokeWidth=1;dashed=1;dashPattern=6 4;endArrow=block;endFill=1;jumpStyle=arc;jumpSize=8;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" target="130" value="">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1685" y="836" />
<mxPoint x="1685" y="352" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="157" connectable="0" parent="151" style="edgeLabel;html=1;align=center;verticalAlign=middle;fontSize=13;fontColor=#ea580c;" value="embedded WebView" vertex="1">
<mxGeometry relative="1" x="0.5" as="geometry">
<mxPoint y="-14" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="152" edge="1" parent="1" source="122" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#c2410c;strokeWidth=1;endArrow=block;endFill=1;jumpStyle=arc;jumpSize=8;" target="131" value="">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="820" y="784" />
<mxPoint x="2240" y="784" />
<mxPoint x="2240" y="352" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="158" connectable="0" parent="152" style="edgeLabel;html=1;align=center;verticalAlign=middle;fontSize=13;fontColor=#c2410c;" value="adapter call" vertex="1">
<mxGeometry relative="1" x="0.5" as="geometry">
<mxPoint y="-14" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="nW4BhG50B0pjCwhF13_z-158" parent="1" style="text;html=1;strokeColor=none;fillColor=#D5E8D4;align=left;verticalAlign=middle;fontSize=19;fontColor=#374151;spacingTop=8;spacingLeft=10;labelBorderColor=none;" value="Version: v0.9&lt;br&gt;Date: 2026-06-16&lt;div&gt;Page:&amp;nbsp;System Overview&lt;/div&gt;&lt;div&gt;Author&lt;span style=&quot;background-color: transparent; color: light-dark(rgb(55, 65, 81), rgb(174, 183, 197));&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: light-dark(rgb(55, 65, 81), rgb(174, 183, 197));&quot;&gt;Zhao, Guangfei&lt;/span&gt;&lt;/div&gt;" vertex="1">
<mxGeometry height="104" width="452" x="1893" y="-46" as="geometry" />
</mxCell>
<mxCell id="oieIphGHzJsM6ZUIHDl_-158" parent="1" style="rounded=0;whiteSpace=wrap;html=1;" value="" vertex="1">
<mxGeometry height="132" width="1007" x="24" y="-57" as="geometry" />
</mxCell>
<mxCell id="101" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=16;fontColor=#475569;" value="Capability ownership view: the app uses one main backend domain, while Mini backends and F6 stay independent." vertex="1">
<mxGeometry height="24" width="980" x="40" y="14" as="geometry" />
</mxCell>
<mxCell id="100" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=32;fontStyle=1;fontColor=#0f172a;" value="Continental Retail APP System Overview" vertex="1">
<mxGeometry height="40" width="760" x="40" y="-42" as="geometry" />
</mxCell>
<mxCell id="129" parent="1" style="rounded=1;arcSize=20;html=1;whiteSpace=wrap;fillColor=#ffffff;strokeColor=#22c55e;strokeWidth=1.5;fontSize=20;fontColor=#1e293b;fontStyle=1" value="Representative examples&#xa;Home data, warranty lookup, order support, rebate data" vertex="1">
<mxGeometry height="88" width="400" x="1160" y="676" as="geometry" />
</mxCell>
<mxCell id="132" parent="1" style="rounded=1;arcSize=20;html=1;whiteSpace=wrap;fillColor=#ffedd5;strokeColor=#fdba74;strokeWidth=1.4;fontSize=16;fontColor=#9a3412;" value="Procurement / Promotion / ERP&#xa;Supplier-owned capabilities stay outside the main backend" vertex="1">
<mxGeometry height="96" width="496" x="1712" y="436" as="geometry" />
</mxCell>
<mxCell id="133" parent="1" style="rounded=1;arcSize=20;html=1;whiteSpace=wrap;fillColor=#ffffff;strokeColor=#f97316;strokeWidth=1.5;fontSize=20;fontColor=#1e293b;fontStyle=1" value="WebView examples&#xa;Sales, scan, settlement, inbound" vertex="1">
<mxGeometry height="88" width="224" x="1712" y="564" as="geometry" />
</mxCell>
<mxCell id="GyYMq7JOHhVq3Sw2kzow-158" parent="1" style="rounded=1;arcSize=20;html=1;whiteSpace=wrap;fillColor=#ffffff;strokeColor=#38bdf8;strokeWidth=1.5;fontSize=20;fontColor=#1e293b;fontStyle=1" value="Flutter WebView Plugin, Native Platform Core" vertex="1">
<mxGeometry height="88" width="352" x="152" y="792" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
<diagram id="system-architecture" name="System Architecture">
<mxGraphModel dx="1414" dy="1241" grid="0" gridSize="8" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="0" pageScale="1" pageWidth="3700" pageHeight="1800" background="#FFFFFF" math="1" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="D7Sz99mfy6qfVyFed3Xx-274" parent="1" style="rounded=0;whiteSpace=wrap;html=1;" value="" vertex="1">
<mxGeometry height="2004" width="3536" x="16" y="-195" as="geometry" />
</mxCell>
<mxCell id="202" parent="1" style="rounded=1;arcSize=12;html=1;whiteSpace=wrap;fillColor=#f8fafc;strokeColor=#e2e8f0;strokeWidth=1;" value="a" vertex="1">
<mxGeometry height="560" width="560" x="96" y="162" as="geometry" />
</mxCell>
<mxCell id="203" parent="1" style="rounded=1;arcSize=12;html=1;whiteSpace=wrap;fillColor=#f8fafc;strokeColor=#e2e8f0;strokeWidth=1;" value="" vertex="1">
<mxGeometry height="560" width="540" x="736" y="160" as="geometry" />
</mxCell>
<mxCell id="204" parent="1" style="rounded=1;arcSize=12;html=1;whiteSpace=wrap;fillColor=#f8fafc;strokeColor=#e2e8f0;strokeWidth=1;" value="" vertex="1">
<mxGeometry height="560" width="980" x="1356" y="160" as="geometry" />
</mxCell>
<mxCell id="205" parent="1" style="rounded=1;arcSize=12;html=1;whiteSpace=wrap;fillColor=#f8fafc;strokeColor=#e2e8f0;strokeWidth=1;" value="" vertex="1">
<mxGeometry height="560" width="440" x="2416" y="160" as="geometry" />
</mxCell>
<mxCell id="206" parent="1" style="rounded=1;arcSize=12;html=1;whiteSpace=wrap;fillColor=#f8fafc;strokeColor=#e2e8f0;strokeWidth=1;" value="" vertex="1">
<mxGeometry height="320" width="1212" x="1356" y="780" as="geometry" />
</mxCell>
<mxCell id="207" parent="1" style="rounded=1;arcSize=12;html=1;whiteSpace=wrap;fillColor=#f8fafc;strokeColor=#e2e8f0;strokeWidth=1;" value="" vertex="1">
<mxGeometry height="560" width="560" x="2936" y="160" as="geometry" />
</mxCell>
<mxCell id="208" parent="1" style="rounded=1;arcSize=12;html=1;whiteSpace=wrap;fillColor=#f8fafc;strokeColor=#e2e8f0;strokeWidth=1;" value="" vertex="1">
<mxGeometry height="360" width="560" x="2936" y="780" as="geometry" />
</mxCell>
<mxCell id="209" parent="1" style="rounded=1;arcSize=12;html=1;whiteSpace=wrap;fillColor=#f8fafc;strokeColor=#e2e8f0;strokeWidth=1;" value="" vertex="1">
<mxGeometry height="472" width="560" x="2936" y="1200" as="geometry" />
</mxCell>
<mxCell id="210" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=24;fontStyle=1;fontColor=#1e293b;" value="Client Tier" vertex="1">
<mxGeometry height="30" width="260" x="128" y="188" as="geometry" />
</mxCell>
<mxCell id="211" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=24;fontStyle=1;fontColor=#1e293b;" value="Access &amp; Security" vertex="1">
<mxGeometry height="30" width="260" x="768" y="188" as="geometry" />
</mxCell>
<mxCell id="212" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=24;fontStyle=1;fontColor=#1e293b;" value="App Backend" vertex="1">
<mxGeometry height="30" width="260" x="1388" y="188" as="geometry" />
</mxCell>
<mxCell id="213" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=24;fontStyle=1;fontColor=#1e293b;" value="Integration Layer" vertex="1">
<mxGeometry height="30" width="260" x="2448" y="188" as="geometry" />
</mxCell>
<mxCell id="214" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=24;fontStyle=1;fontColor=#1e293b;" value="Mini Program Backend" vertex="1">
<mxGeometry height="30" width="320" x="1388" y="808" as="geometry" />
</mxCell>
<mxCell id="215" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=24;fontStyle=1;fontColor=#1e293b;" value="F6 Supplier Domain" vertex="1">
<mxGeometry height="30" width="280" x="2968" y="188" as="geometry" />
</mxCell>
<mxCell id="216" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=24;fontStyle=1;fontColor=#1e293b;" value="External Services" vertex="1">
<mxGeometry height="30" width="260" x="2968" y="808" as="geometry" />
</mxCell>
<mxCell id="217" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=24;fontStyle=1;fontColor=#1e293b;" value="Cross-Cutting" vertex="1">
<mxGeometry height="30" width="260" x="2968" y="1228" as="geometry" />
</mxCell>
<mxCell id="218" parent="1" style="ellipse;html=1;whiteSpace=wrap;fillColor=#e0f2fe;strokeColor=#0284c7;strokeWidth=1.5;fontSize=18;fontColor=#1e293b;" value="Store User Persona" vertex="1">
<mxGeometry height="100" width="220" x="128" y="260" as="geometry" />
</mxCell>
<mxCell id="219" parent="1" style="rounded=1;arcSize=20;html=1;whiteSpace=wrap;fillColor=#bfdbfe;strokeColor=#1d4ed8;strokeWidth=1.5;fontSize=18;fontColor=#1e293b;" value="Mobile App&lt;br&gt;Native entry" vertex="1">
<mxGeometry height="100" width="220" x="384" y="260" as="geometry" />
</mxCell>
<mxCell id="220" parent="1" style="rounded=1;arcSize=20;html=1;whiteSpace=wrap;fillColor=#dbeafe;strokeColor=#2563eb;strokeWidth=1.5;fontSize=18;fontColor=#1e293b;" value="Native Capabilities&#xa;Scan / camera / upload / Bluetooth" vertex="1">
<mxGeometry height="100" width="220" x="128" y="460" as="geometry" />
</mxCell>
<mxCell id="pZ8nqr70MQB4xoW7GgT7-277" edge="1" parent="1" source="220" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.591;exitY=1.02;exitDx=0;exitDy=0;exitPerimeter=0;" target="pZ8nqr70MQB4xoW7GgT7-276" value="">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="221" parent="1" style="rounded=1;arcSize=20;html=1;whiteSpace=wrap;fillColor=#fed7aa;strokeColor=#ea580c;strokeWidth=1.5;fontSize=18;fontColor=#1e293b;" value="WebView + JSBridge&#xa;Embedded WebView container" vertex="1">
<mxGeometry height="100" width="220" x="384" y="460" as="geometry" />
</mxCell>
<mxCell id="222" parent="1" style="rounded=1;arcSize=20;html=1;whiteSpace=wrap;fillColor=#e0e7ff;strokeColor=#4338ca;strokeWidth=1.5;fontSize=18;fontColor=#1e293b;" value="API Gateway&#xa;HTTPS / TLS / routing" vertex="1">
<mxGeometry height="100" width="220" x="768" y="260" as="geometry" />
</mxCell>
<mxCell id="223" parent="1" style="rounded=1;arcSize=20;html=1;whiteSpace=wrap;fillColor=#e0e7ff;strokeColor=#4338ca;strokeWidth=1.5;fontSize=18;fontColor=#1e293b;" value="JWT / Auth&#xa;Token issue and refresh" vertex="1">
<mxGeometry height="100" width="220" x="1024" y="260" as="geometry" />
</mxCell>
<mxCell id="224" parent="1" style="rhombus;html=1;whiteSpace=wrap;fillColor=#fef3c7;strokeColor=#d97706;strokeWidth=1.5;fontSize=18;fontColor=#1e293b;" value="WebView Allowlist&#xa;Supplier domain control" vertex="1">
<mxGeometry height="120" width="220" x="896" y="460" as="geometry" />
</mxCell>
<mxCell id="225" parent="1" style="rounded=1;arcSize=20;html=1;whiteSpace=wrap;fillColor=#dbeafe;strokeColor=#2563eb;strokeWidth=1.5;fontSize=18;fontColor=#1e293b;" value="Identity &amp; Store Center&#xa;IAM, store, role, menu" vertex="1">
<mxGeometry height="110" width="260" x="1400" y="460" as="geometry" />
</mxCell>
<mxCell id="226" parent="1" style="rounded=1;arcSize=20;html=1;whiteSpace=wrap;fillColor=#bfdbfe;strokeColor=#1d4ed8;strokeWidth=1.5;fontSize=18;fontColor=#1e293b;" value="BFF Orchestration&#xa;Unified response and normalization" vertex="1">
<mxGeometry height="110" width="260" x="1728" y="260" as="geometry" />
</mxCell>
<mxCell id="227" parent="1" style="rounded=1;arcSize=20;html=1;whiteSpace=wrap;fillColor=#dbeafe;strokeColor=#2563eb;strokeWidth=1.5;fontSize=18;fontColor=#1e293b;" value="Workbench Aggregation" vertex="1">
<mxGeometry height="110" width="260" x="1728" y="460" as="geometry" />
</mxCell>
<mxCell id="228" parent="1" style="rounded=1;arcSize=20;html=1;whiteSpace=wrap;fillColor=#fed7aa;strokeColor=#ea580c;strokeWidth=1.5;fontSize=18;fontColor=#1e293b;" value="WebView Ticket Center&#xa;Signed entry and trace handoff" vertex="1">
<mxGeometry height="110" width="260" x="2056" y="460" as="geometry" />
</mxCell>
<mxCell id="229" parent="1" style="rounded=1;arcSize=20;html=1;whiteSpace=wrap;fillColor=#fdba74;strokeColor=#c2410c;strokeWidth=1.5;fontSize=18;fontColor=#1e293b;" value="F6 Integration Adapter&lt;br&gt;Ticket exchange" vertex="1">
<mxGeometry height="110" width="260" x="2460" y="260" as="geometry" />
</mxCell>
<mxCell id="230" parent="1" style="shape=parallelogram;perimeter=parallelogramPerimeter;fixedSize=1;html=1;whiteSpace=wrap;fillColor=#fed7aa;strokeColor=#ea580c;strokeWidth=1.5;fontSize=18;fontColor=#1e293b;" value="Timeout / Retry" vertex="1">
<mxGeometry height="110" width="260" x="2460" y="480" as="geometry" />
</mxCell>
<mxCell id="231" parent="1" style="rounded=1;arcSize=20;html=1;whiteSpace=wrap;fillColor=#d1fae5;strokeColor=#059669;strokeWidth=1.5;fontSize=18;fontColor=#1e293b;" value="O2O Backend" vertex="1">
<mxGeometry height="100" width="220" x="1400" y="900" as="geometry" />
</mxCell>
<mxCell id="232" parent="1" style="rounded=1;arcSize=20;html=1;whiteSpace=wrap;fillColor=#d1fae5;strokeColor=#059669;strokeWidth=1.5;fontSize=18;fontColor=#1e293b;" value="Warranty Backend" vertex="1">
<mxGeometry height="100" width="220" x="1680" y="900" as="geometry" />
</mxCell>
<mxCell id="233" parent="1" style="rounded=1;arcSize=20;html=1;whiteSpace=wrap;fillColor=#d1fae5;strokeColor=#059669;strokeWidth=1.5;fontSize=18;fontColor=#1e293b;" value="&lt;font&gt;马上下单&lt;/font&gt;&amp;nbsp;Backend" vertex="1">
<mxGeometry height="100" width="220" x="1960" y="900" as="geometry" />
</mxCell>
<mxCell id="234" parent="1" style="rounded=1;arcSize=20;html=1;whiteSpace=wrap;fillColor=#d1fae5;strokeColor=#059669;strokeWidth=1.5;fontSize=18;fontColor=#1e293b;" value="ROOS Backend" vertex="1">
<mxGeometry height="100" width="220" x="2240" y="900" as="geometry" />
</mxCell>
<mxCell id="235" parent="1" style="shape=document;boundedLbl=1;html=1;whiteSpace=wrap;fillColor=#fef3c7;strokeColor=#d97706;strokeWidth=1.5;fontSize=18;fontColor=#1e293b;" value="F6 WebView Pages&#xa;Sales, scan, settlement, inbound" vertex="1">
<mxGeometry height="110" width="220" x="2992" y="260" as="geometry" />
</mxCell>
<mxCell id="236" parent="1" style="rounded=1;arcSize=20;html=1;whiteSpace=wrap;fillColor=#fef3c7;strokeColor=#d97706;strokeWidth=1.5;fontSize=18;fontColor=#1e293b;" value="F6 Capability APIs&#xa;Procurement / promotion / ERP" vertex="1">
<mxGeometry height="110" width="220" x="2992" y="480" as="geometry" />
</mxCell>
<mxCell id="237" parent="1" style="ellipse;shape=cloud;html=1;whiteSpace=wrap;fillColor=#dbeafe;strokeColor=#2563eb;strokeWidth=1.5;fontSize=18;fontColor=#1e293b;" value="SMS" vertex="1">
<mxGeometry height="100" width="180" x="2992" y="860" as="geometry" />
</mxCell>
<mxCell id="238" parent="1" style="ellipse;shape=cloud;html=1;whiteSpace=wrap;fillColor=#dbeafe;strokeColor=#2563eb;strokeWidth=1.5;fontSize=18;fontColor=#1e293b;" value="Marketing / CRM" vertex="1">
<mxGeometry height="100" width="220" x="3224" y="860" as="geometry" />
</mxCell>
<mxCell id="239" parent="1" style="ellipse;shape=cloud;html=1;whiteSpace=wrap;fillColor=#dbeafe;strokeColor=#2563eb;strokeWidth=1.5;fontSize=18;fontColor=#1e293b;" value="WeCom" vertex="1">
<mxGeometry height="100" width="180" x="2992" y="1000" as="geometry" />
</mxCell>
<mxCell id="240" parent="1" style="shape=document;boundedLbl=1;html=1;whiteSpace=wrap;fillColor=#ffffff;strokeColor=#cbd5e1;strokeWidth=1.5;fontSize=18;fontColor=#1e293b;" value="Observability&#xa;Trace ID / logs / metrics" vertex="1">
<mxGeometry height="100" width="220" x="2992" y="1280" as="geometry" />
</mxCell>
<mxCell id="241" parent="1" style="shape=document;boundedLbl=1;html=1;whiteSpace=wrap;fillColor=#ffffff;strokeColor=#cbd5e1;strokeWidth=1.5;fontSize=18;fontColor=#1e293b;" value="Audit / Security&#xa;Masking and evidence" vertex="1">
<mxGeometry height="100" width="220" x="2992" y="1410" as="geometry" />
</mxCell>
<mxCell id="242" parent="1" style="shape=document;boundedLbl=1;html=1;whiteSpace=wrap;fillColor=#ffffff;strokeColor=#cbd5e1;strokeWidth=1.5;fontSize=18;fontColor=#1e293b;" value="Config Center&#xa;Menu, switches, WebView entry" vertex="1">
<mxGeometry height="100" width="220" x="2992" y="1540" as="geometry" />
</mxCell>
<mxCell id="248" edge="1" parent="1" source="218" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#94a3b8;strokeWidth=1;endArrow=diamond;endFill=1;jumpStyle=arc;jumpSize=8;" target="219" value="">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="249" edge="1" parent="1" source="219" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#1e293b;strokeWidth=1;endArrow=diamond;endFill=1;jumpStyle=arc;jumpSize=8;" target="220" value="">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="494" y="410" />
<mxPoint x="238" y="410" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="250" edge="1" parent="1" source="219" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#1e293b;strokeWidth=1;endArrow=diamond;endFill=1;jumpStyle=arc;jumpSize=8;" target="221" value="">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="494" y="410" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="251" edge="1" parent="1" source="219" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#2563eb;strokeWidth=1;endArrow=block;endFill=1;jumpStyle=arc;jumpSize=8;" target="222" value="">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="700" y="310" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="252" edge="1" parent="1" source="222" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#1e293b;strokeWidth=1;endArrow=diamond;endFill=1;jumpStyle=arc;jumpSize=8;" target="223" value="">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="253" edge="1" parent="1" source="222" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#2563eb;strokeWidth=1;endArrow=block;endFill=1;jumpStyle=arc;jumpSize=8;" target="226" value="">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="878" y="224" />
<mxPoint x="1320" y="224" />
<mxPoint x="1320" y="288" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="254" edge="1" parent="1" source="223" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#2563eb;strokeWidth=1;endArrow=block;endFill=1;jumpStyle=arc;jumpSize=8;" target="225" value="">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1134" y="420" />
<mxPoint x="1530" y="420" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="255" edge="1" parent="1" source="225" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#1e293b;strokeWidth=1;endArrow=diamond;endFill=1;exitX=1;exitY=0.32;exitDx=0;exitDy=0;entryX=0;entryY=0.32;entryDx=0;entryDy=0;jumpStyle=arc;jumpSize=8;" target="226" value="">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1695" y="515" />
<mxPoint x="1695" y="315" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="256" edge="1" parent="1" source="227" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#1e293b;strokeWidth=1;endArrow=diamond;endFill=1;exitX=0;exitY=0.68;exitDx=0;exitDy=0;entryX=0.381;entryY=1.028;entryDx=0;entryDy=0;jumpStyle=arc;jumpSize=8;entryPerimeter=0;" target="226" value="">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1712" y="535" />
<mxPoint x="1712" y="420" />
<mxPoint x="1827" y="420" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="257" edge="1" parent="1" source="226" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#1e293b;strokeWidth=1;endArrow=diamond;endFill=1;exitX=1;exitY=0.32;exitDx=0;exitDy=0;entryX=0;entryY=0.32;entryDx=0;entryDy=0;jumpStyle=arc;jumpSize=8;" target="228" value="">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="2020" y="315" />
<mxPoint x="2186" y="420" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="258" edge="1" parent="1" source="228" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#ea580c;strokeWidth=1;dashed=1;dashPattern=6 4;endArrow=block;endFill=1;jumpStyle=arc;jumpSize=8;" target="221" value="">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="2186" y="130" />
<mxPoint x="648" y="130" />
<mxPoint x="648" y="510" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="259" edge="1" parent="1" source="221" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#ea580c;strokeWidth=1;dashed=1;dashPattern=6 4;endArrow=block;endFill=1;jumpStyle=arc;jumpSize=8;" target="224" value="">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="700" y="520" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="260" edge="1" parent="1" source="224" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#ea580c;strokeWidth=1;dashed=1;dashPattern=6 4;endArrow=block;endFill=1;jumpStyle=arc;jumpSize=8;" target="235" value="">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1280" y="640" />
<mxPoint x="2860" y="640" />
<mxPoint x="2860" y="315" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="261" edge="1" parent="1" source="226" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#c2410c;strokeWidth=1;endArrow=block;endFill=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;jumpStyle=arc;jumpSize=8;" target="229" value="">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="262" edge="1" parent="1" source="229" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#1e293b;strokeWidth=1;endArrow=diamond;endFill=1;jumpStyle=arc;jumpSize=8;" target="230" value="">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="263" edge="1" parent="1" source="230" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#ea580c;strokeWidth=1;dashed=1;dashPattern=6 4;endArrow=block;endFill=1;jumpStyle=arc;jumpSize=8;" target="236" value="">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="2860" y="535" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="264" edge="1" parent="1" source="226" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#1e293b;strokeWidth=1;dashed=1;dashPattern=6 4;endArrow=block;endFill=1;exitDx=0;exitDy=0;entryDx=0;entryDy=0;jumpStyle=arc;jumpSize=8;" target="231" value="">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1320" y="315" />
<mxPoint x="1320" y="850" />
<mxPoint x="1510" y="850" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="265" edge="1" parent="1" source="226" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#1e293b;strokeWidth=1;dashed=1;dashPattern=6 4;endArrow=block;endFill=1;exitDx=0;exitDy=0;entryDx=0;entryDy=0;jumpStyle=arc;jumpSize=8;" target="232" value="">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1290" y="335" />
<mxPoint x="1290" y="870" />
<mxPoint x="1790" y="870" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="266" edge="1" parent="1" source="226" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#1e293b;strokeWidth=1;dashed=1;dashPattern=6 4;endArrow=block;endFill=1;exitDx=0;exitDy=0;entryDx=0;entryDy=0;jumpStyle=arc;jumpSize=8;" target="233" value="">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="2350" y="315" />
<mxPoint x="2350" y="850" />
<mxPoint x="2070" y="850" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="267" edge="1" parent="1" source="226" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#1e293b;strokeWidth=1;dashed=1;dashPattern=6 4;endArrow=block;endFill=1;exitDx=0;exitDy=0;entryDx=0;entryDy=0;jumpStyle=arc;jumpSize=8;" target="234" value="">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="2380" y="335" />
<mxPoint x="2380" y="870" />
<mxPoint x="2350" y="870" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="268" edge="1" parent="1" source="219" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#dc2626;strokeWidth=1;dashed=1;dashPattern=2 2;endArrow=open;endFill=0;jumpStyle=arc;jumpSize=8;" target="231" value="">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="64" y="310" />
<mxPoint x="64" y="950" />
<mxPoint x="1400" y="950" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="269" edge="1" parent="1" source="223" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#1e293b;strokeWidth=1;dashed=1;dashPattern=6 4;endArrow=block;endFill=1;jumpStyle=arc;jumpSize=8;" target="237" value="">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1134" y="112" />
<mxPoint x="2880" y="112" />
<mxPoint x="2880" y="910" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="270" edge="1" parent="1" source="226" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#1e293b;strokeWidth=1;dashed=1;dashPattern=6 4;endArrow=block;endFill=1;jumpStyle=arc;jumpSize=8;" target="238" value="">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1858" y="120" />
<mxPoint x="2860" y="120" />
<mxPoint x="2860" y="976" />
<mxPoint x="3334" y="976" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="271" edge="1" parent="1" source="226" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#1e293b;strokeWidth=1;dashed=1;dashPattern=6 4;endArrow=block;endFill=1;jumpStyle=arc;jumpSize=8;" target="239" value="">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1888" y="100" />
<mxPoint x="2890" y="100" />
<mxPoint x="2890" y="1050" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="272" edge="1" parent="1" source="226" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#94a3b8;strokeWidth=1;dashed=1;dashPattern=2 2;endArrow=open;endFill=0;exitDx=0;exitDy=0;entryDx=0;entryDy=0;jumpStyle=arc;jumpSize=8;" target="240" value="">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1920" y="140" />
<mxPoint x="2860" y="140" />
<mxPoint x="2860" y="1330" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="273" edge="1" parent="1" source="225" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#94a3b8;strokeWidth=1;dashed=1;dashPattern=2 2;endArrow=open;endFill=0;exitDx=0;exitDy=0;entryDx=0;entryDy=0;jumpStyle=arc;jumpSize=8;" target="241" value="">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1320" y="515" />
<mxPoint x="1320" y="1150" />
<mxPoint x="2860" y="1150" />
<mxPoint x="2860" y="1460" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="wfu_O4T6b8RaecZiG8eC-274" parent="1" style="rounded=1;whiteSpace=wrap;html=1;" value="" vertex="1">
<mxGeometry height="154" width="909" x="79" y="1635" as="geometry" />
</mxCell>
<mxCell id="274" edge="1" parent="1" source="225" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#94a3b8;strokeWidth=1;dashed=1;dashPattern=2 2;endArrow=open;endFill=0;exitDx=0;exitDy=0;entryDx=0;entryDy=0;jumpStyle=arc;jumpSize=8;" target="242" value="">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1300" y="535" />
<mxPoint x="1300" y="1180" />
<mxPoint x="2860" y="1180" />
<mxPoint x="2860" y="1590" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="HXPNQZuE4xZoUuxGb5Rw-274" parent="1" style="text;html=1;strokeColor=none;fillColor=#D5E8D4;align=left;verticalAlign=middle;fontSize=19;fontColor=#374151;spacingTop=8;spacingLeft=10;labelBorderColor=none;" value="Version: v0.9&lt;br&gt;Date: 2026-06-16&lt;div&gt;Page:&amp;nbsp;System Architecture&lt;/div&gt;&lt;div&gt;AuthorZhao, Guangfei&lt;/div&gt;" vertex="1">
<mxGeometry height="104" width="452" x="3000" y="-154" as="geometry" />
</mxCell>
<mxCell id="243" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=18;fontStyle=1;fontColor=#0f172a;" value="Legend" vertex="1">
<mxGeometry height="28" width="140" x="96" y="1670" as="geometry" />
</mxCell>
<mxCell id="244" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=16;fontColor=#1f2937;" value="Primary App -&gt; App Backend route" vertex="1">
<mxGeometry height="26" width="420" x="200" y="1704" as="geometry" />
</mxCell>
<mxCell id="245" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=16;fontColor=#1f2937;" value="Embedded WebView or F6 exception path" vertex="1">
<mxGeometry height="26" width="420" x="200" y="1734" as="geometry" />
</mxCell>
<mxCell id="246" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=16;fontColor=#1f2937;" value="Aggregation or external calls" vertex="1">
<mxGeometry height="26" width="360" x="760" y="1704" as="geometry" />
</mxCell>
<mxCell id="247" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=16;fontColor=#1f2937;" value="Legacy compatibility only" vertex="1">
<mxGeometry height="26" width="360" x="760" y="1734" as="geometry" />
</mxCell>
<mxCell id="248a" parent="1" style="shape=line;html=1;strokeColor=#2563eb;strokeWidth=1.5;" value="" vertex="1">
<mxGeometry height="10" width="80" x="96" y="1712" as="geometry" />
</mxCell>
<mxCell id="248b" parent="1" style="shape=line;html=1;strokeColor=#ea580c;strokeWidth=1.5;dashed=1;dashPattern=6 4;" value="" vertex="1">
<mxGeometry height="10" width="80" x="96" y="1742" as="geometry" />
</mxCell>
<mxCell id="248c" parent="1" style="shape=line;html=1;strokeColor=#64748b;strokeWidth=1.5;dashed=1;dashPattern=6 4;" value="" vertex="1">
<mxGeometry height="10" width="80" x="650" y="1712" as="geometry" />
</mxCell>
<mxCell id="248d" parent="1" style="shape=line;html=1;strokeColor=#dc2626;strokeWidth=1.5;dashed=1;dashPattern=2 2;" value="" vertex="1">
<mxGeometry height="10" width="80" x="650" y="1742" as="geometry" />
</mxCell>
<mxCell id="Ve0e3pzQLt7zSAY_3PPg-274" parent="1" style="rounded=0;whiteSpace=wrap;html=1;" value="" vertex="1">
<mxGeometry height="132" width="1098" x="16" y="-195" as="geometry" />
</mxCell>
<mxCell id="200" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=36;fontStyle=1;fontColor=#0f172a;" value="Continental Retail APP System Architecture" vertex="1">
<mxGeometry height="48" width="1100" x="47" y="-157" as="geometry" />
</mxCell>
<mxCell id="201" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=18;fontColor=#475569;" value="Reference review page: layered architecture, route semantics, and domain boundaries for implementation and integration." vertex="1">
<mxGeometry height="28" width="1800" x="47" y="-105" as="geometry" />
</mxCell>
<mxCell id="pZ8nqr70MQB4xoW7GgT7-276" parent="1" style="whiteSpace=wrap;html=1;fontSize=18;fillColor=#fed7aa;strokeColor=#ea580c;fontColor=#1e293b;rounded=1;arcSize=20;strokeWidth=1.5;" value="Payment" vertex="1">
<mxGeometry height="60" width="120" x="199" y="628" as="geometry" />
</mxCell>
<mxCell id="pZ8nqr70MQB4xoW7GgT7-278" parent="1" style="whiteSpace=wrap;html=1;" value="Infra-structure" vertex="1">
<mxGeometry height="60" width="120" x="426" y="628" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
<diagram id="key-flows" name="Key Flows and Context Governance">
<mxGraphModel dx="2410" dy="1524" grid="0" gridSize="8" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="0" pageScale="1" pageWidth="2384" pageHeight="1504" background="#FFFFFF" math="1" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="LvJsPDa2WWtOUzAqmiQj-357" parent="1" style="rounded=0;whiteSpace=wrap;html=1;" value="" vertex="1">
<mxGeometry height="1512" width="2508" x="-26" y="-20" as="geometry" />
</mxCell>
<mxCell id="302" parent="1" style="rounded=1;arcSize=12;html=1;whiteSpace=wrap;fillColor=#eff6ff;strokeColor=#93c5fd;strokeWidth=1.4;" value="" vertex="1">
<mxGeometry height="296" width="1088" x="80" y="144" as="geometry" />
</mxCell>
<mxCell id="303" parent="1" style="rounded=1;arcSize=12;html=1;whiteSpace=wrap;fillColor=#fff7ed;strokeColor=#fdba74;strokeWidth=1.4;" value="" vertex="1">
<mxGeometry height="296" width="1088" x="1216" y="144" as="geometry" />
</mxCell>
<mxCell id="304" parent="1" style="rounded=1;arcSize=12;html=1;whiteSpace=wrap;fillColor=#f8fafc;strokeColor=#cbd5e1;strokeWidth=1.4;" value="" vertex="1">
<mxGeometry height="344" width="1088" x="80" y="488" as="geometry" />
</mxCell>
<mxCell id="305" parent="1" style="rounded=1;arcSize=12;html=1;whiteSpace=wrap;fillColor=#fff7ed;strokeColor=#fdba74;strokeWidth=1.4;" value="" vertex="1">
<mxGeometry height="344" width="1088" x="1216" y="488" as="geometry" />
</mxCell>
<mxCell id="306" parent="1" style="rounded=1;arcSize=12;html=1;whiteSpace=wrap;fillColor=#f8fafc;strokeColor=#cbd5e1;strokeWidth=1.2;" value="" vertex="1">
<mxGeometry height="504" width="2224" x="96" y="880" as="geometry" />
</mxCell>
<mxCell id="307" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=24;fontStyle=1;fontColor=#1d4ed8;" value="Flow 1&#xa;Login and Store Context Bootstrap" vertex="1">
<mxGeometry height="52" width="360" x="112" y="168" as="geometry" />
</mxCell>
<mxCell id="308" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=24;fontStyle=1;fontColor=#c2410c;" value="Flow 2&#xa;F6 WebView Launch and Session Rules" vertex="1">
<mxGeometry height="52" width="360" x="1248" y="168" as="geometry" />
</mxCell>
<mxCell id="309" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=24;fontStyle=1;fontColor=#334155;" value="Flow 3&#xa;Home Aggregation and Mini Compatibility" vertex="1">
<mxGeometry height="52" width="420" x="112" y="512" as="geometry" />
</mxCell>
<mxCell id="310" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=24;fontStyle=1;fontColor=#c2410c;" value="Flow 4&#xa;Hybrid Procurement and Inbound Flow" vertex="1">
<mxGeometry height="52" width="420" x="1248" y="512" as="geometry" />
</mxCell>
<mxCell id="311" parent="1" style="rounded=1;arcSize=20;html=1;whiteSpace=wrap;fillColor=#bfdbfe;strokeColor=#1d4ed8;strokeWidth=1.5;fontSize=20;fontColor=#1e293b;" value="App Login" vertex="1">
<mxGeometry height="72" width="168" x="136" y="252" as="geometry" />
</mxCell>
<mxCell id="312" parent="1" style="rounded=1;arcSize=20;html=1;whiteSpace=wrap;fillColor=#dbeafe;strokeColor=#2563eb;strokeWidth=1.5;fontSize=20;fontColor=#1e293b;" value="Token Issue" vertex="1">
<mxGeometry height="72" width="168" x="344" y="252" as="geometry" />
</mxCell>
<mxCell id="313" parent="1" style="rounded=1;arcSize=20;html=1;whiteSpace=wrap;fillColor=#dbeafe;strokeColor=#2563eb;strokeWidth=1.5;fontSize=20;fontColor=#1e293b;" value="Store List + Default Store" vertex="1">
<mxGeometry height="72" width="208" x="552" y="252" as="geometry" />
</mxCell>
<mxCell id="314" parent="1" style="rounded=1;arcSize=20;html=1;whiteSpace=wrap;fillColor=#dbeafe;strokeColor=#2563eb;strokeWidth=1.5;fontSize=20;fontColor=#1e293b;" value="Menu / Permission / Config Baseline" vertex="1">
<mxGeometry height="72" width="224" x="800" y="252" as="geometry" />
</mxCell>
<mxCell id="315" parent="1" style="rounded=1;arcSize=20;html=1;whiteSpace=wrap;fillColor=#bfdbfe;strokeColor=#1d4ed8;strokeWidth=1.5;fontSize=20;fontColor=#1e293b;" value="Context Established" vertex="1">
<mxGeometry height="64" width="888" x="136" y="360" as="geometry" />
</mxCell>
<mxCell id="316" parent="1" style="rounded=1;arcSize=20;html=1;whiteSpace=wrap;fillColor=#bfdbfe;strokeColor=#1d4ed8;strokeWidth=1.5;fontSize=20;fontColor=#1e293b;" value="App asks for WebView entry" vertex="1">
<mxGeometry height="72" width="176" x="1248" y="252" as="geometry" />
</mxCell>
<mxCell id="317" parent="1" style="rounded=1;arcSize=20;html=1;whiteSpace=wrap;fillColor=#fed7aa;strokeColor=#ea580c;strokeWidth=1.5;fontSize=20;fontColor=#1e293b;" value="Backend exchanges / prepares ticket" vertex="1">
<mxGeometry height="72" width="208" x="1464" y="252" as="geometry" />
</mxCell>
<mxCell id="318" parent="1" style="rounded=1;arcSize=20;html=1;whiteSpace=wrap;fillColor=#fef3c7;strokeColor=#d97706;strokeWidth=1.5;fontSize=20;fontColor=#1e293b;" value="Embedded open in WebView" vertex="1">
<mxGeometry height="72" width="192" x="1712" y="252" as="geometry" />
</mxCell>
<mxCell id="319" parent="1" style="rounded=1;arcSize=20;html=1;whiteSpace=wrap;fillColor=#ffffff;strokeColor=#ea580c;strokeWidth=1.5;fontSize=20;fontColor=#1e293b;" value="Store switch invalidates WebView" vertex="1">
<mxGeometry height="52" width="200" x="1944" y="230" as="geometry" />
</mxCell>
<mxCell id="320" parent="1" style="rounded=1;arcSize=20;html=1;whiteSpace=wrap;fillColor=#ffffff;strokeColor=#ea580c;strokeWidth=1.5;fontSize=20;fontColor=#1e293b;" value="Expired ticket needs refresh" vertex="1">
<mxGeometry height="52" width="200" x="1944" y="294" as="geometry" />
</mxCell>
<mxCell id="321" parent="1" style="rounded=1;arcSize=20;html=1;whiteSpace=wrap;fillColor=#ffffff;strokeColor=#94a3b8;strokeWidth=1.5;fontSize=20;fontColor=#1e293b;" value="Failure fallback shows safe message + trace ID" vertex="1">
<mxGeometry height="52" width="280" x="1944" y="358" as="geometry" />
</mxCell>
<mxCell id="322" parent="1" style="rounded=1;arcSize=20;html=1;whiteSpace=wrap;fillColor=#bfdbfe;strokeColor=#1d4ed8;strokeWidth=1.5;fontSize=20;fontColor=#1e293b;fontStyle=1" value="Workbench request" vertex="1">
<mxGeometry height="72" width="176" x="136" y="612" as="geometry" />
</mxCell>
<mxCell id="323" parent="1" style="rounded=1;arcSize=20;html=1;whiteSpace=wrap;fillColor=#dbeafe;strokeColor=#2563eb;strokeWidth=1.5;fontSize=20;fontColor=#1e293b;fontStyle=1" value="Backend aggregates O2O / Warranty / ROOS / Config" vertex="1">
<mxGeometry height="72" width="336" x="352" y="612" as="geometry" />
</mxCell>
<mxCell id="324" parent="1" style="rounded=1;arcSize=20;html=1;whiteSpace=wrap;fillColor=#ffffff;strokeColor=#64748b;strokeWidth=1.5;fontSize=20;fontColor=#1e293b;fontStyle=1" value="Partial failure returns degradable tiles" vertex="1">
<mxGeometry height="72" width="272" x="728" y="612" as="geometry" />
</mxCell>
<mxCell id="325" parent="1" style="rounded=1;arcSize=20;html=1;whiteSpace=wrap;fillColor=#ffffff;strokeColor=#dc2626;strokeWidth=1.5;fontSize=20;fontColor=#1e293b;fontStyle=1" value="Legacy Mini direct access is compatibility only" vertex="1">
<mxGeometry height="72" width="864" x="128" y="728" as="geometry" />
</mxCell>
<mxCell id="326" parent="1" style="rounded=1;arcSize=20;html=1;whiteSpace=wrap;fillColor=#dbeafe;strokeColor=#2563eb;strokeWidth=1.5;fontSize=20;fontColor=#1e293b;" value="context + permission + normalization" vertex="1">
<mxGeometry height="72" width="272" x="1248" y="612" as="geometry" />
</mxCell>
<mxCell id="327" parent="1" style="rounded=1;arcSize=20;html=1;whiteSpace=wrap;fillColor=#fef3c7;strokeColor=#d97706;strokeWidth=1.5;fontSize=20;fontColor=#1e293b;" value="F6 owns procurement / promotion / ERP" vertex="1">
<mxGeometry height="72" width="256" x="1560" y="612" as="geometry" />
</mxCell>
<mxCell id="328" parent="1" style="rounded=1;arcSize=20;html=1;whiteSpace=wrap;fillColor=#fed7aa;strokeColor=#ea580c;strokeWidth=1.5;fontSize=20;fontColor=#1e293b;" value="Inbound execution uses WebView or API path" vertex="1">
<mxGeometry height="72" width="232" x="1856" y="612" as="geometry" />
</mxCell>
<mxCell id="329" parent="1" style="rounded=1;arcSize=20;html=1;whiteSpace=wrap;fillColor=#ffffff;strokeColor=#64748b;strokeWidth=1.5;fontSize=20;fontColor=#1e293b;fontStyle=1" value="Historical data may still come from Mini aggregation" vertex="1">
<mxGeometry height="72" width="840" x="1248" y="728" as="geometry" />
</mxCell>
<mxCell id="330" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=24;fontStyle=1;fontColor=#0f172a;" value="Shared Governance Rules" vertex="1">
<mxGeometry height="28" width="320" x="112" y="912" as="geometry" />
</mxCell>
<mxCell id="331" parent="1" style="rounded=1;arcSize=20;html=1;whiteSpace=wrap;fillColor=#ffffff;strokeColor=#2563eb;strokeWidth=1.5;fontSize=20;fontColor=#1e293b;spacing=14;fontStyle=1" value="Store context is owned by App Backend and every app request carries the current store scope." vertex="1">
<mxGeometry height="112" width="512" x="112" y="968" as="geometry" />
</mxCell>
<mxCell id="332" parent="1" style="rounded=1;arcSize=20;html=1;whiteSpace=wrap;fillColor=#ffffff;strokeColor=#ea580c;strokeWidth=1.5;fontSize=20;fontColor=#1e293b;spacing=14;fontStyle=1" value="F6 WebView is an embedded exception, not a replacement for the primary App -&amp;gt; App Backend route." vertex="1">
<mxGeometry height="112" width="512" x="664" y="968" as="geometry" />
</mxCell>
<mxCell id="333" parent="1" style="rounded=1;arcSize=20;html=1;whiteSpace=wrap;fillColor=#ffffff;strokeColor=#22c55e;strokeWidth=1.5;fontSize=20;fontColor=#1e293b;spacing=14;fontStyle=1" value="Mini systems remain independent and can be source-of-truth, but the app should consume them through aggregation whenever possible." vertex="1">
<mxGeometry height="112" width="552" x="1216" y="968" as="geometry" />
</mxCell>
<mxCell id="334" parent="1" style="rounded=1;arcSize=20;html=1;whiteSpace=wrap;fillColor=#ffffff;strokeColor=#94a3b8;strokeWidth=1.5;fontSize=20;fontColor=#1e293b;spacing=14;fontStyle=1" value="Every degraded or supplier-facing failure returns a user-safe message and a trace ID for support and audit." vertex="1">
<mxGeometry height="112" width="512" x="1800" y="968" as="geometry" />
</mxCell>
<mxCell id="335" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=26;fontStyle=1;fontColor=#0f172a;" value="Route Semantics" vertex="1">
<mxGeometry height="32" width="260" x="112" y="1124" as="geometry" />
</mxCell>
<mxCell id="336a" parent="1" style="shape=line;html=1;strokeColor=#2563eb;strokeWidth=1.5;" value="" vertex="1">
<mxGeometry height="10" width="84" x="136" y="1180" as="geometry" />
</mxCell>
<mxCell id="336" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=18;fontColor=#1f2937;" value="Primary App route" vertex="1">
<mxGeometry height="28" width="220" x="236" y="1170" as="geometry" />
</mxCell>
<mxCell id="337a" parent="1" style="shape=line;html=1;strokeColor=#ea580c;strokeWidth=1.5;dashed=1;dashPattern=6 4;" value="" vertex="1">
<mxGeometry height="10" width="84" x="496" y="1180" as="geometry" />
</mxCell>
<mxCell id="337" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=18;fontColor=#1f2937;" value="F6 embedded / exception" vertex="1">
<mxGeometry height="28" width="300" x="596" y="1170" as="geometry" />
</mxCell>
<mxCell id="338a" parent="1" style="shape=line;html=1;strokeColor=#64748b;strokeWidth=1.5;dashed=1;dashPattern=6 4;" value="" vertex="1">
<mxGeometry height="10" width="84" x="936" y="1180" as="geometry" />
</mxCell>
<mxCell id="338" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=18;fontColor=#1f2937;" value="Aggregation / external" vertex="1">
<mxGeometry height="28" width="280" x="1036" y="1170" as="geometry" />
</mxCell>
<mxCell id="339a" parent="1" style="shape=line;html=1;strokeColor=#dc2626;strokeWidth=1.5;dashed=1;dashPattern=2 2;" value="" vertex="1">
<mxGeometry height="10" width="84" x="1376" y="1180" as="geometry" />
</mxCell>
<mxCell id="339" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=18;fontColor=#1f2937;" value="Legacy compatibility" vertex="1">
<mxGeometry height="28" width="260" x="1476" y="1170" as="geometry" />
</mxCell>
<mxCell id="340" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=26;fontStyle=1;fontColor=#0f172a;" value="Review checks" vertex="1">
<mxGeometry height="32" width="240" x="112" y="1244" as="geometry" />
</mxCell>
<mxCell id="341" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=20;fontColor=#334155;" value="1. Store switch closes active supplier WebView session." vertex="1">
<mxGeometry height="30" width="720" x="136" y="1296" as="geometry" />
</mxCell>
<mxCell id="342" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=20;fontColor=#334155;" value="2. Home page degrades by tile, not by blank screen." vertex="1">
<mxGeometry height="30" width="720" x="136" y="1338" as="geometry" />
</mxCell>
<mxCell id="343" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=20;fontColor=#334155;" value="3. Procurement and inbound remain hybrid with F6-first supplier ownership." vertex="1">
<mxGeometry height="30" width="960" x="936" y="1296" as="geometry" />
</mxCell>
<mxCell id="344" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=20;fontColor=#334155;" value="4. Mini direct links are transitional and not the default route." vertex="1">
<mxGeometry height="30" width="960" x="936" y="1338" as="geometry" />
</mxCell>
<mxCell id="345" edge="1" parent="1" source="311" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#2563eb;strokeWidth=1;endArrow=block;endFill=1;jumpStyle=arc;jumpSize=8;fontSize=20;" target="312" value="">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="346" edge="1" parent="1" source="312" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#2563eb;strokeWidth=1;endArrow=block;endFill=1;jumpStyle=arc;jumpSize=8;fontSize=20;" target="313" value="">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="347" edge="1" parent="1" source="313" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#2563eb;strokeWidth=1;endArrow=block;endFill=1;jumpStyle=arc;jumpSize=8;fontSize=20;" target="314" value="">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="348" edge="1" parent="1" source="314" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#2563eb;strokeWidth=1;endArrow=block;endFill=1;jumpStyle=arc;jumpSize=8;fontSize=20;" target="315" value="">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="912" y="336" />
<mxPoint x="568" y="336" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="349" edge="1" parent="1" source="316" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#2563eb;strokeWidth=1;endArrow=block;endFill=1;jumpStyle=arc;jumpSize=8;fontSize=20;" target="317" value="">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="350" edge="1" parent="1" source="317" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#ea580c;strokeWidth=1;dashed=1;dashPattern=6 4;endArrow=block;endFill=1;jumpStyle=arc;jumpSize=8;fontSize=20;" target="318" value="">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="351" edge="1" parent="1" source="318" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#64748b;strokeWidth=1;dashed=1;dashPattern=6 4;endArrow=block;endFill=1;jumpStyle=arc;jumpSize=8;fontSize=20;" target="321" value="">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="352" edge="1" parent="1" source="322" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#1d4ed8;strokeWidth=1;endArrow=block;endFill=1;jumpStyle=arc;jumpSize=8;fontSize=20;fontStyle=1" target="323" value="">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="353" edge="1" parent="1" source="323" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#64748b;strokeWidth=1;dashed=1;dashPattern=6 4;endArrow=block;endFill=1;jumpStyle=arc;jumpSize=8;fontSize=20;fontStyle=1" target="324" value="">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="354" edge="1" parent="1" source="323" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#dc2626;strokeWidth=1;dashed=1;dashPattern=2 2;endArrow=open;endFill=0;jumpStyle=arc;jumpSize=8;fontSize=20;fontStyle=1" target="325" value="">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="520" y="696" />
<mxPoint x="568" y="696" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="355" edge="1" parent="1" source="326" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#1d4ed8;strokeWidth=1;endArrow=block;endFill=1;jumpStyle=arc;jumpSize=8;fontSize=20;" target="327" value="">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="356" edge="1" parent="1" source="327" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#ea580c;strokeWidth=1;dashed=1;dashPattern=6 4;endArrow=block;endFill=1;jumpStyle=arc;jumpSize=8;fontSize=20;" target="328" value="">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="357" edge="1" parent="1" source="326" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#64748b;strokeWidth=1;dashed=1;dashPattern=6 4;endArrow=block;endFill=1;jumpStyle=arc;jumpSize=8;fontSize=20;" target="329" value="">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="QYFYjBAQtFBsRfwwgIwy-357" parent="1" style="text;html=1;strokeColor=none;fillColor=#D5E8D4;align=left;verticalAlign=middle;fontSize=19;fontColor=#374151;spacingTop=8;spacingLeft=10;labelBorderColor=none;" value="Version: v0.9&lt;br&gt;Date: 2026-06-16&lt;div&gt;Page:&amp;nbsp;Key Flows and Context Governance&lt;/div&gt;&lt;div&gt;AuthorZhao, Guangfei&lt;/div&gt;" vertex="1">
<mxGeometry height="104" width="452" x="1992" y="16" as="geometry" />
</mxCell>
<mxCell id="Li3sf_c2Rl8G3HEoLjZh-357" parent="1" style="rounded=0;whiteSpace=wrap;html=1;" value="" vertex="1">
<mxGeometry height="132" width="1098" x="-26" y="-19" as="geometry" />
</mxCell>
<mxCell id="300" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=32;fontStyle=1;fontColor=#0f172a;" value="Key Flows and Context Governance" vertex="1">
<mxGeometry height="40" width="720" x="6" y="-6" as="geometry" />
</mxCell>
<mxCell id="301" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=16;fontColor=#475569;" value="Runtime behaviors map directly to the architecture page: primary backend route, F6 embedded exception, and legacy Mini compatibility." vertex="1">
<mxGeometry height="24" width="1180" x="6" y="38" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
<diagram id="YvHryloennJe7v62yolU" name="Network Architecture">
<mxGraphModel dx="1768" dy="1051" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="0" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="f3ws72g2ZYmKRIlbP6fx-68" parent="1" style="rounded=0;whiteSpace=wrap;html=1;" value="" vertex="1">
<mxGeometry height="1205" width="2038" x="80" y="66" as="geometry" />
</mxCell>
<mxCell id="f3ws72g2ZYmKRIlbP6fx-5" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dbeafe;strokeColor=#2563eb;strokeWidth=2;fontSize=18;fontStyle=1;fontColor=#1e3a8a;" value="Mobile App" vertex="1">
<mxGeometry height="70" width="250" x="914" y="241" as="geometry" />
</mxCell>
<mxCell id="f3ws72g2ZYmKRIlbP6fx-6" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#eff6ff;strokeColor=#93c5fd;fontSize=13;fontColor=#1f2937;" value="Native Shell + WebView&lt;br&gt;Scan / Camera / Upload / JSBridge" vertex="1">
<mxGeometry height="62" width="300" x="1204" y="245" as="geometry" />
</mxCell>
<mxCell id="f3ws72g2ZYmKRIlbP6fx-7" parent="1" style="shape=cloud;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#94a3b8;strokeWidth=1.8;fontSize=16;fontStyle=1;fontColor=#1f2937;" value="Internet" vertex="1">
<mxGeometry height="80" width="150" x="964" y="341" as="geometry" />
</mxCell>
<mxCell id="f3ws72g2ZYmKRIlbP6fx-8" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#eef6ff;strokeColor=#2563eb;strokeWidth=2;" value="" vertex="1">
<mxGeometry height="530" width="580" x="754" y="461" as="geometry" />
</mxCell>
<mxCell id="f3ws72g2ZYmKRIlbP6fx-9" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;fontSize=22;fontStyle=1;fontColor=#1e3a8a;" value="Primary App Backend Domain (Azure China)" vertex="1">
<mxGeometry height="30" width="460" x="814" y="481" as="geometry" />
</mxCell>
<mxCell id="f3ws72g2ZYmKRIlbP6fx-10" parent="1" 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;" value="Public Ingress Zone" vertex="1">
<mxGeometry height="130" width="520" x="784" y="531" as="geometry" />
</mxCell>
<mxCell id="f3ws72g2ZYmKRIlbP6fx-11" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#fb923c;strokeWidth=1.5;fontSize=20;fontStyle=0;fontColor=#1f2937;" value="WAF / Application Gateway" vertex="1">
<mxGeometry height="58" width="190" x="824" y="581" as="geometry" />
</mxCell>
<mxCell id="f3ws72g2ZYmKRIlbP6fx-12" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#fb923c;strokeWidth=1.5;fontSize=20;fontStyle=0;fontColor=#1f2937;" value="Public Load Balancer" vertex="1">
<mxGeometry height="58" width="180" x="1074" y="581" as="geometry" />
</mxCell>
<mxCell id="f3ws72g2ZYmKRIlbP6fx-13" parent="1" 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;" value="Private Application Zone" vertex="1">
<mxGeometry height="270" width="520" x="784" y="691" as="geometry" />
</mxCell>
<mxCell id="f3ws72g2ZYmKRIlbP6fx-14" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f5f3ff;strokeColor=#a78bfa;strokeWidth=1.4;fontSize=14;fontStyle=1;fontColor=#1f2937;" value="NSG / Access Control" vertex="1">
<mxGeometry height="42" width="420" x="834" y="731" as="geometry" />
</mxCell>
<mxCell id="f3ws72g2ZYmKRIlbP6fx-15" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#60a5fa;strokeWidth=1.5;fontSize=20;fontStyle=0;fontColor=#1f2937;" value="App Backend BFF / Unified APIs" vertex="1">
<mxGeometry height="80" width="180" x="824" y="821" as="geometry" />
</mxCell>
<mxCell id="f3ws72g2ZYmKRIlbP6fx-16" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#60a5fa;strokeWidth=1.5;fontSize=20;fontStyle=0;fontColor=#1f2937;" value="Business Aggregation / Orchestration" vertex="1">
<mxGeometry height="80" width="200" x="1044" y="821" as="geometry" />
</mxCell>
<mxCell id="f3ws72g2ZYmKRIlbP6fx-17" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#60a5fa;strokeWidth=1.5;fontSize=20;fontStyle=0;fontColor=#1f2937;" value="F6 Integration Adapter" vertex="1">
<mxGeometry height="38" width="200" x="934" y="911" as="geometry" />
</mxCell>
<mxCell id="f3ws72g2ZYmKRIlbP6fx-18" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f8fafc;strokeColor=#cbd5e1;strokeWidth=1;fontSize=12;fontColor=#374151;" value="Identity / Store Context&lt;br&gt;Menu / Config / WebView Ticket" vertex="1">
<mxGeometry height="40" width="180" x="824" y="781" as="geometry" />
</mxCell>
<mxCell id="f3ws72g2ZYmKRIlbP6fx-19" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f8fafc;strokeColor=#cbd5e1;strokeWidth=1;fontSize=12;fontColor=#374151;" value="Unified Error / Audit&#xa;Logging / Security / Trace ID" vertex="1">
<mxGeometry height="40" width="200" x="1044" y="781" as="geometry" />
</mxCell>
<mxCell id="f3ws72g2ZYmKRIlbP6fx-20" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f0fdf4;strokeColor=#16a34a;strokeWidth=2;" value="" vertex="1">
<mxGeometry height="530" width="460" x="204" y="461" as="geometry" />
</mxCell>
<mxCell id="f3ws72g2ZYmKRIlbP6fx-21" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;fontSize=22;fontStyle=1;fontColor=#166534;" value="Mini Program Backend Azure VPC" vertex="1">
<mxGeometry height="30" width="380" x="244" y="481" as="geometry" />
</mxCell>
<mxCell id="f3ws72g2ZYmKRIlbP6fx-22" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dcfce7;strokeColor=#86efac;strokeWidth=1;fontSize=12;fontColor=#166534;" value="Independent VPC / network boundary" vertex="1">
<mxGeometry height="28" width="250" x="309" y="511" as="geometry" />
</mxCell>
<mxCell id="f3ws72g2ZYmKRIlbP6fx-23" parent="1" 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;" value="Public Ingress Zone" vertex="1">
<mxGeometry height="120" width="400" x="234" y="531" as="geometry" />
</mxCell>
<mxCell id="f3ws72g2ZYmKRIlbP6fx-24" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#4ade80;strokeWidth=1.5;fontSize=20;fontStyle=0;fontColor=#1f2937;" value="Mini Gateway / Firewall" vertex="1">
<mxGeometry height="56" width="180" x="344" y="579" as="geometry" />
</mxCell>
<mxCell id="f3ws72g2ZYmKRIlbP6fx-25" parent="1" 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;" value="Independent Mini Services" vertex="1">
<mxGeometry height="188" width="400" x="234" y="706" as="geometry" />
</mxCell>
<mxCell id="f3ws72g2ZYmKRIlbP6fx-26" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#4ade80;strokeWidth=1.4;fontSize=20;fontStyle=0;fontColor=#1f2937;" value="O2O / Warranty / 马上下单 / ROOS&lt;br&gt;Shared Capabilities" vertex="1">
<mxGeometry height="80" width="270" x="299" y="776" as="geometry" />
</mxCell>
<mxCell id="f3ws72g2ZYmKRIlbP6fx-27" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f0fdf4;strokeColor=#86efac;fontSize=13;fontColor=#166534;" value="Independent domain retained. App-facing flows should converge through App Backend. Only selected legacy modules may still direct-connect." vertex="1">
<mxGeometry height="42" width="370" x="249" y="913" as="geometry" />
</mxCell>
<mxCell id="f3ws72g2ZYmKRIlbP6fx-28" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff7ed;strokeColor=#ea580c;strokeWidth=2;" value="" vertex="1">
<mxGeometry height="530" width="450" x="1424" y="461" as="geometry" />
</mxCell>
<mxCell id="f3ws72g2ZYmKRIlbP6fx-29" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;fontSize=21;fontStyle=1;fontColor=#c2410c;" value="F6 Supplier VNet (Alibaba Cloud Shanghai)" vertex="1">
<mxGeometry height="30" width="390" x="1454" y="481" as="geometry" />
</mxCell>
<mxCell id="f3ws72g2ZYmKRIlbP6fx-30" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffedd5;strokeColor=#fdba74;strokeWidth=1;fontSize=12;fontColor=#9a3412;" value="Supplier-managed VPC / network boundary" vertex="1">
<mxGeometry height="28" width="285" x="1506" y="511" as="geometry" />
</mxCell>
<mxCell id="f3ws72g2ZYmKRIlbP6fx-31" parent="1" 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;" value="Public Access Zone" vertex="1">
<mxGeometry height="130" width="390" x="1454" y="531" as="geometry" />
</mxCell>
<mxCell id="f3ws72g2ZYmKRIlbP6fx-32" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#fb923c;strokeWidth=1.5;fontSize=20;fontStyle=0;fontColor=#1f2937;" value="Access Gateway / WAF" vertex="1">
<mxGeometry height="58" width="160" x="1484" y="581" as="geometry" />
</mxCell>
<mxCell id="f3ws72g2ZYmKRIlbP6fx-33" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#fb923c;strokeWidth=1.5;fontSize=20;fontStyle=0;fontColor=#1f2937;" value="Load Balancer" vertex="1">
<mxGeometry height="58" width="140" x="1674" y="581" as="geometry" />
</mxCell>
<mxCell id="f3ws72g2ZYmKRIlbP6fx-34" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#fb923c;strokeWidth=1.5;fontSize=13;fontStyle=1;fontColor=#1f2937;" value="Allowlisted B2B API Gateway" vertex="1">
<mxGeometry height="34" width="210" x="1544" y="539" as="geometry" />
</mxCell>
<mxCell id="f3ws72g2ZYmKRIlbP6fx-35" parent="1" 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;" value="Private Service Zone" vertex="1">
<mxGeometry height="240" width="390" x="1454" y="686" as="geometry" />
</mxCell>
<mxCell id="f3ws72g2ZYmKRIlbP6fx-36" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f5f3ff;strokeColor=#a78bfa;strokeWidth=1.4;fontSize=20;fontStyle=0;fontColor=#1f2937;" value="Security Group / Access Policy" vertex="1">
<mxGeometry height="42" width="330" x="1484" y="724" as="geometry" />
</mxCell>
<mxCell id="f3ws72g2ZYmKRIlbP6fx-37" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#fdba74;strokeWidth=1.4;fontSize=20;fontStyle=0;fontColor=#1f2937;" value="F6 WebView Pages" vertex="1">
<mxGeometry height="78" width="150" x="1484" y="811" as="geometry" />
</mxCell>
<mxCell id="f3ws72g2ZYmKRIlbP6fx-38" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#fdba74;strokeWidth=1.4;fontSize=20;fontStyle=0;fontColor=#1f2937;" value="F6 Capability APIs&#xa;(Backend Only)" vertex="1">
<mxGeometry height="78" width="150" x="1664" y="811" as="geometry" />
</mxCell>
<mxCell id="f3ws72g2ZYmKRIlbP6fx-39" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff7ed;strokeColor=#fdba74;fontSize=13;fontColor=#92400e;" value="Procurement / Promotion / ERP capabilities are consumed through backend integration. App direct access is allowed only for embedded F6 H5 pages." vertex="1">
<mxGeometry height="48" width="330" x="1484" y="913" as="geometry" />
</mxCell>
<mxCell id="f3ws72g2ZYmKRIlbP6fx-40" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f8fafc;strokeColor=#d1d5db;strokeWidth=1.2;" value="" vertex="1">
<mxGeometry height="166" width="1670" x="204" y="1031" as="geometry" />
</mxCell>
<mxCell id="f3ws72g2ZYmKRIlbP6fx-41" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=18;fontStyle=1;fontColor=#111827;" value="Architecture Principles" vertex="1">
<mxGeometry height="24" width="220" x="230" y="1051" as="geometry" />
</mxCell>
<mxCell id="f3ws72g2ZYmKRIlbP6fx-42" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=top;fontSize=14;fontColor=#374151;spacingTop=4;" value="1. `Mobile App -&amp;gt; App Backend` is the only primary route.&lt;br&gt;2. `App -&amp;gt; F6` appears only in the Embedded H5 scenario.&lt;br&gt;3. `App Backend -&amp;gt; F6 API` must pass through `F6 Integration Adapter`.&lt;br&gt;4. `Mini Program Backend` remains an independent domain.&lt;br&gt;5. Unified controls include HTTPS/TLS, Trace ID, audit logging, config switches, and normalized error handling." vertex="1">
<mxGeometry height="84" width="980" x="230" y="1087" as="geometry" />
</mxCell>
<mxCell id="f3ws72g2ZYmKRIlbP6fx-43" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=18;fontStyle=1;fontColor=#111827;" value="Legend" vertex="1">
<mxGeometry height="24" width="80" x="1304" y="1051" as="geometry" />
</mxCell>
<mxCell id="f3ws72g2ZYmKRIlbP6fx-44" parent="1" style="shape=line;html=1;strokeColor=#2563eb;strokeWidth=2;" value="" vertex="1">
<mxGeometry height="10" width="72" x="1312" y="1095" as="geometry" />
</mxCell>
<mxCell id="f3ws72g2ZYmKRIlbP6fx-45" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=13;fontColor=#1f2937;" value="Primary route" vertex="1">
<mxGeometry height="24" width="120" x="1394" y="1086" as="geometry" />
</mxCell>
<mxCell id="f3ws72g2ZYmKRIlbP6fx-46" parent="1" style="shape=line;html=1;strokeColor=#16a34a;strokeWidth=2;" value="" vertex="1">
<mxGeometry height="10" width="72" x="1312" y="1129" as="geometry" />
</mxCell>
<mxCell id="f3ws72g2ZYmKRIlbP6fx-47" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=13;fontColor=#1f2937;" value="VPC backend integration" vertex="1">
<mxGeometry height="24" width="140" x="1394" y="1120" as="geometry" />
</mxCell>
<mxCell id="f3ws72g2ZYmKRIlbP6fx-48" parent="1" style="shape=line;html=1;strokeColor=#f97316;strokeWidth=2;" value="" vertex="1">
<mxGeometry height="10" width="72" x="1564" y="1095" as="geometry" />
</mxCell>
<mxCell id="f3ws72g2ZYmKRIlbP6fx-49" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=13;fontColor=#1f2937;" value="F6 H5 route" vertex="1">
<mxGeometry height="24" width="110" x="1646" y="1086" as="geometry" />
</mxCell>
<mxCell id="f3ws72g2ZYmKRIlbP6fx-50" parent="1" style="shape=line;html=1;strokeColor=#6b7280;strokeWidth=2;dashed=1;dashPattern=8 8;" value="" vertex="1">
<mxGeometry height="10" width="72" x="1564" y="1129" as="geometry" />
</mxCell>
<mxCell id="f3ws72g2ZYmKRIlbP6fx-51" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=13;fontColor=#1f2937;" value="Legacy compatibility" vertex="1">
<mxGeometry height="24" width="150" x="1646" y="1120" as="geometry" />
</mxCell>
<mxCell id="f3ws72g2ZYmKRIlbP6fx-52" edge="1" parent="1" source="f3ws72g2ZYmKRIlbP6fx-5" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#2563eb;strokeWidth=1.2;fontSize=12;fontColor=#1e3a8a;" target="f3ws72g2ZYmKRIlbP6fx-6" value="">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="f3ws72g2ZYmKRIlbP6fx-53" edge="1" parent="1" source="f3ws72g2ZYmKRIlbP6fx-5" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#2563eb;strokeWidth=1.4;" target="f3ws72g2ZYmKRIlbP6fx-7">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="f3ws72g2ZYmKRIlbP6fx-54" edge="1" parent="1" source="f3ws72g2ZYmKRIlbP6fx-7" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#2563eb;strokeWidth=1.5;fontSize=12;fontColor=#1e3a8a;" target="f3ws72g2ZYmKRIlbP6fx-11" value="">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1044" y="471" />
<mxPoint x="919" y="471" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="f3ws72g2ZYmKRIlbP6fx-55" edge="1" parent="1" source="f3ws72g2ZYmKRIlbP6fx-7" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#f97316;strokeWidth=1.5;fontSize=12;fontColor=#c2410c;" target="f3ws72g2ZYmKRIlbP6fx-32" value="">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1564" y="381" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="f3ws72g2ZYmKRIlbP6fx-56" edge="1" parent="1" source="f3ws72g2ZYmKRIlbP6fx-11" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#2563eb;strokeWidth=1.2;" target="f3ws72g2ZYmKRIlbP6fx-12">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="f3ws72g2ZYmKRIlbP6fx-57" edge="1" parent="1" source="f3ws72g2ZYmKRIlbP6fx-12" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#2563eb;strokeWidth=1.2;" target="f3ws72g2ZYmKRIlbP6fx-15">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1164" y="721" />
<mxPoint x="914" y="721" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="f3ws72g2ZYmKRIlbP6fx-58" edge="1" parent="1" source="f3ws72g2ZYmKRIlbP6fx-15" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#2563eb;strokeWidth=1.4;" target="f3ws72g2ZYmKRIlbP6fx-16">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="f3ws72g2ZYmKRIlbP6fx-59" edge="1" parent="1" source="f3ws72g2ZYmKRIlbP6fx-16" 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;" target="f3ws72g2ZYmKRIlbP6fx-17" value="">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1024" y="881" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="f3ws72g2ZYmKRIlbP6fx-60" edge="1" parent="1" source="f3ws72g2ZYmKRIlbP6fx-17" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#16a34a;strokeWidth=1.4;fontSize=12;fontColor=#166534;" target="f3ws72g2ZYmKRIlbP6fx-34" value="">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1384" y="931" />
<mxPoint x="1384" y="556" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="f3ws72g2ZYmKRIlbP6fx-61" edge="1" parent="1" source="f3ws72g2ZYmKRIlbP6fx-34" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#16a34a;strokeWidth=1.4;" target="f3ws72g2ZYmKRIlbP6fx-38">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1649" y="692" />
<mxPoint x="1739" y="692" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="f3ws72g2ZYmKRIlbP6fx-62" edge="1" parent="1" source="f3ws72g2ZYmKRIlbP6fx-16" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#16a34a;strokeWidth=1.4;fontSize=12;fontColor=#166534;startSize=6;" target="f3ws72g2ZYmKRIlbP6fx-24" value="">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1204" y="971" />
<mxPoint x="724" y="971" />
<mxPoint x="724" y="731" />
<mxPoint x="434" y="731" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="f3ws72g2ZYmKRIlbP6fx-63" edge="1" parent="1" source="f3ws72g2ZYmKRIlbP6fx-32" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#f97316;strokeWidth=1.2;" target="f3ws72g2ZYmKRIlbP6fx-33">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="f3ws72g2ZYmKRIlbP6fx-64" edge="1" parent="1" source="f3ws72g2ZYmKRIlbP6fx-33" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#f97316;strokeWidth=1.2;" target="f3ws72g2ZYmKRIlbP6fx-37">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1834" y="610" />
<mxPoint x="1834" y="781" />
<mxPoint x="1559" y="781" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="f3ws72g2ZYmKRIlbP6fx-65" edge="1" parent="1" source="f3ws72g2ZYmKRIlbP6fx-7" 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;" target="f3ws72g2ZYmKRIlbP6fx-24" value="Legacy only">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="434" y="381" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="f3ws72g2ZYmKRIlbP6fx-66" edge="1" parent="1" source="f3ws72g2ZYmKRIlbP6fx-26" 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;" target="f3ws72g2ZYmKRIlbP6fx-26">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="OB1gE-xTmAWO8eZxwI0i-1" parent="1" style="text;html=1;strokeColor=none;fillColor=#D5E8D4;align=left;verticalAlign=middle;fontSize=19;fontColor=#374151;spacingTop=8;spacingLeft=10;labelBorderColor=none;" value="Version: v0.9&lt;br&gt;Date: 2026-06-16&lt;div&gt;Page:&amp;nbsp;Network Architecture&lt;/div&gt;&lt;div&gt;AuthorZhao, Guangfei&lt;/div&gt;" vertex="1">
<mxGeometry height="104" width="452" x="1644" y="114" as="geometry" />
</mxCell>
<mxCell id="o3fHcUEwmu2BC2NcclIt-1" parent="1" style="rounded=0;whiteSpace=wrap;html=1;" value="" vertex="1">
<mxGeometry height="126" width="1098" x="80" y="66" as="geometry" />
</mxCell>
<mxCell id="f3ws72g2ZYmKRIlbP6fx-1" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=28;fontStyle=1;fontColor=#1f2937;" value="Continental Retail APP Network Architecture" vertex="1">
<mxGeometry height="40" width="620" x="100" y="89" as="geometry" />
</mxCell>
<mxCell id="f3ws72g2ZYmKRIlbP6fx-2" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=13;fontColor=#4b5563;" 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." vertex="1">
<mxGeometry height="24" width="980" x="100" y="143" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
<diagram id="bVPbAlAU53e4DCiR0KdR" name="Network Topology">
<mxGraphModel dx="2020" dy="1201" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="0" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="c3H3gHCFafL4nHDOT0y7-56" parent="1" style="rounded=0;whiteSpace=wrap;html=1;" value="" vertex="1">
<mxGeometry height="1276" width="2062" x="214" y="305" as="geometry" />
</mxCell>
<mxCell id="c3H3gHCFafL4nHDOT0y7-5" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f9fafb;strokeColor=#9ca3af;strokeWidth=1.5;dashed=1;dashPattern=8 8;" value="" vertex="1">
<mxGeometry height="650" width="440" x="1020" y="519" as="geometry" />
</mxCell>
<mxCell id="c3H3gHCFafL4nHDOT0y7-6" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;fontSize=18;fontStyle=1;fontColor=#111827;" value="Public Network" vertex="1">
<mxGeometry height="28" width="180" x="1150" y="539" as="geometry" />
</mxCell>
<mxCell id="c3H3gHCFafL4nHDOT0y7-7" parent="1" 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;" value="Mobile App" vertex="1">
<mxGeometry height="95" width="72" x="1204" y="589" as="geometry" />
</mxCell>
<mxCell id="c3H3gHCFafL4nHDOT0y7-8" parent="1" style="shape=cloud;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#374151;strokeWidth=2;fontSize=18;fontStyle=1;fontColor=#1f2937;" value="Internet" vertex="1">
<mxGeometry height="110" width="210" x="1135" y="739" as="geometry" />
</mxCell>
<mxCell id="c3H3gHCFafL4nHDOT0y7-9" parent="1" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;fillColor=#ffffff;strokeColor=#6b7280;strokeWidth=1.4;fontSize=13;fontStyle=1;fontColor=#111827;" value="Public DNS / Domain" vertex="1">
<mxGeometry height="74" width="150" x="1165" y="909" as="geometry" />
</mxCell>
<mxCell id="c3H3gHCFafL4nHDOT0y7-10" parent="1" style="shape=mxgraph.azure.cloud;html=1;fillColor=#ffffff;strokeColor=#111827;strokeWidth=2;fontSize=18;fontStyle=1;fontColor=#111827;verticalAlign=top;spacingTop=18;" value="Azure China&lt;br&gt;Primary App Backend VNet" vertex="1">
<mxGeometry height="470" width="520" x="420" y="629" as="geometry" />
</mxCell>
<mxCell id="c3H3gHCFafL4nHDOT0y7-11" parent="1" 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;" value="VNet boundary" vertex="1">
<mxGeometry height="330" width="430" x="465" y="719" as="geometry" />
</mxCell>
<mxCell id="c3H3gHCFafL4nHDOT0y7-12" parent="1" 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;" value="Public DMZ Subnet" vertex="1">
<mxGeometry height="98" width="360" x="500" y="754" as="geometry" />
</mxCell>
<mxCell id="c3H3gHCFafL4nHDOT0y7-13" parent="1" style="shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;fillColor=#ffffff;strokeColor=#374151;strokeWidth=1.5;fontSize=13;fontStyle=1;fontColor=#1f2937;" value="WAF / App Gateway&lt;br&gt;+ Public LB" vertex="1">
<mxGeometry height="58" width="210" x="575" y="786" as="geometry" />
</mxCell>
<mxCell id="c3H3gHCFafL4nHDOT0y7-14" parent="1" 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;" value="Private Application Subnet" vertex="1">
<mxGeometry height="150" width="360" x="500" y="879" as="geometry" />
</mxCell>
<mxCell id="c3H3gHCFafL4nHDOT0y7-15" parent="1" 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;" value="" vertex="1">
<mxGeometry height="74" width="110" x="570" y="930" as="geometry" />
</mxCell>
<mxCell id="c3H3gHCFafL4nHDOT0y7-16" parent="1" style="shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;fillColor=#ffffff;strokeColor=#374151;strokeWidth=1.5;fontSize=13;fontStyle=1;fontColor=#1f2937;" value="F6 Integration&lt;br&gt;Adapter" vertex="1">
<mxGeometry height="58" width="130" x="710" y="930" as="geometry" />
</mxCell>
<mxCell id="c3H3gHCFafL4nHDOT0y7-17" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f3f4f6;strokeColor=#6b7280;strokeWidth=1.3;fontSize=12;fontStyle=1;fontColor=#111827;" value="NSG / Access Rules" vertex="1">
<mxGeometry height="32" width="220" x="570" y="879" as="geometry" />
</mxCell>
<mxCell id="c3H3gHCFafL4nHDOT0y7-18" parent="1" style="shape=mxgraph.azure.cloud;html=1;fillColor=#ffffff;strokeColor=#111827;strokeWidth=2;fontSize=18;fontStyle=1;fontColor=#111827;verticalAlign=top;spacingTop=18;" value="Mini Program Backend&lt;br&gt;Azure Independent VPC" vertex="1">
<mxGeometry height="360" width="430" x="420" y="1094" as="geometry" />
</mxCell>
<mxCell id="c3H3gHCFafL4nHDOT0y7-19" parent="1" 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;" value="VPC boundary" vertex="1">
<mxGeometry height="225" width="340" x="465" y="1194" as="geometry" />
</mxCell>
<mxCell id="c3H3gHCFafL4nHDOT0y7-20" parent="1" style="shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;fillColor=#ffffff;strokeColor=#374151;strokeWidth=1.5;fontSize=13;fontStyle=1;fontColor=#1f2937;" value="Mini Gateway&lt;br&gt;/ Firewall" vertex="1">
<mxGeometry height="58" width="150" x="500" y="1249" as="geometry" />
</mxCell>
<mxCell id="c3H3gHCFafL4nHDOT0y7-21" parent="1" style="shape=datastore;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;fillColor=#ffffff;strokeColor=#374151;strokeWidth=1.5;fontSize=13;fontStyle=1;fontColor=#1f2937;" value="Mini Services&lt;br&gt;O2O / Warranty&lt;br&gt;马上下单 / ROOS" vertex="1">
<mxGeometry height="92" width="150" x="625" y="1309" as="geometry" />
</mxCell>
<mxCell id="c3H3gHCFafL4nHDOT0y7-22" parent="1" style="shape=mxgraph.azure.cloud;html=1;fillColor=#f9fafb;strokeColor=#111827;strokeWidth=2;fontSize=18;fontStyle=1;fontColor=#111827;verticalAlign=top;spacingTop=18;" value="F6 Supplier VNet&lt;br&gt;Alibaba Cloud Shanghai" vertex="1">
<mxGeometry height="540" width="520" x="1540" y="629" as="geometry" />
</mxCell>
<mxCell id="c3H3gHCFafL4nHDOT0y7-23" parent="1" 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;" value="Supplier-managed VPC boundary" vertex="1">
<mxGeometry height="390" width="430" x="1585" y="719" as="geometry" />
</mxCell>
<mxCell id="c3H3gHCFafL4nHDOT0y7-24" parent="1" 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;" value="Public Access Subnet" vertex="1">
<mxGeometry height="130" width="360" x="1620" y="754" as="geometry" />
</mxCell>
<mxCell id="c3H3gHCFafL4nHDOT0y7-25" parent="1" style="shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;fillColor=#ffffff;strokeColor=#374151;strokeWidth=1.5;fontSize=13;fontStyle=1;fontColor=#1f2937;" value="Access Gateway / WAF&lt;br&gt;+ Load Balancer" vertex="1">
<mxGeometry height="58" width="190" x="1645" y="799" as="geometry" />
</mxCell>
<mxCell id="c3H3gHCFafL4nHDOT0y7-26" parent="1" style="shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;fillColor=#ffffff;strokeColor=#374151;strokeWidth=1.5;fontSize=13;fontStyle=1;fontColor=#1f2937;" value="Allowlisted&lt;br&gt;B2B API Gateway" vertex="1">
<mxGeometry height="58" width="150" x="1850" y="799" as="geometry" />
</mxCell>
<mxCell id="c3H3gHCFafL4nHDOT0y7-27" parent="1" 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;" value="Private Service Subnet" vertex="1">
<mxGeometry height="165" width="360" x="1620" y="914" as="geometry" />
</mxCell>
<mxCell id="c3H3gHCFafL4nHDOT0y7-28" parent="1" 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;" value="F6 WebView&lt;br&gt;Pages" vertex="1">
<mxGeometry height="74" width="92" x="1665" y="969" as="geometry" />
</mxCell>
<mxCell id="c3H3gHCFafL4nHDOT0y7-29" parent="1" style="shape=datastore;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;fillColor=#ffffff;strokeColor=#6b7280;strokeWidth=1.5;fontSize=13;fontStyle=1;fontColor=#1f2937;" value="F6 Capability APIs&lt;br&gt;Backend Only" vertex="1">
<mxGeometry height="74" width="150" x="1830" y="969" as="geometry" />
</mxCell>
<mxCell id="c3H3gHCFafL4nHDOT0y7-30" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f9fafb;strokeColor=#9ca3af;strokeWidth=1.2;" value="" vertex="1">
<mxGeometry height="155" width="720" x="1340" y="1249" as="geometry" />
</mxCell>
<mxCell id="c3H3gHCFafL4nHDOT0y7-31" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=18;fontStyle=1;fontColor=#111827;" value="Topology Reading" vertex="1">
<mxGeometry height="24" width="180" x="1370" y="1269" as="geometry" />
</mxCell>
<mxCell id="c3H3gHCFafL4nHDOT0y7-32" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=top;fontSize=14;fontColor=#374151;spacingTop=4;" 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." vertex="1">
<mxGeometry height="88" width="650" x="1370" y="1304" as="geometry" />
</mxCell>
<mxCell id="c3H3gHCFafL4nHDOT0y7-33" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#9ca3af;strokeWidth=1.2;" value="" vertex="1">
<mxGeometry height="180" width="320" x="980" y="1251" as="geometry" />
</mxCell>
<mxCell id="c3H3gHCFafL4nHDOT0y7-34" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=18;fontStyle=1;fontColor=#111827;" value="Legend" vertex="1">
<mxGeometry height="24" width="90" x="1010" y="1259" as="geometry" />
</mxCell>
<mxCell id="c3H3gHCFafL4nHDOT0y7-35" parent="1" style="shape=line;html=1;strokeColor=#111827;strokeWidth=2;" value="" vertex="1">
<mxGeometry height="10" width="70" x="1015" y="1302" as="geometry" />
</mxCell>
<mxCell id="c3H3gHCFafL4nHDOT0y7-36" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=13;fontColor=#1f2937;" value="Primary App route" vertex="1">
<mxGeometry height="24" width="150" x="1100" y="1293" as="geometry" />
</mxCell>
<mxCell id="c3H3gHCFafL4nHDOT0y7-37" parent="1" style="shape=line;html=1;strokeColor=#111827;strokeWidth=2;" value="" vertex="1">
<mxGeometry height="10" width="70" x="1015" y="1336" as="geometry" />
</mxCell>
<mxCell id="c3H3gHCFafL4nHDOT0y7-38" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=13;fontColor=#1f2937;" value="Backend integration" vertex="1">
<mxGeometry height="24" width="160" x="1100" y="1327" as="geometry" />
</mxCell>
<mxCell id="c3H3gHCFafL4nHDOT0y7-39" parent="1" style="shape=line;html=1;strokeColor=#111827;strokeWidth=2;dashed=1;dashPattern=2 4;" value="" vertex="1">
<mxGeometry height="10" width="70" x="1015" y="1370" as="geometry" />
</mxCell>
<mxCell id="c3H3gHCFafL4nHDOT0y7-40" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=13;fontColor=#1f2937;" value="F6 WebView route" vertex="1">
<mxGeometry height="24" width="160" x="1100" y="1361" as="geometry" />
</mxCell>
<mxCell id="c3H3gHCFafL4nHDOT0y7-41" parent="1" style="shape=line;html=1;strokeColor=#6b7280;strokeWidth=2;dashed=1;dashPattern=8 8;" value="" vertex="1">
<mxGeometry height="10" width="70" x="1015" y="1404" as="geometry" />
</mxCell>
<mxCell id="c3H3gHCFafL4nHDOT0y7-42" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=13;fontColor=#1f2937;" value="Legacy compatibility" vertex="1">
<mxGeometry height="24" width="170" x="1100" y="1395" as="geometry" />
</mxCell>
<mxCell id="c3H3gHCFafL4nHDOT0y7-43" edge="1" parent="1" source="c3H3gHCFafL4nHDOT0y7-7" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#111827;strokeWidth=1.5;" target="c3H3gHCFafL4nHDOT0y7-8">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="c3H3gHCFafL4nHDOT0y7-44" edge="1" parent="1" source="c3H3gHCFafL4nHDOT0y7-8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#111827;strokeWidth=1.2;" target="c3H3gHCFafL4nHDOT0y7-9">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="c3H3gHCFafL4nHDOT0y7-45" edge="1" parent="1" source="c3H3gHCFafL4nHDOT0y7-9" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#111827;strokeWidth=1.5;fontSize=12;fontColor=#111827;labelBackgroundColor=#ffffff;" target="c3H3gHCFafL4nHDOT0y7-13" value="primary HTTPS">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="940" y="946" />
<mxPoint x="940" y="815" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="c3H3gHCFafL4nHDOT0y7-46" edge="1" parent="1" source="c3H3gHCFafL4nHDOT0y7-13" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#111827;strokeWidth=1.3;" target="c3H3gHCFafL4nHDOT0y7-15">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="c3H3gHCFafL4nHDOT0y7-47" edge="1" parent="1" source="c3H3gHCFafL4nHDOT0y7-15" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#111827;strokeWidth=1.4;" target="c3H3gHCFafL4nHDOT0y7-16">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="c3H3gHCFafL4nHDOT0y7-48" edge="1" parent="1" source="c3H3gHCFafL4nHDOT0y7-16" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#111827;strokeWidth=1;fontSize=12;fontColor=#111827;labelBackgroundColor=#ffffff;" target="c3H3gHCFafL4nHDOT0y7-26" value="allowlisted B2B API">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="775" y="1014" />
<mxPoint x="1500" y="1014" />
<mxPoint x="1500" y="874" />
<mxPoint x="1925" y="874" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="c3H3gHCFafL4nHDOT0y7-49" edge="1" parent="1" source="c3H3gHCFafL4nHDOT0y7-26" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#111827;strokeWidth=1.3;" target="c3H3gHCFafL4nHDOT0y7-29">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="c3H3gHCFafL4nHDOT0y7-50" edge="1" parent="1" source="c3H3gHCFafL4nHDOT0y7-15" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#111827;strokeWidth=1.8;fontSize=12;fontColor=#111827;labelBackgroundColor=#ffffff;" target="c3H3gHCFafL4nHDOT0y7-20" value="backend aggregation">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="625" y="1064" />
<mxPoint x="575" y="1064" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="c3H3gHCFafL4nHDOT0y7-51" edge="1" parent="1" source="c3H3gHCFafL4nHDOT0y7-20" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#111827;strokeWidth=1.3;" target="c3H3gHCFafL4nHDOT0y7-21">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="c3H3gHCFafL4nHDOT0y7-52" edge="1" parent="1" source="c3H3gHCFafL4nHDOT0y7-9" 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;" target="c3H3gHCFafL4nHDOT0y7-25" value="embedded WebView">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1420" y="946" />
<mxPoint x="1420" y="828" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="c3H3gHCFafL4nHDOT0y7-53" edge="1" parent="1" source="c3H3gHCFafL4nHDOT0y7-25" 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;" target="c3H3gHCFafL4nHDOT0y7-28">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="c3H3gHCFafL4nHDOT0y7-54" edge="1" parent="1" source="c3H3gHCFafL4nHDOT0y7-9" 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;" target="c3H3gHCFafL4nHDOT0y7-20" value="legacy only">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="980" y="946" />
<mxPoint x="980" y="1278" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="c3H3gHCFafL4nHDOT0y7-55" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontSize=10;" 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;" vertex="1">
<mxGeometry height="73" width="110" x="570" y="931" as="geometry" />
</mxCell>
<mxCell id="-MEyYBA3na6uxiJNkq2Z-1" parent="1" style="text;html=1;strokeColor=none;fillColor=#D5E8D4;align=left;verticalAlign=middle;fontSize=19;fontColor=#374151;spacingTop=8;spacingLeft=10;labelBorderColor=none;" value="Version: v0.9&lt;br&gt;Date: 2026-06-16&lt;div&gt;Page: Network Topology&lt;/div&gt;&lt;div&gt;AuthorZhao, Guangfei&lt;/div&gt;" vertex="1">
<mxGeometry height="104" width="452" x="1789" y="343" as="geometry" />
</mxCell>
<mxCell id="c_7y2mpMpV_Ax_gGnA0J-1" parent="1" style="rounded=0;whiteSpace=wrap;html=1;" value="" vertex="1">
<mxGeometry height="132" width="844" x="215" y="306" as="geometry" />
</mxCell>
<mxCell id="c3H3gHCFafL4nHDOT0y7-1" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=28;fontStyle=1;fontColor=#1f2937;" value="Continental Retail APP Network Topology" vertex="1">
<mxGeometry height="40" width="700" x="254" y="332" as="geometry" />
</mxCell>
<mxCell id="c3H3gHCFafL4nHDOT0y7-2" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=13;fontColor=#4b5563;" value="Topology view focused on network boundaries, public ingress points, and allowed cross-domain connectivity." vertex="1">
<mxGeometry height="24" width="940" x="254" y="372" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>