# 📬 Système de Notifications - EduConnect Africa ## Vue d'ensemble Le système de notifications d'EduConnect Africa envoie automatiquement des alertes contextuelles aux utilisateurs pour améliorer l'engagement et l'expérience utilisateur. ## Types de Notifications ### 1. 🔔 Notifications de Réservation (BOOKING) #### Nouvelle demande de mentorat - **Destinataire** : Mentor - **Déclencheur** : Un étudiant crée une nouvelle réservation - **Message** : "Nouvelle demande de mentorat - [Nom étudiant] souhaite réserver une session avec vous le [date] à [heure]" #### Mise à jour de statut - **Destinataire** : Étudiant - **Déclencheur** : Le mentor accepte/refuse/annule une réservation - **Messages** : - Acceptée : "Votre demande de mentorat a été acceptée" - Refusée : "Votre demande de mentorat a été déclinée" - Terminée : "Votre session de mentorat est terminée" - Annulée : "Votre session de mentorat a été annulée" #### Rappel de rendez-vous (24h avant) - **Destinataires** : Étudiant ET Mentor - **Déclencheur** : Commande automatisée (cronjob) - **Message** : "Il reste 24 heures avant votre session de mentorat" #### Rendez-vous imminent - **Destinataires** : Étudiant ET Mentor - **Déclencheur** : Commande automatisée (cronjob) - **Messages** : - Étudiant : "Votre session de mentorat commence bientôt. Connectez-vous maintenant." - Mentor : "Votre session de mentorat commence bientôt. L'étudiant vous attend." ### 2. 💬 Notifications de Réponses (REPLY) - **Destinataire** : Auteur de la question - **Déclencheur** : Quelqu'un répond à sa question sur le forum - **Message** : "[Nom] a répondu à [titre de la question]" ### 3. 📨 Notifications de Messages (MESSAGE) - **Destinataire** : Participants de la conversation - **Déclencheur** : Nouveau message dans une conversation - **Message** : "[Nom]: [Aperçu du message]..." ### 4. 🏆 Notifications de Succès (ACHIEVEMENT) - **Destinataire** : Utilisateur qui débloque un badge - **Déclencheur** : Attribution d'un nouveau badge - **Message** : "Félicitations ! Vous avez débloqué le badge \"[Nom du badge]\"" ### 5. 🎓 Suggestions de Mentors (MENTORSHIP) - **Destinataire** : Étudiants - **Déclencheur** : Commande automatisée (recommandation intelligente) - **Message** : "Un nouveau profil de mentor pourrait vous intéresser : [Nom]. Jetez un œil !" ### 6. 🔄 Réengagement (SYSTEM) - **Destinataire** : Utilisateurs inactifs sur certains outils - **Déclencheur** : Commande automatisée - **Message** : "Vous n'avez pas utilisé [Nom de l'outil] récemment. Venez découvrir les nouveautés !" - **Outils concernés** : - Calculatrice Scientifique - Atelier d'Écriture - Atlas Interactif - Atelier de Coloriage ## Utilisation de la Commande de Gestion ### Commande de base ```bash python manage.py send_notifications ``` Cette commande envoie tous les types de notifications automatiques (rappels, recommandations, réengagement). ### Commandes spécifiques #### Envoyer uniquement les rappels de rendez-vous ```bash python manage.py send_notifications --type reminder ``` #### Envoyer uniquement les recommandations de mentors ```bash python manage.py send_notifications --type recommendation ``` #### Envoyer uniquement les notifications de réengagement ```bash python manage.py send_notifications --type reengagement ``` #### Cibler un utilisateur spécifique (pour les tests) ```bash python manage.py send_notifications --type recommendation --user_email user@example.com ``` ## Configuration d'un Cronjob Pour automatiser l'envoi de notifications, configurez un cronjob : ```bash # Ouvrir l'éditeur crontab crontab -e # Ajouter les tâches suivantes : # Rappels 24h avant (tous les jours à 9h) 0 9 * * * cd /path/to/educonnect/backend && /path/to/venv/bin/python manage.py send_notifications --type reminder # Recommandations de mentors (tous les lundis à 10h) 0 10 * * 1 cd /path/to/educonnect/backend && /path/to/venv/bin/python manage.py send_notifications --type recommendation # Réengagement (tous les vendredis à 14h) 0 14 * * 5 cd /path/to/educonnect/backend && /path/to/venv/bin/python manage.py send_notifications --type reengagement ``` ## Architecture Technique ### Backend #### Modèle de données (`apps/notifications/models.py`) - `Notification` : Table principale avec type, lien, statut de lecture - `NotificationTitle` : Titres versionnés - `NotificationMessage` : Messages versionnés - `NotificationReadHistory` : Traçabilité des lectures #### Service (`apps/notifications/services.py`) La classe `NotificationService` centralise la création de toutes les notifications : - `create_booking_notification(booking)` - `create_booking_status_notification(booking)` - `create_booking_reminder(booking, hours_left)` - `create_booking_starting_soon(booking)` - `create_answer_notification(answer)` - `create_message_notifications(message)` - `create_badge_notification(user_badge)` - `create_mentor_recommendation(user, mentor_profile)` - `create_tool_reengagement(user, tool_name, tool_link)` #### API (`apps/notifications/views.py`) - `GET /api/notifications/` : Liste des notifications de l'utilisateur - `POST /api/notifications/{id}/mark-read/` : Marquer comme lue - `POST /api/notifications/mark-all-read/` : Tout marquer comme lu - `DELETE /api/notifications/{id}/` : Supprimer une notification ### Frontend #### Page de notifications (`frontend/pages/Notifications.tsx`) - Affichage de toutes les notifications - Icônes différenciées par type - Indicateur visuel pour les non-lues - Actions : marquer comme lu, supprimer, voir les détails #### Contexte d'authentification (`frontend/context/AuthContext.tsx`) - Gestion globale des notifications - Méthodes : `markAsRead()`, `markAllAsRead()`, `deleteNotification()` - Synchronisation avec le backend ## Améliorations Futures 1. **Notifications Push** : Intégrer Firebase Cloud Messaging ou OneSignal 2. **Préférences utilisateur** : Permettre de désactiver certains types de notifications 3. **Notifications par email** : Envoyer également par email pour les événements importants 4. **Notifications en temps réel** : Utiliser WebSockets (Django Channels) pour les mises à jour instantanées 5. **Analytics** : Tracker le taux d'ouverture et d'engagement des notifications 6. **Personnalisation** : Recommandations basées sur l'historique et les préférences de l'utilisateur ## Exemples de Résultats Après avoir exécuté la commande de test : ```bash python manage.py send_notifications ``` Résultat : ``` Checking for booking reminders... Sent 0 24h reminders. Sending mentor recommendations... Sent 21 recommendations. Sending re-engagement notifications... Sent 32 re-engagement notifications. ``` Les utilisateurs verront ces notifications dans leur page `/notifications` avec : - Un badge de compteur sur l'icône de notification dans le header - Des cartes visuelles avec icônes colorées selon le type - Des liens directs vers les ressources concernées - La possibilité de marquer comme lu ou supprimer --- **Développé avec ❤️ par Marino ATOHOUN pour Hypee**