KLASSCI/ Docs

Changelog

Toutes les évolutions notables de la plateforme KLASSCI, regroupées par mois.

Le format suit librement Keep a Changelog.

Ce fichier est curé manuellement à partir de l'historique des livraisons. Les correctifs mineurs, refactorings internes et changements d'infrastructure ne sont pas listés systématiquement. Pour le détail technique complet, consulter l'historique Git du dépôt.


Mai 2026

Ajouts

  • Configuration de la maquette pédagogique LMD entièrement éditable depuis l'interface — sur la page Planning LMD, chaque cellule du tableau (CM, TD, TP, Projet, TPE, crédits ECTS) devient éditable au simple clic. La modification est enregistrée instantanément sans rechargement de page, le total des heures se recalcule automatiquement. L'assignation d'un enseignant à un ECUE se fait via une recherche élégante (groupée par rôle, avec photos de profil). Toutes les modifications sont tracées dans le journal d'audit pour conformité.

  • Édition en lot des volumes pédagogiques — sélectionnez plusieurs ECUE en une fois (case à cocher par ligne ou « tout sélectionner »), une barre d'action apparaît en bas de l'écran. Cliquez sur « Modifier en lot » pour ouvrir un éditeur compact où vous choisissez quels champs appliquer (par exemple : « TPE = 30h pour les 12 ECUE sélectionnés, sans toucher au reste »). Idéal pour appliquer une politique pédagogique uniforme sur toute une promotion en quelques secondes.

  • Maquettes UEMOA Licence prêtes à l'emploi — 5 parcours Licence 3 spécialisés ajoutés sur Ephrata (Droit Privé, Droit Public, Économie, Gestion, Agroéconomie), aux côtés des troncs communs Licence 1 et 2 déjà importés. Au total, 9 parcours complets (Droit, Sciences Économiques et de Gestion, Sciences de la Vie et de la Terre, Lettres Modernes) couvrant 232 unités d'enseignement et 447 ECUE, conformes au standard UEMOA (30 crédits par semestre). Plus besoin de saisir manuellement la maquette pédagogique — tout est pré-rempli, modifiable, audité.

  • Suivi des étudiants en situation de handicap (/esbtp/accessibility) — nouvelle page dédiée pour superviser la cohorte des étudiants avec aménagements pédagogiques. Pour chaque étudiant : reconnaissance officielle, catégories (motrice, visuelle, auditive, cognitive, psychique, dys, maladie chronique), aménagements concrets (tiers-temps en pourcentage configurable, salle adaptée, supports agrandis, interprète LSF, prise de notes, ordinateur autorisé, pauses pendant épreuves), assistant requis, période de validité. La fiche étudiant accueille une nouvelle section « Accessibilité & aménagements » avec un panneau d'édition premium (chips colorées, toggles, dates de validité). Un pictogramme discret apparaît à côté du nom dans la liste des étudiants, dans les listes d'appel et listes complètes de classe, dans les feuilles de saisie de notes et dans tous les exports PDF / Excel — pour que l'enseignant repère en un coup d'œil les étudiants concernés. Les listes d'appel et listes complètes de classe affichent désormais en pied de page un encart « Aménagements à respecter » qui rappelle les adaptations pour chaque étudiant concerné. La description médicale détaillée est strictement séparée du résumé visible aux enseignants : par défaut, seuls les coordinateurs et secrétaires y accèdent. Toutes les modifications sont tracées dans l'audit log. Cinq nouvelles permissions paramétrables par école dans la matrice des rôles personnalisés. Export cohorte dédié (aperçu + PDF + Excel + envoi par email).

Corrections

  • Cascade niveau → semestre dans le planning LMD — le filtre semestre s'adapte désormais automatiquement au niveau choisi (Licence 1 → S1+S2, Licence 2 → S3+S4, Licence 3 → S5+S6) selon le standard UEMOA, indépendamment des UE déjà rattachées au parcours sélectionné. Le filtre niveau affiche tous les niveaux LMD actifs.

  • Robustesse de l'édition multi-utilisateurs — l'édition simultanée d'une même cellule par deux personnes affiche désormais un message clair de conflit (« Cette planification a été modifiée par un autre utilisateur, rechargez la page ») au lieu d'une erreur générique. Les sessions expirées, permissions perdues ou erreurs de validation côté serveur affichent toutes des messages contextuels précis.

