SuperPagr

Attribution

L'attribution consiste à assigner chaque shift à un participant. SuperPagr propose deux modes complémentaires : l'attribution manuelle (vous assignez à la main, shift par shift) et l'attribution automatique (un solveur d'optimisation calcule la meilleure répartition possible en respectant vos règles et l'équité). Les deux modes coexistent dans le même planning : vous pouvez préaffecter manuellement quelques shifts critiques puis lancer la génération sur le reste.

Vues d'affichage

Trois vues couvrent les besoins du quotidien :

  • Spreadsheet : grille rotation × jour, idéale pour l'attribution rapide à la souris
  • Calendrier : vue mensuelle, utile pour les revues
  • Liste : tri et filtre détaillés, idéal pour les workflows par lot

Toutes les vues respectent les filtres en cours (par roulement, par participant, par statut).

Attribution manuelle

Assigner un shift

Cliquer sur un shift vide ouvre la modale d'attribution. SuperPagr affiche les participants éligibles triés par score d'éligibilité :

  • pondération par disponibilité soumise (préfère vs disponible vs indisponible)
  • respect des règles de planning (intra, inter, groupes)
  • équité (favorise les participants en retard de quota)
  • compétences requises (filtrage strict)

Sélectionner un participant attribue le shift. Une notification est envoyée si vous activez la publication immédiate.

Désassigner un shift

Bouton Désassigner dans la modale, ou raccourci sur la grille spreadsheet. Le shift redevient vide et les statistiques d'équité se recalculent immédiatement.

Attribution en lot

L'option Assignation par lot permet de :

  • assigner plusieurs shifts à un même participant (sélection multiple)
  • assigner une rangée entière de la grille (un roulement complet, ou un participant pour tout le mois)
  • copier-coller une attribution depuis un autre planning

Attribution automatique (OR-Tools)

C'est la fonctionnalité phare. SuperPagr utilise OR-Tools, le solveur d'optimisation contraint open-source de Google, pour calculer en quelques secondes ou minutes la meilleure attribution possible étant donné vos règles et vos contraintes d'équité.

Lancer une génération

Depuis Planning > Attribution > Générer :

  1. Vérifier les pré-conditions : les disponibilités sont soumises, les règles sont configurées, les compétences requises sont déclarées
  2. Choisir un preset (optionnel, voir ci-dessous) ou les options par défaut
  3. Confirmer — le solveur démarre

Suivre la génération en temps réel

Pendant l'exécution, l'écran de statut affiche :

  • la phase courante (parsing, modélisation, résolution, post-processing)
  • le temps écoulé et l'estimation restante
  • les statistiques intermédiaires (taux de couverture en cours d'optimisation)
  • la possibilité d'annuler

La plupart des plannings de petite et moyenne taille (50 shifts, 20 participants) résolvent en moins de 30 secondes. Les très gros plannings (300+ shifts, 100+ participants) peuvent prendre quelques minutes.

Lecture du rapport

À la fin, SuperPagr présente un rapport de génération :

SectionContenu
StatutOptimal · Faisable · Infaisable · Annulé
CouverturePourcentage de shifts attribués (cible : 100 %)
ÉquitéCoefficient de Gini, écart-type ETP, écart au quota par participant
Violations softListe détaillée des règles soft violées avec coût et participant concerné
Certificat d'infaisabilitéSi infaisable, sous-ensemble minimal de contraintes en conflit
Temps de calculPour suivi de performance

L'historique des rapports est conservé : chaque génération produit un nouveau rapport consultable a posteriori.

Que faire en cas d'infaisabilité

Le solveur déclare un planning infaisable quand aucun ensemble d'attributions ne peut respecter toutes les règles hard. Le certificat liste un sous-ensemble minimal de contraintes responsable.

Solutions possibles :

  • Relâcher une règle (ex : passer "max 4 nuits par mois" à "max 5")
  • Recruter un participant manquant pour couvrir un type de garde
  • Modifier une compétence requise si elle bloque le pool d'éligibles
  • Réviser les disponibilités si trop de blocages sont déclarés

Préaffectations (frozen assignments)

Avant ou pendant la génération, vous pouvez figer manuellement certaines attributions : "le Dr X fait obligatoirement la garde du 24 décembre". Ces préaffectations sont respectées strictement par le solveur, qui optimise le reste autour.

Configuration depuis Attribution > Préaffectations : ajouter, retirer, ou tout effacer en un clic.

Presets de génération

Un preset est un ensemble de paramètres de génération (poids des règles, mode équité, options avancées) sauvegardé pour réutilisation. SuperPagr propose des presets publics adaptés à des contextes types ("CHU urgences", "Petite équipe libérale", "Grand service multi-spécialités") et permet de créer vos propres presets.

Appliquer un preset depuis Attribution > Configuration > Charger un preset avant de lancer la génération.

Équité (fairness) et ETP

L'équité est une dimension centrale d'un bon planning : personne ne doit être sur-sollicité ni sous-sollicité. SuperPagr propose deux modes d'équité.

Mode simple

L'équité est calculée en proportion d'ETP (équivalent temps plein). Un médecin à 0,5 ETP doit faire la moitié des shifts d'un médecin à 1,0 ETP. Mode adapté à la grande majorité des services.

Mode avancé

Personnalise les poids ETP par type de garde : par exemple, un demi-poste compte pour 0,8 sur les gardes de jour mais 0,5 sur les nuits. Utile pour les équipes hétérogènes (PH temps partiel + interne + assistant).

Métriques d'équité

À chaque génération et à chaque attribution manuelle, le tableau de bord recalcule :

  • Coefficient de Gini : 0 = équité parfaite, 1 = inégalité maximale
  • Écart-type ETP : dispersion des shifts attribués vs cible
  • Écart au quota par participant (en valeur absolue et en pourcentage)
  • Distribution par roulement et par type de shift

Configuration depuis Attribution > Fairness. Les modifications s'appliquent à la prochaine génération.

Modification après génération

Le planning n'est pas figé après génération automatique : vous pouvez réattribuer manuellement n'importe quel shift, ce qui peut dégrader légèrement les métriques d'équité. Le tableau de bord met à jour en temps réel pour vous montrer l'impact de chaque modification.

Si vous modifiez beaucoup, relancer une génération sur les shifts encore vides peut être plus efficace.

Articulation avec les autres modules

Bonnes pratiques

  • Préparer le terrain : disponibilités complètes, règles validées, congés approuvés avant de générer
  • Itérer : une première génération révèle souvent un manque (règle trop stricte, compétence rare). Ajustez et relancez
  • Garder l'historique : les rapports de génération sont précieux pour justifier des décisions a posteriori
  • Préaffecter avec parcimonie : trop de préaffectations contraignent le solveur et dégradent l'équité globale

Pour aller plus loin