docs: update architecture guidelines for consistency and structure
This commit is contained in:
+8
-11
@@ -6,10 +6,10 @@ Dieses Dokument beschreibt die technische Architektur des Projekts. Es dient als
|
||||
|
||||
Die Anwendung ist in drei strikt getrennte Layer unterteilt:
|
||||
|
||||
### UI layer (`src/UI`)
|
||||
### UI Layer (`src/UI`)
|
||||
- **Verantwortung**: Präsentation, Handling von User-Input, API-Endpunkte, CLI-Commands.
|
||||
- **Struktur**: Folgt einer domänenorientierten Struktur `src/UI/{Module}/{Interface}/{Feature}/...` (z.B. `src/UI/Sales/Http/OrderController.php`), um maximale Symmetrie zu den anderen Layern zu gewährleisten.
|
||||
- **Regel**: Darf ausschließlich die Logic-Layer aufrufen. Ein direkter Zugriff auf die Data-Layer ist untersagt.
|
||||
- **Regel**: Darf ausschließlich die Logic Layer aufrufen. Ein direkter Zugriff auf die Data Layer ist untersagt.
|
||||
|
||||
### Logic Layer (`src/Logic`)
|
||||
- **Verantwortung**: Implementierung der Geschäftslogik und Orchestrierung von Prozessen.
|
||||
@@ -18,7 +18,7 @@ Die Anwendung ist in drei strikt getrennte Layer unterteilt:
|
||||
- **BusinessQueries**: Spezifische Abfragen für geschäftsrelevante Daten.
|
||||
- **Manager**: Orchestratoren, die z.B. Caching-Strategien implementieren und zwischen verschiedenen Providern/Processoren vermitteln.
|
||||
- **Models**: Kernlogik-Objekte zur internen Verarbeitung innerhalb der Logic Layer.
|
||||
- **Regel**: Ist unabhängig von der UI-Layer und definiert die Anforderungen an die Data-Layer über Interfaces.
|
||||
- **Regel**: Ist unabhängig von der UI Layer und definiert die Anforderungen an die Data Layer über Interfaces.
|
||||
|
||||
### Data Layer (`src/Data`)
|
||||
- **Verantwortung**: Persistenz, Datenabruf und Kommunikation mit externen Systemen.
|
||||
@@ -26,7 +26,7 @@ Die Anwendung ist in drei strikt getrennte Layer unterteilt:
|
||||
- **Komponenten**:
|
||||
- **Repositories**: Zugriff auf Datenbankentitäten.
|
||||
- **Entities**: Domain-Modelle für die Persistenz (spiegeln DB-Schema).
|
||||
- **Provider / Processor Interfaces**: Definieren den Datenaustausch mit der Logic-Layer.
|
||||
- **Provider / Processor Interfaces**: Definieren den Datenaustausch mit der Logic Layer.
|
||||
- **Mapper**: Transformation zwischen Entity und Business Model.
|
||||
- **Regel**: Kennt keine Geschäftslogik und ist nur für die Bereitstellung/Speicherung von Daten zuständig.
|
||||
|
||||
@@ -36,9 +36,9 @@ Die Anwendung ist in drei strikt getrennte Layer unterteilt:
|
||||
`UI Layer` $\rightarrow$ `Logic Layer` $\rightarrow$ `Data Layer`
|
||||
|
||||
### Kommunikationsregeln
|
||||
1. **Eintrittspunkt**: Die UI-Layer ruft immer einen UseCase, Workflow oder eine BusinessQuery in der Logic-Layer auf.
|
||||
2. **Orchestrierung**: Manager in der Logic-Layer organisieren den Zugriff (z.B. Cache-Check) und delegieren die eigentliche Arbeit an Provider- oder Processor-Interfaces der Data-Layer.
|
||||
3. **Entkopplung**: Die Logic-Layer sollte idealerweise gegen Interfaces der Data-Layer programmieren, um die Austauschbarkeit der Datenquelle zu gewährleisten.
|
||||
1. **Eintrittspunkt**: Die UI Layer ruft immer einen UseCase, Workflow oder eine BusinessQuery in der Logic Layer auf.
|
||||
2. **Orchestrierung**: Manager in der Logic Layer organisieren den Zugriff (z.B. Cache-Check) und delegieren die eigentliche Arbeit an Provider- oder Processor-Interfaces der Data Layer.
|
||||
3. **Entkopplung**: Die Logic Layer sollte idealerweise gegen Interfaces der Data Layer programmieren, um die Austauschbarkeit der Datenquelle zu gewährleisten.
|
||||
|
||||
## 3. Validierungsstrategie
|
||||
|
||||
@@ -82,7 +82,7 @@ Um eine hohe Codequalität und Wartbarkeit zu gewährleisten, wird eine pyramida
|
||||
|
||||
### Integration Tests (Data Layer)
|
||||
- **Fokus**: Korrekte Persistenz (Repositories, Processor) und Mapping.
|
||||
- **Regel**: Nutzen eine echte Test-Datenbank oder einen In-Memory-Speicher. Hier wird geprüft, ob die technische Implementierung der Data-Layer korrekt funktioniert.
|
||||
- **Regel**: Nutzen eine echte Test-Datenbank oder einen In-Memory-Speicher. Hier wird geprüft, ob die technische Implementierung der Data Layer korrekt funktioniert.
|
||||
|
||||
### Functional Tests (UI Layer & Scenarios)
|
||||
- **Fokus**: Durchlauf kompletter Business-Szenarien und Validierung von API-Endpunkten.
|
||||
@@ -96,9 +96,6 @@ Für das System-Logging wird der PSR-3 Standard verwendet:
|
||||
- **Entkopplung**: Da es sich um ein Interface handelt, bleibt die Business-Logik unabhängig von der konkreten Implementierung (z.B. Monolog).
|
||||
- **Konfiguration**: Die Steuerung (Kanäle, Log-Level, Speicherorte) erfolgt rein über die Framework-Konfiguration, nicht im Code.
|
||||
|
||||
## 8. Komponenten-Definitionen
|
||||
|
||||
|
||||
## 8. Security & Autorisierung
|
||||
|
||||
Die Absicherung der Anwendung erfolgt auf drei Ebenen:
|
||||
|
||||
Reference in New Issue
Block a user