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 :
- Vérifier les pré-conditions : les disponibilités sont soumises, les règles sont configurées, les compétences requises sont déclarées
- Choisir un preset (optionnel, voir ci-dessous) ou les options par défaut
- 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 :
| Section | Contenu |
|---|---|
| Statut | Optimal · Faisable · Infaisable · Annulé |
| Couverture | Pourcentage de shifts attribués (cible : 100 %) |
| Équité | Coefficient de Gini, écart-type ETP, écart au quota par participant |
| Violations soft | Liste 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 calcul | Pour 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
- Roulements — la source des shifts à attribuer
- Disponibilités — entrée du solveur
- Compétences — filtrent les éligibles
- Groupes de membres — règles avancées par sous-équipe
- Règles de planning — règles intra/inter-roulement
- (bourse aux activités) — couverture des shifts non attribués
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
- Statistiques planning — vues d'ensemble post-attribution
- Glossaire — définitions Gini, ETP, fairness, hard/soft constraint, OR-Tools