docs(c4): migrate architecture diagrams to draw.io and refine container/workflow visualizations
- Replaced outdated `.puml` and `.mermaid` diagrams with modernized `.drawio` versions for enhanced clarity. - Added `container_diagram.drawio` to depict offline-first architecture and backend synchronization workflow. - Introduced `workflow_turnieranlage.drawio` to visualize the tournament creation process (3-step wizard). - Archived legacy diagrams under `docs/01_Architecture/_archive` for reference.
This commit is contained in:
@@ -0,0 +1,158 @@
|
||||
@startuml
|
||||
skinparam handwritten false
|
||||
skinparam monochrome false
|
||||
skinparam packageStyle rectangle
|
||||
skinparam shadowing false
|
||||
hide empty members
|
||||
|
||||
title Domain Model: Umbenennung & Erweiterung (Soll-Zustand)
|
||||
|
||||
package "Event Management Context" {
|
||||
class Veranstaltung <<Tenant Boundary>> {
|
||||
+ id: UUID
|
||||
+ name: String
|
||||
+ ort: String
|
||||
+ startDatum: LocalDate
|
||||
+ endDatum: LocalDate
|
||||
-- ZNS.zip Upload (Stammdaten) --
|
||||
}
|
||||
|
||||
class Austragungsplatz {
|
||||
+ id: UUID
|
||||
+ name: String (z.B. "Waldarena")
|
||||
+ typ: String ("Austragungsplatz", "Vorbereitungsplatz")
|
||||
+ sparte: SparteE [0..1]
|
||||
}
|
||||
|
||||
class Turnier {
|
||||
+ id: UUID
|
||||
+ turnierNummer: String (z.B. "26128")
|
||||
+ sparte: SparteE
|
||||
+ kategorie: TurnierkategorieE
|
||||
+ nennschluss: DateTime
|
||||
+ einschraenkungen: List<TeilnehmerKreisE>
|
||||
-- n2-xxxxx.dat Upload --
|
||||
+ turnierbeauftragterId: UUID
|
||||
}
|
||||
|
||||
class Ausschreibung {
|
||||
+ id: UUID
|
||||
+ titel: String
|
||||
+ status: AusschreibungsStatusE
|
||||
}
|
||||
}
|
||||
|
||||
package "Billing Context" {
|
||||
class TurnierArtikel {
|
||||
+ id: UUID
|
||||
+ name: String (z.B. "Ansage", "Heu")
|
||||
+ preis: Money
|
||||
+ typ: String ("AUTOMATISCH", "MANUELL")
|
||||
}
|
||||
|
||||
class Konto {
|
||||
+ id: UUID
|
||||
+ saldo: Money
|
||||
}
|
||||
}
|
||||
|
||||
package "Competition Context" {
|
||||
class Bewerb {
|
||||
+ id: UUID
|
||||
+ bewerbNummer: Int (z.B. 14)
|
||||
+ bezeichnung: String (z.B. "Standardspringprüfung")
|
||||
+ beschreibung: String (z.B. "Pony Einsteiger Cup")
|
||||
+ klasse: String (z.B. "LM")
|
||||
+ richtverfahren: PruefungsTypE
|
||||
+ aufgabe: String (z.B. "R1")
|
||||
+ geldpreisAusbezahlt: Boolean
|
||||
+ reitdauerMinuten: Int
|
||||
+ umbauMinuten: Int
|
||||
+ besichtigungMinuten: Int
|
||||
--
|
||||
+ teilungsTyp: AbteilungsTeilungsTypE (+ MANUELL)
|
||||
}
|
||||
|
||||
class RichterEinsatz {
|
||||
+ funktionaerId: UUID
|
||||
+ position: String (z.B. "C", "Aufsicht")
|
||||
}
|
||||
|
||||
class Abteilung {
|
||||
+ id: UUID
|
||||
+ abteilungsNummer: Int
|
||||
+ bezeichnung: String
|
||||
}
|
||||
}
|
||||
|
||||
package "Registration Context" {
|
||||
class Nennung {
|
||||
+ id: UUID
|
||||
+ status: NennStatusE
|
||||
+ istNachnennung: Boolean
|
||||
+ reiterId: UUID
|
||||
+ pferdId: UUID
|
||||
}
|
||||
|
||||
class NennungsTransfer {
|
||||
+ id: UUID
|
||||
+ ursprungsNennungId: UUID
|
||||
+ neueNennungId: UUID
|
||||
}
|
||||
}
|
||||
|
||||
package "Actor Context (Masterdata)" {
|
||||
class Reiter {
|
||||
+ id: UUID
|
||||
+ name: String
|
||||
}
|
||||
class Pferd {
|
||||
+ id: UUID
|
||||
+ name: String
|
||||
}
|
||||
class Funktionaer {
|
||||
+ id: UUID
|
||||
+ name: String
|
||||
}
|
||||
}
|
||||
|
||||
Veranstaltung "1" *-- "N" Austragungsplatz
|
||||
Veranstaltung "1" *-- "N" TurnierArtikel
|
||||
Veranstaltung "1" *-- "N" Turnier
|
||||
|
||||
Turnier "1" *-- "1" Ausschreibung
|
||||
|
||||
Turnier "1" *-- "N" Bewerb
|
||||
Bewerb "1" *-- "N" Abteilung
|
||||
Bewerb "1" *-- "N" RichterEinsatz
|
||||
|
||||
Bewerb "N" --> "1" Austragungsplatz : "findet statt auf"
|
||||
|
||||
Abteilung "1" <-- "N" Nennung : "teilt zu"
|
||||
Bewerb "1" <.. "N" Nennung : "meldet für (Denormalisiert)"
|
||||
|
||||
Nennung "1" <-- "N" NennungsTransfer : "dokumentiert Storno/Umbuchung"
|
||||
|
||||
TurnierArtikel "1" <-- "N" Konto : "bucht"
|
||||
|
||||
|
||||
note right of Bewerb
|
||||
**Namens-Konvention (Das "Dom"-Präfix):**
|
||||
Aktuell heißt diese Klasse im Code z.B. `DomBewerb` (in entries-domain)
|
||||
und `Bewerb` (in entries-service/Repository).
|
||||
Der Prefix `Dom` wurde zur Unterscheidung
|
||||
von DTOs (Data Transfer Objects) und
|
||||
DB-Entities genutzt.
|
||||
|
||||
Ist es clever das zu ändern?
|
||||
-> Ja! In Clean Architecture sollte die
|
||||
Kern-Domäne den "sauberen" Namen tragen
|
||||
(`Bewerb`). Die DB-Klasse heißt dann `BewerbEntity`
|
||||
bzw. `BewerbTable` und das Transfer-Objekt `BewerbDto`.
|
||||
Das gleiche gilt für `DomVeranstaltung` -> `Veranstaltung`,
|
||||
`DomTurnier` -> `Turnier`, `DomAusschreibung` -> `Ausschreibung`,
|
||||
`DomAbteilung` -> `Abteilung`, `DomNennung` -> `Nennung`
|
||||
und `DomNennungsTransfer` -> `NennungsTransfer`.
|
||||
end note
|
||||
|
||||
@enduml
|
||||
Reference in New Issue
Block a user