📬 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
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
python manage.py send_notifications --type reminder
Envoyer uniquement les recommandations de mentors
python manage.py send_notifications --type recommendation
Envoyer uniquement les notifications de réengagement
python manage.py send_notifications --type reengagement
Cibler un utilisateur spécifique (pour les tests)
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 :
# 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 lectureNotificationTitle: Titres versionnésNotificationMessage: Messages versionnésNotificationReadHistory: 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'utilisateurPOST /api/notifications/{id}/mark-read/: Marquer comme luePOST /api/notifications/mark-all-read/: Tout marquer comme luDELETE /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
- Notifications Push : Intégrer Firebase Cloud Messaging ou OneSignal
- Préférences utilisateur : Permettre de désactiver certains types de notifications
- Notifications par email : Envoyer également par email pour les événements importants
- Notifications en temps réel : Utiliser WebSockets (Django Channels) pour les mises à jour instantanées
- Analytics : Tracker le taux d'ouverture et d'engagement des notifications
- 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 :
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