feat: Gestion des classes scolaires

Permet aux administrateurs de créer, modifier et supprimer des classes
pour organiser les élèves par niveau. L'archivage soft-delete préserve
l'historique tout en masquant les classes obsolètes.

Inclut la validation des noms (2-50 caractères), les niveaux scolaires
du CP à la Terminale, et les contrôles d'accès par rôle.
This commit is contained in:
2026-02-05 15:24:29 +01:00
parent b45ef735db
commit 8e09e0abf1
54 changed files with 5099 additions and 5 deletions

View File

@@ -31,11 +31,11 @@
<span class="action-label">Gérer les utilisateurs</span>
<span class="action-hint">Bientôt disponible</span>
</div>
<div class="action-card disabled" aria-disabled="true">
<a class="action-card" href="/admin/classes">
<span class="action-icon">🏫</span>
<span class="action-label">Configurer les classes</span>
<span class="action-hint">Bientôt disponible</span>
</div>
<span class="action-hint">Créer et gérer</span>
</a>
<div class="action-card disabled" aria-disabled="true">
<span class="action-icon">📅</span>
<span class="action-label">Calendrier scolaire</span>

View File

@@ -0,0 +1,33 @@
/**
* Liste des niveaux scolaires valides selon le référentiel Éducation Nationale.
*
* Utilisé pour :
* - La validation dans les formulaires
* - Les selects/dropdowns
*
* @see backend/src/Administration/Domain/Model/SchoolClass/SchoolLevels.php
*/
export const SCHOOL_LEVELS = [
'CP',
'CE1',
'CE2',
'CM1',
'CM2',
'6ème',
'5ème',
'4ème',
'3ème',
'2nde',
'1ère',
'Terminale'
] as const;
export type SchoolLevel = (typeof SCHOOL_LEVELS)[number];
/**
* Options pour les selects de niveaux scolaires.
*/
export const SCHOOL_LEVEL_OPTIONS = SCHOOL_LEVELS.map((level) => ({
value: level,
label: level
}));