docs: add class diagram for core entities in C4 architecture
Desktop CI — Headless Tests & Build / Compose Desktop — Tests (headless) & Build (push) Has been cancelled
Desktop CI — Headless Tests & Build / Compose Desktop — Tests (headless) & Build (push) Has been cancelled
- Created `class_diagram_core.drawio` to visualize core domain entities (`Veranstaltung`, `Platz`, `Turnier`, etc.). - Included relationships and associations between entities such as 1:N and reference mappings. - Structured diagram to align with Clean Architecture principles for better domain comprehension.
This commit is contained in:
@@ -0,0 +1,92 @@
|
||||
<mxfile host="Electron" modified="2026-04-07T12:00:00.000Z" agent="Lead Architect" version="21.0.0" type="device">
|
||||
<diagram id="class_diagram" name="Core Class Diagram">
|
||||
<mxGraphModel dx="1600" dy="1200" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0">
|
||||
<root>
|
||||
<mxCell id="0" />
|
||||
<mxCell id="1" parent="0" />
|
||||
|
||||
<!-- Veranstaltung -->
|
||||
<mxCell id="class_veranstaltung" value="<b>Veranstaltung</b><hr>+ id: UUID<br>+ name: String<br>+ ort: String<br>+ startDatum: LocalDate<br>+ endDatum: LocalDate<br>+ nennschluss: DateTime<br>+ status: Enum" style="shape=swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=30;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;fillColor=#ffe6cc;strokeColor=#d79b00;" vertex="1" parent="1">
|
||||
<mxGeometry x="40" y="40" width="220" height="150" as="geometry" />
|
||||
</mxCell>
|
||||
|
||||
<!-- Austragungsplatz -->
|
||||
<mxCell id="class_platz" value="<b>Austragungsplatz</b><hr>+ id: UUID<br>+ bezeichnung: String (z.B. Waldarena)<br>+ typ: Enum (Austragung, Vorbereitung)<br>+ sparte: Enum? (optional)<br>+ masse: String" style="shape=swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=30;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;fillColor=#ffe6cc;strokeColor=#d79b00;" vertex="1" parent="1">
|
||||
<mxGeometry x="340" y="40" width="260" height="130" as="geometry" />
|
||||
</mxCell>
|
||||
|
||||
<!-- TurnierArtikel -->
|
||||
<mxCell id="class_artikel" value="<b>TurnierArtikel</b><hr>+ id: UUID<br>+ bezeichnung: String (z.B. Heu, Ansage)<br>+ preisCent: Int<br>+ typ: Enum (Automatisch, Manuell)" style="shape=swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=30;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
|
||||
<mxGeometry x="660" y="40" width="240" height="110" as="geometry" />
|
||||
</mxCell>
|
||||
|
||||
<!-- Turnier -->
|
||||
<mxCell id="class_turnier" value="<b>Turnier</b><hr>+ id: UUID<br>+ turnierNummer: String (26128)<br>+ sparte: Enum<br>+ kategorie: Enum (C-NEU)<br>+ einschraenkungen: List&lt;Enum&gt;<br>+ turnierbeauftragterId: UUID" style="shape=swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=30;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;fillColor=#ffe6cc;strokeColor=#d79b00;" vertex="1" parent="1">
|
||||
<mxGeometry x="40" y="260" width="220" height="150" as="geometry" />
|
||||
</mxCell>
|
||||
|
||||
<!-- Bewerb -->
|
||||
<mxCell id="class_bewerb" value="<b>Bewerb</b><hr><b>Identifikation:</b><br>+ bewerbNummer: String (z.B. 14a)<br>+ bezeichnung: String<br>+ beschreibung: String?<br><b>Sportliches:</b><br>+ klasse / hoeheCm: String / Int<br>+ pruefungsTyp: Enum<br>+ aufgabe / aufgabenNummer: String?<br>+ paraGrade: String?<br><b>Zeitplan &amp; Ort:</b><br>+ austragungsplatzId: UUID?<br>+ geplantesDatum: LocalDate<br>+ beginnZeitTyp: Enum (FIX, ANSCHL)<br>+ beginnZeit: Time?<br>+ reitdauerMin / umbauMin: Int<br>+ besichtigungMin: Int<br>+ stechenGeplant: Boolean<br><b>Finanzen &amp; Orga:</b><br>+ startgeldCent: Int<br>+ geldpreisAusbezahlt: Boolean<br>+ teilungsTyp: Enum (inkl. MANUELL)" style="shape=swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=30;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
|
||||
<mxGeometry x="340" y="260" width="280" height="340" as="geometry" />
|
||||
</mxCell>
|
||||
|
||||
<!-- RichterEinsatz -->
|
||||
<mxCell id="class_richter" value="<b>RichterEinsatz</b><hr>+ funktionaerId: UUID<br>+ position: String (z.B. 'C', 'Abreiteplatz')" style="shape=swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=30;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
|
||||
<mxGeometry x="700" y="260" width="240" height="80" as="geometry" />
|
||||
</mxCell>
|
||||
|
||||
<!-- Abteilung -->
|
||||
<mxCell id="class_abteilung" value="<b>Abteilung</b><hr>+ id: UUID<br>+ abteilungsNummer: Int<br>+ bezeichnung: String (z.B. R1)<br>+ teilungsTyp: Enum<br>+ starterAnzahl: Int" style="shape=swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=30;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
|
||||
<mxGeometry x="340" y="660" width="220" height="130" as="geometry" />
|
||||
</mxCell>
|
||||
|
||||
<!-- Nennung -->
|
||||
<mxCell id="class_nennung" value="<b>Nennung</b><hr>+ id: UUID<br>+ reiterId: UUID<br>+ pferdId: UUID<br>+ zahlerId: UUID<br>+ status: Enum<br>+ istNachnennung: Boolean" style="shape=swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=30;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="1">
|
||||
<mxGeometry x="660" y="660" width="220" height="130" as="geometry" />
|
||||
</mxCell>
|
||||
|
||||
<!-- Relationen -->
|
||||
<!-- Veranstaltung -> Platz -->
|
||||
<mxCell id="rel_ver_platz" value="1 : N" style="endArrow=classic;html=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="class_veranstaltung" target="class_platz">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
|
||||
<!-- Veranstaltung -> Artikel -->
|
||||
<mxCell id="rel_ver_artikel" value="1 : N" style="endArrow=classic;html=1;exitX=1;exitY=0.75;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="class_veranstaltung" target="class_artikel">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
|
||||
<!-- Veranstaltung -> Turnier -->
|
||||
<mxCell id="rel_ver_tur" value="1 : N" style="endArrow=classic;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="class_veranstaltung" target="class_turnier">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
|
||||
<!-- Turnier -> Bewerb -->
|
||||
<mxCell id="rel_tur_bew" value="1 : N" style="endArrow=classic;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;" edge="1" parent="1" source="class_turnier" target="class_bewerb">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
|
||||
<!-- Bewerb -> Richter -->
|
||||
<mxCell id="rel_bew_richter" value="1 : N" style="endArrow=classic;html=1;exitX=1;exitY=0.1;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="class_bewerb" target="class_richter">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
|
||||
<!-- Bewerb -> Platz (Referenz) -->
|
||||
<mxCell id="rel_bew_platz" value="Ref" style="endArrow=dashed;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="class_bewerb" target="class_platz">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
|
||||
<!-- Bewerb -> Abteilung -->
|
||||
<mxCell id="rel_bew_abt" value="1 : N" style="endArrow=classic;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="class_bewerb" target="class_abteilung">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
|
||||
<!-- Abteilung -> Nennung -->
|
||||
<mxCell id="rel_abt_nen" value="1 : N" style="endArrow=classic;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="class_abteilung" target="class_nennung">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
|
||||
</root>
|
||||
</mxGraphModel>
|
||||
</diagram>
|
||||
</mxfile>
|
||||
Reference in New Issue
Block a user