Pattern Service
Pour garder les contrôleurs légers et la logique testable, nous adhérons strictement au Pattern Service-Repository.
Structure des Dossiers
app/
├── Controllers/ # Gestion HTTP uniquement (Parsing input, retour JSON)
├── Services/ # Pure Logique Métier
├── Models/ # Définitions Base de Données
└── Validators/ # Validation de Schéma Yup/VineJS
Services Clés
🔧 Gestion des Appareils
CameraService & CameraManagerService
Ces services forment l'épine dorsale du provisionnement des appareils.
- Provisioning : Gestion de la génération d'identifiants uniques pour l'accès caméra.
- Monitoring : Tâches planifiées vérifiant la connectivité.
RtspToWebService
Un wrapper autour du projet open-source RTSPtoWeb. Il permet au backend de :
- Démarrer/Arrêter les Flux : Actif uniquement quand un utilisateur regarde le dashboard (économie de bande passante).
- Négociation de Protocole : Retourne des URLs HLS, WebRTC ou MSE selon les capacités du client.
🔔 Traitement d'Événements
RedisSubscriptionsService
Le point d'intégration avec le Système de Vision Python.
- Entrée : Écoute le channel Redis
camera:sitting. - Logique :
- Reçoit un
MotionEvent(Score d'agitation, Nom de la Classe). - Résout
Camera->Site->Users. - Filtre les utilisateurs selon
emailNotificationsEnabled.
- Reçoit un
- Sortie : Dispatche des emails via SMTP et SMS via Twilio.
NotificationService
Gère la persistance des notifications in-app (icône cloche) et les notifications push vers les appareils mobiles.