docs: add C4 model for renamed and extended domain components
- Introduced `Kernentitaeten_Umbenennung.puml` to document the planned renaming and structural updates to core domain entities. - Visualized key contexts (`Event Management`, `Billing`, `Competition`, `Registration`, `Actor`) and their relationships. - Included recommendations for simplification of naming conventions in Clean Architecture.
This commit is contained in:
parent
7d8596570a
commit
8f0640810b
158
docs/01_Architecture/c4/Kernentitaeten_Umbenennung.puml
Normal file
158
docs/01_Architecture/c4/Kernentitaeten_Umbenennung.puml
Normal file
|
|
@ -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
|
||||
Loading…
Reference in New Issue
Block a user