Checkpoint: Ajout de 4 nouveaux templates de rappels

## Modifications effectuées :

### AdminEmailTemplates.tsx
Ajout de 4 nouveaux types de templates dans la liste :
- "Rappel 3" (value: rappel3)
- "Rappel 4" (value: rappel4)
- "Rappel 5" (value: rappel5)
- "Rappel 6" (value: rappel6)

### AdminRappels.tsx
Ajout des mêmes templates dans TEMPLATE_TYPES avec des délais par défaut :
- Rappel 3 : 14 jours avant
- Rappel 4 : 21 jours avant
- Rappel 5 : 30 jours avant
- Rappel 6 : 60 jours avant

### server/db.ts (initializeDefaultEmailTemplates)
Ajout de 4 nouveaux templates par défaut basés sur le contenu du "Rappel 1" :
- Même structure HTML
- Même message de base
- Prêts à être personnalisés

## Note importante
Ces nouveaux templates ne seront créés que lors de l'initialisation des templates par défaut (bouton "Initialiser les templates par défaut" dans Configuration > Templates d'emails). Si vous avez déjà initialisé les templates, vous devrez créer manuellement ces 4 nouveaux templates ou réinitialiser la base de données.
This commit is contained in:
Manus
2026-01-08 05:15:03 -05:00
parent f87de767cb
commit f56c1d554e
4 changed files with 121 additions and 0 deletions

View File

@@ -250,6 +250,10 @@ export default function AdminEmailTemplates() {
{ value: "teaser", label: "Email teaser" },
{ value: "rappel", label: "Rappel 1" },
{ value: "rappelJ1", label: "Rappel 2" },
{ value: "rappel3", label: "Rappel 3" },
{ value: "rappel4", label: "Rappel 4" },
{ value: "rappel5", label: "Rappel 5" },
{ value: "rappel6", label: "Rappel 6" },
{ value: "reset_password", label: "Réinitialisation de mot de passe" },
];

View File

