Checkpoint: Améliorations de la gestion des attestations de formation :

- Ajout du paramètre d'envoi automatique des attestations dans la page Paramètres
- Ajout de la prévisualisation du modèle d'attestation avec génération PDF
- Création de la page Historique des attestations dans la section Traçabilité
- Création de la table historiqueAttestations pour tracer les envois
- Ajout des procédures tRPC pour l'historique et la prévisualisation
This commit is contained in:
Manus
2026-01-12 13:54:18 -05:00
parent 61f28781f0
commit ce64c72f00
13 changed files with 563 additions and 19 deletions

View File

@@ -19,6 +19,7 @@ export default function AdminParametres() {
const [delaiExpirationQR, setDelaiExpirationQR] = useState(30);
const [dureeValiditeToken, setDureeValiditeToken] = useState(24);
const [notificationsActives, setNotificationsActives] = useState(true);
const [envoiAutomatiqueAttestations, setEnvoiAutomatiqueAttestations] = useState(true);
const [testUrlStatus, setTestUrlStatus] = useState<{ loading: boolean; result?: { accessible: boolean; message: string } }>({ loading: false });
// Initialiser les valeurs quand les données sont chargées
@@ -28,6 +29,7 @@ export default function AdminParametres() {
setDelaiExpirationQR(parametres.delaiExpirationQR);
setDureeValiditeToken(parametres.dureeValiditeToken);
setNotificationsActives(parametres.notificationsActives);
setEnvoiAutomatiqueAttestations(parametres.envoiAutomatiqueAttestations);
}
}, [parametres]);
@@ -72,6 +74,7 @@ export default function AdminParametres() {
delaiExpirationQR,
dureeValiditeToken,
notificationsActives,
envoiAutomatiqueAttestations,
});
};
@@ -221,6 +224,23 @@ export default function AdminParametres() {
/>
</div>
{/* Envoi automatique des attestations */}
<div className="flex items-center justify-between space-x-2 rounded-lg border p-4">
<div className="space-y-0.5">
<Label htmlFor="envoiAutomatiqueAttestations" className="text-base">
Envoi automatique des attestations
</Label>
<p className="text-sm text-muted-foreground">
Envoyer automatiquement les attestations de formation aux apprenants à la fin de chaque séquence
</p>
</div>
<Switch
id="envoiAutomatiqueAttestations"
checked={envoiAutomatiqueAttestations}
onCheckedChange={setEnvoiAutomatiqueAttestations}
/>
</div>
<div className="flex items-center gap-2 pt-4">
<Button
type="submit"