✅ Infrastructure backend complète : - Tables attestations et configAttestation en base de données - Service de génération PDF (attestationService.ts) avec PDFKit - Procédures tRPC pour générer, récupérer et configurer les attestations - Stockage S3 des PDF générés ✅ Interface d'administration : - Page de configuration des attestations (/admin/attestations) - Personnalisation du texte avec variables dynamiques - Champs pour signataire (nom et fonction) - Placeholders pour logo et signature (à implémenter en phase 2) 📋 À faire en Phase 2 : - Upload des images (logo/signature) vers S3 - Génération automatique après validation de présence - Envoi automatique par email aux apprenants - Espace apprenant pour télécharger les attestations
24 lines
1.6 KiB
JSON
24 lines
1.6 KiB
JSON
{
|
|
"query": "SELECT \n emailDestinataire,\n sequenceId,\n COUNT(*) as nb_envois,\n MIN(dateEnvoi) as premier_envoi,\n MAX(dateEnvoi) as dernier_envoi\nFROM logsNotifications \nWHERE type = 'remerciement' AND statut = 'success'\nGROUP BY emailDestinataire, sequenceId\nHAVING COUNT(*) > 1\nORDER BY nb_envois DESC, dernier_envoi DESC;",
|
|
"command": "mysql --batch --raw --column-names --default-character-set=utf8mb4 --host gateway02.us-east-1.prod.aws.tidbcloud.com --port 4000 --user 4CrrYuB5tme73Qo.root --database 7PAT67UmWoxv8vwp8Bbcv6 --execute SELECT \n emailDestinataire,\n sequenceId,\n COUNT(*) as nb_envois,\n MIN(dateEnvoi) as premier_envoi,\n MAX(dateEnvoi) as dernier_envoi\nFROM logsNotifications \nWHERE type = 'remerciement' AND statut = 'success'\nGROUP BY emailDestinataire, sequenceId\nHAVING COUNT(*) > 1\nORDER BY nb_envois DESC, dernier_envoi DESC;",
|
|
"rows": [
|
|
{
|
|
"emailDestinataire": "opareige@gmail.com",
|
|
"sequenceId": "330001",
|
|
"nb_envois": "11",
|
|
"premier_envoi": "2025-12-15 20:24:49",
|
|
"dernier_envoi": "2025-12-15 21:16:32"
|
|
},
|
|
{
|
|
"emailDestinataire": "o.pareige@itinova.org",
|
|
"sequenceId": "330001",
|
|
"nb_envois": "10",
|
|
"premier_envoi": "2025-12-15 20:24:58",
|
|
"dernier_envoi": "2025-12-15 21:16:59"
|
|
}
|
|
],
|
|
"messages": [],
|
|
"stdout": "emailDestinataire\tsequenceId\tnb_envois\tpremier_envoi\tdernier_envoi\nopareige@gmail.com\t330001\t11\t2025-12-15 20:24:49\t2025-12-15 21:16:32\no.pareige@itinova.org\t330001\t10\t2025-12-15 20:24:58\t2025-12-15 21:16:59\n",
|
|
"stderr": "",
|
|
"execution_time_ms": 61
|
|
} |