Init: RoggioApp Architecture, Prisma Schema, API MVP
This commit is contained in:
+34
@@ -0,0 +1,34 @@
|
||||
# RoggioApp - Events, Aufgaben & Relationen
|
||||
|
||||
## 1. Die Universalität der Entitäten
|
||||
Nicht nur die physische Welt (Räume, Zirkuswagen), sondern **alles** ist eine grundlegende Entität, die über Eigenschaften (Traits) und Verknüpfungen definiert wird.
|
||||
* **Personen als Entitäten:** Können Rollen in Gruppen übernehmen.
|
||||
* **Dynamische Relationen (Verknüpfungen mit Eigenschaften):** Eine Person ist nicht einfach "in" einer Gruppe. Die Verbindung selbst hat eine Eigenschaft!
|
||||
* *Person A* ist über die Eigenschaft `is_comm_contact` mit *Gruppe X* verbunden.
|
||||
* *Person B* ist über die Eigenschaft `is_finance_contact` mit *Gruppe X* verbunden.
|
||||
|
||||
## 2. Buchungen und Aufgaben = "Events"
|
||||
Die höchste Form der Abstraktion betrifft die Zeit und die Aktionen. Es gibt keine starren Tabellen für "Buchungen" und "Putzpläne". Beide sind im Kern **Events**.
|
||||
|
||||
### Was ist ein Event?
|
||||
Ein Event ist ein Knotenpunkt in der Zeit, der andere Entitäten miteinander verbindet und einen Zustand hat.
|
||||
|
||||
* **Beispiel A: Die Buchung (Event-Typ: Rental)**
|
||||
* *Eigenschaften des Events:* Zeitraum (14.08 - 21.08), Status (Bestätigt).
|
||||
* *Relation 1:* Verknüpft mit Entität "Gruppe Familie Rossi" (Wer?).
|
||||
* *Relation 2:* Verknüpft mit Entität "Haus A" + "Zirkuswagen" (Wo?).
|
||||
* *Relation 3:* Finanzen/Rechnung (Geld).
|
||||
|
||||
* **Beispiel B: Das Putzen (Event-Typ: Task/Maintenance)**
|
||||
* *Eigenschaften des Events:* Fälligkeitsfenster (21.08 10:00 - 15:00), Status (Offen).
|
||||
* *Relation 1:* Verknüpft mit Entität "Haus A" (Was muss geputzt werden?).
|
||||
* *Relation 2:* Verknüpft mit Entität "Kollektiv-Mitglied Sarah" (Wer putzt?).
|
||||
* *Spezial-Relation (Event -> Event):* Getriggert durch / Abhängig von "Event A (Buchung Ende)".
|
||||
|
||||
## Claras architektonische Ableitung
|
||||
Das gesamte System besteht eigentlich nur aus drei riesigen Säulen:
|
||||
1. **Nodes (Entitäten):** Die Bausteine der Welt (Personen, Einheiten, etc.).
|
||||
2. **Edges (Relationen/Traits):** Wie die Nodes verbunden sind und was sie können.
|
||||
3. **Events (Zeitliche Knoten):** Das Klebeband, das Nodes auf einer Zeitachse zusammenführt (Buchungen, Aufgaben, Wartung).
|
||||
|
||||
*Herausforderung für die Datenbank:* So etwas baut man idealerweise mit einer Graphendatenbank (wie Neo4j) oder in PostgreSQL mit JSONB-Feldern für die Traits und extrem klugen Pivot-Tabellen (Edge-Tables) für die Beziehungen, damit man nicht den Verstand beim Queries-Schreiben verliert. Wir müssen einen Weg finden, das in Prisma sauber und typsicher zu modellieren, ohne die Performance zu töten.
|
||||
Reference in New Issue
Block a user