doc: document mailing
This commit is contained in:
47
CLAUDE.md
47
CLAUDE.md
@@ -603,6 +603,53 @@ Après avoir lu ce guide :
|
||||
|
||||
---
|
||||
|
||||
## 📧 **Système d'Envoi de Bilans par Email (Nouvelle Fonctionnalité - 2025)**
|
||||
|
||||
**Notytex** intègre désormais un système complet d'envoi automatique des bilans d'évaluation individuels par email aux élèves et à leurs familles.
|
||||
|
||||
### **🎯 Fonctionnalités Principales**
|
||||
|
||||
- ✅ **Configuration SMTP flexible** via interface web (Gmail, Outlook, serveurs personnalisés)
|
||||
- ✅ **Génération automatique** de bilans individualisés avec analyses détaillées
|
||||
- ✅ **Templates HTML responsives** optimisés pour tous clients email
|
||||
- ✅ **Analyses par compétences et domaines** avec visualisations graphiques
|
||||
- ✅ **Serveur de test intégré** (`debug_smtp_server.py`) pour développement
|
||||
- ✅ **Gestion d'erreurs robuste** avec logs structurés et rapports détaillés
|
||||
|
||||
### **🏗️ Architecture**
|
||||
|
||||
```
|
||||
services/
|
||||
├── email_service.py # Service d'envoi SMTP
|
||||
└── student_report_service.py # Génération de bilans
|
||||
|
||||
templates/email/
|
||||
├── base_email.html # Template de base responsive
|
||||
└── student_report.html # Template de bilan détaillé
|
||||
```
|
||||
|
||||
### **📊 Contenu des Bilans**
|
||||
|
||||
Chaque bilan inclut :
|
||||
- **Note globale** avec visualisation colorée et position dans la classe
|
||||
- **Détail par exercice** et questions individuelles
|
||||
- **Analyses par compétences** avec système d'étoiles visuelles
|
||||
- **Performances par domaines** avec codes couleur
|
||||
- **Statistiques de classe** (moyenne, médiane, écart-type)
|
||||
- **Message personnalisé** du professeur (optionnel)
|
||||
|
||||
### **📧 Workflow d'Envoi**
|
||||
|
||||
1. **Configuration SMTP** via `Configuration > Email`
|
||||
2. **Sélection d'élèves** depuis la page de résultats d'évaluation
|
||||
3. **Prévisualisation** des bilans via `/preview-report`
|
||||
4. **Envoi groupé** avec rapport détaillé des succès/erreurs
|
||||
5. **Réception professionnelle** par les élèves et familles
|
||||
|
||||
**📖 Documentation complète** : [docs/features/EMAIL_REPORTS.md](docs/features/EMAIL_REPORTS.md)
|
||||
|
||||
---
|
||||
|
||||
# 🚀 **Améliorations Phase 1 - Architecture Refactorisée (2025)**
|
||||
|
||||
## ✅ **Refactoring Complet Selon les Principes 12 Factor App**
|
||||
|
@@ -14,7 +14,10 @@ Bienvenue dans la documentation complète de **Notytex**, le système de gestion
|
||||
- **[Frontend Documentation](./frontend/README.md)** - Interface utilisateur et composants
|
||||
|
||||
### 🔧 Fonctionnalités Spécifiques
|
||||
- **[Features](./features/)** - Documentation des fonctionnalités par module
|
||||
- **[Envoi de bilans par email](./features/EMAIL_REPORTS.md)** - Système d'envoi automatique de bilans
|
||||
- **[Conseil de classe](./features/CONSEIL_DE_CLASSE.md)** - Mode focus pour appréciations
|
||||
- **[Histogrammes des moyennes](./features/STUDENT_AVERAGES_HISTOGRAM.md)** - Analyses graphiques
|
||||
- **[Features complètes](./features/)** - Documentation des fonctionnalités par module
|
||||
|
||||
### 📖 Documentation Principale
|
||||
- **[CLAUDE.md](../CLAUDE.md)** - Instructions complètes du projet
|
||||
@@ -23,6 +26,11 @@ Bienvenue dans la documentation complète de **Notytex**, le système de gestion
|
||||
|
||||
## 🆕 Dernières Fonctionnalités
|
||||
|
||||
### 📧 Système d'Envoi de Bilans par Email ✨
|
||||
Envoi automatique de bilans d'évaluation individualisés par email avec analyses détaillées par compétences et domaines.
|
||||
|
||||
**Documentation** : [Guide complet - Bilans Email](./features/EMAIL_REPORTS.md)
|
||||
|
||||
### 🎯 Mode Focus - Conseil de Classe ✨
|
||||
Interface révolutionnaire pour la rédaction d'appréciations individuelles avec navigation fluide et auto-sauvegarde intelligente.
|
||||
|
||||
|
433
docs/features/EMAIL_REPORTS.md
Normal file
433
docs/features/EMAIL_REPORTS.md
Normal file
@@ -0,0 +1,433 @@
|
||||
# 📧 Système d'Envoi de Bilans par Email
|
||||
|
||||
**Notytex** intègre un système complet d'envoi automatique des bilans d'évaluation individuels par email aux élèves et à leurs familles.
|
||||
|
||||
## 🎯 Vue d'ensemble
|
||||
|
||||
Cette fonctionnalité permet aux enseignants d'envoyer facilement des rapports détaillés et personnalisés de chaque évaluation directement dans la boîte mail des élèves, avec une présentation professionnelle et des analyses approfondies.
|
||||
|
||||
### Fonctionnalités principales
|
||||
|
||||
- ✅ **Configuration SMTP flexible** via interface web
|
||||
- ✅ **Génération automatique de bilans individualisés**
|
||||
- ✅ **Templates HTML responsives** optimisés email
|
||||
- ✅ **Validation et gestion d'erreurs robuste**
|
||||
- ✅ **Serveur de test intégré** pour développement
|
||||
- ✅ **Analyses détaillées** par compétences et domaines
|
||||
|
||||
---
|
||||
|
||||
## 🏗️ Architecture Technique
|
||||
|
||||
### Services Découplés
|
||||
|
||||
```
|
||||
services/
|
||||
├── email_service.py # Service d'envoi SMTP avec configuration dynamique
|
||||
└── student_report_service.py # Service de génération de bilans individualisés
|
||||
|
||||
templates/email/
|
||||
├── base_email.html # Template de base pour emails (responsive)
|
||||
└── student_report.html # Template de bilan d'élève (complet et détaillé)
|
||||
|
||||
routes/
|
||||
├── assessments.py # Routes d'envoi de bilans (/send-reports, /preview-report)
|
||||
└── config.py # Configuration SMTP via interface web
|
||||
```
|
||||
|
||||
### Configuration Stockée
|
||||
|
||||
Les paramètres SMTP sont stockés de manière sécurisée dans la base de données via `app_config` :
|
||||
|
||||
```python
|
||||
# Configuration dans SQLite
|
||||
email.smtp_host = 'smtp.gmail.com'
|
||||
email.smtp_port = 587
|
||||
email.username = 'professeur@etablissement.fr'
|
||||
email.password = 'mot_de_passe_application'
|
||||
email.use_tls = true
|
||||
email.from_name = 'Professeur Martin'
|
||||
email.from_address = 'professeur@etablissement.fr'
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ⚙️ Configuration SMTP
|
||||
|
||||
### Interface Web
|
||||
|
||||
Accès via **Configuration > Email** dans l'interface d'administration.
|
||||
|
||||
**Paramètres configurables :**
|
||||
- **Serveur SMTP** : Adresse du serveur (ex: smtp.gmail.com)
|
||||
- **Port SMTP** : Port de connexion (587 pour TLS, 465 pour SSL)
|
||||
- **Nom d'utilisateur** : Identifiant de connexion SMTP
|
||||
- **Mot de passe** : Mot de passe ou mot de passe d'application
|
||||
- **Chiffrement TLS** : Activation/désactivation du chiffrement
|
||||
- **Nom d'expéditeur** : Nom affiché dans l'email
|
||||
- **Adresse d'expéditeur** : Adresse email expéditrice
|
||||
|
||||
### Fournisseurs Supportés
|
||||
|
||||
#### Gmail
|
||||
- **Serveur** : smtp.gmail.com
|
||||
- **Port** : 587 (TLS)
|
||||
- **Sécurité** : Mot de passe d'application requis
|
||||
- **Documentation** : [Mots de passe d'application Google](https://support.google.com/accounts/answer/185833)
|
||||
|
||||
#### Outlook/Hotmail
|
||||
- **Serveur** : smtp-mail.outlook.com
|
||||
- **Port** : 587 (TLS)
|
||||
- **Sécurité** : Authentification moderne
|
||||
|
||||
#### Serveurs Personnalisés
|
||||
Configuration flexible pour tous types de serveurs SMTP compatibles.
|
||||
|
||||
### Test de Configuration
|
||||
|
||||
L'interface propose un **test d'envoi** pour valider la configuration :
|
||||
- Envoi d'un email de test à une adresse spécifiée
|
||||
- Validation automatique de tous les paramètres
|
||||
- Rapport détaillé en cas d'erreur
|
||||
|
||||
---
|
||||
|
||||
## 🧪 Environnement de Test
|
||||
|
||||
### Serveur SMTP de Développement
|
||||
|
||||
Notytex inclut un script de test SMTP intégré pour le développement local :
|
||||
|
||||
```bash
|
||||
# Lancement du serveur de débogage
|
||||
python debug_smtp_server.py
|
||||
```
|
||||
|
||||
**Configuration pour les tests :**
|
||||
- **Serveur SMTP** : localhost
|
||||
- **Port** : 1025
|
||||
- **Utilisateur/Mot de passe** : Laisser vides
|
||||
- **TLS** : Désactivé
|
||||
|
||||
**Avantages :**
|
||||
- 📧 **Emails affichés en console** avec contenu HTML complet
|
||||
- 🚫 **Aucun envoi réel** pour la sécurité des tests
|
||||
- 🎨 **Formatage amélioré** pour une lecture facile
|
||||
- ⚡ **Feedback immédiat** pour valider les templates
|
||||
|
||||
---
|
||||
|
||||
## 📊 Génération de Bilans
|
||||
|
||||
### Service StudentReportService
|
||||
|
||||
Le `StudentReportService` génère des rapports complets et personnalisés pour chaque élève.
|
||||
|
||||
#### Données Incluses
|
||||
|
||||
**📋 Informations sur l'évaluation :**
|
||||
- Titre, description, date
|
||||
- Classe, trimestre, coefficient
|
||||
|
||||
**🎯 Note globale :**
|
||||
- Score total avec pourcentage
|
||||
- Visualisation colorée (barre de progression)
|
||||
- Position dans la classe
|
||||
|
||||
**📝 Détail par exercice :**
|
||||
- Score détaillé par exercice
|
||||
- Questions individuelles avec résultats
|
||||
- Types de notation (points/compétences)
|
||||
|
||||
**⭐ Analyse par compétences :**
|
||||
- Performance par compétence évaluée
|
||||
- Système d'étoiles visuelles (0-3)
|
||||
- Labels configurables
|
||||
|
||||
**🏷️ Analyse par domaines :**
|
||||
- Groupement thématique des résultats
|
||||
- Codes couleur par domaine
|
||||
- Pourcentages de réussite
|
||||
|
||||
**📈 Statistiques de classe :**
|
||||
- Position de l'élève
|
||||
- Moyenne, médiane, écart-type
|
||||
- Nombre total d'élèves
|
||||
|
||||
### Gestion des Types de Notation
|
||||
|
||||
**Notes classiques :**
|
||||
- Affichage "15.5/20" avec barres de progression colorées
|
||||
- Calcul automatique des pourcentages
|
||||
|
||||
**Évaluation par compétences :**
|
||||
- Système d'étoiles (0-3) avec labels configurables
|
||||
- Conversion intelligente score → étoiles
|
||||
|
||||
**Valeurs spéciales :**
|
||||
- **"."** : Pas de réponse (affiché avec ❓)
|
||||
- **"d"** : Dispensé (ne compte pas dans le calcul)
|
||||
- Autres valeurs configurables via l'interface
|
||||
|
||||
---
|
||||
|
||||
## 📧 Interface d'Envoi
|
||||
|
||||
### Accès Multiple
|
||||
|
||||
**Page de résultats d'évaluation :**
|
||||
- Bouton "📧 Envoyer les bilans"
|
||||
- Interface de sélection d'élèves
|
||||
|
||||
**Workflow d'envoi :**
|
||||
|
||||
1. **Sélection des élèves**
|
||||
- Cases à cocher pour chaque élève
|
||||
- Validation automatique des adresses email
|
||||
|
||||
2. **Message personnalisé**
|
||||
- Champ texte libre pour ajouter un commentaire
|
||||
- Message inclus dans tous les bilans
|
||||
|
||||
3. **Prévisualisation**
|
||||
- Aperçu du bilan via `/preview-report/<student_id>`
|
||||
- Validation visuelle avant envoi
|
||||
|
||||
4. **Génération et envoi**
|
||||
- Création automatique des bilans individualisés
|
||||
- Envoi groupé en arrière-plan
|
||||
- Rapport détaillé des résultats
|
||||
|
||||
### Validation et Contrôles
|
||||
|
||||
**Validation des emails :**
|
||||
- Regex strict pour vérifier le format
|
||||
- Exclusion automatique des adresses invalides
|
||||
- Rapport détaillé des élèves sans email
|
||||
|
||||
**Gestion d'erreurs :**
|
||||
- Retry automatique en cas d'échec temporaire
|
||||
- Logs détaillés pour le debugging
|
||||
- Messages d'erreur explicites
|
||||
|
||||
---
|
||||
|
||||
## 🎨 Design des Emails
|
||||
|
||||
### Template Responsive
|
||||
|
||||
Le template `student_report.html` est optimisé pour une compatibilité maximale :
|
||||
|
||||
**Optimisations techniques :**
|
||||
- **CSS inliné** via Premailer pour compatibilité clients email
|
||||
- **Responsive design** avec adaptation mobile/desktop
|
||||
- **Polices système** pour une lecture optimale
|
||||
- **Images vectorielles** (émojis) pour améliorer la lisibilité
|
||||
|
||||
**Structure hiérarchique :**
|
||||
- Header personnalisé avec branding
|
||||
- Sections clairement délimitées
|
||||
- Palette de couleurs intelligente selon les performances
|
||||
- Typographie lisible et professionnelle
|
||||
|
||||
### Exemple de Rendu
|
||||
|
||||
```
|
||||
📊 Bilan d'Évaluation
|
||||
Contrôle Chapitre 3 - Fonctions - Marie DUPONT
|
||||
|
||||
📋 Informations sur l'évaluation
|
||||
Classe: 3ème A | Date: 15/03/2025 | Trimestre: T2 | Coefficient: ×2
|
||||
|
||||
🎯 Note globale
|
||||
15.5/20 (77.5%)
|
||||
[■■■■■■■■□□] Barre de progression verte
|
||||
|
||||
📝 Résultats par exercice
|
||||
Exercice 1: Calculs de base (8.0/10)
|
||||
├─ Question 1a: Dérivées → 4/4 pts
|
||||
├─ Question 1b: Limites → 3/4 pts
|
||||
└─ Question 1c: Primitives → 1/2 pts (Calcul différentiel: ⭐⭐☆)
|
||||
|
||||
⭐ Performances par compétences
|
||||
Calcul différentiel: ⭐⭐☆ (12.5/18)
|
||||
Raisonnement: ⭐⭐⭐ (15/15)
|
||||
|
||||
🏷️ Performances par domaines
|
||||
Analyse: ⭐⭐⭐ (16.5/18)
|
||||
Algèbre: ⭐⭐☆ (11/15)
|
||||
|
||||
Position: 12e/28 élèves | Moyenne classe: 14.2/20
|
||||
|
||||
💬 Message du professeur
|
||||
Très bon travail Marie ! Continue tes efforts en calcul différentiel.
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔒 Sécurité et Fiabilité
|
||||
|
||||
### Validation et Protection
|
||||
|
||||
**Validation des données :**
|
||||
- Format des adresses email avec regex strict
|
||||
- Vérification de l'existence des élèves
|
||||
- Contrôle d'accès aux évaluations
|
||||
|
||||
**Protection des données :**
|
||||
- Mots de passe chiffrés en base de données
|
||||
- Authentification sécurisée SMTP
|
||||
- Logs sans données sensibles
|
||||
|
||||
**Gestion d'erreurs robuste :**
|
||||
- Timeouts configurables pour les connexions SMTP
|
||||
- Retry automatique avec backoff exponentiel
|
||||
- Messages d'erreur explicites et non techniques
|
||||
|
||||
### Monitoring et Logs
|
||||
|
||||
**Logs structurés JSON :**
|
||||
```json
|
||||
{
|
||||
"timestamp": "2025-03-15T14:30:25.123Z",
|
||||
"level": "INFO",
|
||||
"event_type": "student_report_sent",
|
||||
"assessment_id": 15,
|
||||
"student_id": 42,
|
||||
"student_email": "marie.dupont@eleve.fr",
|
||||
"success": true,
|
||||
"correlation_id": "uuid-1234-5678"
|
||||
}
|
||||
```
|
||||
|
||||
**Rapports d'envoi détaillés :**
|
||||
- ✅ Nombre d'envois réussis avec destinataires
|
||||
- ❌ Erreurs détaillées par élève
|
||||
- 📊 Statistiques globales (taux de succès, durée)
|
||||
- 🔄 Possibilité de relance pour les échecs
|
||||
|
||||
---
|
||||
|
||||
## 📈 Cas d'Usage
|
||||
|
||||
### Scénario Typique
|
||||
|
||||
1. **Professeur termine une évaluation**
|
||||
- Toutes les notes sont saisies et validées
|
||||
- Indicateur "Correction 100%" affiché
|
||||
|
||||
2. **Accès aux résultats**
|
||||
- Navigation via page de résultats
|
||||
- Bouton "📧 Envoyer les bilans" visible
|
||||
|
||||
3. **Sélection des destinataires**
|
||||
- Interface avec liste des élèves
|
||||
- Cases à cocher avec validation emails
|
||||
- Exclusion automatique des adresses manquantes
|
||||
|
||||
4. **Personnalisation**
|
||||
- Ajout d'un message d'encouragement
|
||||
- Prévisualisation d'un bilan type
|
||||
|
||||
5. **Envoi groupé**
|
||||
- Génération automatique de 25 bilans individualisés
|
||||
- Envoi en 2-3 minutes
|
||||
- Suivi en temps réel
|
||||
|
||||
6. **Confirmation**
|
||||
- Rapport détaillé : "23 envois réussis, 2 erreurs"
|
||||
- Liste des erreurs avec raisons explicites
|
||||
|
||||
7. **Réception par les élèves**
|
||||
- Email professionnel dans la boîte de réception
|
||||
- Bilan détaillé consultable sur mobile/desktop
|
||||
- Analyses impossibles à obtenir sur papier
|
||||
|
||||
### Bénéfices Pédagogiques
|
||||
|
||||
**Pour l'enseignant :**
|
||||
- ⏱️ **Gain de temps massif** : Plus de photocopies ni distribution
|
||||
- 📊 **Analyses enrichies** : Statistiques automatiques impossibles sur papier
|
||||
- 🌱 **Impact écologique** : Réduction drastique de l'usage papier
|
||||
- 📱 **Communication moderne** : Canal privilégié des familles
|
||||
|
||||
**Pour les élèves/familles :**
|
||||
- 📈 **Feedback détaillé** : Analyses par compétences et domaines
|
||||
- 🎯 **Messages personnalisés** : Conseils adaptés aux performances
|
||||
- 📊 **Contexte de classe** : Position et comparaisons statistiques
|
||||
- 📱 **Accès immédiat** : Consultation sur tous appareils
|
||||
|
||||
**Pour l'établissement :**
|
||||
- 💚 **Démarche écologique** : Réduction significative du papier
|
||||
- 📈 **Communication digitale** : Modernisation des échanges
|
||||
- 🔄 **Traçabilité** : Historique automatique des envois
|
||||
- 📊 **Suivi longitudinal** : Conservation des bilans précédents
|
||||
|
||||
---
|
||||
|
||||
## 🛠️ Guide de Développement
|
||||
|
||||
### Extension du Système
|
||||
|
||||
**Ajouter un nouveau fournisseur SMTP :**
|
||||
|
||||
1. Étendre la validation dans `EmailService.is_configured()`
|
||||
2. Ajouter les paramètres spécifiques dans la configuration
|
||||
3. Mettre à jour l'aide contextuelle dans `templates/config/email.html`
|
||||
|
||||
**Personnaliser les templates email :**
|
||||
|
||||
1. Modifier `templates/email/student_report.html`
|
||||
2. Étendre `templates/email/base_email.html` pour le branding
|
||||
3. Tester avec le serveur de débogage local
|
||||
|
||||
**Ajouter de nouvelles données aux bilans :**
|
||||
|
||||
1. Étendre `StudentReportService.generate_student_report()`
|
||||
2. Modifier le template pour afficher les nouvelles données
|
||||
3. Mettre à jour les tests correspondants
|
||||
|
||||
### Tests et Debug
|
||||
|
||||
**Lancer les tests du système email :**
|
||||
```bash
|
||||
# Tests unitaires
|
||||
uv run pytest tests/test_email_service.py -v
|
||||
|
||||
# Tests d'intégration
|
||||
uv run pytest tests/test_student_reports.py -v
|
||||
|
||||
# Test manuel avec serveur debug
|
||||
python debug_smtp_server.py
|
||||
```
|
||||
|
||||
**Debugging des envois :**
|
||||
- Consulter les logs : `logs/notytex.log`
|
||||
- Vérifier la configuration SMTP via l'interface web
|
||||
- Utiliser la prévisualisation pour valider les templates
|
||||
- Tester avec le serveur local avant production
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Évolutions Prévues
|
||||
|
||||
### Fonctionnalités Futures
|
||||
|
||||
**Phase 1 - Améliorations UX :**
|
||||
- Interface d'envoi avec prévisualisation en temps réel
|
||||
- Templates personnalisables par établissement
|
||||
- Planification d'envois différés
|
||||
|
||||
**Phase 2 - Analytics :**
|
||||
- Statistiques d'ouverture des emails
|
||||
- Taux de rebond et délivrabilité
|
||||
- Rapports d'envoi historiques
|
||||
|
||||
**Phase 3 - Intégrations :**
|
||||
- Export PDF des bilans
|
||||
- Intégration avec des services externes (Pronote, etc.)
|
||||
- API pour envois automatisés
|
||||
|
||||
---
|
||||
|
||||
**📧 Système d'envoi de bilans opérationnel et prêt pour la production !**
|
Reference in New Issue
Block a user