<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="backend-pipeline">
    <mxGraphModel dx="2784" dy="2057" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1600" pageHeight="1400" math="0" shadow="0">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />
        <mxCell id="RC" parent="1" style="rounded=1;whiteSpace=wrap;fillColor=#4A90D9;strokeColor=#357ABD;fontColor=#FFFFFF;fontSize=12;strokeWidth=2;" value="客户通话的数据来源&#xa;RingCentral API" vertex="1">
          <mxGeometry height="60" width="410" x="260" y="-800" as="geometry" />
        </mxCell>
        <mxCell id="EMAIL" parent="1" style="rounded=1;whiteSpace=wrap;fillColor=#4A90D9;strokeColor=#357ABD;fontColor=#FFFFFF;fontSize=12;strokeWidth=2;" value="潜在客户表单的通知邮箱&#xa;Lark Suite / Gmail" vertex="1">
          <mxGeometry height="60" width="303" x="743.5999999999999" y="-800" as="geometry" />
        </mxCell>
        <mxCell id="bg_entry" parent="1" style="rounded=1;whiteSpace=wrap;fillColor=#FFF3E0;strokeColor=#F5A623;strokeWidth=2;fontSize=14;fontStyle=1;verticalAlign=top;spacingTop=5;container=1;collapsible=0;" value="数据入口" vertex="1">
          <mxGeometry height="210" width="1390" x="-110" y="-680" as="geometry" />
        </mxCell>
        <mxCell id="RCS" parent="bg_entry" style="rounded=1;whiteSpace=wrap;fillColor=#F5A623;strokeColor=#2ECC71;fontColor=#FFFFFF;fontSize=11;strokeWidth=4;" value="管理电话系统的OAuth认证令牌&#xa;ringcentralService/src/handlers/" vertex="1">
          <mxGeometry height="65" width="220" x="440" y="15" as="geometry" />
        </mxCell>
        <mxCell id="RCSS" parent="bg_entry" style="rounded=1;whiteSpace=wrap;fillColor=#F5A623;strokeColor=#2ECC71;fontColor=#FFFFFF;fontSize=11;strokeWidth=4;" value="接收电话事件Webhook&#xa;ringcentralSubscriptionService/lambda/webhook-receiver/src/handler.ts" vertex="1">
          <mxGeometry height="65" width="380" x="440" y="115" as="geometry" />
        </mxCell>
        <mxCell id="LT" parent="bg_entry" style="rounded=1;whiteSpace=wrap;fillColor=#F5A623;strokeColor=#2ECC71;fontColor=#FFFFFF;fontSize=11;strokeWidth=4;" value="轮询邮箱采集潜在客户信息&#xa;lead-tracking/src/poller.ts" vertex="1">
          <mxGeometry height="65" width="296.8932038834951" x="856.6539664197078" y="16.25" as="geometry" />
        </mxCell>
        <mxCell id="SUB_MGR" parent="bg_entry" style="rounded=1;whiteSpace=wrap;fillColor=#F5A623;strokeColor=#2ECC71;fontColor=#FFFFFF;fontSize=11;strokeWidth=4;" value="创建/删除Webhook订阅&#xa;ringcentralSubscriptionService/lambda/subscription-manager/src/handler.ts" vertex="1">
          <mxGeometry height="67.5" width="393.77" x="26.23" y="15" as="geometry" />
        </mxCell>
        <mxCell id="SUB_RENEW" parent="bg_entry" style="rounded=1;whiteSpace=wrap;fillColor=#F5A623;strokeColor=#2ECC71;fontColor=#FFFFFF;fontSize=11;strokeWidth=4;" value="每天3AM自动续期Webhook订阅&#xa;ringcentralSubscriptionService/lambda/subscription-renewer/src/handler.ts" vertex="1">
          <mxGeometry height="70" width="390" x="30" y="110" as="geometry" />
        </mxCell>
        <mxCell id="bg_pipeline" parent="1" style="rounded=1;whiteSpace=wrap;fillColor=#F3E5F5;strokeColor=#7B61FF;strokeWidth=2;fontSize=14;fontStyle=1;verticalAlign=top;spacingTop=5;container=1;collapsible=0;" value="AI 处理管道" vertex="1">
          <mxGeometry height="400" width="1390" x="-110" y="-410" as="geometry" />
        </mxCell>
        <mxCell id="SQS" parent="bg_pipeline" style="rounded=1;whiteSpace=wrap;fillColor=#2ECC71;strokeColor=#25A35A;fontColor=#FFFFFF;fontSize=11;strokeWidth=2;" value="缓冲通话事件&#xa;等待录音就绪&#xa;SQS call-log-queue" vertex="1">
          <mxGeometry height="85" width="133.01" x="26.99" y="50" as="geometry" />
        </mxCell>
        <mxCell id="bg_ci" parent="bg_pipeline" style="rounded=1;whiteSpace=wrap;fillColor=#F8F0FC;strokeColor=#9B59B6;strokeWidth=2;dashed=1;dashPattern=6 3;fontSize=12;fontStyle=1;verticalAlign=top;spacingTop=5;container=1;collapsible=0;arcSize=17;" value="callytics-infrastructure" vertex="1">
          <mxGeometry height="360" width="1180" x="190" y="30" as="geometry" />
        </mxCell>
        <mxCell id="PROMPT" parent="bg_ci" style="rounded=1;whiteSpace=wrap;fillColor=#F5A623;strokeColor=#2ECC71;fontColor=#FFFFFF;fontSize=11;strokeWidth=4;" value="驱动AI分析的指令文件&#xa;callytics-infrastructure/config/schemas/orangeTheory/prompts/standard-v1.0.0.txt" vertex="1">
          <mxGeometry height="40" width="1130.4528786171031" x="22.609057572342063" y="30" as="geometry" />
        </mxCell>
        <mxCell id="CONFIG_MGR" parent="bg_ci" style="rounded=1;whiteSpace=wrap;fillColor=#F5A623;strokeColor=#2ECC71;fontColor=#FFFFFF;fontSize=11;strokeWidth=4;" value="OAuth回调后创建分析配置&#xa;callytics-infrastructure/lambda/config-manager/src/handler.ts" vertex="1">
          <mxGeometry height="45" width="376.8176262057012" x="22.609057572342063" y="85" as="geometry" />
        </mxCell>
        <mxCell id="DL" parent="bg_ci" style="rounded=1;whiteSpace=wrap;fillColor=#F5A623;strokeColor=#2ECC71;fontColor=#FFFFFF;fontSize=11;strokeWidth=4;" value="下载录音+发起转录&#xa;callytics-infrastructure/lambda/transcribe-processor/src/handler.ts" vertex="1">
          <mxGeometry height="58" width="256.2359858198767" x="22.609057572342063" y="150" as="geometry" />
        </mxCell>
        <mxCell id="DEEPGRAM" parent="bg_ci" style="rounded=1;whiteSpace=wrap;fillColor=#4A90D9;strokeColor=#357ABD;fontColor=#FFFFFF;fontSize=11;strokeWidth=2;" value="语音转文字&#xa;Deepgram" vertex="1">
          <mxGeometry height="58" width="100" x="360" y="151" as="geometry" />
        </mxCell>
        <mxCell id="SQS2" parent="bg_ci" style="rounded=1;whiteSpace=wrap;fillColor=#2ECC71;strokeColor=#25A35A;fontColor=#FFFFFF;fontSize=11;strokeWidth=2;" value="转录结果队列&#xa;SQS" vertex="1">
          <mxGeometry height="58" width="106.55" x="553.45" y="151" as="geometry" />
        </mxCell>
        <mxCell id="RP" parent="bg_ci" style="rounded=1;whiteSpace=wrap;fillColor=#F5A623;strokeColor=#2ECC71;fontColor=#FFFFFF;fontSize=11;strokeWidth=4;" value="通话结果处理&#xa;callytics-infrastructure/lambda/ai-analysis-processor/src/handler.ts" vertex="1">
          <mxGeometry height="58" width="190" x="750" y="150" as="geometry" />
        </mxCell>
        <mxCell id="BEDROCK_AI" parent="bg_ci" style="rounded=1;whiteSpace=wrap;fillColor=#4A90D9;strokeColor=#357ABD;fontColor=#FFFFFF;fontSize=11;strokeWidth=2;" value="AI 大语言模型服务&#xa;Amazon Bedrock" vertex="1">
          <mxGeometry height="58" width="117.14" x="1040" y="150" as="geometry" />
        </mxCell>
        <mxCell id="RECON_ORCH" parent="bg_ci" style="rounded=1;whiteSpace=wrap;fillColor=#F5A623;strokeColor=#2ECC71;fontColor=#FFFFFF;fontSize=11;strokeWidth=4;" value="每日检测遗漏通话&#xa;callytics-infrastructure/lambda/reconciliation-orchestrator/src/handler.ts" vertex="1">
          <mxGeometry height="58" width="251.038880023212" x="22.60539677934136" y="240" as="geometry" />
        </mxCell>
        <mxCell id="SQS3" parent="bg_ci" style="rounded=1;whiteSpace=wrap;fillColor=#2ECC71;strokeColor=#25A35A;fontColor=#FFFFFF;fontSize=11;strokeWidth=2;" value="修复任务队列&#xa;reconciliation-queue SQS" vertex="1">
          <mxGeometry height="58" width="186.49452342956624" x="392.62004932540265" y="240" as="geometry" />
        </mxCell>
        <mxCell id="RECON_WORKER" parent="bg_ci" style="rounded=1;whiteSpace=wrap;fillColor=#F5A623;strokeColor=#2ECC71;fontColor=#FFFFFF;fontSize=11;strokeWidth=4;" value="修复不完整通话&#xa;callytics-infrastructure/lambda/reconciliation-worker/src/handler.ts" vertex="1">
          <mxGeometry height="60" width="229.73451327433628" x="699.646017699115" y="240" as="geometry" />
        </mxCell>
        <mxCell id="ANALYTICS" parent="bg_ci" style="rounded=1;whiteSpace=wrap;fillColor=#F5A623;strokeColor=#2ECC71;fontColor=#FFFFFF;fontSize=11;strokeWidth=4;" value="生成每日分析报告&#xa;callytics-infrastructure/lambda/analytics-generator/analytics_generator.py" vertex="1">
          <mxGeometry height="58" width="230.42371681415926" x="949.5762831858406" y="240" as="geometry" />
        </mxCell>
        <mxCell id="bg_storage" parent="1" style="rounded=1;whiteSpace=wrap;fillColor=#E8F5E9;strokeColor=#2ECC71;strokeWidth=2;fontSize=14;fontStyle=1;verticalAlign=top;spacingTop=5;container=1;collapsible=0;" value="&#xa;    AWS 数据存储" vertex="1">
          <mxGeometry height="480" width="530" x="-110" y="70" as="geometry" />
        </mxCell>
        <mxCell id="DB" parent="bg_storage" style="shape=cylinder3;whiteSpace=wrap;boundedLbl=1;backgroundOutline=1;size=10;fillColor=#2ECC71;strokeColor=#25A35A;fontColor=#FFFFFF;fontSize=11;strokeWidth=2;" value="存储通话记录和AI分析结果&#xa;DynamoDB" vertex="1">
          <mxGeometry height="92.16" width="136" x="40" y="57.599999999999994" as="geometry" />
        </mxCell>
        <mxCell id="LEADDB" parent="bg_storage" style="shape=cylinder3;whiteSpace=wrap;boundedLbl=1;backgroundOutline=1;size=10;fillColor=#2ECC71;strokeColor=#25A35A;fontColor=#FFFFFF;fontSize=11;strokeWidth=2;" value="存储潜在客户线索&#xa;DynamoDB LeadTracking-v2" vertex="1">
          <mxGeometry height="92.16" width="149" x="330" y="57.599999999999994" as="geometry" />
        </mxCell>
        <mxCell id="S3" parent="bg_storage" style="shape=cylinder3;whiteSpace=wrap;boundedLbl=1;backgroundOutline=1;size=10;fillColor=#1ABC9C;strokeColor=#16A085;fontColor=#FFFFFF;fontSize=11;strokeWidth=2;" value="存储录音文件和配置&#xa;S3" vertex="1">
          <mxGeometry height="90.24000000000001" width="136" x="50" y="307.2" as="geometry" />
        </mxCell>
        <mxCell id="MSGCACHE" parent="bg_storage" style="shape=cylinder3;whiteSpace=wrap;boundedLbl=1;backgroundOutline=1;size=10;fillColor=#2ECC71;strokeColor=#25A35A;fontColor=#FFFFFF;fontSize=11;strokeWidth=2;" value="SMS消息缓存&#xa;DynamoDB studio-Cache" vertex="1">
          <mxGeometry height="84.47999999999999" width="149" x="330" y="307.2" as="geometry" />
        </mxCell>
        <mxCell id="e31" edge="1" parent="bg_storage" source="CONFIG_MGR" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;dashed=1;dashPattern=8 4;strokeColor=#999999;fontColor=#666666;fontSize=10;exitX=0;exitY=0.75;exitDx=0;exitDy=0;" value="写入客户分析配置">
          <mxGeometry relative="1" x="0.5955" y="-10" as="geometry">
            <mxPoint as="offset" />
            <Array as="points">
              <mxPoint x="213" y="-330" />
              <mxPoint x="60" y="-330" />
            </Array>
            <mxPoint x="212.60905757234195" y="-320" as="sourcePoint" />
            <mxPoint x="60" y="60" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="bg_app" parent="1" style="rounded=1;whiteSpace=wrap;fillColor=#E3F2FD;strokeColor=#3498DB;strokeWidth=2;fontSize=14;fontStyle=1;verticalAlign=top;spacingTop=5;container=1;collapsible=0;" value="&#xa;应用层" vertex="1">
          <mxGeometry height="490" width="300" x="600" y="60" as="geometry" />
        </mxCell>
        <mxCell id="API" parent="bg_app" style="rounded=1;whiteSpace=wrap;fillColor=#F5A623;strokeColor=#2ECC71;fontColor=#FFFFFF;fontSize=11;strokeWidth=4;" value="数据查询和业务逻辑后端&#xa;studio-api/apps/api/src/lambda.ts" vertex="1">
          <mxGeometry height="121.6" width="242" x="29" y="78.4" as="geometry" />
        </mxCell>
        <mxCell id="WEB" parent="bg_app" style="rounded=1;whiteSpace=wrap;fillColor=#F5A623;strokeColor=#D4900F;fontColor=#FFFFFF;fontSize=11;strokeWidth=2;" value="用户操作的前端界面&#xa;studio-web/src/App.vue" vertex="1">
          <mxGeometry height="98" width="242" x="29" y="290" as="geometry" />
        </mxCell>
        <mxCell id="GET_CREDS" parent="bg_app" style="rounded=1;whiteSpace=wrap;fillColor=#F5A623;strokeColor=#2ECC71;fontColor=#FFFFFF;fontSize=11;strokeWidth=4;" value="跨服务提供解密的RC令牌&#xa;studio-api/apps/api/src/get-credentials-by-account.ts" vertex="1">
          <mxGeometry height="70" width="242" x="29" y="410" as="geometry" />
        </mxCell>
        <mxCell id="bg_aux" parent="1" style="rounded=1;whiteSpace=wrap;fillColor=#F5F5F5;strokeColor=#7F8C8D;strokeWidth=2;fontSize=14;fontStyle=1;verticalAlign=top;spacingTop=5;container=1;collapsible=0;" value="辅助服务" vertex="1">
          <mxGeometry height="480" width="280" x="1030" y="60" as="geometry" />
        </mxCell>
        <mxCell id="COMMON" parent="bg_aux" style="rounded=1;whiteSpace=wrap;fillColor=#7F8C8D;strokeColor=#6C7A7B;fontColor=#FFFFFF;fontSize=11;strokeWidth=2;" value="被多个服务共享的公共工具库&#xa;callytics-common/src/index.ts" vertex="1">
          <mxGeometry height="85.16129032258063" width="219.17" x="22.5" y="69.99916808149405" as="geometry" />
        </mxCell>
        <mxCell id="DISCORD" parent="bg_aux" style="rounded=1;whiteSpace=wrap;fillColor=#F5A623;strokeColor=#2ECC71;fontColor=#FFFFFF;fontSize=11;strokeWidth=4;" value="CloudWatch日志触发错误通知&#xa;ringcentralService/src/handlers/discord-error-notifier.ts" vertex="1">
          <mxGeometry height="85.16129032258063" width="242.5" x="21.25" y="299.99862478777584" as="geometry" />
        </mxCell>
        <mxCell id="DOCS" parent="bg_aux" style="rounded=1;whiteSpace=wrap;fillColor=#607D8B;strokeColor=#455A64;fontColor=#FFFFFF;fontSize=11;strokeWidth=2;" value="产品设计和架构的内部文档&#xa;docs/docs/" vertex="1">
          <mxGeometry height="85.16129032258063" width="221.66666666666666" x="22.5" y="179.99889643463493" as="geometry" />
        </mxCell>
        <mxCell id="e0" edge="1" parent="1" source="RC" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=4;strokeColor=#7EC8E3;fontColor=#333333;fontSize=11;" target="RCSS" value="Webhook 通知">
          <mxGeometry relative="1" x="0.2571" as="geometry">
            <mxPoint as="offset" />
            <Array as="points">
              <mxPoint x="640" y="-640" />
              <mxPoint x="640" y="-640" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="e3" edge="1" parent="1" source="RCSS" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=4;strokeColor=#7EC8E3;fontColor=#333333;fontSize=11;" target="SQS" value="转发事件(延迟5分钟)">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="410" y="-450" />
              <mxPoint x="20" y="-450" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="e4" edge="1" parent="1" source="SQS" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=4;strokeColor=#7EC8E3;fontColor=#333333;fontSize=11;" target="DL" value="触发处理">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="10" y="-220" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="e19" edge="1" parent="1" source="DL" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=4;strokeColor=#7EC8E3;fontColor=#333333;fontSize=11;" target="DEEPGRAM" value="发送录音">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="e7" edge="1" parent="1" source="DL" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=4;strokeColor=#7EC8E3;fontColor=#333333;fontSize=11;" target="S3" value="存储录音">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="-130" y="-190" />
              <mxPoint x="-130" y="417" />
            </Array>
            <mxPoint x="140" y="-190" as="sourcePoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="e20" edge="1" parent="1" source="DEEPGRAM" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=4;strokeColor=#2563EB;fontColor=#333333;fontSize=11;" target="SQS2" value="转录结果">
          <mxGeometry relative="1" x="0.0701" as="geometry">
            <mxPoint as="offset" />
          </mxGeometry>
        </mxCell>
        <mxCell id="e21" edge="1" parent="1" source="SQS2" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=4;strokeColor=#2563EB;fontColor=#333333;fontSize=11;" target="RP" value="触发处理">
          <mxGeometry relative="1" x="-0.114" y="-1" as="geometry">
            <mxPoint as="offset" />
            <Array as="points">
              <mxPoint x="900" y="-200" />
              <mxPoint x="900" y="-200" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="e6" edge="1" parent="1" source="RP" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=4;strokeColor=#2563EB;fontColor=#333333;fontSize=11;" target="DB" value="写入结构化结果">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="978" y="-160" />
              <mxPoint x="-10" y="-160" />
            </Array>
            <mxPoint x="1230" y="-201" as="sourcePoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="e22" edge="1" parent="1" source="RECON_ORCH" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=3;strokeColor=#9B59B6;fontColor=#333333;fontSize=11;" target="SQS3" value="调度修复">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="e23" edge="1" parent="1" source="SQS3" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=3;strokeColor=#9B59B6;fontColor=#333333;fontSize=11;" target="RECON_WORKER" value="触发修复">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="e24" edge="1" parent="1" source="RECON_WORKER" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=3;dashed=1;dashPattern=8 4;strokeColor=#9B59B6;fontColor=#333333;fontSize=11;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" target="SQS" value="注入合成事件">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="895" y="-40" />
              <mxPoint x="-20" y="-40" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="e8" edge="1" parent="1" source="EMAIL" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=4;strokeColor=#2ECC71;fontColor=#333333;fontSize=11;" target="LT" value="每5分钟轮询">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="e9" edge="1" parent="1" source="LT" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=4;strokeColor=#2ECC71;fontColor=#333333;fontSize=11;" target="LEADDB" value="存储线索">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="1330" y="-631" />
              <mxPoint x="1330" y="30" />
              <mxPoint x="261" y="30" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="e11" edge="1" parent="1" source="API" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=4;strokeColor=#E91E63;fontColor=#333333;fontSize=11;" target="MSGCACHE" value="写入SMS缓存">
          <mxGeometry relative="1" x="0.1262" as="geometry">
            <mxPoint as="offset" />
            <Array as="points">
              <mxPoint x="710" y="320" />
              <mxPoint x="480" y="320" />
              <mxPoint x="480" y="400" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="e12" edge="1" parent="1" source="MSGCACHE" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=4;strokeColor=#000000;fontColor=#333333;fontSize=11;" target="API" value="读取SMS缓存">
          <mxGeometry relative="1" x="0.0207" as="geometry">
            <mxPoint as="offset" />
            <Array as="points">
              <mxPoint x="510" y="420" />
              <mxPoint x="510" y="340" />
              <mxPoint x="730" y="340" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="e13" edge="1" parent="1" source="DB" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=4;strokeColor=#333333;fontColor=#333333;fontSize=11;entryX=0;entryY=0.75;entryDx=0;entryDy=0;" target="API" value="查询通话">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="8" y="230" />
              <mxPoint x="629" y="230" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="e15" edge="1" parent="1" source="LEADDB" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=4;strokeColor=#333333;fontColor=#333333;fontSize=11;" target="API" value="查询线索">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="480" y="180" />
              <mxPoint x="480" y="180" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="e16" edge="1" parent="1" source="API" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=4;strokeColor=#333333;fontColor=#333333;fontSize=11;" target="WEB" value="通话+线索+SMS">
          <mxGeometry relative="1" x="-0.1142" as="geometry">
            <mxPoint as="offset" />
            <Array as="points">
              <mxPoint x="960" y="220" />
              <mxPoint x="960" y="390" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="e1" edge="1" parent="1" source="RC" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;dashed=1;dashPattern=8 4;strokeColor=#999999;fontColor=#666666;fontSize=10;" target="RCS" value="OAuth 认证">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="418" y="-680" />
              <mxPoint x="418" y="-680" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="e2" edge="1" parent="1" source="RCS" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;dashed=1;dashPattern=8 4;strokeColor=#999999;fontColor=#666666;fontSize=10;" target="RCSS" value="提供令牌">
          <mxGeometry relative="1" x="-0.0065" as="geometry">
            <mxPoint as="offset" />
            <Array as="points">
              <mxPoint x="418" y="-580" />
              <mxPoint x="418" y="-580" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="e5" edge="1" parent="1" source="PROMPT" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;dashed=1;dashPattern=8 4;strokeColor=#999999;fontColor=#666666;fontSize=10;" target="RP" value="指导分析">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="880" y="-270" />
              <mxPoint x="880" y="-270" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="e17" edge="1" parent="1" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;dashed=1;dashPattern=8 4;strokeColor=#999999;fontColor=#666666;fontSize=10;" target="API" value="被引用">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="1050" y="180" />
            </Array>
            <mxPoint x="1050" y="180" as="sourcePoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="e18" edge="1" parent="1" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;dashed=1;dashPattern=8 4;strokeColor=#999999;fontColor=#666666;fontSize=10;" value="被引用">
          <mxGeometry relative="1" x="-0.176" as="geometry">
            <mxPoint as="offset" />
            <Array as="points">
              <mxPoint x="1350" y="180" />
              <mxPoint x="1350" y="-270" />
              <mxPoint x="980" y="-270" />
              <mxPoint x="980" y="-230" />
            </Array>
            <mxPoint x="1269" y="180" as="sourcePoint" />
            <mxPoint x="980" y="-230" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="e25" edge="1" parent="1" source="API" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;dashed=1;dashPattern=8 4;strokeColor=#999999;fontColor=#666666;fontSize=10;" target="SUB_MGR" value="Lambda调用&#xa;管理订阅">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="-230" y="250" />
              <mxPoint x="-230" y="-635" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="e26" edge="1" parent="1" source="API" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;dashed=1;dashPattern=8 4;strokeColor=#999999;fontColor=#666666;fontSize=10;" target="CONFIG_MGR" value="Lambda调用&#xa;OAuth回调配置">
          <mxGeometry relative="1" x="-0.3918" as="geometry">
            <mxPoint as="offset" />
            <Array as="points">
              <mxPoint x="710" y="50" />
              <mxPoint x="60" y="50" />
              <mxPoint x="60" y="-280" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="e27" edge="1" parent="1" source="DL" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;dashed=1;dashPattern=8 4;strokeColor=#999999;fontColor=#666666;fontSize=10;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" target="bg_app" value="Lambda调用&#xa;获取RC令牌">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="-170" y="-201" />
              <mxPoint x="-170" y="590" />
              <mxPoint x="750" y="590" />
            </Array>
            <mxPoint x="629" y="375" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="e28" edge="1" parent="1" source="ANALYTICS" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;dashed=1;dashPattern=8 4;strokeColor=#999999;fontColor=#666666;fontSize=10;exitX=0.455;exitY=0.976;exitDx=0;exitDy=0;exitPerimeter=0;" target="DB" value="读取分析数据">
          <mxGeometry relative="1" x="-0.9327" as="geometry">
            <mxPoint as="offset" />
            <Array as="points">
              <mxPoint x="1138" y="-83" />
              <mxPoint x="1138" y="20" />
              <mxPoint x="40" y="20" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="e29" edge="1" parent="1" source="RP" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;dashed=1;dashPattern=8 4;strokeColor=#999999;fontColor=#666666;fontSize=10;exitX=0.575;exitY=-0.012;exitDx=0;exitDy=0;exitPerimeter=0;" target="DISCORD" value="错误日志通知">
          <mxGeometry relative="1" x="0.3003" as="geometry">
            <mxPoint y="-1" as="offset" />
            <Array as="points">
              <mxPoint x="939" y="-232" />
              <mxPoint x="940" y="-290" />
              <mxPoint x="1390" y="-290" />
              <mxPoint x="1390" y="403" />
            </Array>
            <mxPoint x="1010" y="-232" as="sourcePoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="e14" edge="1" parent="1" source="S3" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=4;strokeColor=#333333;fontColor=#333333;fontSize=11;exitX=0.5;exitY=0;exitDx=0;exitDy=0;exitPerimeter=0;" target="API" value="读取录音">
          <mxGeometry relative="1" x="-0.0007" as="geometry">
            <mxPoint as="offset" />
            <Array as="points">
              <mxPoint x="10" y="370" />
              <mxPoint x="10" y="300" />
              <mxPoint x="670" y="300" />
            </Array>
            <mxPoint x="50" y="378.9999999999998" as="sourcePoint" />
            <mxPoint x="688.7379999999998" y="270.94560000000024" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="e10" edge="1" parent="1" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=4;strokeColor=#E91E63;fontColor=#333333;fontSize=11;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.75;entryY=0;entryDx=0;entryDy=0;" target="API" value="按需拉取SMS">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="470" y="-840" />
              <mxPoint x="1425" y="-840" />
              <mxPoint x="1425" y="50" />
              <mxPoint x="810" y="50" />
            </Array>
            <mxPoint x="470" y="-800.09" as="sourcePoint" />
            <mxPoint x="1435" y="199.91" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="e30" edge="1" parent="1" source="RP" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=4;strokeColor=#2563EB;fontColor=#333333;fontSize=11;" target="BEDROCK_AI" value="调用AI分析">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
      </root>
    </mxGraphModel>
  </diagram>
</mxfile>