@@ -29,6 +29,10 @@ import { toast } from "sonner";
const TEMPLATE_TYPES = [
{ value: "rappel", label: "Rappel 1", joursAvant: 7 },
{ value: "rappelJ1", label: "Rappel 2", joursAvant: 1 },
{ value: "rappel3", label: "Rappel 3", joursAvant: 14 },
{ value: "rappel4", label: "Rappel 4", joursAvant: 21 },
{ value: "rappel5", label: "Rappel 5", joursAvant: 30 },
{ value: "rappel6", label: "Rappel 6", joursAvant: 60 },
];
export default function AdminRappels() {

View File

@@ -700,6 +700,114 @@ export async function initializeDefaultEmailTemplates() {
footerText: "Cet email a été envoyé automatiquement par le système de gestion des formations Itinova. Pour toute question, veuillez contacter le service RH.",
active: true,
},
{
type: "rappel3",
name: "Rappel 3",
logoUrl: null,
primaryColor: "#2563eb",
headerBgColor: "#2563eb",
headerTextColor: "#ffffff",
headerTitle: "Formation Manager Itinova",
bodyContent: `<h2>Rappel : Votre formation commence bientôt !</h2>
<p>Bonjour {{prenomApprenant}} {{nomApprenant}},</p>
<p>Nous vous rappelons que votre formation <strong>{{nomFormation}}</strong> commence dans une semaine.</p>
<div class="info-box">
<p><strong>Séquence :</strong> {{nomSequence}}</p>
<h4>Dates :</h4>
{{datesHTML}}
<p><strong>Lieu :</strong> {{lieu}}</p>
<p><strong>Formateur :</strong> {{formateur}}</p>
</div>
<p>N'oubliez pas d'apporter le matériel nécessaire et de vous présenter à l'heure indiquée.</p>
<p>À très bientôt !</p>`,
footerText: "Cet email a été envoyé automatiquement par le système de gestion des formations Itinova. Pour toute question, veuillez contacter le service RH.",
active: true,
},
{
type: "rappel4",
name: "Rappel 4",
logoUrl: null,
primaryColor: "#2563eb",
headerBgColor: "#2563eb",
headerTextColor: "#ffffff",
headerTitle: "Formation Manager Itinova",
bodyContent: `<h2>Rappel : Votre formation commence bientôt !</h2>
<p>Bonjour {{prenomApprenant}} {{nomApprenant}},</p>
<p>Nous vous rappelons que votre formation <strong>{{nomFormation}}</strong> commence dans une semaine.</p>
<div class="info-box">
<p><strong>Séquence :</strong> {{nomSequence}}</p>
<h4>Dates :</h4>
{{datesHTML}}
<p><strong>Lieu :</strong> {{lieu}}</p>
<p><strong>Formateur :</strong> {{formateur}}</p>
</div>
<p>N'oubliez pas d'apporter le matériel nécessaire et de vous présenter à l'heure indiquée.</p>
<p>À très bientôt !</p>`,
footerText: "Cet email a été envoyé automatiquement par le système de gestion des formations Itinova. Pour toute question, veuillez contacter le service RH.",
active: true,
},
{
type: "rappel5",
name: "Rappel 5",
logoUrl: null,
primaryColor: "#2563eb",
headerBgColor: "#2563eb",
headerTextColor: "#ffffff",
headerTitle: "Formation Manager Itinova",
bodyContent: `<h2>Rappel : Votre formation commence bientôt !</h2>
<p>Bonjour {{prenomApprenant}} {{nomApprenant}},</p>
<p>Nous vous rappelons que votre formation <strong>{{nomFormation}}</strong> commence dans une semaine.</p>
<div class="info-box">
<p><strong>Séquence :</strong> {{nomSequence}}</p>
<h4>Dates :</h4>
{{datesHTML}}
<p><strong>Lieu :</strong> {{lieu}}</p>
<p><strong>Formateur :</strong> {{formateur}}</p>
</div>
<p>N'oubliez pas d'apporter le matériel nécessaire et de vous présenter à l'heure indiquée.</p>
<p>À très bientôt !</p>`,
footerText: "Cet email a été envoyé automatiquement par le système de gestion des formations Itinova. Pour toute question, veuillez contacter le service RH.",
active: true,
},
{
type: "rappel6",
name: "Rappel 6",
logoUrl: null,
primaryColor: "#2563eb",
headerBgColor: "#2563eb",
headerTextColor: "#ffffff",
headerTitle: "Formation Manager Itinova",
bodyContent: `<h2>Rappel : Votre formation commence bientôt !</h2>
<p>Bonjour {{prenomApprenant}} {{nomApprenant}},</p>
<p>Nous vous rappelons que votre formation <strong>{{nomFormation}}</strong> commence dans une semaine.</p>
<div class="info-box">
<p><strong>Séquence :</strong> {{nomSequence}}</p>
<h4>Dates :</h4>
{{datesHTML}}
<p><strong>Lieu :</strong> {{lieu}}</p>
<p><strong>Formateur :</strong> {{formateur}}</p>
</div>
<p>N'oubliez pas d'apporter le matériel nécessaire et de vous présenter à l'heure indiquée.</p>
<p>À très bientôt !</p>`,
footerText: "Cet email a été envoyé automatiquement par le système de gestion des formations Itinova. Pour toute question, veuillez contacter le service RH.",
active: true,
},
{
type: "reset_password",
name: "Réinitialisation de mot de passe",

View File

@@ -507,3 +507,8 @@
## Renommage du label dans la gestion des rappels
- [x] Renommer "Type de rappel" en "Template d'email utilisé" dans les dialogues de création/modification
- [x] Renommer "Type" en "Template" dans le header du tableau
## Ajout de 4 nouveaux templates de rappels
- [x] Ajouter "Rappel 3", "Rappel 4", "Rappel 5", "Rappel 6" dans AdminEmailTemplates.tsx
- [x] Ajouter les mêmes templates dans AdminRappels.tsx avec délais (14, 21, 30, 60 jours)
- [x] Modifier initializeDefaultEmailTemplates dans db.ts pour créer ces templates basés sur Rappel 1