diff --git a/documentation/Architecture/01-architecture-globale.md b/documentation/Architecture/01-architecture-globale.md index ab68fd5..7c22e24 100644 --- a/documentation/Architecture/01-architecture-globale.md +++ b/documentation/Architecture/01-architecture-globale.md @@ -35,11 +35,11 @@ Arcadia API combine 3 paradigmes éprouvés pour créer une base de code hauteme ### 1. `Domain\` - Le Coeur Métier Pur - **Dépendance** : Ne dépend de **RIEN** (sauf `Shared\`). **Aucun import Laravel / Eloquent / HTTP n'est toléré**. - **Contenu** : - - **`Models/Entities/`** : Entités riches, `final readonly`, immutables, implémentant `Shared\DDD\Model\Entity`. + - **`Models/Entities/`** : Entités riches, `final readonly`, immutables, implémentant `Shared\DDD\Model\Entity` ou `Shared\DDD\Model\AggregateRoot` (modèles d'écriture) et/ou `Shared\DDD\Model\ReadModel` (modèles de lecture). - **`Models/ValueObjects/`** : Objets-valeurs typés et auto-validants (ex: `ArcadiaEmployeeId`, `NutriScore`, `BrandCode`). - **`Ports/`** : Interfaces des opérations externes : - - `Directories/` : Ports de lecture seule (pattern `Directory`). - - `Repositories/` : Ports de persistance / écriture (`Repository`). + - `Directories/` : Ports de lecture seule pour modèles de lecture purs (`Directory`). + - `Repositories/` : Ports de cycle de vie et requêtes d'agrégats racines (`Repository`). - `Services/` : Interfaces pour services externes métier. - **`Events/`** : Événements métier purs (ex: `BrandCreated`). - **`Services/`** : Logique métier pure impliquant plusieurs entités. @@ -83,7 +83,7 @@ Arcadia API combine 3 paradigmes éprouvés pour créer une base de code hauteme ### 5. `Shared\` - Le Socle DDD Transverse - **Dépendance** : Zéro dépendance externe (hors PSR-20). - **Contenu** : - - Socle DDD (`Entity`, `EntityId`, `Usecase`, `Input`, `Output`, `Presenter`, `DomainEventDispatcher`, `TransactionalDomainEventDispatcher`, `UsecaseBuilder`, `Paginated`, `Pagination`). + - Socle DDD (`Entity`, `EntityId`, `AggregateRoot`, `ReadModel`, `Usecase`, `Input`, `Output`, `Presenter`, `DomainEventDispatcher`, `TransactionalDomainEventDispatcher`, `UsecaseBuilder`, `Paginated`, `Pagination`). - Gestion du temps (`Shared\Time\` : `Clock` PSR-20, `SystemClock`, `SystemUtcClock`, `FrozenClock`, Façade `Utc`). ---