<mxfile host="Electron" agent="Claude">
  <diagram id="blazor-arch" name="Blazor Architecture - Two Faces">
    <mxGraphModel dx="2074" dy="850" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1280" pageHeight="1000" math="0" shadow="0">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />
        <mxCell id="fe_box" parent="1" style="rounded=1;whiteSpace=wrap;arcSize=6;fillColor=light-dark(#c0e3ff, #1d293b);strokeColor=#6c8ebf;fontStyle=1;fontSize=14;verticalAlign=bottom;spacingTop=8;align=left;spacingLeft=12;spacingBottom=10;fontFamily=Fira Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DFira%2BSans;strokeWidth=4;" value="Blazor Frontend (DE / EN) — Client" vertex="1">
          <mxGeometry height="150" width="1120" x="40" y="30" as="geometry" />
        </mxCell>
        <mxCell id="face1" parent="1" style="rounded=1;whiteSpace=wrap;arcSize=10;fillColor=light-dark(#e6fec3, #1f2f1e);strokeColor=light-dark(#76c800, #446e2c);fontSize=13;align=center;verticalAlign=middle;fontStyle=1;html=1;fontFamily=Fira Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DFira%2BSans;strokeWidth=3;" value="&lt;font style=&quot;font-size: 14px;&quot;&gt;Strang 1 — Ressourcen und Contentverwaltung&lt;br&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;Excel Import/Export, Rules, IPAS (SAP)&lt;br&gt;Klassen, Attribute, Tabellen, Autorules&lt;/span&gt;&lt;/font&gt;" vertex="1">
          <mxGeometry height="85" width="430" x="80" y="55" as="geometry" />
        </mxCell>
        <mxCell id="be_box" parent="1" style="rounded=1;whiteSpace=wrap;arcSize=6;fillColor=light-dark(#e5fec1, #1f2f1e);strokeColor=light-dark(#76c800, #446e2c);fontStyle=1;fontSize=14;verticalAlign=bottom;spacingTop=8;align=left;spacingLeft=12;spacingBottom=10;fontFamily=Fira Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DFira%2BSans;strokeWidth=4;" value=".NET 8 Backend (Web API)" vertex="1">
          <mxGeometry height="290" width="540" x="50" y="291" as="geometry" />
        </mxCell>
        <mxCell id="-et3D9VFUusq47QecnUc-21" edge="1" parent="1" source="svc_import" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;strokeColor=#97D077;strokeWidth=2;" target="svc_class">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="svc_import" parent="1" style="rounded=1;whiteSpace=wrap;fillColor=light-dark(#ccff83, #1f2f1e);strokeColor=#82b366;fontSize=12;align=center;fontStyle=1;html=1;fontFamily=Fira Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DFira%2BSans;" value="&lt;font style=&quot;font-size: 13px;&quot;&gt;Import Service&lt;br&gt;Daten Normalisierung&lt;br&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;Excel / XML&lt;/span&gt;&lt;/font&gt;" vertex="1">
          <mxGeometry height="58" width="151" x="59" y="340" as="geometry" />
        </mxCell>
        <mxCell id="svc_class" parent="1" style="rounded=1;whiteSpace=wrap;fillColor=light-dark(#ccff83, #ededed);strokeColor=#82b366;fontSize=12;align=center;html=1;fontFamily=Fira Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DFira%2BSans;" value="&lt;font style=&quot;font-size: 13px;&quot;&gt;&lt;b&gt;Klassifizierung&lt;br&gt;&lt;/b&gt;Klassen, Attribute&lt;/font&gt;" vertex="1">
          <mxGeometry height="58" width="150" x="235" y="340" as="geometry" />
        </mxCell>
        <mxCell id="-et3D9VFUusq47QecnUc-22" edge="1" parent="1" source="svc_rules" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;strokeWidth=2;strokeColor=#97D077;" target="cad_exec">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="svc_rules" parent="1" style="rounded=1;whiteSpace=wrap;fillColor=light-dark(#ccff83, #1f2f1e);strokeColor=#82b366;fontSize=12;align=center;html=1;fontStyle=1;fontFamily=Fira Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DFira%2BSans;" value="&lt;font style=&quot;font-size: 13px;&quot;&gt;Rule Engine&lt;br&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;Autorules DSL&lt;/span&gt;&lt;/font&gt;" vertex="1">
          <mxGeometry height="58" width="150" x="250" y="423" as="geometry" />
        </mxCell>
        <mxCell id="-et3D9VFUusq47QecnUc-23" edge="1" parent="1" source="cad_exec" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;endFill=0;strokeWidth=2;strokeColor=#97D077;startArrow=classic;startFill=1;" target="svc_class">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="cad_exec" parent="1" style="rounded=1;whiteSpace=wrap;fillColor=light-dark(#ccff83, #1f2f1e);strokeColor=#82b366;fontSize=12;align=center;html=1;fontFamily=Fira Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DFira%2BSans;" value="&lt;font style=&quot;font-size: 13px;&quot;&gt;&lt;b&gt;Autorules Executor&lt;/b&gt;&lt;/font&gt;" vertex="1">
          <mxGeometry height="58" width="140" x="410" y="340" as="geometry" />
        </mxCell>
        <mxCell id="be_cross" parent="1" style="rounded=1;whiteSpace=wrap;fillColor=#f5f5f5;strokeColor=#999999;fontSize=11;align=center;fontStyle=2;fontFamily=Fira Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DFira%2BSans;strokeWidth=2;" value="Logging · Auth · Localization · JSON API" vertex="1">
          <mxGeometry height="40" width="230" x="340" y="520" as="geometry" />
        </mxCell>
        <mxCell id="db" parent="1" style="shape=cylinder3;whiteSpace=wrap;boundedLbl=1;backgroundOutline=1;size=8;fillColor=light-dark(#fde0f1, #392f3f);strokeColor=light-dark(#f566ba, #9577a3);fontSize=12;align=center;html=1;fontFamily=Fira Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DFira%2BSans;strokeWidth=4;" value="&lt;font style=&quot;font-size: 13px;&quot;&gt;&lt;b&gt;Datenbank (SQL Server / PostgreSQL)&lt;/b&gt;&lt;br&gt;Klassen, Objekte, Attribute, Regeltabellen, Tabellen&lt;/font&gt;" vertex="1">
          <mxGeometry height="95" width="360" x="92" y="626" as="geometry" />
        </mxCell>
        <mxCell id="queue" parent="1" style="rounded=1;whiteSpace=wrap;shape=process;fillColor=light-dark(#fff2cc, #3a3320);strokeColor=#d6b656;fontSize=14;fontStyle=1;align=center;html=1;fontFamily=Fira Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DFira%2BSans;strokeWidth=3;" value="Queue" vertex="1">
          <mxGeometry height="55" width="260" x="765" y="201" as="geometry" />
        </mxCell>
        <mxCell id="cad_svc" parent="1" style="rounded=1;whiteSpace=wrap;arcSize=6;fillColor=light-dark(#ffeae0, #281d00);strokeColor=light-dark(#ff9868, #6d5100);fontStyle=1;fontSize=14;verticalAlign=bottom;spacingTop=8;align=left;spacingLeft=12;spacingBottom=10;fontFamily=Fira Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DFira%2BSans;strokeWidth=4;" value="CAD Service" vertex="1">
          <mxGeometry height="250" width="460" x="655" y="295" as="geometry" />
        </mxCell>
        <mxCell id="cad_plugin" parent="1" style="rounded=1;whiteSpace=wrap;fillColor=light-dark(#ffeae0, #281d00);strokeColor=light-dark(#ff9868, #6d5100);fontSize=12;align=left;html=1;verticalAlign=bottom;spacingLeft=6;fontStyle=1;fontFamily=Fira Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DFira%2BSans;strokeWidth=2;spacingBottom=5;" value="Creo - Service PlugIn" vertex="1">
          <mxGeometry height="132" width="400" x="685" y="311" as="geometry" />
        </mxCell>
        <mxCell id="cad_access" parent="1" style="rounded=1;whiteSpace=wrap;fillColor=light-dark(#ffeae0, #ededed);strokeColor=light-dark(#ff9868, #6d5100);fontSize=12;align=center;html=1;fontStyle=0;fontFamily=Fira Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DFira%2BSans;strokeWidth=2;" value="Access Layer" vertex="1">
          <mxGeometry height="28" width="360" x="705" y="328" as="geometry" />
        </mxCell>
        <mxCell id="-et3D9VFUusq47QecnUc-2" edge="1" parent="1" source="cad_jlink" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;strokeColor=#E3A065;startArrow=classic;startFill=1;" target="cad_creo">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="cad_jlink" parent="1" style="rounded=1;whiteSpace=wrap;fillColor=light-dark(#ffeae0, #281d00);strokeColor=light-dark(#ff9868, #6d5100);fontSize=12;align=center;html=1;fontStyle=0;fontFamily=Fira Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DFira%2BSans;strokeWidth=2;" value="Java Bridge → Creo (J-Link)" vertex="1">
          <mxGeometry height="45" width="360" x="705" y="368" as="geometry" />
        </mxCell>
        <mxCell id="cad_creo" parent="1" style="rounded=1;whiteSpace=wrap;fillColor=light-dark(#ffeae0, #281d00);strokeColor=light-dark(#ff9868, #6d5100);fontSize=13;align=center;html=1;fontStyle=1;fontFamily=Fira Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DFira%2BSans;strokeWidth=2;" value="PTC CREO" vertex="1">
          <mxGeometry height="60" width="200" x="785" y="469" as="geometry" />
        </mxCell>
        <mxCell id="-et3D9VFUusq47QecnUc-19" edge="1" parent="1" source="ext_wc" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" target="cad_creo">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="ext_wc" parent="1" style="rounded=1;whiteSpace=wrap;fillColor=#f5f5f5;strokeColor=#999999;fontSize=12;fontStyle=1;align=center;fontFamily=Fira Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DFira%2BSans;strokeWidth=3;" value="Windchill&#xa;(PDM)" vertex="1">
          <mxGeometry height="60" width="120" x="1140" y="469" as="geometry" />
        </mxCell>
        <mxCell id="leg1" parent="1" style="text;fontSize=12;fontColor=light-dark(#76c800, #446e2c);fontStyle=1;align=left;fontFamily=Fira Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DFira%2BSans;" value="■ Grün = CRUD / .NET Backend" vertex="1">
          <mxGeometry height="20" width="240" x="50" y="891" as="geometry" />
        </mxCell>
        <mxCell id="leg2" parent="1" style="text;fontSize=12;fontColor=light-dark(#ff9868, #6d5100);fontStyle=1;align=left;fontFamily=Fira Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DFira%2BSans;" value="■ Orange = CAD Service" vertex="1">
          <mxGeometry height="20" width="145" x="231" y="891" as="geometry" />
        </mxCell>
        <mxCell id="leg3" parent="1" style="text;fontSize=12;fontColor=#d6b656;fontStyle=1;align=left;fontFamily=Fira Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DFira%2BSans;" value="■ Gelb = Queue" vertex="1">
          <mxGeometry height="20" width="100" x="380" y="891" as="geometry" />
        </mxCell>
        <mxCell id="e_rest" edge="1" parent="1" source="fe_box" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeColor=light-dark(#76c800, #446e2c);strokeWidth=3;startArrow=classic;startFill=1;endArrow=classic;endFill=1;fontSize=12;fontStyle=2;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fontFamily=Fira Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DFira%2BSans;" target="be_box" value="REST / SignalR">
          <mxGeometry relative="1" y="20" as="geometry">
            <mxPoint as="offset" />
          </mxGeometry>
        </mxCell>
        <mxCell id="e_efcore" edge="1" parent="1" source="be_box" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeColor=light-dark(#f566ba, #9577a3);strokeWidth=3;fontSize=11;fontStyle=2;exitX=0.411;exitY=1.003;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fontFamily=Fira Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DFira%2BSans;exitPerimeter=0;" target="db" value="EF Core">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="-et3D9VFUusq47QecnUc-1" parent="1" style="rounded=1;whiteSpace=wrap;arcSize=10;fillColor=light-dark(#e6fec3, #1f2f1e);strokeColor=light-dark(#76c800, #446e2c);fontSize=13;align=center;verticalAlign=middle;fontStyle=1;html=1;fontFamily=Fira Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DFira%2BSans;strokeWidth=3;" value="&lt;font style=&quot;font-size: 14px;&quot;&gt;Strang 2 — CAD Steuerung&lt;br&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Auftrags- und Ergebnissverarbeitung&lt;/span&gt;&lt;/font&gt;" vertex="1">
          <mxGeometry height="85" width="430" x="680" y="55" as="geometry" />
        </mxCell>
        <mxCell id="-et3D9VFUusq47QecnUc-5" edge="1" parent="1" source="-et3D9VFUusq47QecnUc-1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=classic;startFill=1;strokeWidth=2;strokeColor=#E3A065;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" target="queue">
          <mxGeometry relative="1" as="geometry">
            <mxPoint x="890" y="219" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="-et3D9VFUusq47QecnUc-9" edge="1" parent="1" source="queue" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.522;entryY=0.012;entryDx=0;entryDy=0;entryPerimeter=0;fontColor=#E3A065;strokeColor=#E3A065;strokeWidth=2;startArrow=classic;startFill=1;" target="cad_svc">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="-et3D9VFUusq47QecnUc-11" edge="1" parent="1" source="cad_exec" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;strokeWidth=2;curved=1;endArrow=none;endFill=0;startArrow=classic;startFill=1;fillColor=#d5e8d4;strokeColor=light-dark(#76c800, #446e2c);dashed=1;dashPattern=8 8;" target="-et3D9VFUusq47QecnUc-1">
          <mxGeometry relative="1" as="geometry">
            <mxPoint x="370" y="445" as="sourcePoint" />
            <mxPoint x="628" y="93" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="-et3D9VFUusq47QecnUc-12" connectable="0" parent="-et3D9VFUusq47QecnUc-11" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=12;" value="&lt;font face=&quot;Fira Sans&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Fira+Sans&quot;&gt;Read&lt;/font&gt;" vertex="1">
          <mxGeometry relative="1" x="-0.3289" y="-4" as="geometry">
            <mxPoint x="41" y="-49" as="offset" />
          </mxGeometry>
        </mxCell>
        <mxCell id="-et3D9VFUusq47QecnUc-13" parent="1" style="rounded=1;whiteSpace=wrap;arcSize=6;fillColor=#f5f5f5;strokeColor=#999999;fontStyle=1;fontSize=14;verticalAlign=bottom;spacingTop=8;align=left;dashed=1;dashPattern=8 4;spacingLeft=10;spacingBottom=10;fontFamily=Fira Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DFira%2BSans;strokeWidth=3;" value="Weitere Konsumenten" vertex="1">
          <mxGeometry height="150" width="270" x="655" y="630" as="geometry" />
        </mxCell>
        <mxCell id="-et3D9VFUusq47QecnUc-14" parent="1" style="rounded=1;whiteSpace=wrap;fillColor=#f5f5f5;strokeColor=#999999;fontSize=12;fontStyle=1;align=left;spacingLeft=5;fontFamily=Fira Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DFira%2BSans;strokeWidth=2;" value="Sizing Tool" vertex="1">
          <mxGeometry height="40" width="135" x="684" y="643" as="geometry" />
        </mxCell>
        <mxCell id="-et3D9VFUusq47QecnUc-15" parent="1" style="rounded=1;whiteSpace=wrap;fillColor=#f5f5f5;strokeColor=#999999;fontSize=12;fontStyle=1;align=left;spacingLeft=5;fontFamily=Fira Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DFira%2BSans;strokeWidth=2;" value="Montage- Berechnung" vertex="1">
          <mxGeometry height="40" width="135" x="684" y="700" as="geometry" />
        </mxCell>
        <mxCell id="-et3D9VFUusq47QecnUc-16" edge="1" parent="1" source="-et3D9VFUusq47QecnUc-13" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.655;entryDx=0;entryDy=0;curved=1;dashed=1;dashPattern=8 8;strokeWidth=2;entryPerimeter=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" target="cad_exec">
          <mxGeometry relative="1" as="geometry">
            <mxPoint x="745" y="504" as="sourcePoint" />
            <mxPoint x="610" y="341" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="-et3D9VFUusq47QecnUc-17" connectable="0" parent="-et3D9VFUusq47QecnUc-16" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=12;fontFamily=Fira Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DFira%2BSans;" value="Read" vertex="1">
          <mxGeometry relative="1" x="-0.3236" y="-4" as="geometry">
            <mxPoint x="28" as="offset" />
          </mxGeometry>
        </mxCell>
        <mxCell id="-et3D9VFUusq47QecnUc-18" parent="1" style="shape=note;size=20;whiteSpace=wrap;html=1;fontSize=10;align=left;labelPosition=center;verticalLabelPosition=middle;verticalAlign=middle;spacingLeft=10;fontStyle=0;fontFamily=Fira Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DFira%2BSans;strokeWidth=2;" value="Schnittstelle offen&lt;br&gt;Annahme:&lt;br&gt;XML- Export im legacy Format&amp;nbsp;" vertex="1">
          <mxGeometry height="40" width="162" x="469" y="702" as="geometry" />
        </mxCell>
        <mxCell id="-et3D9VFUusq47QecnUc-20" parent="1" style="shape=note;size=20;whiteSpace=wrap;html=1;fontSize=10;align=left;labelPosition=center;verticalLabelPosition=middle;verticalAlign=middle;spacingLeft=10;fontStyle=0;fontFamily=Fira Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DFira%2BSans;strokeWidth=2;" value="&lt;font style=&quot;font-size: 11px;&quot;&gt;Verknüpftes&amp;nbsp;&lt;/font&gt;&lt;div&gt;&lt;font style=&quot;font-size: 11px;&quot;&gt;PDM&lt;/font&gt;&lt;/div&gt;" vertex="1">
          <mxGeometry height="37" width="95" x="1085" y="428" as="geometry" />
        </mxCell>
      </root>
    </mxGraphModel>
  </diagram>
</mxfile>
