Checkpoint: Ajout de la fonctionnalité d'import Excel pour créer des formations et séquences en masse. Inclut le template Excel, la logique backend de parsing et validation, l'interface frontend avec prévisualisation, et la documentation utilisateur complète.

This commit is contained in:
Manus Sandbox
2025-11-25 05:49:13 -05:00
parent 9fffa8c773
commit f5dfb20e9a
10 changed files with 1514 additions and 1 deletions

264
NOTES_VERSION.md Normal file
View File

@@ -0,0 +1,264 @@
# Formation Manager Itinova - Notes de Version
**Version actuelle** : 9fffa8c7
**Date** : 25 novembre 2025
**Statut** : Production Ready
---
## 📋 Vue d'ensemble
Application complète de gestion des formations Manager Itinova avec système d'inscription en ligne, gestion administrative avancée, et automatisation des communications.
---
## ✨ Fonctionnalités Principales
### 🎓 Gestion des Formations
- Création et gestion des formations avec liens d'inscription uniques
- Configuration du public cible (Directeur, Chef de service, Tous, Autre)
- Suivi du statut et des descriptions détaillées
- Interface CRUD complète avec filtres et recherche
### 📅 Gestion des Séquences
- Support de jusqu'à 4 dates par séquence de formation
- Gestion des lieux, formateurs et capacité maximale (12 participants)
- Statuts : Ouverte, Bloquée, Terminée
- Blocage automatique des inscriptions à J-15
- Barre de progression colorée du taux de remplissage
- Filtres avancés (formation, lieu, statut, public cible)
- **Badge coloré** pour le public cible
### 📆 Vue Calendrier
- **Vue mensuelle** avec affichage des séquences par jour
- **Vue hebdomadaire** avec détails des séquences
- **Vue journalière** pour une vision détaillée
- Filtres par formation, lieu et public cible
- **Export PDF** du calendrier mensuel
- **Export iCal** pour partage avec formateurs (compatible Outlook/Google Calendar)
- Code couleur par public cible
- Navigation intuitive entre les périodes
### 👥 Gestion des Apprenants
- Fiche complète (nom, prénom, email, établissement, fonction)
- Fonction : Directeur, Chef de service, Autre
- Historique des inscriptions
- Filtres par établissement et fonction
- Import/export des données
### 📝 Système d'Inscription Publique
- Page d'inscription accessible via lien unique par formation
- Affichage des séquences disponibles avec places restantes
- Validation anti-double inscription
- Blocage automatique à J-15
- Liste d'attente si capacité maximale atteinte
- **Alerte d'information** si le public cible ne correspond pas à la fonction de l'apprenant
### 📧 Templates d'Emails Personnalisables
- **Éditeur WYSIWYG** pour personnaliser les templates
- Configuration du logo, couleurs primaire/secondaire
- Templates disponibles :
- Confirmation d'inscription
- Rappel à J-7
- Teaser pour chaque groupe
- Réinitialisation de mot de passe
- Prévisualisation en temps réel
- Variables dynamiques (nom, dates, lieu, etc.)
### ⚙️ Configuration SMTP
- Interface de configuration complète
- Support Resend API
- Mode simulation/production
- Test d'envoi immédiat avec feedback
- Validation de domaine
- Gestion sécurisée des clés API
### 📊 Exports et Rapports
- **Export Excel** des listes d'inscrits
- **Export PDF** des listes d'inscrits
- **Feuilles de présence PDF** (nom, prénom, établissement, fonction)
- **Invitations Outlook (.ics)** avec statut "occupé" et lieu
- **Rapport d'analyse** : Public cible vs Fonction des apprenants
- **Tableau de bord analytique** avec graphiques interactifs
### 👤 Gestion des Utilisateurs
- Rôles : Admin, Utilisateur
- Activation/désactivation des comptes
- Réinitialisation de mot de passe par email
- Filtres de recherche (nom, email, rôle, statut)
- Authentification locale (sans OAuth Manus)
### 🔔 Système de Rappels
- Configuration des rappels automatiques
- Déclenchement à J-7, J-1 ou dates personnalisées
- Envoi par email aux apprenants inscrits
- Gestion des templates de rappel
### 🏢 Analyses et Statistiques
- **Tableau de bord** avec indicateurs clés
- **Répartition par fonction** (graphique circulaire)
- **Répartition par établissement** (top 10)
- **Rapport Public Cible** : analyse des écarts entre public cible et fonction réelle
- Statistiques de remplissage des séquences
- Suivi des inscriptions en temps réel
---
## 🛠️ Technologies Utilisées
### Frontend
- **React 19** avec TypeScript
- **Tailwind CSS 4** pour le styling
- **shadcn/ui** pour les composants
- **Wouter** pour le routing
- **TanStack Query** pour la gestion d'état
- **Recharts** pour les graphiques
- **date-fns** pour la gestion des dates
### Backend
- **Express 4** avec TypeScript
- **tRPC 11** pour l'API type-safe
- **Drizzle ORM** pour la base de données
- **MySQL/TiDB** comme base de données
- **Zod** pour la validation
- **Superjson** pour la sérialisation
### Services
- **Resend** pour l'envoi d'emails
- **JWT** pour l'authentification
- **bcrypt** pour le hachage des mots de passe
---
## 📦 Structure du Projet
```
formation-manager-itinova/
├── client/ # Application React frontend
│ ├── src/
│ │ ├── pages/ # Pages de l'application
│ │ ├── components/ # Composants réutilisables
│ │ ├── contexts/ # Contextes React
│ │ └── lib/ # Utilitaires et configuration
│ └── public/ # Assets statiques
├── server/ # Application Express backend
│ ├── routers.ts # Routes tRPC
│ ├── db.ts # Fonctions base de données
│ └── _core/ # Infrastructure
├── drizzle/ # Schéma et migrations DB
├── shared/ # Types et constantes partagés
└── deployment-package/ # Scripts de déploiement
```
---
## 🔧 Configuration Requise
### Variables d'Environnement Système
- `DATABASE_URL` : Connexion MySQL/TiDB
- `JWT_SECRET` : Secret pour les tokens JWT
- `VITE_APP_TITLE` : Titre de l'application
- `VITE_APP_LOGO` : URL du logo
### Configuration SMTP (via interface)
- API Key Resend
- Email expéditeur vérifié
- Mode simulation/production
---
## 🚀 Déploiement
### Prérequis
- Node.js 22.x
- MySQL 8.x ou TiDB
- Serveur avec Nginx (recommandé)
### Installation
```bash
# 1. Extraire l'archive
tar -xzf formation-manager-backup-YYYYMMDD-HHMMSS.tar.gz
cd formation-manager-itinova
# 2. Installer les dépendances
pnpm install
# 3. Configurer les variables d'environnement
cp .env.example .env
# Éditer .env avec vos valeurs
# 4. Initialiser la base de données
pnpm db:push
# 5. Démarrer l'application
pnpm dev # Développement
pnpm build # Production
pnpm start # Serveur production
```
### Scripts de Déploiement
- `deploy.sh` : Installation complète automatisée
- `update.sh` : Mise à jour rapide
---
## 📝 Dernières Corrections (Version 9fffa8c7)
### Bug Corrigé : Public Cible "Tous"
- ✅ Ajout de "tous" dans l'enum publicCible du schéma
- ✅ Mise à jour des validations Zod
- ✅ Modification de la colonne en base de données
- ✅ Test réussi de création/modification avec "Tous"
### Améliorations Calendrier (Version 625cbedf)
- ✅ Filtres dynamiques (formation, lieu, public cible)
- ✅ Vues multiples (mois, semaine, jour)
- ✅ Export PDF et iCal
- ✅ Navigation adaptative selon la vue
### Correction Affichage (Version 14aa8c5f)
- ✅ Résolution de l'erreur React #31 au survol des vignettes
- ✅ Gestion robuste des types Date/string
- ✅ Clés React stables pour éviter les re-renders
---
## 🔐 Sécurité
- Authentification JWT avec tokens sécurisés
- Mots de passe hachés avec bcrypt
- Protection CSRF sur toutes les routes
- Validation des entrées avec Zod
- Gestion des rôles (admin/utilisateur)
- Tokens de réinitialisation avec expiration
---
## 📖 Documentation Complète
- `GUIDE_DEPLOIEMENT.md` : Guide d'installation pas à pas
- `CONFIGURATION.md` : Documentation des variables d'environnement
- `RELEASE_NOTES.md` : Notes de version détaillées
- `README.md` : Vue d'ensemble du projet
---
## 🎯 Prochaines Évolutions Suggérées
1. **Page Établissements** : Interface de gestion avec statistiques
2. **Tableau de bord formateurs** : Vue dédiée aux formateurs
3. **Notifications automatiques** : Rappels à J-7 et J-1
4. **Drag & drop calendrier** : Déplacer les séquences visuellement
5. **Vue imprimable optimisée** : PDF personnalisé avec logo et filtres
---
## 📞 Support
- **Email** : o.pareige@itinova.org
- **Documentation** : Consultez les fichiers PDF inclus
- **Support Manus** : https://help.manus.im
---
**Développé avec ❤️ pour Itinova**