Files
Classeo/backend/templates/emails/homework_exception_notification.html.twig
Mathias STRASSER 9b868ae5c4
Some checks failed
CI / Backend Tests (push) Has been cancelled
CI / Frontend Tests (push) Has been cancelled
CI / E2E Tests (push) Has been cancelled
CI / Naming Conventions (push) Has been cancelled
CI / Build Check (push) Has been cancelled
feat: Permettre aux enseignants de contourner les règles de devoirs avec justification
Akeneo permet de configurer des règles de devoirs en mode Hard qui bloquent
totalement la création. Or certains cas légitimes (sorties scolaires, événements
exceptionnels) nécessitent de passer outre ces règles. Sans mécanisme d'exception,
l'enseignant est bloqué et doit contacter manuellement la direction.

Cette implémentation ajoute un flux complet d'exception : l'enseignant justifie
sa demande (min 20 caractères), le devoir est créé immédiatement, et la direction
est notifiée par email. Le handler vérifie côté serveur que les règles sont
réellement bloquantes avant d'accepter l'exception, empêchant toute fabrication
de fausses exceptions via l'API. La direction dispose d'un rapport filtrable
par période, enseignant et type de règle.
2026-03-20 11:18:04 +01:00

113 lines
3.2 KiB
Twig

<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Exception aux règles de devoirs - Classeo</title>
<style>
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
line-height: 1.6;
color: #333;
max-width: 600px;
margin: 0 auto;
padding: 20px;
}
.header {
text-align: center;
padding: 20px 0;
border-bottom: 2px solid #4f46e5;
}
.header h1 {
color: #4f46e5;
margin: 0;
font-size: 28px;
}
.content {
padding: 30px 0;
}
.warning-icon {
text-align: center;
padding: 20px;
}
.warning-icon span {
display: inline-block;
width: 60px;
height: 60px;
background-color: #f59e0b;
border-radius: 50%;
line-height: 60px;
color: white;
font-size: 30px;
}
.info-box {
background-color: #f3f4f6;
border-radius: 8px;
padding: 20px;
margin: 20px 0;
}
.info-box p {
margin: 5px 0;
}
.justification-box {
background-color: #fffbeb;
border: 1px solid #fde68a;
border-radius: 8px;
padding: 15px 20px;
margin: 20px 0;
}
.justification-box p.label {
font-weight: bold;
color: #92400e;
margin: 0 0 5px;
}
.justification-box p.text {
margin: 0;
font-style: italic;
}
.footer {
text-align: center;
padding: 20px 0;
border-top: 1px solid #e5e7eb;
color: #6b7280;
font-size: 14px;
}
</style>
</head>
<body>
<div class="header">
<h1>Classeo</h1>
</div>
<div class="content">
<div class="warning-icon">
<span>!</span>
</div>
<h2 style="text-align: center;">Exception aux règles de devoirs</h2>
<p>Bonjour,</p>
<p>Un enseignant a demandé une exception aux règles de devoirs de votre établissement.</p>
<div class="info-box">
<p><strong>Enseignant :</strong> {{ teacherName }}</p>
<p><strong>Devoir :</strong> {{ homeworkTitle }}</p>
<p><strong>Date d'échéance :</strong> {{ dueDate }}</p>
<p><strong>Règle(s) contournée(s) :</strong> {{ ruleTypes|join(', ') }}</p>
</div>
<div class="justification-box">
<p class="label">Justification de l'enseignant :</p>
<p class="text">{{ justification }}</p>
</div>
<p>Ce devoir a été créé immédiatement. Aucune action n'est requise de votre part, mais vous pouvez consulter le rapport des exceptions dans votre espace direction.</p>
</div>
<div class="footer">
<p>Cet email a été envoyé automatiquement par Classeo.</p>
</div>
</body>
</html>