<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Safari/537.36" version="29.3.8">
  <diagram name="前端架构" id="frontend-arch">
    <mxGraphModel dx="2981" dy="2257" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1600" pageHeight="1600" math="0" shadow="0">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />
        <mxCell id="bg_app" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFF8E1;strokeColor=#F5A623;strokeWidth=2;verticalAlign=top;fontStyle=1;fontSize=16;align=left;spacingLeft=10;spacingTop=5;" value="&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;studio-web 应用" vertex="1">
          <mxGeometry height="1360" width="1490" x="-70" y="60" as="geometry" />
        </mxCell>
        <mxCell id="bg_entry" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFF8E1;strokeColor=#F5A623;strokeWidth=2;verticalAlign=top;fontStyle=1;fontSize=14;align=left;spacingLeft=10;" value="&lt;div&gt;&lt;span style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; 第一层：应用入口&lt;/span&gt;&lt;/div&gt;" vertex="1">
          <mxGeometry height="230" width="1240" x="40" y="120" as="geometry" />
        </mxCell>
        <mxCell id="bg_page" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFF3E0;strokeColor=#F5A623;strokeWidth=2;verticalAlign=top;fontStyle=1;fontSize=14;align=left;spacingLeft=10;" value="&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 第二层：页面层" vertex="1">
          <mxGeometry height="400" width="1240" x="30" y="380" as="geometry" />
        </mxCell>
        <mxCell id="bg_sidebar" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFF3E0;strokeColor=#F5A623;strokeWidth=1;dashed=1;verticalAlign=top;fontStyle=1;fontSize=13;align=left;spacingLeft=10;" value="&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;侧边栏导航" vertex="1">
          <mxGeometry height="330" width="843" x="277" y="432" as="geometry" />
        </mxCell>
        <mxCell id="bg_general" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFF8E1;strokeColor=#F5A623;strokeWidth=1;dashed=1;verticalAlign=top;fontStyle=1;fontSize=12;align=left;spacingLeft=8;" value="&amp;nbsp; &amp;nbsp; &amp;nbsp;General" vertex="1">
          <mxGeometry height="280" width="230" x="298" y="470" as="geometry" />
        </mxCell>
        <mxCell id="bg_settings" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFF8E1;strokeColor=#F5A623;strokeWidth=1;dashed=1;verticalAlign=top;fontStyle=1;fontSize=12;align=left;spacingLeft=8;" value="&amp;nbsp; &amp;nbsp; &amp;nbsp; Settings" vertex="1">
          <mxGeometry height="280" width="280" x="550" y="470" as="geometry" />
        </mxCell>
        <mxCell id="bg_component" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#F3E5F5;strokeColor=#9B59B6;strokeWidth=2;verticalAlign=top;fontStyle=1;fontSize=14;align=left;spacingLeft=10;" value="&amp;nbsp; &amp;nbsp; &amp;nbsp; 第三层：组件层（380+ Vue 文件）" vertex="1">
          <mxGeometry height="250" width="1240" x="30" y="820" as="geometry" />
        </mxCell>
        <mxCell id="bg_logic" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E8F5E9;strokeColor=#2ECC71;strokeWidth=2;verticalAlign=top;fontStyle=1;fontSize=14;align=left;spacingLeft=10;" value="&amp;nbsp; &amp;nbsp;第四层：逻辑层" vertex="1">
          <mxGeometry height="120" width="1240" x="30" y="1110.5" as="geometry" />
        </mxCell>
        <mxCell id="bg_api" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFEBEE;strokeColor=#E74C3C;strokeWidth=2;verticalAlign=top;fontStyle=1;fontSize=14;align=left;spacingLeft=10;" value="&amp;nbsp; &amp;nbsp;第五层：API 层" vertex="1">
          <mxGeometry height="115" width="1240" x="30" y="1270" as="geometry" />
        </mxCell>
        <mxCell id="n_user" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#4A90D9;fontColor=#FFFFFF;strokeColor=#357ABD;fontSize=14;fontStyle=1;" value="&lt;b&gt;用户浏览器&lt;/b&gt;" vertex="1">
          <mxGeometry height="50" width="220" x="540" y="-220" as="geometry" />
        </mxCell>
        <mxCell id="n_cf" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#4A90D9;fontColor=#FFFFFF;strokeColor=#357ABD;fontSize=13;" value="&lt;b&gt;前端托管&lt;/b&gt;&lt;br&gt;Cloudflare Pages" vertex="1">
          <mxGeometry height="55" width="220" x="540" y="-90" as="geometry" />
        </mxCell>
        <mxCell id="n_api" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#4A90D9;fontColor=#FFFFFF;strokeColor=#357ABD;fontSize=13;" value="&lt;b&gt;后端数据接口&lt;/b&gt;&lt;br&gt;studio-api" vertex="1">
          <mxGeometry height="60" width="230" x="520" y="1450" as="geometry" />
        </mxCell>
        <mxCell id="n_cognito" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#4A90D9;fontColor=#FFFFFF;strokeColor=#357ABD;fontSize=13;" value="&lt;b&gt;用户认证&lt;/b&gt;&lt;br&gt;AWS Cognito" vertex="1">
          <mxGeometry height="57.5" width="230" x="970" y="1450" as="geometry" />
        </mxCell>
        <mxCell id="n_sentry" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#4A90D9;fontColor=#FFFFFF;strokeColor=#357ABD;fontSize=13;" value="&lt;b&gt;错误追踪&lt;/b&gt;&lt;br&gt;Sentry" vertex="1">
          <mxGeometry height="60" width="200" x="-120" y="1450" as="geometry" />
        </mxCell>
        <mxCell id="n_main" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#F5A623;fontColor=#FFFFFF;strokeColor=#D4891A;fontSize=13;" value="&lt;b&gt;应用启动入口&lt;/b&gt;&lt;br&gt;src/main.ts" vertex="1">
          <mxGeometry height="50" width="260" x="520" y="130" as="geometry" />
        </mxCell>
        <mxCell id="n_router" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#F5A623;fontColor=#FFFFFF;strokeColor=#D4891A;fontSize=13;" value="&lt;b&gt;路由管理&lt;/b&gt;&lt;br&gt;src/router/index.ts" vertex="1">
          <mxGeometry height="50" width="260" x="520" y="210" as="geometry" />
        </mxCell>
        <mxCell id="n_guard" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#F5A623;fontColor=#FFFFFF;strokeColor=#D4891A;fontSize=13;" value="&lt;b&gt;路由守卫&lt;/b&gt;&lt;br&gt;src/router/guard/" vertex="1">
          <mxGeometry height="50" width="260" x="520" y="280" as="geometry" />
        </mxCell>
        <mxCell id="n_auth" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#F5A623;fontColor=#FFFFFF;strokeColor=#D4891A;fontSize=13;" value="&lt;b&gt;认证页面&lt;/b&gt;&lt;br&gt;src/pages/auth/" vertex="1">
          <mxGeometry height="60" width="190" x="69.5" y="420" as="geometry" />
        </mxCell>
        <mxCell id="n_team" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#F5A623;fontColor=#FFFFFF;strokeColor=#D4891A;fontSize=12;" value="&lt;b&gt;店铺切换器&lt;/b&gt;&lt;br&gt;team-switcher.vue" vertex="1">
          <mxGeometry height="40" width="240" x="850" y="498" as="geometry" />
        </mxCell>
        <mxCell id="n_dash" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#F5A623;fontColor=#FFFFFF;strokeColor=#D4891A;fontSize=12;" value="&lt;b&gt;Dashboard&lt;/b&gt;&lt;br&gt;src/pages/dashboard/" vertex="1">
          <mxGeometry height="38" width="190" x="320" y="500" as="geometry" />
        </mxCell>
        <mxCell id="n_store_act" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#F5A623;fontColor=#FFFFFF;strokeColor=#D4891A;fontSize=12;" value="&lt;b&gt;Store Activity&lt;/b&gt;&lt;br&gt;src/pages/store-activity/" vertex="1">
          <mxGeometry height="38" width="190" x="320" y="550" as="geometry" />
        </mxCell>
        <mxCell id="n_calls" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#F5A623;fontColor=#FFFFFF;strokeColor=#D4891A;fontSize=12;" value="&lt;b&gt;Call Table&lt;/b&gt;&lt;br&gt;src/pages/calls/" vertex="1">
          <mxGeometry height="38" width="190" x="320" y="596" as="geometry" />
        </mxCell>
        <mxCell id="n_messages" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#F5A623;fontColor=#FFFFFF;strokeColor=#D4891A;fontSize=12;" value="&lt;b&gt;Messages&lt;/b&gt;&lt;br&gt;src/pages/messages/" vertex="1">
          <mxGeometry height="38" width="190" x="320" y="650" as="geometry" />
        </mxCell>
        <mxCell id="n_leads" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#F5A623;fontColor=#FFFFFF;strokeColor=#D4891A;fontSize=12;" value="&lt;b&gt;Lead Tracker&lt;/b&gt;&lt;br&gt;src/pages/lead-tracker/" vertex="1">
          <mxGeometry height="38" width="190" x="320" y="700" as="geometry" />
        </mxCell>
        <mxCell id="n_stores" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#F5A623;fontColor=#FFFFFF;strokeColor=#D4891A;fontSize=12;" value="&lt;b&gt;Stores &amp;amp; Groups&lt;/b&gt;&lt;br&gt;src/pages/stores/" vertex="1">
          <mxGeometry height="38" width="230" x="560" y="500" as="geometry" />
        </mxCell>
        <mxCell id="n_schedule" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#F5A623;fontColor=#FFFFFF;strokeColor=#D4891A;fontSize=12;" value="&lt;b&gt;Store Schedule&lt;/b&gt;&lt;br&gt;src/pages/store-schedule/" vertex="1">
          <mxGeometry height="38" width="230" x="560" y="550" as="geometry" />
        </mxCell>
        <mxCell id="n_access" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#F5A623;fontColor=#FFFFFF;strokeColor=#D4891A;fontSize=12;" value="&lt;b&gt;Access Management&lt;/b&gt;&lt;br&gt;src/pages/access-management/" vertex="1">
          <mxGeometry height="38" width="230" x="560" y="596" as="geometry" />
        </mxCell>
        <mxCell id="n_footer" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#F5A623;fontColor=#FFFFFF;strokeColor=#D4891A;fontSize=12;" value="&lt;b&gt;用户信息面板&lt;/b&gt;&lt;br&gt;nav-footer.vue" vertex="1">
          <mxGeometry height="40" width="240" x="850" y="550" as="geometry" />
        </mxCell>
        <mxCell id="n_charts" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#9B59B6;fontColor=#FFFFFF;strokeColor=#7D4799;fontSize=12;" value="&lt;b&gt;数据可视化&lt;/b&gt;&lt;br&gt;analytics/ + dashboard/" vertex="1">
          <mxGeometry height="55" width="225" x="52" y="878" as="geometry" />
        </mxCell>
        <mxCell id="n_analysis" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#9B59B6;fontColor=#FFFFFF;strokeColor=#7D4799;fontSize=12;" value="&lt;b&gt;通话分析&lt;/b&gt;&lt;br&gt;call-analysis/ + call-detail/" vertex="1">
          <mxGeometry height="55" width="225" x="290" y="878" as="geometry" />
        </mxCell>
        <mxCell id="n_act_phone" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#9B59B6;fontColor=#FFFFFF;strokeColor=#7D4799;fontSize=12;" value="&lt;b&gt;活动 &amp;amp; 电话&lt;/b&gt;&lt;br&gt;activity-timeline/&lt;br&gt;phone-activity/" vertex="1">
          <mxGeometry height="55" width="225" x="528" y="878" as="geometry" />
        </mxCell>
        <mxCell id="n_table" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#9B59B6;fontColor=#FFFFFF;strokeColor=#7D4799;fontSize=12;" value="&lt;b&gt;数据表 &amp;amp; 筛选&lt;/b&gt;&lt;br&gt;data-table/ + filters/" vertex="1">
          <mxGeometry height="55" width="225" x="766" y="878" as="geometry" />
        </mxCell>
        <mxCell id="n_config" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#9B59B6;fontColor=#FFFFFF;strokeColor=#7D4799;fontSize=12;" value="&lt;b&gt;配置管理&lt;/b&gt;&lt;br&gt;stores/ + store-schedule/" vertex="1">
          <mxGeometry height="55" width="225" x="1004" y="878" as="geometry" />
        </mxCell>
        <mxCell id="n_form" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#8E44AD;fontColor=#FFFFFF;strokeColor=#6C3483;fontSize=11;" value="&lt;b&gt;表单类&lt;/b&gt;&lt;br&gt;Input / Select / Switch&lt;br&gt;Checkbox / Calendar" vertex="1">
          <mxGeometry height="55" width="225" x="52" y="970" as="geometry" />
        </mxCell>
        <mxCell id="n_overlay" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#8E44AD;fontColor=#FFFFFF;strokeColor=#6C3483;fontSize=11;" value="&lt;b&gt;弹出层&lt;/b&gt;&lt;br&gt;Dialog / Drawer / Sheet&lt;br&gt;Popover / Dropdown" vertex="1">
          <mxGeometry height="55" width="225" x="290" y="970" as="geometry" />
        </mxCell>
        <mxCell id="n_data_display" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#8E44AD;fontColor=#FFFFFF;strokeColor=#6C3483;fontSize=11;" value="&lt;b&gt;数据展示&lt;/b&gt;&lt;br&gt;Table / Card / Badge&lt;br&gt;Avatar / Skeleton" vertex="1">
          <mxGeometry height="55" width="225" x="528" y="970" as="geometry" />
        </mxCell>
        <mxCell id="n_nav_ui" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#8E44AD;fontColor=#FFFFFF;strokeColor=#6C3483;fontSize=11;" value="&lt;b&gt;导航 &amp;amp; 交互&lt;/b&gt;&lt;br&gt;Tabs / Button / Accordion&lt;br&gt;Breadcrumb / Command" vertex="1">
          <mxGeometry height="55" width="225" x="766" y="970" as="geometry" />
        </mxCell>
        <mxCell id="n_queries" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#2ECC71;fontColor=#FFFFFF;strokeColor=#25A35A;fontSize=13;" value="&lt;b&gt;数据查询 Hooks&lt;/b&gt;&lt;br&gt;src/composables/queries/" vertex="1">
          <mxGeometry height="55" width="310" x="60" y="1150" as="geometry" />
        </mxCell>
        <mxCell id="n_composables" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#2ECC71;fontColor=#FFFFFF;strokeColor=#25A35A;fontSize=13;" value="&lt;b&gt;业务 Composables&lt;/b&gt;&lt;br&gt;src/composables/" vertex="1">
          <mxGeometry height="55" width="280" x="486" y="1150" as="geometry" />
        </mxCell>
        <mxCell id="n_state" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#2ECC71;fontColor=#FFFFFF;strokeColor=#25A35A;fontSize=13;" value="&lt;b&gt;状态管理&lt;/b&gt;&lt;br&gt;src/stores/" vertex="1">
          <mxGeometry height="55" width="280" x="880" y="1150" as="geometry" />
        </mxCell>
        <mxCell id="n_axios" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E74C3C;fontColor=#FFFFFF;strokeColor=#C0392B;fontSize=13;" value="&lt;b&gt;HTTP 客户端&lt;/b&gt;&lt;br&gt;src/api/index.ts" vertex="1">
          <mxGeometry height="55" width="230" x="52" y="1310" as="geometry" />
        </mxCell>
        <mxCell id="n_otapi" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E74C3C;fontColor=#FFFFFF;strokeColor=#C0392B;fontSize=13;" value="&lt;b&gt;OT API 模块&lt;/b&gt;&lt;br&gt;src/api/ot-api/" vertex="1">
          <mxGeometry height="55" width="210" x="450" y="1310" as="geometry" />
        </mxCell>
        <mxCell id="n_rcapi" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E74C3C;fontColor=#FFFFFF;strokeColor=#C0392B;fontSize=13;" value="&lt;b&gt;RingCentral API&lt;/b&gt;&lt;br&gt;src/api/ringcentral-api.ts" vertex="1">
          <mxGeometry height="55" width="270" x="680" y="1310" as="geometry" />
        </mxCell>
        <mxCell id="n_authsvc" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E74C3C;fontColor=#FFFFFF;strokeColor=#C0392B;fontSize=13;" value="&lt;b&gt;认证服务&lt;/b&gt;&lt;br&gt;src/services/aws-auth.service.ts" vertex="1">
          <mxGeometry height="55" width="280" x="970" y="1310" as="geometry" />
        </mxCell>
        <mxCell id="e1" edge="1" parent="1" source="n_user" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;strokeColor=#F5A623;fontColor=#333333;fontSize=11;" target="n_cf" value="访问网站">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="e2" edge="1" parent="1" source="n_cf" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;strokeColor=#F5A623;fontColor=#333333;fontSize=11;" target="n_main" value="&amp;nbsp; &amp;nbsp; &amp;nbsp; 分发前端资源">
          <mxGeometry relative="1" x="-0.3793" y="-10" as="geometry">
            <mxPoint as="offset" />
          </mxGeometry>
        </mxCell>
        <mxCell id="e3" edge="1" parent="1" source="n_main" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;strokeColor=#F5A623;" target="n_router" value="">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="e4" edge="1" parent="1" source="n_router" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;strokeColor=#F5A623;" target="n_guard" value="">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="e5" edge="1" parent="1" source="n_guard" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;strokeColor=#E74C3C;fontColor=#E74C3C;fontSize=12;fontStyle=1;" target="n_auth" value="未登录">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="190" y="305" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="e6" edge="1" parent="1" source="n_guard" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;strokeColor=#2ECC71;fontColor=#2ECC71;fontSize=12;fontStyle=1;" target="n_dash" value="已登录">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="410" y="320" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="e7" edge="1" parent="1" source="n_auth" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;strokeColor=#E74C3C;fontColor=#333333;fontSize=11;" target="n_authsvc" value="提交凭证">
          <mxGeometry relative="1" x="-0.4595" as="geometry">
            <mxPoint as="offset" />
            <Array as="points">
              <mxPoint x="220" y="400" />
              <mxPoint x="1290" y="400" />
              <mxPoint x="1290" y="1310" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="e8" edge="1" parent="1" source="n_authsvc" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;strokeColor=#E74C3C;fontColor=#333333;fontSize=11;" target="n_cognito" value="认证请求">
          <mxGeometry relative="1" x="-0.2632" as="geometry">
            <mxPoint as="offset" />
            <Array as="points">
              <mxPoint x="1075" y="1400" />
              <mxPoint x="1075" y="1400" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="e9" edge="1" parent="1" source="n_cognito" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;strokeColor=#2ECC71;fontColor=#333333;fontSize=11;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" target="n_state" value="&amp;nbsp; &amp;nbsp; &amp;nbsp; 返回令牌">
          <mxGeometry relative="1" x="-0.5322" y="10" as="geometry">
            <mxPoint as="offset" />
            <Array as="points">
              <mxPoint x="1320" y="1488" />
              <mxPoint x="1320" y="1250" />
              <mxPoint x="1140" y="1250" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="e10" edge="1" parent="1" source="n_state" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;strokeColor=#2ECC71;fontColor=#333333;fontSize=11;" target="n_guard" value="&amp;nbsp;认证完成，重定向">
          <mxGeometry relative="1" x="0.2288" y="30" as="geometry">
            <mxPoint as="offset" />
            <Array as="points">
              <mxPoint x="1160" y="1160" />
              <mxPoint x="1320" y="1160" />
              <mxPoint x="1320" y="320" />
            </Array>
            <mxPoint x="1160" y="1160" as="sourcePoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="e11" edge="1" parent="1" source="bg_logic" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;strokeColor=#E74C3C;fontColor=#333333;fontSize=11;" target="bg_api" value="逻辑层调用 API">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="e12" edge="1" parent="1" source="n_otapi" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;strokeColor=#4A90D9;fontColor=#333333;fontSize=11;" target="n_api" value="HTTP 请求">
          <mxGeometry relative="1" x="-0.2222" as="geometry">
            <mxPoint as="offset" />
            <Array as="points">
              <mxPoint x="555" y="1430" />
              <mxPoint x="555" y="1430" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="e24" edge="1" parent="1" source="n_rcapi" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;strokeColor=#4A90D9;fontColor=#333333;fontSize=11;" target="n_api" value="HTTP 请求">
          <mxGeometry relative="1" x="-0.2222" as="geometry">
            <mxPoint as="offset" />
            <Array as="points">
              <mxPoint x="720" y="1440" />
              <mxPoint x="720" y="1440" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="e25" edge="1" parent="1" source="n_otapi" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=1;dashed=1;dashPattern=8 8;strokeColor=#999999;fontColor=#666666;fontSize=10;" target="n_axios" value="使用 HTTP 客户端">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="e26" edge="1" parent="1" source="n_rcapi" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=1;dashed=1;dashPattern=8 8;strokeColor=#999999;fontColor=#666666;fontSize=10;" target="n_axios" value="使用 HTTP 客户端">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="720" y="1290" />
              <mxPoint x="165" y="1290" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="e13" edge="1" parent="1" source="n_guard" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=1;dashed=1;dashPattern=8 8;strokeColor=#999999;fontColor=#666666;fontSize=10;" target="n_state" value="读取&amp;nbsp;&lt;div&gt;authStore.isLogin&lt;/div&gt;">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="1370" y="290" />
              <mxPoint x="1370" y="1200" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="e14" edge="1" parent="1" source="bg_page" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;strokeColor=#9B59B6;fontColor=#333333;fontSize=11;" target="bg_component" value="页面调用组件">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="e15" edge="1" parent="1" source="n_team" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=1;dashed=1;dashPattern=8 8;strokeColor=#999999;fontColor=#666666;fontSize=10;" target="n_state" value="读取店铺">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="1240" y="518" />
              <mxPoint x="1240" y="1180" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="e16" edge="1" parent="1" source="n_charts" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=1;dashed=1;dashPattern=8 8;strokeColor=#999999;fontColor=#666666;fontSize=10;" target="n_form" value="组合调用">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="e19" edge="1" parent="1" source="n_analysis" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=1;dashed=1;dashPattern=8 8;strokeColor=#999999;fontColor=#666666;fontSize=10;" target="n_overlay" value="调用弹出层">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="e20" edge="1" parent="1" source="n_act_phone" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=1;dashed=1;dashPattern=8 8;strokeColor=#999999;fontColor=#666666;fontSize=10;" target="n_data_display" value="使用展示组件">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="e21" edge="1" parent="1" source="n_table" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=1;dashed=1;dashPattern=8 8;strokeColor=#999999;fontColor=#666666;fontSize=10;" target="n_nav_ui" value="使用交互组件">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="e27" edge="1" parent="1" source="n_config" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=1;dashed=1;dashPattern=8 8;strokeColor=#999999;fontColor=#666666;fontSize=10;" target="n_overlay" value="使用弹出层配置">
          <mxGeometry relative="1" x="-0.0006" as="geometry">
            <mxPoint as="offset" />
            <Array as="points">
              <mxPoint x="1117" y="1050" />
              <mxPoint x="450" y="1050" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="e17" edge="1" parent="1" source="bg_component" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;strokeColor=#2ECC71;fontColor=#333333;fontSize=11;" target="bg_logic" value="组件调用逻辑层">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="e22" edge="1" parent="1" source="n_composables" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=1;dashed=1;dashPattern=8 8;strokeColor=#999999;fontColor=#666666;fontSize=10;" target="n_queries" value="调用查询 Hooks">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="e23" edge="1" parent="1" source="n_composables" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=1;dashed=1;dashPattern=8 8;strokeColor=#999999;fontColor=#666666;fontSize=10;" target="n_state" value="读写状态">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="e18" edge="1" parent="1" source="n_main" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=1;dashed=1;dashPattern=8 8;strokeColor=#999999;fontColor=#666666;fontSize=10;" target="n_sentry" value="初始化">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
      </root>
    </mxGraphModel>
  </diagram>
</mxfile>
