NouveauPage FAQ dediee (/faq) : 24 questions en 6 categories, optimisee SEO + GEO (format answer-first pour citation par les IA). Schema FAQPage JSON-LD, barre d'ancres sticky, liens internes vers articles et fonctionnalites.
v7.1.105/04/2026
FixPresets solver : les poids de 2 contraintes (preference de jours, poste prefere) etaient inverses dans les presets Equilibre/Continuite/Confort. Le solver penalisait les preferences au lieu de les favoriser. Corrige.
FixCalendrier personnel : le dialog 'Mon calendrier' n'affichait rien si le medecin n'avait pas de lien calendrier configure. Affiche desormais un message explicatif avec contact admin.
FixCopie lien calendrier : le toast 'Lien copie' s'affichait meme si la copie echouait. Corrige avec gestion d'erreur.
AméliorationReglages : ajout de 2 contraintes structurelles dans la documentation (plafond activite P, date de debut medecin).
AméliorationLabels admin : 'Lancer la collecte' remplace par 'Aller au planning' dans le panneau desiderata et 'Collecte a lancer' dans le dashboard, pour eviter la confusion avec le vrai bouton de lancement.
AméliorationRefactoring planning-view.tsx : 1752 lignes splitees en 6 modules (use-planning-lifecycle, use-regeneration, use-planning-days, use-admin-banner-state, calendar-subscription-dialog, swap-proposals-panel). Maintenabilite amelioree, zero regression.
v7.1.003/04/2026
NouveauPlanning valide : nouvelle vue mobile compacte avec badges couleur, garde en premiere colonne, legende sticky et separation visuelle des semaines.
NouveauFiche jour : tap sur un jour ouvre un bottom sheet avec les postes, les activites declarees et les absences. Consultations en attente signalees par un badge ambre.
NouveauDeclaration d'activite en ligne : grilles Matin / Apres-midi avec 6 types (Consultation, Bureau, Ado, Diabete, Off, Formation). Masquee les week-ends et quand le medecin est poste.
NouveauMes postes : vue personnelle avec carte prochaine garde, jours postes en blanc, week-ends grises, et declaration d'activite integree.
AméliorationAdmin : point ambre sur les jours avec consultations en attente (pas bureau ni formation). Validation et rejet en un tap.
AméliorationToggle Vue tableau pour forcer l'ancien tableau sur mobile.
FixGarde partagee : affichage correct des deux medecins (jour / nuit) dans la fiche jour et la vue compacte.
FixAccessibilite : suppression des warnings Radix 'Missing Description' sur les bottom sheets.
FixReglages : suppression d'une regle fantome ('Indisponibilites fixes') qui n'avait plus d'effet depuis la refonte des disponibilites.
FixValidation du planning : si l'import des conges/formations depuis les desiderata echouait, aucun message d'erreur n'apparaissait. Corrige.
FixGeneration : quand le moteur manque de temps sans trouver de solution, le message distingue desormais un timeout d'une impossibilite mathematique.
AméliorationNettoyage de code mort (contraintes H6/H7/H8, composant planning-v2 inutilise) et meilleure gestion des erreurs dans le moteur de planification.
v7.0.202/04/2026
FixMedecins 24h (Helene) : le moteur pouvait attribuer une garde sans poste en journee. Corrige : poste + garde toujours ensemble, dans les deux sens.
v7.0.131/03/2026
FixCalendrier perso : une garde ou un poste assigne apparaissait comme 'Absent' si un desiderata d'indisponibilite existait le meme jour. Le planning genere prime desormais sur les souhaits.
FixCalendrier perso : les consultations n'apparaissaient pas sur les mois au-dela du mois suivant (ex: mai quand on est en mars). Corrige.
v7.0.027/03/2026
NouveauReprise de garde entre medecins : proposez une reprise depuis Mon planning. Deux modes : direct (a un collegue specifique) ou broadcast (au service, seuls les eligibles sont notifies). Filtrage intelligent par contraintes. Notifications in-app + email.
NouveauScore de faisabilite sur chaque candidat (vert = OK, orange = impact souple, rouge = impossible) — meme systeme que l'editeur admin.
NouveauAlertes avant acceptation : le medecin voit les contraintes impactees (ex: garde le lendemain) avant d'accepter.
AméliorationLes reprises en cours sont automatiquement annulees lors d'une regeneration du planning.
v6.1.327/03/2026
MoteurActivite externe : penalite separee de 'prefere pas' (80 vs 25). Un medecin en activite externe (IME, cours…) sera beaucoup moins facilement poste par le moteur. Ajustable dans Reglages.
v6.1.227/03/2026
NouveauCompteur Formation (FO) dans Mon suivi : solde annuel 15 jours, non proratise (droit legal identique quelle que soit la quotite). Jauge bleue a cote de CA et RTT.
NouveauCompteur FO dans le wizard 'Remplir mon mois' : solde formation restant visible en temps reel, comme CA et RTT.
FixWizard : seuls les mois avec un planning valide apparaissent dans le selecteur. Plus possible de remplir un mois dont le planning n'a pas ete valide.
FixTableau P du service visible pour les admins non-medecins sur la page planning.
FixAlerte completude : 'Mercredi 1 Mars' corrige — les jours en debordement de mois P (ex: avril dans le mois P de mars) affichent maintenant le bon mois.
FixWizard : les jours de repos apres garde ne sont plus proposes a remplir, meme quand la garde etait en fin de mois precedent.
v6.1.127/03/2026
FixWizard 'Remplir mon mois' : correction du compteur CA/RTT qui variait entre les mois (desynchronisation activites/slots).
FixWizard : le bouton Enregistrer ne se grisait plus apres avoir peint des activites deja presentes en base.
FixWizard : crash corrige lors du passage au mois de mai (tableau de tailles differentes).
AméliorationWizard : chargement des activites avant affichage pour eviter les donnees stales.
NouveauWizard : retrait d'absences obsoletes (repos de garde avec absence declaree). Bouton 'absent x' + sauvegarde via Enregistrer.
FixBarres mois par mois : les barres budget (ghost bars) s'affichent correctement sur desktop. Mobile : barres proportionnelles au taux de remplissage.
AméliorationLanding : labels Avant/Apres et fleche de transition sur le hero. Image visible sur mobile. Excel plus chaotique.
v6.1.026/03/2026
NouveauSite vitrine : nouvelles pages Tarifs, Fonctionnalites, Contact et A propos. Navigation publique et footer etendu pour les visiteurs.
AméliorationLanding page allegee : sections deplacees vers /fonctionnalites, CTAs vers /tarifs et /contact. Bandeau 'Utilise en pediatrie hospitaliere'.
AméliorationHeader marketing avec navigation publique (Fonctionnalites, Tarifs, A propos, Changelog, Se connecter) pour les visiteurs non connectes.
AméliorationMetadata SEO sur toutes les pages publiques (title, description, openGraph).
v6.0.125/03/2026
NouveauFormation et Arret auto-declares : nouveaux boutons FO/AM dans le popover et la vue medecin (beta). Une formation ou un arret pose depuis le planning compte 1P par demi-journee dans Mon suivi.
v6.0.025/03/2026
NouveauMon suivi : nouvelle page personnelle de tracking des demi-journees (P). Progression du mois, historique, resume quadrimestriel et annuel. Badges cliquables pour voir le detail des jours.
NouveauCarte P sur le planning : tableau recapitulatif Realise / Attendu / Ecart par medecin avec legende et warning donnees.
NouveauCA / RTT post-validation : nouveaux boutons dans le popover d'activites et la vue medecin pour poser un conge annuel ou RTT apres validation du planning.
NouveauP-month : le decompte mensuel demarre le premier lundi du mois (ex: mars 2026 = 2 mars au 5 avril), conformement au comptage de l'administration.
MoteurH10 : les absences (formation, conge, arret) reduisent maintenant le budget du solver. Un medecin absent n'est plus sur-alloue.
FixImport de 61 consultations historiques (janvier + fevrier 2026) depuis les CSV de Cecile.
v5.5.023/03/2026
NouveauRetrait d'absence : un medecin peut desormais retirer sa propre absence depuis le planning (clic sur son badge dans la colonne Absences). Il devient libre de se positionner en consultation ou bureau.
FixDashboard : les mois valides au-dela de M+1 (ex: mai quand on est en mars) apparaissent maintenant dans le panneau mois complet.
v5.4.023/03/2026
MoteurNouveau role Specialiste : un medecin specialiste (ex: urgentiste adulte) est automatiquement affecte a son poste autorise chaque jour de presence. Libere un generaliste pour un autre secteur.
NouveauParametres : nouvelle option 'Specialiste' dans le role du medecin. Le moteur affecte automatiquement le specialiste a son poste dedie.
v5.3.020/03/2026
FixDevalidation preservee : repasser un planning en brouillon conserve maintenant les corrections manuelles au lieu de les supprimer.
FixTriangles de violation : les postes non autorises (ex: ES hors urgences) et les medecins WE-only affiches en semaine sont maintenant detectes sur la grille.
FixContrat contraintes : synchronisation complete des IDs entre le fichier de regles JSON, les labels TypeScript et le solver Python. 3 contraintes dures manquantes ajoutees.
FixDonnees orphelines : la desactivation d'un medecin nettoie maintenant ses desiderata et verrous futurs. La suppression definitive nettoie toutes les donnees liees.
AméliorationRegeneration : avertissement explicite quand des corrections manuelles sauvegardees seront remplacees par le nouveau calcul.
v5.2.020/03/2026
NouveauSous-poids editables : les 5 contraintes multi-poids (desiderata, continuite, renfort, espacement, recup) affichent maintenant des curseurs individuels dans Parametres. Chaque sous-poids peut etre ajuste independamment.
NouveauNouvelle contrainte visible : les desiderata souples (prefere pas, consultation demandee, demande de garde) apparaissent desormais dans la page Parametres avec leurs 3 sous-poids.
v5.1.020/03/2026
FixCurseurs multi-poids (continuite, backup, espacement, desiderata, recup) : les modifications etaient ignorees par le moteur. Les sous-poids sont maintenant ajustes proportionnellement.
FixProtections desactivables : les interrupteurs de contraintes dures dans Parametres n'avaient aucun effet. Le moteur respecte maintenant les protections desactivees.
FixGel desiderata : un medecin ne peut plus modifier ou soumettre ses desiderata apres la cloture de la collecte.
FixPlanning public : les plannings non valides ne sont plus visibles sur la page publique.
FixCalendrier iCal : correction de doublons potentiels dans le feed (jours de contexte stale).
AméliorationPanneau d'impact : detection des gardes trop rapprochees (3+/7j), des 2 week-ends d'affilee, et du bonus garde-urgences.
AméliorationSauvegarde : detection de conflit si un autre admin a modifie le planning entre-temps.
AméliorationRegeneration : avertissement si des modifications non sauvegardees seront perdues.
FixSecurite : un medecin desactive ne peut plus acceder aux fonctionnalites de l'app.
FixSecurite : le micro-feedback ne peut plus etre envoye au nom d'un autre medecin.
FixEquite annuelle : les corrections manuelles de gardes sont maintenant prises en compte dans le calcul d'equite.
FixSuppression medecin : verification des verrous admin avant suppression pour eviter les donnees orphelines.
FixRegeneration : timeout de 2 minutes sur l'appel au moteur — plus de barre de progression bloquee.
FixFormulaire feedback : l'ecran de confirmation ne s'affiche plus si la sauvegarde en base a echoue.
AméliorationPreferences email : le toggle 'Consultations par email' est desormais marque comme 'a venir' (in-app uniquement pour l'instant).
AméliorationDesiderata : message explicite quand tous les jours de semaine sont bloques par la disponibilite.
AméliorationExport CSV : echappement correct des champs contenant virgules ou guillemets.
v5.0.020/03/2026
MoteurPoids configurables : les curseurs de poids dans Parametres > Contraintes controlent maintenant reellement le moteur de planification. Chaque contrainte souple (26 au total) lit son poids depuis la configuration au lieu d'utiliser des valeurs fixes.
FixCorrection des poids dans le fichier de reference : S8 (preference de jour de garde) aligne sur le vrai bonus, S13 (desiderata souples) decompose en 3 sous-poids (prefer_not, consultation, demande de garde), S24 (recuperation post-garde) complete avec le poids jour unique.
v4.9.019/03/2026
NouveauDiagnostic intelligent : quand le moteur ne trouve pas de solution, un diagnostic detaille explique pourquoi (blocages de garde, sous-effectif) et identifie les jours problematiques.
NouveauRecherche de solutions : le moteur peut tester des modifications de desiderata pour proposer des alternatives classees par impact sur l'equilibre global du planning.
AméliorationDialog d'echec simplifie avec lien direct vers le diagnostic sur la page planning.
v4.8.119/03/2026
AméliorationRecapitulatif par medecin : retrait de la colonne Recup dont le calcul etait imprecis. Le tableau se concentre sur les donnees fiables (gardes, postes, jours libres, activites).
AméliorationVerification des regles : retrait de la section 'Charge de travail' (budget P) dont le calcul simplifie etait trompeur. Sera remplace par un vrai suivi du temps de travail.
v4.8.019/03/2026
MoteurFix S13 : le desideratum 'Consultation' ne penalise plus la garde du soir. Un medecin qui souhaite consulter en journee reste disponible pour la garde. Pour refuser poste ET garde, utiliser 'Plutot pas dispo'.
NouveauDesiderata : nouveau statut 'Activite externe' (IME, cours a la fac, vacations…). Compte comme temps de travail hospitalier. L'algorithme evite d'affecter un poste ou une garde mais peut le faire en cas de necessite.
NouveauDesiderata : panneau de description contextuel. En cliquant sur un statut, un panneau detaille apparait sous la toolbar avec l'impact sur les postes et la garde en langage clair.
AméliorationDesiderata : toolbar reorganisee en 2 groupes — Absences (5 statuts) puis Preferences (5 statuts + gomme). Plus facile a scanner.
AméliorationDesiderata : descriptions enrichies pour chaque statut. Chaque bouton indique explicitement son effet sur les postes de jour et la garde du soir (ex: 'Pas de poste . Garde possible').
NouveauDesiderata : bouton d'aide '?' avec recapitulatif de tous les statuts, impact poste/garde, et quand les utiliser.
FixDesiderata : boutons 'Transmettre' et 'Enregistrer le brouillon' ne debordent plus sur mobile. Les boutons passent en pleine largeur sur petit ecran.
v4.7.118/03/2026
NouveauDesiderata : acces en lecture seule aux desiderata des mois valides. Double CTA 'Voir le planning' + 'Mes desiderata' sur l'overview.
v4.7.018/03/2026
NouveauDesiderata : alerte douce a la soumission si un medecin de garde bloque plus de 50% des week-ends du mois (hors conges et arrets). Dialog de confirmation non bloquant.
NouveauDesiderata : badge temps reel 'WE : X/Y dispo' sous le calendrier en mode edition. Passe en orange avec icone d'alerte si trop de week-ends bloques.
NouveauDesiderata : sidebar admin enrichie — indicateur de disponibilite week-end par medecin de garde avec code couleur (vert/orange/rouge).
v4.6.017/03/2026
NouveauPlanning : nouveaux types d'activite Ado et Diabete. Les medecins peuvent se positionner en service adolescent ou HDJ diabete, en plus de Consultation, Off et Bureau.
AméliorationPlanning : les boutons de positionnement sont reorganises en 2 groupes — cliniques (Consult, Ado, Diab.) puis administratifs (Off, Bureau).
AméliorationPlanning : la colonne Consult. du recapitulatif devient Activites avec un total et un tooltip detaillant la repartition par type.
AméliorationDashboard : le service du jour inclut desormais les medecins positionnes en Ado et Diabete.
v4.5.117/03/2026
FixPlanning : confirmation avant de quitter le mode edition si des modifications n'ont pas ete sauvegardees. Evite de perdre son travail par un clic accidentel.
v4.5.017/03/2026
NouveauDesiderata : nouveaux types Conges et Arret maladie. Permet de distinguer les absences planifiees (CP, CT, RT) des arrets de travail, en preparation du futur suivi budget jours.
AméliorationDesiderata : palette couleurs revue — 9 statuts avec couleurs toutes distinctes. Consultation passe en bleu ciel (sky) pour se differencier clairement de l'absence (rouge).
FixDesiderata : dark mode entierement corrige. Tous les statuts, la toolbar, la legende et les cellules s'affichent correctement en mode nuit.
AméliorationDesiderata : cellules compactes sur desktop (hauteur fixe 56px au lieu de carres geants). Mobile inchange.
AméliorationDesiderata : week-ends visuellement distincts (headers Sam/Dim en couleur accent, contour subtil sur les cellules WE).
NouveauDesiderata : jours feries affiches avec un indicateur visuel (point rouge) et le nom du ferie en tooltip. Vacances scolaires Zone A egalement visibles.
AméliorationDesiderata : peinture verticale activee sur desktop (drag multi-directionnel). Sur mobile, le comportement horizontal-only est conserve pour eviter les conflits avec le scroll.
NouveauDesiderata : Shift+clic pour peindre une plage de jours. Cliquez un jour, puis Shift+clic un autre pour remplir tous les jours entre les deux.
MoteurConges et arrets maladie traites comme indisponibilites dures par le solver (meme comportement que 'Indisponible').
v4.4.017/03/2026
MoteurH18 : pas de garde la veille d'une formation. Le solver interdit automatiquement de placer un medecin de garde s'il a une formation le lendemain.
MoteurH18 cross-mois : si un medecin a une formation le 1er du mois suivant, le solver bloque aussi la garde le dernier jour du mois courant.
AméliorationL'editeur de planning signale en temps reel les conflits garde/formation (jour meme et veille).
FixLes jours de formation ne sont plus comptes comme jours libres dans l'audit et le budget consultations.
v4.3.317/03/2026
AméliorationDesiderata : UX admin clarifiee — CTA differenciee par etat (brouillon/transmis), badge 'Transmis' au lieu de 'Valide', date de soumission visible, banniere mode admin.
AméliorationPlanning : retrait d'une consultation validee necessite une confirmation et notifie le medecin (in-app + email digest).
FixDesiderata : le switch mode (?switch=1) est maintenant reserve aux admins.
v4.3.217/03/2026
FixLes boutons d'action (Enregistrer, Annuler) ne sont plus masques par la barre de navigation mobile. Corrige aussi le bouton 'remonter en haut' des reglages.
v4.3.116/03/2026
NouveauLe service du jour affiche les medecins en consultation et bureau (matin/apres-midi) en plus des postes obligatoires.
NouveauCompte admin developpeur (CT) : connexion propre avec impersonation, invisible pour les medecins et les autres admins.
v4.3.015/03/2026
NouveauPages legales publiques : mentions legales, CGV, CGU, politique de confidentialite et DPA accessibles depuis le footer.
v4.2.115/03/2026
AméliorationConfirmations de desactivation et suppression de medecin via modale au lieu d'une boite de dialogue navigateur.
FixLes erreurs inattendues sont maintenant enregistrees dans la console pour faciliter le diagnostic.
FixLe formulaire feedback n'affiche plus 'mars 2026' en dur mais le mois courant.
MoteurLes jours feries sont maintenant calcules dynamiquement (Paques, Ascension, Pentecote) au lieu d'etre codes en dur pour 2026.
MoteurVersions des dependances solver epinglees pour eviter les mises a jour inattendues.
MoteurCorrection d'une mutation potentielle des donnees d'entree dans le chargement des profils medecins.
AméliorationL'email 'planning valide' invite maintenant les medecins a se positionner sur leurs jours libres (consultation, bureau, off).
NouveauNotification in-app quand vos consultations sont validees ou refusees par l'admin. Les notifications sont agregees (pas de spam si plusieurs validations d'affilee).
NouveauL'admin peut relancer par email les medecins qui n'ont pas encore rempli leurs desiderata (bouton dans l'espace admin desiderata).
NouveauNotification in-app quand les desiderata sont geles par l'admin.
NouveauPage 'Mes notifications' : chaque medecin peut gerer ses preferences de notification, modifier son email, et desactiver les alertes non essentielles (accessible depuis la cloche).
NouveauEmail de bienvenue automatique : quand un admin cree un nouveau medecin, un email avec le lien de premiere connexion est envoye automatiquement.
v4.2.015/03/2026
NouveauEspace admin integre au dashboard : vue de pilotage avec alertes planning, suivi desiderata et demandes de consultation, directement sur la page d'accueil.
NouveauBandeau admin sur la page planning : conflits detectes en temps reel (medecin assigne mais absent, postes vides), avec possibilite de masquer les alertes volontaires.
NouveauPanneau admin sur la page desiderata : suivi collecte par mois avec progression visuelle (chips medecins) et actions rapides (lancer la collecte).
AméliorationLes 3 espaces admin (dashboard, planning, desiderata) sont repliables via un chevron pour ne pas encombrer la vue.
AméliorationDates lisibles dans les alertes planning (ex: 'vendredi 20 mars' au lieu de 'jour 20').
FixCorrection du scroll automatique vers le bas sur le dashboard (la page restait en haut sur le hero).
FixSecurite : les alertes masquees ne sont accessibles qu'aux administrateurs (politique RLS corrigee).
v4.1.014/03/2026
NouveauL'app peut maintenant etre installee comme une vraie application sur Android (menu Chrome > Installer DeGarde). L'icone s'affiche correctement sur tous les appareils.
NouveauPage hors ligne : si vous ouvrez l'app sans connexion, vous voyez un message clair au lieu d'une page d'erreur du navigateur.
AméliorationSupport iOS ameliore : l'app s'ouvre en mode plein ecran (sans barre URL Safari) quand ajoutee a l'ecran d'accueil.
NouveauBandeau d'installation in-app : un bouton 'Installer' apparait en haut de la page pour ajouter DeGarde a l'ecran d'accueil. Sur iOS, des instructions adaptees sont affichees.
FixIcone de l'app corrigee sur Android 13+ (Pixel 10 Pro, etc.) : ajout d'icones maskable dediees avec fond plein.
v4.0.113/03/2026
AméliorationSecurite renforcee : toutes les API verifient maintenant la session Supabase Auth au lieu de se fier a un header modifiable. Plus aucun acces sans connexion valide.
AméliorationProtection anti-brute-force : 5 tentatives de connexion maximum par quart d'heure.
AméliorationLe lien de premiere connexion ne fonctionne qu'une seule fois. Apres le choix du PIN, il faut passer par un administrateur pour reinitialiser.
AméliorationRenforcement des droits d'acces en base de donnees (RLS) : les tokens et les mappings d'authentification ne sont plus lisibles par les utilisateurs.
FixLes tokens dans les liens email sont maintenant correctement encodes (caracteres speciaux).
v4.0.013/03/2026
NouveauConnexion par code PIN : chaque medecin choisit un code a 4 chiffres (comme une carte bancaire). Plus besoin de retrouver un lien a chaque fois — selectionnez votre nom et entrez votre PIN.
NouveauPremiere connexion simplifiee : cliquez sur le lien personnel recu par email ou message, choisissez votre PIN, et c'est fait. La session reste active 30 jours.
NouveauBouton Se deconnecter dans le menu profil (en haut a droite).
AméliorationSuppression du code d'acces etablissement (748291). Il n'etait plus utile depuis les liens personnels.
AméliorationSecurite renforcee : sessions gerees par Supabase Auth (JWT + refresh tokens) au lieu d'un simple cookie.
v3.5.013/03/2026
FixDashboard : les consultations et activites validees (bureau, off) s'affichent desormais dans la vue semaine, la vue mois et le hero briefing. Avant ce fix, ces jours apparaissaient comme 'Libre' au lieu de 'Consultation' ou 'Bureau'.
v3.4.012/03/2026
NouveauDashboard Round 4 : vue semaine cross-mois (affiche les 7 jours meme quand la semaine chevauche deux mois), navigation mois dans la carte calendrier, prochaine garde dans le hero briefing.
NouveauRaccourcis rapides dans le hero : Mon planning, Planning service, Desiderata.
FixFix bug critique prevDay cross-mois : le repos de garde etait mal detecte le 1er du mois (arithmetique jour-du-mois remplacee par lookup date string).
FixFix bug timezone UTC : toISOString().slice(0,10) remplace par toLocalDateStr() sur le dashboard et la page planning (decalage de date en UTC+1/+2).
FixFix hydratation SSR sur la page planning (ActivityPopover span/button mismatch).
AméliorationVue mois : couleurs et labels alignes avec la vue semaine (dark gradient pour gardes, noms complets des postes).
AméliorationExtraction de helpers partages (daysUntil, prevDateStr) dans utils.ts, suppression du prop isAdmin inutilise.
v3.3.012/03/2026
NouveauNavigation mois redessinee : fenetre glissante de 5 mois (3 en mobile), fleches pour decaler la fenetre, dots colores selon le statut du mois, spinner de chargement sur la pill cliquee.
FixCorrection des cles React dupliquees dans la grille planning : les jours contextuels (mois adjacents) sauvegardes par erreur dans planning_edits sont desormais filtres au chargement.
FixCorrection des erreurs d'hydratation SSR/client sur le bandeau audit trail et le selecteur de scenarios.
v3.2.111/03/2026
FixSecurite notifications : sanitisation du parametre doctor_id contre l'injection PostgREST, validation des liens internes (pas de navigation hors app).
FixRLS active sur les 3 tables notifications (in_app_notifications, notification_reads, notification_dismissals).
FixCompteur non-lus : ne decremente plus pour des notifications deja lues. Sentinel read_at corrige (ISO timestamp au lieu de string 'read').
AméliorationDual-write email/in-app : les erreurs d'insertion in-app sont desormais loguees (console.warn) au lieu d'etre avalees silencieusement.
v3.2.011/03/2026
NouveauRefonte du dashboard medecin 'Mon Planning' : nouveau hero briefing avec statut du jour, emoji contextuelle, et apercu de demain.
NouveauEquipe du jour : voir d'un coup d'oeil qui fait quoi dans le service aujourd'hui (postes + garde du soir).
NouveauZone 'A faire' : CTA contextuelles (desiderata a remplir, notifications non lues, consultations en attente) ou 'Tout est a jour'.
AméliorationStrip semaine enrichi : affiche le nom du poste (URG, MAT, HOS) au lieu de 'Poste', jours passes attenues, aujourd'hui mis en avant.
AméliorationCalendrier mois + stats fusionnes en une seule carte compacte avec prochaine garde integree.
AméliorationSuppression des 3 boutons CTA redondants remplaces par des actions contextuelles plus pertinentes.
v3.1.011/03/2026
NouveauCentre de notifications in-app : icone cloche dans le header avec badge compteur non-lus. Dropdown style GitHub/Notion avec regroupement par date (Aujourd'hui / Cette semaine / Plus ancien).
NouveauNotifications automatiques : chaque email envoye (collecte ouverte, planning valide, desiderata recus) cree aussi une notification in-app persistante.
NouveauAnnonces produit (admin) : formulaire en bas du dropdown pour envoyer une annonce a tous les medecins (titre + message + lien optionnel).
AméliorationMarquer comme lu : clic sur une notification navigue vers la page concernee et la marque comme lue. Bouton 'Tout lire' pour marquer toutes les notifications.
AméliorationMobile : la cloche est visible a cote du badge identite. Le dropdown s'adapte en quasi-pleine largeur.
v3.0.111/03/2026
AméliorationCartes medecins compactes : 2 lignes max, toute la carte est cliquable, 3 colonnes sur grands ecrans.
FixLa sidebar suit maintenant le scroll et surligne la bonne section en temps reel.
AméliorationLe toggle Mode expert est repositionne dans un en-tete de zone 'Ajustement des contraintes', clairement separe des presets.
AméliorationSuppression de la distinction Bonus (jauge verte) : toutes les contraintes utilisent la meme jauge d'importance, plus simple a comprendre.
v3.0.011/03/2026
NouveauRefonte complete de la page Administration. Nouvelle navigation par sections (sidebar desktop, pills mobile) au lieu des onglets.
NouveauReglages rapides : 3 profils pre-configures (Equilibre, Continuite, Confort) pour configurer le moteur en un clic.
NouveauJauges d'importance : les poids numeriques sont remplaces par 5 niveaux clairs (Optionnel → Quasi-obligatoire). Les poids fins restent accessibles via un toggle.
NouveauDetection de conflits : le systeme signale automatiquement les configurations problematiques (sous-effectif, preferences orphelines, objectifs contradictoires).
AméliorationDescriptions en langage clair : chaque regle du moteur est expliquee en termes concrets ("Le moteur espace les gardes d'au moins 5-7 jours").
AméliorationProfils medecins en grille : vue d'ensemble compacte avec role, gardes/mois et jours en un coup d'oeil. Modification dans un panneau lateral.
AméliorationJours autorises : le selecteur de jours utilise maintenant un interrupteur explicite (On/Off) avec les jours bloques barres en rouge.
AméliorationRegles inviolables organisees en 3 niveaux : fondations (verrouillees), protections (desactivables avec avertissement), pilotees par profil.
AméliorationMobile : panneau medecin plein ecran, zones tactiles 44px minimum sur boutons et selecteurs de jours.
v2.3.011/03/2026
FixSecurite : cookie d'identite desormais httpOnly + secure (non accessible par JavaScript). L'identite est transmise du serveur au client via un contexte React.
FixSecurite : tokens d'acces renforces (128 bits au lieu de 32 bits).
FixMemory leak : nettoyage du timer de progression lors de la navigation pendant une regeneration.
AméliorationSolver API : validation Pydantic des parametres (month, time_limit, alternatives) avec bornes strictes.
AméliorationSolver API : les erreurs sont desormais loguees cote serveur (traceback complet).
v2.2.110/03/2026
FixSecurite : politiques RLS corrigees sur la table doctors (lecture publique, ecriture admin uniquement via service role).
FixToken creation : erreur silencieuse corrigee. Si la generation du token echoue a la creation d'un medecin, un message explicite est affiche.
FixProfils medecins : la priorite 'regular' est desormais fusionnee avec 'primary' (identiques cote moteur).
FixCouleurs medecins : les couleurs dynamiques (stockees en base) sont maintenant appliquees partout dans le planning et les badges.
FixRoute solver : guard ajoute si aucun medecin actif n'est trouve (erreur explicite au lieu d'un crash).
FixSauvegarde profils medecins : les modifications dans Settings sont maintenant persistees via l'API (corrige un echec silencieux lie aux politiques RLS).
v2.2.010/03/2026
NouveauWizard creation medecin : formulaire en 3 etapes (Identite, Disponibilites, Role) avec stepper visuel et navigation avant/arriere. Tous les reglages sont accessibles des la creation.
AméliorationReglages avances depliables a chaque etape du wizard : postes autorises, gardes preferees, espacement, jour off conditionnel, notifications. Visibles sans etre imposes.
AméliorationRecapitulatif visuel avant creation : badge couleur, initiales, quotite et cible gardes affiches a l'etape finale.
v2.1.009/03/2026
NouveauAjout de medecin : le responsable peut creer un nouveau medecin depuis les Settings. Formulaire avec initiales, nom, quotite, priorite, gardes et couleur. Un lien d'acces est genere automatiquement.
AméliorationSource de verite unique : les profils medecins sont stockes dans une table dediee en base. Plus de fichier JSON statique ni de systeme de delta.
AméliorationCouleurs dynamiques : palette de 20 couleurs pastels distinctes, auto-attribuee a la creation. Les couleurs sont stockees en base par medecin.
AméliorationListe admins centralisee : une seule source de verite pour les droits administrateur (supprime la duplication dans 4 fichiers).
v2.0.109/03/2026
NouveauAlertes contraintes visibles : les cellules du planning qui violent une contrainte dure (repos de garde, absence, etc.) sont signalees par un indicateur rouge. Un toast d'alerte apparait lors de l'assignation.
AméliorationToasts repositionnes en haut de l'ecran pour ne plus etre caches par la barre d'edition.
AméliorationToasts plus lisibles : fonds opaques avec contraste ameliore.
v2.0.006/03/2026
NouveauGel des desiderata : le responsable du planning peut geler la collecte d'un mois. Les medecins ne peuvent plus modifier leurs desiderata une fois la collecte gelee. Reouverture possible a tout moment.
NouveauLien public planning : lien partageable en lecture seule pour les secretaires du service. Accessible sans compte, affiche la grille du mois avec consultations validees, navigation entre mois, et bouton imprimer.
NouveauMode sombre : suit automatiquement la preference systeme (mode nuit du telephone/ordinateur). Toggle manuel dans le header. Confort pour les gardes de nuit.
AméliorationReorganisation des actions planning : onglets de vue a gauche, actions admin a droite. Menu ⋯ regroupe impression, export CSV, partage et calendrier. Sur mobile, les actions admin passent dans le menu ⋯.
AméliorationImpression planning : selecteur de colonnes a imprimer, recapitulatif masque, seules les consultations validees sont imprimees.
AméliorationExport CSV : colonnes Consultations Matin et Consultations Apres-midi avec uniquement les consultations validees.
v1.7.605/03/2026
NouveauExport calendrier (iCal) : bouton dans la vue médecin pour copier un lien d'abonnement. Collez-le dans Google Calendar ou Apple Calendar pour voir votre planning automatiquement mis à jour.
v1.7.505/03/2026
NouveauNouveau désidérata « Consultation souhaitée » : signalez les jours où vous souhaitez être libre pour consulter. Le solver en tient compte (préférence souple).
v1.7.405/03/2026
FixDésidérata « Dispo journée seule » (pas de garde ce soir-là) : les entrées n'étaient pas sauvegardées en base (contrainte SQL manquante). Corrigé.
AméliorationGestion d'erreurs sur la sauvegarde des désidérata : un toast d'erreur s'affiche si la persistance échoue, au lieu d'un échec silencieux.
v1.7.304/03/2026
FixAlternatives planning : les médecins en consultation sont maintenant correctement exclus des remplaçants dans le popover de cellule.
AméliorationProtection double-clic sur tous les boutons d'action activités (consultation, off, bureau, valider, refuser, retirer).
AméliorationRefactoring code : extraction des sous-composants activités dans un fichier dédié (day-row-activities.tsx).
v1.7.204/03/2026
AméliorationColonne Consult splitée en deux colonnes Matin et Après-midi : lecture immédiate de qui consulte quand, sans labels am/pm.
NouveauPopover admin scopé par période : chaque colonne (Matin/Après-midi) a son propre popover avec médecins non positionnés et section 'Me positionner'.
NouveauCommentaire de refus : au clic sur ✕, un champ texte optionnel permet d'indiquer la raison du refus avant confirmation.
AméliorationAbsences groupées : off/bureau AM+PM même type → affichage pleine journée sans suffixe. Demi-journées avec suffixes français (mat. / a-m.).
FixAdmin peut maintenant se positionner en consultation depuis le popover (section 'Me positionner' visible quand libre).
AméliorationSuppression de tous les labels am/pm dans la grille, les popovers et la vue médecin.
v1.7.104/03/2026
NouveauDemi-journées AM/PM : les médecins peuvent maintenant se positionner séparément le matin et l'après-midi (ex: consultation le matin, bureau l'après-midi).
AméliorationVue médecin : deux colonnes Matin/Après-midi remplacent la colonne unique Activité.
AméliorationColonne Consult : seules les consultations apparaissent (off/bureau restent dans Absences uniquement).
FixCorrection d'un décalage d'affichage (hydration mismatch) sur l'en-tête Consult.
v1.7.004/03/2026
NouveauGestion des consultations post-planning : après validation du planning, les médecins peuvent se positionner sur leurs jours libres (consultation, off, bureau).
NouveauColonne 'Consult' dans la grille service : affiche les médecins en consultation avec badge vert (validée) ou orange (en attente).
NouveauValidation admin des consultations : popover dans la colonne Consult pour valider/refuser les demandes et assigner directement les médecins non positionnés.
NouveauVue médecin enrichie : boutons Consult/Off/Bureau sur chaque jour libre quand le planning est validé. Statut visible en temps réel.
AméliorationAlternatives planning : les médecins en consultation sont exclus des remplaçants proposés (raison 'En consultation').
AméliorationRécapitulatif enrichi : colonne Consult. affiche le ratio consultations/jours libres avec indicateur d'attente.
AméliorationOff et bureau apparaissent dans la colonne Absences avec un label distinctif.
v1.6.203/03/2026
FixCorrection prénom Margaux Populaire (MP) dans toutes les sources de données et l'interface.
FixNotifications email : ajout d'un délai entre les envois pour respecter la limite Resend (2 req/s). Plus de mails perdus en campagne.
FixAjout du token d'accès pour Emilie Stempf (ES) — elle peut maintenant recevoir les notifications et accéder à ses désidérata.
v1.6.103/03/2026
FixÉditeur planning : le grid ne saute plus au premier clic en mode édition. L'éditeur s'initialise maintenant depuis le brouillon sauvegardé (et non la sortie solver brute).
v1.6.003/03/2026
NouveauWidget micro-feedback : bouton discret 'Votre avis ?' dans le footer, accessible à tous les médecins identifiés. Note 1-5 en un clic + commentaire optionnel, envoi en < 15 secondes.
NouveauCooldown intelligent : le widget se masque 14 jours après soumission, 7 jours après 3 fermetures sans répondre. Pas de harcèlement.
NouveauEmail notification : chaque feedback envoyé génère un email brandé à l'admin avec note, commentaire et page concernée.
NouveauVue admin /admin/micro-feedback : distribution des notes (bar chart) + liste chronologique avec badge coloré par note.
v1.5.103/03/2026
NouveauBrouillon désidérata : bouton 'Sauvegarder' (outline) confirme que les marquages sont enregistrés sans transmettre. 'Valider' renommé en 'Transmettre mes désidérata' pour distinguer brouillon et transmission. Après transmission : seul 'Mettre à jour' reste visible.
AméliorationLifecycle auto-advance : si tous les médecins ont transmis leurs désidérata sans campagne officielle, le mois passe automatiquement en statut 'Collecte'. La carte 'Lancer la collecte' disparaît et 'Générer le planning' devient visible.
AméliorationPerformance : chargement des pages ~3x plus rapide. Les requêtes Supabase par mois (12-15 requêtes individuelles) sont remplacées par une seule requête batch. Le chargement de la liste des médecins est parallélisé et mutualisé.
v1.5.003/03/2026
Nouveau3 nouvelles notifications email : désidérata reçu (admin informé par médecin), tous désidérata complets (admin peut générer), accusé de lecture planning (tracking via email + visite in-app).
NouveauAccusé de lecture planning : lien email passe par /api/notify/ack (tracking 1er clic), visite in-app met à jour read_at. Admin voit 'Vu par X/Y' sous 'Généré par'.
AméliorationTemplate email extrait dans email-template.ts (route.ts allégée de 290 à 190 lignes). 4 variantes de contenu (campagne, planning validé, désidérata reçu, tous reçus).
AméliorationMigration 010 : nouveaux types notification_log (desiderata_submitted, all_desiderata_received) + colonne read_at pour les accusés de lecture.
v1.4.002/03/2026
NouveauNotifications email : les médecins reçoivent un email quand la collecte de désidérata est lancée ou quand le planning est validé. Envoi via Resend, templates brandés (teal + Bois de Rose), liens personnalisés avec token d'authentification.
NouveauChamp email par médecin dans les Settings, avec préférences de notification séparées (collecte désidérata / planning validé). Badges 'À venir' retirés.
NouveauTable notification_log dans Supabase : idempotence native (pas de doublon par type + mois + médecin), log des envois et erreurs.
AméliorationTemplate email contact (/api/contact) aligné sur le brand kit : header teal bicolore DeGarde, bande accent Bois de Rose, espacement Gmail corrigé.
v1.3.102/03/2026
AméliorationRoute /planning dédiée : le planning a sa propre URL au lieu de /dashboard?month=. L'onglet 'Planning' dans la navigation est maintenant correctement actif. Ancien lien /dashboard?month= redirige automatiquement.
AméliorationTouch targets mobile : hamburger et flèches semaine agrandis (min 44px), toast centré en bas, backdrop sombre sur le menu mobile.
AméliorationNavigation : Feedback retiré du header (déplacé en footer admin), active state sur les liens, Changelog visible par tous les utilisateurs identifiés.
AméliorationDialogues de confirmation natifs (window.confirm) remplacés par des ConfirmDialog stylisés : validation, annulation, régénération, enregistrement, collecte, génération.
AméliorationDésidérata mobile : grille outils 4 colonnes avec labels courts, suppression en lot optimisée (1 requête au lieu de N).
AméliorationTap sans outil sélectionné : toast d'avertissement 'Choisissez un statut'.
AméliorationPlanning grid : légende couleurs médecins sous la grille, gradient de fade pour le scroll horizontal mobile, bouton Imprimer masqué sur mobile.
AméliorationTooltip avec le nom complet du médecin sur chaque onglet de la vue planning.
AméliorationDashboard médecin : empty state explicatif quand le planning n'est pas encore disponible, mois affiché à côté de 'Cette semaine'.
AméliorationAccessibilité : role='button' + tabIndex + onKeyDown sur les cartes mois du dashboard admin.
AméliorationPremier contact : texte d'accueil amélioré sur l'écran code d'accès + lien personnel, mention 'le responsable du planning' au lieu d'un nom.
v1.2.102/03/2026
FixCorrection imports inutilisés (PenLine, Cpu, isKnown) qui bloquaient le lint CI.
FixescapeHtml : ajout du remplacement des apostrophes (') dans le formulaire de contact.
MoteurNouveau type désidérata no_oncall : interdit la garde un jour donné (les postes restent autorisés). Traité dans H11.
FixBiais annuel cohérent API/CLI : la route /api/solve ne mélange plus les données de l'année précédente dans les stats annuelles.
AméliorationEmail contact configurable via variable d'environnement CONTACT_EMAIL.
AméliorationRate limiting sur /api/contact : 1 requête par minute par IP pour protéger le quota Resend.
v1.2.002/03/2026
NouveauFormulaire de contact sur la landing page : nom, email, établissement, message. Envoi par email via Resend. Section intégrée entre 'Pourquoi DeGarde' et le CTA final.
v1.1.001/03/2026
NouveauCode d'accès établissement : premier écran de connexion avec code à 6 chiffres. Cookie 30 jours. Les liens personnels (?token=xxx) passent directement.
NouveauPages d'erreur en français : error boundary (500), page introuvable (404), spinner de chargement.
NouveauLiens personnels dans Settings : onglet 'Liens' avec copie individuelle ou groupée des URLs par médecin.
AméliorationSélecteur d'identité masqué pour les non-admins : les médecins arrivent via leur lien personnel. Admins gardent 'Changer de profil'.
AméliorationOnboarding réécrit pour les médecins : 3 étapes (Bienvenue, Comment ça marche, C'est parti) au lieu du texte 'prototype'.
AméliorationGuard API /api/solve : seuls les admins (CA/MS/LB) peuvent lancer une génération. Timeout 60s sur l'appel solver.
AméliorationGuard API /api/desiderata : les non-admins ne voient que leurs propres désidérata.
AméliorationCompteur X/10 médecins visibles par tous dans la vue désidérata.
AméliorationRésilience dashboard : Promise.allSettled pour les queries non-critiques. Si Supabase est indisponible, le dashboard s'affiche quand même.
NouveauLanding page marketing : page d'accueil DeGarde avec sections Hero, Problème, Comment ça marche, Fonctionnalités, CTA. Esthétique professionnelle healthcare.
NouveauDashboard désidérata : vue d'ensemble des mois avec statut de soumission (envoyé, à remplir, à venir). Visible quand on clique sur Désidérata sans mois sélectionné.
NouveauRoute /planning dans la navbar : accès direct au planning du mois en cours.
AméliorationRestructuration routes : app déplacée de / vers /dashboard. Page d'accueil marketing indépendante.
v1.0.427/02/2026
AméliorationRefonte UX panneau Médecins (Settings) : ancien monobloc 710 lignes → 12 fichiers par catégorie. 7 groupes logiques (Disponibilités, Gardes, Postes, Règles, Transitions, Notifications, Note). Chaque champ a une description en ligne et un badge de sévérité (règle stricte / préférence). Pilier et Régulier fusionnés en « Standard » (identiques côté moteur). Note de disponibilité et raison du jour off conditionnels sont maintenant éditables.
v1.0.327/02/2026
MoteurS24 récup fériés : garde un jour férié en semaine → 1j récup (comme dimanche). Garde dimanche veille de férié → 2j récup (le repos H3 tombe sur férié, ne compte pas). Récapitulatif front mis à jour.
MoteurChangement de profil avec date d'effet : profile_changes remplace le champ transition hardcodé. Permet plusieurs transitions datées (quotité, priorité, volume gardes). UI Settings : ajout/suppression de transitions par médecin.
v1.0.226/02/2026
MoteurS24 — Récup post-garde WE : le moteur favorise des jours libres après les gardes weekend. Ven garde → 1j récup (lundi), Sam → 2j (lundi + mardi), Dim → 1j (mardi, lundi = repos). Cross-mois via contexte M-1.
NouveauColonne Récup dans le récapitulatif par médecin : affiche le ratio jours de récup pris/dus avec code couleur (vert si OK, orange si partiel, rouge si déficit).
v1.0.126/02/2026
NouveauRégénération partielle : quand on régénère un mois en cours, les jours passés (≤ aujourd'hui) sont automatiquement figés. Le moteur ne recalcule que les jours restants. Utile pour les changements de dernière minute (arrêt maladie, remplacements).
AméliorationConfirmation adaptée : le dialogue de régénération indique combien de jours seront conservés quand le mois est en cours.
AméliorationToast informatif après régénération : affiche le nombre de jours conservés (ex: '26 jours conservés').
v1.0.026/02/2026
MoteurUnified Weekly Availability : suppression complète du modèle fixed_unavailabilities (H4 + S9). Les disponibilités hebdomadaires sont désormais gérées exclusivement par les whitelists available_post_weekdays et available_oncall_weekdays (H16).
MoteurHéritage oncall : si available_oncall_weekdays est vide et available_post_weekdays est renseigné, la garde hérite les restrictions postes en semaine. Le WE reste toujours ouvert.
Améliorationdoctors.json migré : CA, LB, SB, AT, ES convertis de fixed_unavailabilities vers les whitelists + availability_note descriptif. SB mardi IME devient un désidérata prefer_not.
AméliorationTypeScript full-stack nettoyé : interface Unavailability supprimée, constraint-validator et doctor-constraints-check réécrits pour les whitelists, month-calendar simplifié (offWeekdays booléen), doctor-section affiche availability_note.
v0.9.926/02/2026
MoteurH16 réécriture : modèle blacklist (oncall_forbidden_weekdays) remplacé par deux whitelists optionnelles — available_post_weekdays et available_oncall_weekdays. Si vide = aucune restriction. Si renseigné = seuls ces jours sont autorisés pour postes ou garde.
MoteurH16 : bypass désidérata identique à H4 — AVAILABLE lève toutes les restrictions du jour, REQUEST_ONCALL lève uniquement la restriction garde. LB passe de 'pas de garde mardi' à 'garde uniquement lundi'.
AméliorationSettings UI : section 'Jours sans garde' remplacée par deux whitelists (jours poste autorisés + jours garde autorisés). UX : vide = tous les jours autorisés, clic = toggle inclusion/exclusion.
AméliorationVue planning responsive : toolbar en colonne sur mobile, onglets médecins scrollables horizontalement, boutons action avec retour à la ligne, grille table scrollable horizontalement.
MoteurFix biais annuel : compute_annual_guard_stats ne compte plus que les mois de l'année civile cible (jan→mois précédent). Sept-déc 2025 n'influencent plus le planning 2026.
v0.9.726/02/2026
MoteurH4 + désidérata : AVAILABLE sur un jour hard-off lève la contrainte pour tous les rôles ce jour-là. REQUEST_ONCALL lève H4 pour la garde uniquement. Le solver peut enfin respecter 'je suis dispo mercredi exceptionnellement'.
MoteurS10 adapté : la pénalité 'garde avant jour off' est désactivée quand le médecin a posé AVAILABLE ou REQUEST_ONCALL sur le lendemain — cohérence avec la levée de H4.
FixIcône 🔒 verrou admin masquée pour les médecins — visible uniquement par les admins dans la grille de planning
FixAudit 'Vérification des règles' : comptage des gardes recalculé depuis le planning affiché (activeDays) au lieu du snapshot solver — plus de désynchronisation après edits sauvegardés
FixPopover d'affectation : les jours de contexte (mois précédent) exclus du comptage de gardes — plus de faux 'N gardes ce mois (cible M)'
v0.9.525/02/2026
NouveauVerrous admin : Cécile peut verrouiller un médecin sur un poste précis avant de lancer le solver (ex: 'HM de garde le 16/04'). Priorité absolue sur toutes les règles.
MoteurContrainte H15 : admin_locked_assignments — force x[day][doc][role]==1. Override H4 (indisponibilités fixes) et H13 (allowed_posts). 4 tests PASS.
NouveauVue désidérata : section 'Verrous admin' par médecin — liste des locks actifs + formulaire date/poste + indicateur 🔒 dans le calendrier
AméliorationPlanning view : cellules verrouillées surlignées amber avec 🔒 — visibilité de ce qui est figé
NouveauTable Supabase admin_locks (migration 008) : persistance par mois/date/poste avec audit trail
v0.9.425/02/2026
MoteurContrainte H14 : shift_24h_only — certains médecins (HM) ne viennent qu'en 24h. Si affectés à un poste, ils doivent aussi être de garde ce jour-là.
NouveauSettings Config : toggle 'Garde seule (24h)' par médecin dans la section Profil
AméliorationValidator front : H14 détecte les violations (poste sans garde pour shift_24h_only) dans l'éditeur et la vue complète
v0.9.325/02/2026
AméliorationConcurrence Régénérer : lock optimiste (10 min TTL) — 2 admins ne peuvent plus lancer deux générations simultanées. Le 2e voit le bouton disabled avec tooltip 'En cours par X'.
AméliorationUX attente Régénérer : modal 5 étapes avec barre de progression estimée + purge du wording technique 'solver'
FixAudit trail : 'generated_by' n'était jamais renseigné (toujours 'unknown'). Corrigé : doctorId passé dans le body du fetch.
NouveauToolbar planning : affiche 'Généré par X · date' — traçabilité de qui a lancé la dernière génération
v0.9.225/02/2026
FixBug lifecycle brouillon : router.refresh() ajouté après dé-validation — dashboard affiche maintenant le bon mois
FixNextActionCard : statut 'brouillon' (draft) inclus dans la priorité 1 (à valider)
AméliorationAdmin override : les médecins en violation dure sont maintenant cliquables (⚠️ + texte rouge) — c'est l'admin qui décide, pas le solver