Couche domaine - ApplETS/Notre-Dame GitHub Wiki

🎯 Couche Domain (Métier)

Vue d'Ensemble

La couche Domain contient la logique métier pure et est complètement indépendante de tout framework (Flutter, Dio, Firebase, etc.).

domain/
├── models/              # Entités métier
├── constants/           # Constantes métier
└── broadcast_icon_type.dart

📋 Responsabilités

Définir les entités métier (domaines)
Contenir les règles métier et validations
Zéro dépendance à Flutter, Firebase, packages externes
Être testable indépendamment


🏛️ Modèles du Domain

Types de Modèles

  1. Entities (Entités): Représentent les concepts clés du domaine.
  2. Value Objects: Représentent des valeurs simples avec logique.
  3. Aggregates: Groupes d'entités liées.

📚 Modèles Clés du Projet

  • Session: représente une session de cours avec les dates importantes reliées
  • Course / Cours: représente un groupe-cours, contient donc un titre, un groupe, une note, etc.
  • CourseActivity / Activité de Cours: représente une activité de cours dans l'horaire, donc une séance de travail (TP, laboratoire, cours)

📐 Principes de Conception

  1. Immutabilité: Les entités doivent être immuables quand possible, donc ne pas pouvoir modifier les valeurs après la création. Le projet utilise Freezed pour les modèles immuables
  2. Validation dans le Constructeur: La validation métier se fait lors de la création
  3. Méthodes Métier: Inclure la logique métier dans les entités:
  4. Pas de Dépendances Externes

✅ Checklist pour Nouvelle Entité

  • Immuable (utiliser final ou @freezed)
  • Validation métier dans le constructeur
  • Constructeurs nommés si besoin (ex: .empty())
  • Méthodes métier (ex: isActive())
  • @override toString() pour debug
  • Tests unitaires
  • Documentation commentaire
  • Zéro dépendance externe

Cette page a été en partie générée avec l'aide de Claude Haiku 4.5