Sécurité

  • Journal d'audit étendu aux maquettes pédagogiques — chaque modification de volume horaire, de crédit, de coefficient ou d'enseignant assigné est désormais tracée dans le journal d'audit accessible depuis le menu « Sécurité & Audit » (permission security.audit.view). Vous savez précisément qui a modifié quoi, quand, et avec quelle valeur avant/après.

Améliorations

  • Saisie de notes plus robuste, même avec un wifi instable (/esbtp/notes, modal de saisie) — chaque frappe est désormais sauvegardée localement dans le navigateur. Si la connexion tombe pendant que l'enseignant saisit 600 notes en classe, rien n'est perdu : à la prochaine ouverture du modal pour la même classe / matière / période, une bannière jaune « Brouillon non sauvegardé détecté — il y a 4 min · 38 notes en attente de synchronisation » propose de tout restaurer en un clic. Un badge réseau dans l'en-tête du modal indique en permanence l'état de la synchronisation : vert « Synchronisé », orange « Sauvegarde… », rouge « Hors ligne — brouillon local ». Si l'enseignant tente de fermer le modal alors que des sauvegardes sont encore en cours, une confirmation premium s'affiche pour éviter toute perte.

  • Saisie clavier façon Excel (/esbtp/notes, modal de saisie) — Tab et Shift+Tab naviguent par colonne, Enter et Shift+Enter par ligne, Ctrl+S enregistre toutes les notes en attente, Esc défocus la cellule, Ctrl+F ouvre la barre de recherche. Au premier focus de la première cellule, un tooltip discret affiche l'astuce une seule fois (auto-disparaît après 6 secondes ou au premier Tab).

  • Refonte premium du modal de saisie de notes (/esbtp/notes) — l'en-tête de tableau (Étudiants, Semestre 1/2, Évaluations, Synthèse) reste collé en haut lors du défilement vertical de la grille. Une barre d'outils intégrée affiche une recherche d'étudiant en direct (filtre par nom, prénom ou matricule) et le compteur en temps réel (« 87 étudiants · 6 évaluations · 12 visibles »). Au-delà de 80 étudiants par classe, la grille n'affiche que les 50 premiers et un bouton « Charger 30 étudiants de plus » apparaît en bas pour éviter le ralentissement. Lorsque le tableau dépasse à droite, un dégradé subtil et une flèche flottante invitent à faire défiler horizontalement.

  • Sauvegarde plus visible : toast premium au lieu d'un flash de ligne (/esbtp/notes) — chaque note enregistrée déclenche désormais un toast élégant en haut à droite (« Note enregistrée — Marie Konaté · moyenne 14,25/20 ») qui s'enchaîne intelligemment si plusieurs notes sont sauvegardées en moins d'une demi-seconde (« 8 notes enregistrées — Marie, Aïcha, Jean, +5 »). La ligne du tableau garde aussi son flash vert pour la confirmation visuelle directe.

  • Toggle absent visuellement clair (/esbtp/notes) — la case à cocher minuscule est remplacée par un interrupteur (form switch) rouge avec libellé « Abs ». Quand un étudiant est marqué absent, sa ligne est légèrement teintée de rouge, son nom passe en italique et un badge « Absent » (ou « Absent 3/6 » si seulement certaines évaluations) s'affiche à côté de son nom.

  • En-têtes d'évaluation lisibles + édition rapide (/esbtp/notes) — les minuscules champs barème et coefficient sont remplacés par un affichage lisible sur trois lignes : titre de l'évaluation, « / 20 · Coef 1 », badge du type. Un bouton crayon discret apparaît au survol et ouvre un mini formulaire pour modifier rapidement le titre, le barème (1 à 100) et le coefficient (0,1 à 10) sans changer de page.

  • « Créer et continuer » dans la création d'évaluation (/esbtp/notes) — un nouveau bouton à côté de « Créer l'évaluation » permet d'enregistrer la nouvelle évaluation et de garder le formulaire ouvert avec la classe, la matière, la date, les horaires, le barème et le coefficient déjà conservés, pour enchaîner deux ou trois évaluations dans la même session sans réouvrir le modal à chaque fois.

