docs(architecture): update architecture overview with AggregateRoot and ReadModel

This commit is contained in:
Jérémy Munsch 2026-08-24 21:45:10 +02:00
parent e31767cfd0
commit 6f08526c7b
Signed by: forge-joniko
GPG key ID: D7EFE2F5CB6CC0E4

View file

@ -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<TId, TEntity>`).
- `Repositories/` : Ports de persistance / écriture (`Repository<TId, TEntity>`).
- `Directories/` : Ports de lecture seule pour modèles de lecture purs (`Directory<TId, TReadModel of ReadModel>`).
- `Repositories/` : Ports de cycle de vie et requêtes d'agrégats racines (`Repository<TId, TAggregate of AggregateRoot>`).
- `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`).
---