Aller au contenu
Filtrer les règles par style d’implémentation

Choix par défaut ​

Plusieurs décisions appartiennent à l’équipe. Alveolus en prend une par défaut, marquée Notre choix dans la section Adaptation des règles concernées. Les exemples de code suivent ces choix. Un projet peut s’en écarter par une ADR (voir les prérequis du projet).

ChoixRègles qui le portent
Un style par bounded context, déclaré dans architecture.json : modèle tactique pour les core subdomains, transaction scripts pour les supporting et genericCTX-14, TXS-05, TXS-08
Les transaction scripts utilisent Prisma directement, à travers le client du Unit of WorkTXS-06, TXS-07
Les refus métier en Result<T, E>, les exceptions réservées aux pannesAGG-01, UC-02, UC-08, UC-07, ENT-15, ENT-16, REP-03, TXS-04
Le Unit of Work dans application, la transaction portée par AsyncLocalStorageREP-13, REP-14
Outbox et forwarder interne, pas de broker au départAGG-08, MSG-01, MSG-03, MSG-07
Des identités UUIDv7 générées par l’application, une classe par identitéENT-03, ENT-05, ENT-08
PostgreSQL et Prisma, les modèles Prisma séparés du domaineLAY-01, AGG-15, REP-02, REP-05, REP-07, REP-08, VO-11
Aucune suppression en cascade dans la base : le repository supprime les parties, puis l’aggregate root, dans la transactionREP-02
Pas de test double in-memory : les tests d’application et d’adapter sur un PostgreSQL jetable (Testcontainers)TST-01, REP-16
Les command handlers sur les aggregates, les query handlers sur les views, mêmes tablesUC-01, UC-08
domain et application par concept, driving et driven par technologie ; le suffixe du fichier nomme le rôle, le type garde son nom métierPLC-04, NAM-01, NAM-05, ACL-01
Pas de CQRS ni d’event sourcing au départCTX-16
Le comportement dans des classes : aggregate, value object, puis domain service ; des fonctions libres seulement dans les fichiers de wiringSRV-01
Des classes simples construites par le module avec construct, aucun décorateur NestJS hors de driving/http et des modulesWIR-05
Les tests démarrent les vrais modules, sans port remplacéTST-03
Un schéma PostgreSQL par bounded context ; les montants en BigInt d’unités mineures, les statuts en enums Prisma, reflétés dans le domaine par une union de littérauxPER-01, PER-02, VO-08
Un message publié porte sa version, un fichier par version dans public, les deux versions publiées pendant la migrationPUB-04
Les mappers étendent RowMapper : une ligne corrompue lève une erreur à la lecturePER-04
Le waiver signalé par un commentaire, avec une ADR s’il est structurelWaivers