Architecture Backend
Le backend est construit sur AdonisJS, un framework web Node.js robuste qui suit le modèle MVC (Modèle-Vue-Contrôleur). Nous appliquons rigoureusement le modèle Service-Repository pour garder les contrôleurs légers et la logique testable.
Structure des Dossiers
app/
├── Controllers/ # Traitement des Requêtes (Validation des Entrées, Réponses HTTP)
├── Models/ # Définitions ORM Lucid (Schéma de Base de Données)
├── Services/ # Logique Métier (L'intelligence centrale)
├── Validators/ # Règles de validation des données
├── Websockets/ # Gestionnaires d'événements temps réel
└── Tasks/ # Tâches planifiées (Tâches Cron)
Modèles de Conception Principaux
1. Couche Service
Nous ne plaçons pas de logique métier dans les Contrôleurs. À la place, nous utilisons des Services dédiés.
CameraService: Gère l'approvisionnement des caméras, la vérification de l'état de connexion et les mises à jour de configuration.AlertService: Gère le cycle de vie d'une alerte (Déclenchement -> Notification Utilisateurs -> Acquittement -> Archivage).StatsService: Agrège les données temporelles pour les graphiques du tableau de bord (ex: "Activité au cours du temps").
2. Communication Temps Réel
Nous utilisons les Websockets pour obtenir une latence inférieure à la seconde pour les alertes critiques.
| Canal | Événement | Charge Utile | Description |
|---|---|---|---|
cameras | status:update | { id, status } | Caméra passant en Ligne/Hors-ligne |
alerts | new:alert | { type, severity } | Notification utilisateur critique |
stream | frame | Blob Binaire | Prévisualisation en direct (MJPEG via socket) |
Schéma de Base de Données (MySQL)
La base de données est normalisée pour garantir l'intégrité des données.
- Utilisateurs
1:NÉcuries - Écuries
1:NBox - Box
1:1Caméras - Caméras
1:NAlertes
Note : Nous utilisons les migrations Lucid ORM pour gérer le versionnement des changements de schéma. Exécutez toujours
node ace migration:runaprès avoir récupéré les mises à jour.