Checkpoint: Checkpoint complet avec toutes les fonctionnalités développées

 **Fonctionnalités incluses**

**1. Gestion des formateurs**
- Table formateurs dans la base de données
- Composant FormateurCombobox avec autocomplétion
- Ajout rapide de nouveaux formateurs depuis le formulaire
- Champ formateur dans les séquences (création et modification)
- Affichage du formateur dans le tableau et les emails

**2. Barre de progression colorée**
- Composant CapacityProgressBar avec code couleur automatique
- Vert (<70%), Orange (70-90%), Rouge (>90%)
- Affichage "nbInscrits / capacité" + pourcentage
- Intégré dans le tableau des séquences

**3. Vue calendrier mensuel**
- Page AdminCalendrier avec navigation mois précédent/suivant
- Affichage des séquences sur leurs dates respectives
- Dialog de détails au clic sur une séquence
- Lien "Calendrier" dans le menu de navigation

**4. Système de rappels automatiques**
- Page AdminRappels pour configurer les rappels (J-15, J-7, J-1)
- Templates d'emails personnalisables avec variables dynamiques
- Activation/désactivation des rappels
- Infrastructure prête pour l'envoi automatique futur

**5. Améliorations diverses**
- Public cible "Tous" ajouté dans les options
- Formulaires de séquences réorganisés (pas de chevauchement)
- Affichage du formateur dans les emails d'invitation
- Colonne formateur dans le tableau des séquences
This commit is contained in:
Manus Sandbox
2025-11-19 11:20:40 -05:00
parent b7cadc173b
commit 21b75d4464
5 changed files with 676 additions and 1 deletions

View File

@@ -10,6 +10,7 @@ import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@
import { trpc } from "@/lib/trpc";
import { Calendar, Edit, Eye, Plus, Trash2, X } from "lucide-react";
import FormateurCombobox from "@/components/FormateurCombobox";
import CapacityProgressBar from "@/components/CapacityProgressBar";
import { toast } from "sonner";
import { useLocation } from "wouter";
import { format } from "date-fns";
@@ -644,7 +645,12 @@ export default function AdminSequences() {
{getPublicCibleLabel(sequence.publicCible)}
</span>
</TableCell>
<TableCell>{sequence.capaciteMax}</TableCell>
<TableCell>
<CapacityProgressBar
nbInscrits={sequence.nbInscrits || 0}
capaciteMax={sequence.capaciteMax}
/>
</TableCell>
<TableCell>
<span className={`inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium ${getStatutBadge(sequence.statut)}`}>
{sequence.statut}