Ajouts

  • Saisie offline des notes : export Excel + ré-import avec aperçu Avant/Après (/esbtp/notes) — chaque modal de saisie propose désormais un bouton « Exporter Excel » (1 ligne par étudiant, 1 colonne par évaluation avec barème et coefficient dans le titre, freeze pane sur étudiant et nom, autoFilter, matricule en format texte pour préserver les zéros initiaux) pour saisir les notes hors connexion, par exemple en classe ou à la maison. Au retour, un bouton « Importer Excel » avec drag-drop ouvre une fenêtre de prévisualisation premium qui affiche, en quatre indicateurs colorés (à créer, à mettre à jour, inchangées, erreurs) et dans un tableau ligne par ligne, exactement ce qui va changer avant validation. La validation est par cellule (note dans le barème, matricule existant, format français 12,5 accepté, marqueur ABS reconnu pour absence) et l'application est atomique. Limite 5 Mo par fichier, 10 exports par minute, 5 prévisualisations et 3 imports par minute pour éviter les abus.

  • Aperçu de l'impact d'une note sur la moyenne en temps réel (/esbtp/notes) — chaque fois qu'un enseignant tape une note dans la grille de saisie, un encadré discret s'affiche sous l'étudiant et indique en moins d'une seconde la nouvelle moyenne matière, la nouvelle moyenne générale et le changement de mention CAMES (Très Bien / Bien / Assez Bien / Passable / Insuffisant) si la note bascule l'étudiant vers une mention différente. Garde-fou contre les fautes de frappe et confirmation visuelle immédiate de l'impact pédagogique.

  • Refonte premium des pages enseignant (création + modification) — formulaire en une seule page avec hero gradient KLASSCI, trois champs requis pour démarrer (nom, téléphone, spécialisation), section « Régime d'engagement » avec radio cards (Vacataire / Permanent / Consultant) et champs conditionnels selon le régime, panneau « Profil détaillé » pliable pour diplômes et grade, date de début d'activité optionnelle pré-remplie au jour.

  • Refonte premium de la modification rapide des disponibilités (/esbtp/enseignants/bulk-availability) — chaque item enseignant repensé : avatar gradient avec initiales, stats premium (Préférés / Disponibles / Indisponibles) avec couleurs sémantiques, grille calendrier 7×11 avec gradients par statut, mode édition avec bordure bleue active, légende dans card grise.

  • Pattern unifié d'export PDF / Excel avec aperçu, envoi par email du document, et paramètres d'export premium par tenant. Le même flux est utilisé pour les paiements, les listes de classe, les bulletins et les rapports comptables.

  • Personnalisation PDF par établissement — paramètres tenant pour couleur d'accent, position du logo, footer signature, marges, et aperçu du rendu en nouvelle tab sans téléchargement intermédiaire.

  • Chat interactif avec notifications événementielles — la messagerie réagit en temps réel aux événements métier (paiement validé, inscription validée, paiement créé) et affiche les notifications correspondantes dans la barre latérale du destinataire.

  • Modale « Nouveau message » premium sur le chat — header gradient, avatars circulaires des destinataires, recherche temps réel, accessibilité clavier complète.

  • Polish UI 2026 du chat — groupement des messages consécutifs du même expéditeur, optimistic UI à l'envoi (le message apparaît immédiatement), bannière « Nouveau » sur les conversations non lues.

  • Page de recouvrement actionnable (/esbtp/comptabilite/relances) — chaque ligne d'impayé propose un deeplink WhatsApp pré-rempli avec le message de relance personnalisé, plus un widget de précision affichant le taux de réussite des relances par mode de communication.

  • Workflow gating complet — chaque rôle (caissier, comptable, secrétaire, coordinateur, enseignant) voit uniquement les sections de la sidebar, les routes et les boutons d'action correspondant à son périmètre. Une commande CLI permet de superviser les permissions accordées par tenant.

Améliorations

  • Fusion des tables esbtp_enseignant_profiles dans esbtp_teachers — un seul écran d'édition, un seul schéma. Les notions de « type de contrat » et « statut d'emploi » sont unifiées dans un champ unique « Régime » (Vacataire / Permanent / Consultant). « Date d'embauche » devient « Date de début d'activité ». Les tables esbtp_enseignant_profiles, esbtp_enseignant_disponibilites, esbtp_enseignant_affectations (jamais réellement alimentées par l'UI moderne) sont supprimées.
  • Cleanup des champs hors-contexte sur la fiche enseignant — retrait de Laboratoire, Motivation, Méthodes d'enseignement, Outils pédagogiques, upload CV et photo (à venir via upload progressif). Le filtre et la colonne « Département » sur la liste sont également retirés (KLASSCI cible l'enseignement supérieur sans découpage en départements).
  • Bandeau « Vue secondaire » sur la liste des enseignants rappelant que la gestion principale du personnel se fait depuis /esbtp/personnel/unified.
  • Permissions enseignants centralisées sur la nouvelle relation Eloquent — tous les écrans (dashboard enseignant, présences, notes, attendance, planning) utilisent maintenant la même relation pour accéder au profil de l'enseignant connecté. Les pages ne plantent plus après les changements de schéma.

Sécurité

  • Throttle sur les routes enseignants — 60 requêtes par minute sur le groupe enseignants et 5 requêtes par minute sur la réinitialisation de mot de passe (qui crée un mot de passe aléatoire).

Améliorations

  • Le bouton « Imprimer » imprime désormais le vrai document, pas la page web (aperçus de liste d'appel, liste complète de classe, situation financière étudiant, attestation de fréquentation, certificat de scolarité, emploi du temps, bulletin, reçu de paiement, rapport de présence) — auparavant le bouton imprimait toute la page (avec la barre latérale KLASSCI, le topbar et les cartes KPI visibles dans l'aperçu d'impression). Désormais, cliquer sur « Imprimer » ouvre le vrai PDF du document dans un nouvel onglet ; il suffit de cliquer sur l'icône imprimer du visualiseur PDF (ou de faire Ctrl+P) pour obtenir un tirage propre, exactement comme le PDF qu'on télécharge. En bonus, si l'utilisateur fait Ctrl+P par accident sur n'importe quelle page de l'app, la barre latérale et le topbar sont automatiquement masqués pour ne garder que le contenu utile.

Suppressions

  • Purge des références « ESBTP » qui apparaissaient en fallback dans les e-mails, SMS, PDF et écrans d'installation — KLASSCI étant un produit multi-établissements, voir « ESBTP » comme valeur par défaut quand l'école n'avait pas (encore) renseigné son nom était incohérent. Désormais, les e-mails de notification aux parents utilisent « votre enfant » comme valeur de repli (au lieu de « ESBTP »), les SMS de relance affichent l'acronyme paramétré dans les Réglages (au lieu d'un préfixe « ESBTP: » figé), et tous les PDF (reçus, certificats, emploi du temps, bulletin grades, attestations) tirent leur en-tête (nom, adresse, téléphone, e-mail, ville) directement des Réglages de l'école — finis les « Ecole Spéciale du Bâtiment et des Travaux Publics », « BP 2541 Yamoussoukro », « esbtp@aviso.ci » qui s'imprimaient en dur si la configuration n'était pas complète. Placeholders et sous-titres des formulaires nettoyés également. Les noms légitimes (« ESBTP Yakro » et « ESBTP Abidjan » sur la page de choix de style de bulletin, qui sont les vrais noms des deux modèles disponibles) sont préservés.

Corrections

  • Logo de l'école qui n'apparaissait pas (zone blanche) sur les listes d'appel, listes complètes de classe, exports étudiants/classes et plusieurs PDF comptables — sur les bandeaux bleus en tête de ces documents, le logo se transformait en rectangle blanc à cause d'un effet de filtrage CSS hérité, et le chargement du fichier ne tentait qu'un seul emplacement de stockage (donc absent dès qu'un tenant historique avait son logo dans un sous-dossier différent). Le logo s'affiche désormais avec ses vraies couleurs, encadré dans une carte blanche pour rester lisible sur le bandeau coloré, et la résolution du fichier essaie maintenant l'ensemble des emplacements possibles (avec deux logos KLASSCI livrés en dernier recours pour ne jamais se retrouver avec un en-tête sans logo).

Sécurité

  • Bouton « Effectuer un paiement » désormais accessible aux rôles avec la permission « créer un paiement » (fiche étudiant /esbtp/etudiants/{id} et fiche inscription /esbtp/inscriptions/{id}) — auparavant, les boutons « Enregistrer un paiement », « Effectuer un paiement » et « Payer » s'affichaient bien (la permission de création de paiement était attribuée) mais cliquer dessus puis valider le formulaire échouait silencieusement avec une erreur 403, parce que l'endpoint exigeait en plus la permission « valider une inscription » qui ne sert pas dans ce flux. Le caissier et tout rôle personnalisé qui a la permission de saisie de paiement peut désormais ajouter un paiement depuis ces deux écrans, comme attendu.
  • Case « Valider le paiement immédiatement » réservée à la permission d'auto-validation (modals de paiement sur fiche étudiant et fiche inscription) — la case à cocher s'affichait pour tout le monde, et était même pré-cochée sur la fiche étudiant. Cliquer dessus permettait à l'utilisateur de valider son propre paiement dans la foulée, en court-circuitant la séparation des tâches anti-fraude. Désormais, la case n'apparaît que pour les utilisateurs ayant explicitement la permission « Auto-valider ses propres paiements » (réservée aux très petites écoles avec un seul compte comptable). Pour tous les autres, le paiement est créé en attente de validation et un comptable doit le valider séparément.

Corrections

  • Pré-inscription d'un nouvel étudiant par le caissier (/esbtp/inscriptions/pre-inscription) — le bouton « Enregistrer la pré-inscription » échouait avec une erreur d'intégrité base de données dès qu'il s'agissait d'un nouvel étudiant (jamais inscrit auparavant). Seule la pré-inscription d'un ancien étudiant en réinscription fonctionnait. Le bug remontait à la première version de la fonctionnalité caissier. Corrigé : la pré-inscription d'un nouvel étudiant aboutit désormais comme prévu et bascule l'inscription en statut « prospect » avec ses frais souscrits et son éventuel acompte encaissé.
  • Erreur RelationNotFoundException [enseignantProfile] sur la page Planning Général et plusieurs endpoints liés aux présences, aux notes et au dashboard enseignant — corrigée. Une nouvelle relation User → teacherProfile (alias teacher et enseignant) est exposée et utilisée par tous les écrans concernés.
  • Modals « Créer un enseignant » sur /esbtp/planning-general et sur le formulaire de création de séance — affichaient encore les anciens champs (Département, Type de contrat, Statut d'emploi, Date d'embauche) après la fusion DB. Désormais alignés sur le nouveau schéma : Régime + Date de début d'activité.
  • Champ Téléphone obligatoire sur la modification d'un enseignant — le formulaire bloquait les enseignants legacy dont le téléphone n'était pas saisi. Le champ est désormais facultatif côté formulaire de modification (la validation serveur l'accepte vide).

Avril 2026

Ajouts

  • Saisie globale des heures sans matière (présences) — la nouvelle interface permet de saisir les heures de cours sans assigner de matière spécifique, utile pour les cours mutualisés ou les conférences. Pattern UNIQUE+NULL cross-compatible MariaDB/MySQL via une colonne générée.
  • Portail groupe pour les fondateurs — agrégation cross-tenant des indicateurs financiers, pédagogiques et opérationnels avec scoring de santé par établissement, alertes automatiques (plan mismatch, tenant inactif, expiration SSL, baisse d'effectif), et bannière d'abonnement transverse.
  • Onboarding membres du groupe — création du rôle DGA, flow d'invitation par email avec mot de passe auto-généré et URL signée 24h, force-change du mot de passe à la première connexion, fallback username (génération prenom.nom avec déduplication automatique en cas de collision).
  • Notifications cross-tenant — système d'invoices, notifications enseignants, notifications fondateurs, table dédiée avec préférences par utilisateur.
  • Blocage des classes pleines sur le formulaire d'inscription : affichage en temps réel des places disponibles avec seuils colorés (vert au-dessus de 30 %, orange entre 10 et 30 %, orange foncé en dessous de 10 %, rouge complet), désactivation automatique du bouton de soumission, prise en compte des inscriptions validées de l'année courante uniquement.
  • Contexte conversationnel du chatbot Claude — le bot mémorise désormais le résultat du dernier outil exécuté (étudiants ou classes) pour répondre à des questions de suivi telles que « et dans la classe d'à côté ? » sans devoir re-spécifier la classe.
  • Filtres enrichis pour le chatbot — recherche d'étudiants par étape de workflow et statut, recherche de classes par système (BTS / LMD) et disponibilité de places.
  • Schéma tarifaire Signature 2026 — trois paliers (Essentiel, PRO, ELITE) alignés sur l'enseignement supérieur, formule Partenaire à 15 000 XOF par an, période d'essai de 3 mois, grandfathering 24/18/12 mois pour les abonnements existants.
  • Refonte premium de la liste des matières (/esbtp/matieres) — hero gradient à 4 KPIs live, filtres hybrides (3 selects toujours visibles + bouton avancés repliable), barre d'actions groupées sticky, menu kebab par ligne (Voir / Configurer / Modifier / Supprimer), confirmations modales, suppression en lot par AJAX, état vide premium.
  • Refonte premium de la réinscription (/esbtp/reinscription) — onglets et indicateurs alimentés par la même source (KPIs annuels par classe), badges d'état clairs (Réinscrit / À réinscrire / En attente), tris et recherche en temps réel, alignement sur le pattern visuel des autres modules.
  • Refonte premium des annonces (cinq vues : index, création, édition, détail, gestion) — header gradient KLASSCI, badges sémantiques par audience (étudiants / enseignants / tous), confirmations iiConfirm partout, suppression du fond vert legacy au profit de la palette monochrome bleu KLASSCI.
  • Inscription sous réserve pour année future — un étudiant peut s'inscrire avant la rentrée avec un sursis sur les pièces manquantes ou les frais. Tableau de bord dédié /esbtp/inscriptions/sous-reserve avec détection automatique des pièces manquantes, alertes intelligentes par condition de réserve, redirection vers la fiche inscription au clic sur la ligne, lien dans la sidebar. Les sections Vue d'ensemble, Académique et Présences de la fiche étudiant affichent désormais un fallback explicite quand l'année courante est encore en sous réserve.
  • Refonte premium de la fiche inscription — info-grid avec deux colonnes parents / étudiant, barre de finance résumée (frais attendus / payés / solde), liste des autres inscriptions du même étudiant, états vides premium, table des paiements modernisée. Page d'édition également refondue (suppression du champ adresse devenu redondant, info-grid parents, headers de section).
  • Configuration des bulletins remaniée — page de paramétrage repensée par établissement (modèle, mentions, formules de calcul, signatures, notes sur 20 ou 100), correction des liens cassés dans la sidebar.
  • Alerte d'expiration de mot de passe à 6 mois — message d'avertissement contextuel dans l'en-tête (« votre mot de passe expire dans X jours »), redirection vers le formulaire de changement, distinction visuelle entre première connexion et expiration. Une commande CLI permet de débloquer un compte expiré sans accès UI.
  • Bouton afficher / masquer le mot de passe sur la page de création de l'admin lors de l'installation initiale, et sur les modales premium de changement de mot de passe (4 profils : superadmin, secrétaire, comptable, coordinateur).
  • Activation et désactivation des modules par tenant — chaque tenant peut activer ou désactiver les modules Enseignants / Notes & Évaluations / Emploi du temps / Présences / LMD / Comptabilité / Caisse / Communication / Support technique. La sidebar et les KPIs du dashboard masquent les sections désactivées. Les permissions correspondantes (module.*.access) sont gérées via l'écran de configuration des rôles.
  • CLI de management distant des tenants — endpoints REST + commandes Artisan pour créer un utilisateur, lister les comptes, supprimer en soft, créer ou définir l'année universitaire courante, débloquer un mot de passe expiré. Authentification par token Sanctum. Permet d'opérer un tenant sans accès UI (utile pour le support et l'onboarding).

Améliorations

  • Refonte complète du module comptabilité — six pages premium repensées : tableau de bord comptable, paiements, suivi par catégorie, configuration des frais, dashboard, relances. Pattern planning-header à deux rangées avec KPIs intégrés au héros.
  • Refonte de l'onglet Présences sur la fiche étudiant — un seul héros sombre unifié rassemblant la synthèse, sous-cards blanches pour le détail granulaire, gate des années précédentes pour éviter les régressions visuelles.
  • Refonte de la page emploi du temps — vue jour/semaine/mois avec puces de séances colorées, kebab d'actions par séance, légende, paramètres PDF dynamiques par établissement, duplication de semaine en un clic.
  • Refonte premium des inscriptions — KPI live-update, actions groupées (annulation, export), confirmations modales iiConfirm, toasts uniformes, partage de styles via common.js et namespace CSS ii-*.
  • Refonte de la page classes — structure revue, badges sémantiques, table modernisée, AJAX pour les filtres.
  • Refonte des modales d'administration — uniformisation sur la palette monochrome bleu KLASSCI, suppression des couleurs décoratives non sémantiques.
  • Sécurisation des actions monétaires — limitation throttle:60,1 et 10,1 sur les routes de paiements et remplacement de tous les window.confirm() natifs par des dialogues custom iiConfirm.

Corrections

  • Fix N+1 dans la recherche de classes du chatbot — passage de 300 requêtes par appel à 2, via withCount filtré et un seul lookup d'année universitaire courante.
  • Fix double définition selectClasse() dans le sélecteur de classe : la deuxième définition par hoisting JavaScript écrasait silencieusement la première sans appeler toggleSubmitButton(), le bouton n'était jamais désactivé via la modale « classe pleine ». Les deux fonctions sont fusionnées.
  • Bouton « Notes » sur la page évaluations redirige désormais vers la saisie rapide ; correction de la suppression en lot.
  • Suppression d'un composer install au déploiement qui figeait certains tenants sur des environnements partagés.

Sécurité

  • Audit IDOR phase 1 — création de trois Policies, ajout de authorize() sur les routes sensibles, masquage de viewFinancials pour les rôles non autorisés.
  • Cleanup des traces et stack traces exposées en production sur dix routes identifiées.
  • Migration de 230+ appels hasRole() vers le système de permissions Spatie (@can, @cannot), suppression des hardcodes de rôles dans les contrôleurs.

Mars 2026

Ajouts

  • Système LMD complet parallèle au BTS — gestion des UE, ECUE et crédits par semestre, pivot many-to-many ECUE↔UE avec coefficients contextuels, parcours étudiants avec validation progressive des crédits, bulletins LMD avec moyennes pondérées, formules de calcul configurables (AQ, NAQ, APC).
  • Module tronc commun — flow d'inscription tronc commun puis spécialisation, bulletin de classe d'origine, matières communes, planning strict, trois paramètres de configuration (bulletin, matières, planning).
  • Note de conduite — calcul automatique sur 16/20 (déduction d'un point par tranche de 4h d'absence), mentions Blâme et Avertissement, huit niveaux d'appréciation, paramétrage par établissement, prise en compte des absences par matière.
  • Rôle caissier — espace dédié avec dashboard caisse, flow de pré-inscription multi-étapes avec saisie des frais par catégorie, paiement partiel, génération automatique des identifiants via UserService, banner de complétion administrative avec garde-fous.
  • API LMS multi-tenant — endpoints publics de découverte des établissements (sans token permanent requis), authentification dédiée avec rate-limiting lms-discovery, documentation interne accessible via GET /api/lms/documentation.
  • Module documents étudiants — upload, liste, téléchargement, badge d'extension, gestion des permissions de lecture par rôle.
  • Différenciation BTS/LMD sur la fiche étudiant — onglets semestriels, reliquats par catégorie de frais, CECT à vie, accessor photo_url unifié.
  • Configuration interactive des frais — commande artisan pour gérer les souscriptions de frais en mode interactif, génération sans doublons, archivage des inactifs.
  • Module ECUE — modale à deux onglets avec validation de crédits, tabs Select2 premium, page UE 100 % AJAX (zéro rechargement), liaison UE↔Parcours multi-semestres.

Améliorations

  • Refonte du dashboard coordinateur — design premium avec KPIs et navigation AJAX entre onglets sans rechargement.
  • Refonte de la page emploi du temps — design premium, KPIs, scrollable charts avec ECharts, format horaire HH:MM partout.
  • Refonte des pages résultats (index, classes, classe) — vues annuelle / S1 / S2, intégration de l'assiduité, fix du filtrage des notes incohérentes.
  • Refonte de la page Notes — calendrier de disponibilités avec édition inline, recherche temps réel dans les modales de sélection, modal autonome remplaçant l'embed AJAX legacy.
  • Refonte de la page Pré-inscription — cards d'analyse premium, étapes centrées avec lignes continues entre cercles, recherche d'étudiant pour le flux de réinscription.
  • Refonte de la page Planning Annuel — fusion de l'onglet Events, calendrier équilibré (900 px, cellules 48 px), KPIs corrigés sur tous les onglets, modal d'enregistrement sans rechargement.
  • Refonte des sections Coordinateur et Charge par classe — design premium, modal d'émargement aligné avec la page attendance-codes.
  • Refonte de la situation financière — preview en héros sombre style fiche étudiant, PDF style document formel, boutons d'action sur l'onglet Finances, fallback SVG pour avatar manquant.
  • Refonte de la page Personnel — design premium, masquage des rôles selon les permissions, ajout de l'onglet caissier dans l'unifié.
  • Optimisations de performance — extraction des constantes de configuration des frais, suppression de l'email hardcodé, fix N+1 dans LMD avec eager-loading approprié.

Corrections

  • Fix bulletin LMD moyennes à zéro — incohérence de format de période dans la requête, ajout de getPeriodeVariants().
  • Fix workflow inscription — requirement d'un paiement validé avant validation de l'inscription, alerte sur la page étudiant en cas d'inscription en attente, redirection automatique après validation.
  • Fix dashboard pour superAdmin — fond blanc, texte d'avertissement plus doux, AJAX refresh corrigé pour les chargements de classes/enseignants.
  • Fix rendering du modal parent — élimination du flash au survol, suppression des transitions, modal customisé remplaçant le modal Bootstrap pour la recherche de parent.
  • Fix Select2 dans les modales — z-index 1075, dropdown forcé en bas, dropdownParent body pour échapper à overflow-y:auto.
  • Fix bouton « Modifier disponibilité » dans la grille enseignant.

Février 2026

Ajouts

  • Système de bulletins enrichi — pondération des semestres pour la moyenne annuelle, persistance des résultats à la génération, sélecteur de style de bulletin, toggle style Abidjan.
  • Bulletin par étudiant — modal de coefficients auto-suffisant directement sur la fiche étudiant, sans aller-retour vers une page séparée.
  • Refonte des Filières & Niveaux — pills sélectionnables, gestion par filière du niveau dans les liaisons.
  • Module Émargement enseignant — badges « À venir », édition en lot, modal de rapport, suivi des heures réalisées, polling des disponibilités.
  • Documents administratifs PDF — refonte complète des prévisualisations, paramètres de couleurs configurables, génération via Browserless pour fiabilité, watermarks renforcés, header thématique appliqué aux certificats.
  • Génération PDF de feuilles de notes vierges pour saisie manuelle.
  • Création rapide d'enseignant depuis la modale de séance de cours.
  • Recherche temps réel dans les modales de sélection d'étudiants, classes, matières.

Améliorations

  • Refonte du calendrier de disponibilités — édition inline directement dans add-seance.
  • Refonte de la modale notes fullscreen + fix de l'erreur 500 sur quick-create enseignant.
  • Refonte des stats de présence enseignant + refonte de la page rapport enseignant.
  • Refonte de la section « Suivi des heures par matière » sur la page classe.
  • Filtres de classes dans le planning + format horaire HH:MM standardisé.
  • Modales de gestion étudiants sur la page classe (ajout, retrait, transfert).

Corrections

  • Fix bulk-update-status des présences enseignant — utilisation de url() au lieu de route() pour éviter le crash quand la route n'est pas en cache sur le serveur.
  • Fix régénération matricule — application des changements lors de l'édition étudiant.
  • Fix matricule auto-generation — récupération des informations depuis l'inscription la plus récente.

Janvier 2026

Ajouts

  • Refonte premium de la landing page — design éditorial inspiré de zed.dev, IBM Plex Serif/Sans/Mono, palette bleu KLASSCI sur fond beige, dot grid + texture grain, animations premium (gradient text shimmer, blobs morphing, clip-path text reveal, button pulse, pillar stagger), 9 captures réelles dans le marquee hero, modales de fonctionnalités, dark mode complet, mobile responsive.
  • Manager de permissions par rôle — interface dédiée, regroupement des permissions par module, ouverture automatique des groupes, regroupement des rôles dans l'UI.
  • Refonte complète du module Notes — workflow par modal, endpoints API dédiés.
  • Module Présences enseignants — détail par enseignant, statistiques individuelles, bouton PDF dans le bandeau bulk, accordéon pour l'édition en lot, sélecteurs de temps dans l'embed, confirmations en cas de conflit lors de la génération rapide.
  • Édition en lot d'emploi du temps pour les séances avec gestion des conflits enseignants.
  • Auto-génération de matricule pour les nouveaux étudiants.
  • Coefficients par filière et niveau — application stricte au lieu d'un fallback global.
  • Tip d'aide pour l'emploi du temps — modal guide pas à pas.
  • Workflow plan-and-confirm — process de validation avant code pour les changements significatifs.

Améliorations

  • Déblocage des coefficients moyennes — UX améliorée pour les cas tronc commun.
  • Résolution ESBTP-ABIDJAN — matricules MASTER/L3 ajustés, gestion des classes pleines.
  • Gestion bulk des disponibilités enseignants — interface dédiée, application en masse.

Dernière mise à jour : 25 avril 2026