Niveau de détail
Choisissez le niveau de détail souhaité

Guide Interactif

Sélectionnez votre rôle dans la barre latérale pour adapter le guide à vos fonctions.

Mode: Agent

⚡ En résumé

1
🔑 Connexion au portail
2
📅 Poser un congé sur la grille
3
💬 Messagerie par tags
4
📋 Éditer la grille de service
5
🔔 Valider les congés
6
💶 Exporter la paie CSV
7
🔗 Gérer les invitations

🔑 Connexion & Accès

  1. Ouvrez le lien de l'application fourni par votre direction.
  2. Saisissez votre email et votre mot de passe.
  3. Cliquez sur « Se connecter ». Vous êtes redirigé vers votre espace personnel.
Écran de connexion
📖 Standard

En mode Démo, un sélecteur rapide s'affiche — cliquez simplement sur votre nom pour entrer sans mot de passe. Ce mode est désactivé en production.

Si vous avez oublié votre mot de passe, contactez votre administrateur pour un reset manuel.

🔬 Complet

L'authentification utilise un token JWT Bearer stocké en mémoire React (non persisté dans localStorage pour des raisons de sécurité). Si vous fermez l'onglet, vous devrez vous reconnecter.

🔧 Expert — API
POST/api/auth/login
Body: { "username": "[email protected]", "password": "***" }
Réponse: { "access_token": "eyJ...", "token_type": "bearer",
           "user": { "id": 1, "role": "agent", "display_name": "..." } }

📅 Poser un Congé

Sur la grille du planning, cliquez sur votre cellule à la date souhaitée. Un menu contextuel apparaît avec les types disponibles :

☀️ CA — Congé Annuel 🏖️ RTT 💭 Desiderata (souhait non garanti) 🔴 Desiderata OFF (indisponibilité)

L'icône apparaît sur la cellule tant que la demande attend une réponse.

Popover congé
📖 Standard

Desiderata = vous exprimez un souhait. Le solveur en tient compte mais peut l'ignorer si les contraintes légales l'imposent. Il n'a pas de statut "validé/refusé" — c'est informatif.

CA et RTT = demandes formelles qui nécessitent une validation explicite du manager. Sans validation, elles restent en ⏳.

💡Vous pouvez poser plusieurs jours d'un coup en cliquant-glissant sur plusieurs cellules.
🔬 Complet

Il est impossible de poser deux demandes du même type sur la même date — le système vérifie les doublons avant insertion. Si vous voulez modifier une demande en attente, annulez-la d'abord depuis le panneau « Mes Demandes ».

🔧 Expert — API
POST/api/leave-requests
Body: { "planning_id": "uuid", "employee_name": "Prénom NOM",
        "day_index": 4, "request_type": "ca" }
Types valides: "ca" | "rtt" | "desiderata" | "desiderata_on"

💼 Panneau « Mes Demandes »

Cliquez sur l'icône Valise 💼 en haut à droite. Ce panneau regroupe toutes vos demandes de congés :

⏳ En attente ✅ Approuvée ❌ Refusée
Mes demandes
📖 Standard

Une demande En attente peut être annulée par vous en cliquant dessus. Une demande déjà Approuvée ne peut pas être annulée seul — contactez votre manager.

Les demandes Refusées restent visibles à titre d'historique mais n'ont aucun impact sur le planning.

🔬 Complet

Si vous annulez une demande refusée, le système la supprime proprement et vous permet d'en reposer une nouvelle pour la même date. Le compteur de jours CA/RTT n'est décrémenté qu'au moment de la validation par le manager.

🔧 Expert — API
GET/api/leave-requests?planning_id=uuid POST/api/leave-requests/{id}/cancel
Annule une demande en attente appartenant à l'utilisateur connecté.

🔁 Échange de Jour entre Agents

Cette fonctionnalité permet à deux agents de permuter leurs jours de travail. Elle est accessible depuis les cellules du planning :

  1. Cliquez sur votre cellule et choisissez « Proposer un échange ».
  2. Sélectionnez l'agent cible et le jour à échanger.
  3. L'agent reçoit une notification et peut Accepter ou Refuser.
  4. Si l'agent accepte, le manager doit encore valider l'échange définitif.
Popover échange de jour
📖 Standard
⚠️Les échanges concernent uniquement des jours travaillés. Il est impossible d'échanger un jour de repos contre un jour de repos.

Une demande d'échange expire automatiquement si le jour concerné est passé, ou si la demande n'a pas été répondue à temps.

🔧 Expert — API
POST/api/shift-changes
Body: { "planning_id": "uuid", "requester_day": 10,
        "recipient_name": "Prénom NOM", "recipient_day": 15 }

💬 Messagerie & Conversations

Cliquez sur l'icône Bulle 💬 pour ouvrir la messagerie interne. Vous pouvez avoir des échanges privés (1-à-1) ou des conversations de groupe.

Messagerie interne
📖 Standard

Les Tags permettent de filtrer les conversations par thème : Renforts, Congés, Échanges, Général... Utilisez-les pour ne pas noyer les infos importantes dans le flux de messages.

Un point rouge 🔴 sur l'icône signale des messages non lus. Il disparaît dès que vous ouvrez la conversation concernée.

🔬 Complet

Certaines notifications système (ex : demande de renfort) créent automatiquement une conversation liée. Vous pouvez y répondre directement depuis cette conversation ou depuis le panneau de notifications.

🔧 Expert — API
GET/api/messages/conversations POST/api/messages/send
Body: { "recipient_id": 5, "content": "Bonjour ..." }
Compte non lus: GET /api/messages/unread-count

🔔 Centre de Notifications

La Cloche 🔔 centralise toutes vos alertes en temps réel :

  • Réponses à vos demandes de congés (validé ✅ / refusé ❌)
  • Appels au renfort lancés par la direction
  • Demandes d'échange de jour reçues
  • Nouveaux messages non lus
Centre de notifications
📖 Standard

Un renfort est une demande de la direction pour qu'un agent travaille un jour supplémentaire (hors contrat). Vous pouvez l'Accepter ou le Refuser directement depuis la notification — aucune navigation requise.

Types de renfort : Jour Normal (payé), Récupération (compensé en repos), Heure supplémentaire.

🔬 Complet

Les notifications utilisent SSE (Server-Sent Events) — elles arrivent en push sans rechargement de page. Le badge sur la cloche se met à jour instantanément.

Si vous avez plusieurs onglets ouverts, chacun reçoit les notifications indépendamment.

🔧 Expert — API
GET/api/notifications/unread-count POST/api/notifications/{id}/acknowledge GET/api/events
(SSE) Flux temps réel — événement "refresh" déclenche le rechargement des données

⚙️ Profil & Préférences

Via l'icône Engrenage ⚙️, accédez à vos préférences personnelles :

  • Thème Sombre / Clair — mémorisé sur ce navigateur
  • Langue (FR par défaut)
  • Densité d'affichage de la grille (compact / normal)
Préférences et profil
📖 Standard

Le thème sombre est particulièrement recommandé pour les agents de nuit — il réduit la fatigue oculaire lors de la consultation en environnement sombre.

Vos préférences sont sauvegardées côté serveur et synchronisées si vous vous connectez depuis un autre appareil.

🔧 Expert — API
GET/api/user/preferences PUT/api/user/preferences
Body: { "theme": "dark" | "light", "density": "compact" | "normal" }

📊 Mon Récapitulatif Mensuel

Cliquez sur l'icône Graphique 📊 en haut à droite pour accéder à votre récap personnel du mois :

  • ⏱️ Heures effectuées vs cible contrat
  • 📅 Jours travaillés / repos / congés
  • 🌙 Heures de nuit (si applicable)
  • ⬆️ Heures supplémentaires accumulées
Récap Agent
📖 Standard

Le récap n'est disponible que sur les plannings validés. Si votre planning du mois est encore en brouillon, les compteurs restent à zéro.

L'écart positif (heures en trop) correspond à des heures sup comptabilisées. L'écart négatif signifie qu'il manque des heures à compléter.

🔧 Expert — API
GET/api/monthly-recap?planning_id=uuid&employee=Prénom NOM
Réponse: { "hours_worked": 168.5, "target_hours": 151.67,
  "days_worked": 21, "night_hours": 42.0, "overtime": 16.83 }

Crédits d'Équité

Le système de crédits d'équité garantit une répartition juste des contraintes (week-ends, nuits, jours fériés). Chaque agent accumule ou utilise des crédits selon les plannings.

📖 Standard

Vous gagnez des crédits lors des week-ends ou nuits travaillés. Ces crédits influencent les propositions automatiques du solveur — il favorise les personnes avec le moins de crédits pour les prochaines contraintes.

Votre solde actuel et l'historique des transactions sont visibles dans le panneau de récap.

🔧 Expert — API
GET/api/credits/me GET/api/credits/history?user_id=X

📋 Grille de Service

Accédez à la vue complète de l'équipe sur le mois. Chaque ligne est un agent, chaque colonne un jour. Les cellules affichent : M (Matin), S (Soir), N (Nuit), T (Travail générique), R (Repos).

Grille planning Manager
📖 Standard

Les demandes de congés en attente () sont visibles directement dans la grille. Cliquez dessus pour les approuver ou les refuser sans quitter la vue planning.

La colonne Total à droite indique le nombre de jours travaillés cumulés. Les cellules rouges signalent une anomalie légale détectée.

🔬 Complet

Modification directe : cliquez sur une cellule libre et tapez le code horaire (M/S/N/T/R). Le score de planning (conformité, confort) se recalcule automatiquement.

🪄 Solveur IA Automatique

Le bouton Baguette Magique 🪄 lance l'algorithme d'optimisation qui génère automatiquement le planning selon les règles légales et les préférences des agents.

  1. Ouvrez un brouillon (ou créez-en un).
  2. Cliquez sur la baguette magique.
  3. Attendez la génération (quelques secondes).
  4. Vérifiez le score de couverture avant de valider.
📖 Standard

Le solveur prend en compte : desiderata des agents, congés approuvés, quotas légaux (max jours consécutifs, repos obligatoire), crédits d'équité, et couverture minimale requise.

💡Vous pouvez verrouiller des cellules manuellement avant de lancer le solveur — il ne touchera pas aux cellules verrouillées.
🔬 Complet

Le solveur utilise OR-Tools (Google). S'il ne trouve pas de solution satisfaisante (contraintes trop strictes), il signale l'infaisabilité et propose d'assouplir les règles de confort (pas les règles légales).

🔧 Expert — API
POST/api/plannings/{id}/solve
Body: { "respect_desiderata": true, "equity_weight": 7 }
Status 200: { "success": true, "score": 0.92, "grid": {...} }
Status 422: { "detail": "Infeasible — contraintes trop strictes" }

📈 Couverture & Score

Sous la grille, une barre de couverture indique si le staffing respecte les quotas minimums pour chaque jour :

  • 🟢 Vert — couverture suffisante
  • 🟡 Orange — couverture limite (vigilance)
  • 🔴 Rouge — sous-effectif détecté
📖 Standard

Le Score Global (ex : 92%) combine la conformité légale + le confort des agents + la couverture. Un planning à 100% respecte toutes les règles sans compromis.

Le score de Confort reflète le respect des desiderata. Il peut être inférieur si le staffing l'a imposé.

🛎️ Validation des Congés d'Équipe

Via la cloche 🔔 ou directement sur la grille, approuvez ou refusez les demandes de vos agents :

  • Cliquez sur la cellule ⏳ → menu contextuel → Valider ou Refuser
  • Ou via le panneau Notifications → onglet Congés → action rapide
📖 Standard

Validation en masse : un bouton permet d'approuver toutes les demandes en attente du mois en un clic. Utile en début de mois après diffusion du planning.

⚠️Approuver un congé sur un planning brouillon ne le rend pas visible aux agents. La validation du planning reste nécessaire.
🔧 Expert — API
POST/api/leave-requests/{id}/approve POST/api/leave-requests/bulk-approve
Body: { "planning_id": "uuid" }  ← approve toutes les demandes du planning

🚑 Demande de Renfort

Quand un agent est absent (maladie) et que le service est en sous-effectif, le manager ou l'administrateur peut demander un renfort aux agents disponibles :

  1. Un point rouge 🔴 apparaît sur les jours en sous-effectif (maladie non couverte).
  2. Cliquez sur le bouton « Demander renfort » en haut à droite de la grille.
  3. Choisissez le type de renfort : Jour Normal (payé), Récupération (repos compensé), ou Heure supplémentaire.
  4. Sélectionnez les agents à contacter — le système affiche leur score de compatibilité.
  5. Envoyez la demande : chaque agent reçoit une notification en temps réel.
Bouton demande de renfort
📖 Standard

L'agent qui reçoit la demande peut Accepter ou Refuser directement depuis sa notification ou depuis la cellule du planning (le jour en question s'allume avec un badge spécial).

Quand un agent accepte, le jour redevient couvert et le compteur de sous-effectif diminue. Si personne n'accepte, vous pouvez relancer la demande avec un autre type de renfort ou d'autres agents.

💡Le bouton « Demander renfort » n'apparaît que si le planning est validé et qu'il y a au moins un jour maladie non couvert.
🔬 Complet

Les stats de renforts par agent sont visibles dans le Panel Agents : nombre de renforts acceptés / proposés par type (Jour Normal, Récup, HS). Cela permet de répartir équitablement les sollicitations.

Un renfort accepté modifie visuellement la cellule du planning : le jour de repos devient un jour travaillé avec un badge spécial (icône renfort) dans le coin.

🔧 Expert — API
POST/api/overtime/request
Body: { "planning_id": "uuid", "day_index": 8,
  "recipient_ids": [5, 12, 23], "overtime_type": "normal" | "recovery" | "overtime_hours" }
Réponse: { "sent_count": 3, "overtime_ids": ["uuid1", "uuid2", "uuid3"] }
POST/api/overtime/{id}/accept POST/api/overtime/{id}/refuse

🏥 Jours Spéciaux (Maladie / Formation)

Clic droit sur une cellule de la grille → menu contextuel → choisissez :

  • 🤒 Marquer Maladie — le jour est exclu des compteurs d'heures contractuelles
  • 📚 Marquer Formation — compte comme jour travaillé mais catégorisé séparément
📖 Standard

Les jours maladie apparaissent dans l'export CSV paie dans une colonne dédiée. Ils ne sont pas déduits du solde CA ou RTT de l'agent.

🔧 Expert — API
POST/api/sick-days/mark POST/api/formation-days/mark
Body: { "planning_id": "uuid", "employee_name": "Prénom NOM", "day_index": 5 }

📊 Récapitulatif d'Équipe

Ouvrez l'onglet Récap (graphique) pour un tableau consolidé de toute l'équipe : heures effectuées, cible, écart, jours maladie, CA posés.

📖 Standard

La colonne Écart (± heures) signale immédiatement les agents en dérive. Un écart positif = heures sup à récupérer. Un écart négatif = jours manquants à planifier.

Le Manager ne voit que son propre service. L'Admin voit tous les services simultanément.

Brouillons & Versions

L'icône en haut du planning crée un nouveau brouillon. Vous pouvez choisir 3 modes de duplication :

  • 📋 Copie complète — duplique la grille et tous les prérequis
  • 📝 Desiderata seulement — copie les prérequis admin, pas la grille
  • Brouillon vide — page blanche, avec agents du service
Brouillons Admin
📖 Standard

Un seul planning peut être Validé Public à la fois par mois et par service. Les brouillons sont privés — les agents ne les voient pas tant que vous ne validez pas.

La validation rend le planning visible à toute l'équipe et déclenche les notifs push. La dévalidation est possible pour corrections urgentes.

🔬 Complet

Les demandes de congés sont partagées entre tous les brouillons du même mois/service — elles survivent à la suppression d'un brouillon.

Le versionning utilise des labels automatiques (v1, v2...) pour vous permettre de tracer l'évolution.

🔧 Expert — API
POST/api/plannings POST/api/plannings/{id}/validate POST/api/plannings/{id}/unvalidate
Body création: { "name": "IDE Jour", "month": 5, "year": 2026,
  "source_planning_id": "uuid", "copy_mode": "full|desiderata|empty" }

👥 Panel Global des Agents

Accédez au tableau complet de tous les agents de l'établissement depuis le menu principal :

  • 🔍 Recherche par nom, service, grade
  • ➕ Création d'un compte agent (permanent ou temporaire)
  • 🔄 Mutation inter-services (déplace l'agent vers un autre type de planning)
  • ⚙️ Modification du temps partiel (% de travail)
📖 Standard

Un agent temps partiel (ex : 80%) a ses quotas d'heures ajustés proportionnellement. Le solveur en tient automatiquement compte pour la planification.

La mutation d'un agent change ses allowed_planning_types. Elle prend effet immédiatement pour les brouillons futurs ; elle n'altère pas les plannings déjà validés.

🔬 Complet

Les crédits d'équité d'un agent peuvent être ajustés manuellement si nécessaire (ex : reprise après congé maternité). Cette action est tracée dans l'historique.

🔧 Expert — API
GET/api/users POST/api/auth/register PUT/api/users/{id}
Body mutation: { "allowed_planning_types": ["IDE Nuit"],
  "work_time_percentage": 80 }

📝 Gestion Centralisée des Demandes

Depuis le menu Équipe → Demandes des agents, l'administrateur a une vue globale de toutes les demandes de tous les agents :

  • 🟡 En attente — à traiter (filtrage par défaut)
  • Approuvé — demandes acceptées
  • Rejeté — demandes refusées
  • 📋 Tout — vue complète de l'historique
Gestion des demandes des agents
📖 Standard

Chaque ligne affiche : nom de l'agent, type de demande (Repos souhaité, CA, RTT), date demandée, date de dépôt, et actions rapides (✓ approuver / ✗ refuser).

La colonne Jour chaud signale si le jour demandé est déjà en tension (faible couverture). Cela aide à identifier les refus nécessaires.

💡Utilisez « Tout sélectionner » pour approuver ou refuser en masse. Idéal en début de mois après diffusion du planning.
🔬 Complet

Le badge rouge 882 sur l'onglet représente le compteur de demandes en attente tous types confondus. Il se met à jour en temps réel via SSE.

Un lien « voir le planning » permet de sauter directement au planning concerné pour vérifier la couverture avant de valider ou refuser.

🔧 Expert — API
GET/api/leave-requests?status=pending POST/api/leave-requests/bulk-approve
Body: { "ids": [1, 2, 5, 8] }
Approuve en masse les demandes sélectionnées.

💶 Export Paie CSV

Depuis l'onglet Récap d'un planning validé, cliquez sur Exporter CSV. Le fichier contient une ligne par agent avec les colonnes :

  • 📊 Heures totales effectuées
  • 🌙 Heures de nuit
  • ☀️ Heures de dimanche
  • ⬆️ Heures supplémentaires (HS)
  • 🤒 Jours maladie
  • 🏖️ Congés posés (CA + RTT)
  • 📚 Jours de formation
📖 Standard
⚠️L'export CSV ne fonctionne que sur les plannings au statut Validé Public. Les brouillons retournent un fichier vide.

Le format CSV est compatible avec les logiciels RH courants (Excel, SAGE, HR Access). Les valeurs numériques utilisent le point comme séparateur décimal.

🔬 Complet

Les exports sont consolidés sur le mois entier — même si plusieurs brouillons ont été créés pour ce mois, seul le planning validé est comptabilisé.

🔧 Expert — API
GET/api/plannings/{id}/export-csv
Headers: Authorization: Bearer {token}
Réponse: text/csv — attachment; filename="recap_mai_2026.csv"

⚖️ Conventions Légales

Dans les Paramètres globaux, sélectionnez la convention applicable à votre établissement :

  • 🏥 FPH — Fonction Publique Hospitalière (7,5h/j, 35h/sem.)
  • 🏥 FPH 12h — Variante postes 12 heures (max 2 nuits consécutives)
  • 🏢 CCN 51 — Convention collective nationale FEHAP
  • ⚙️ Personnalisé — Saisie manuelle de tous les paramètres
📖 Standard

Changer de convention modifie immédiatement les seuils légaux utilisés par le solveur : heures/mois, repos minimum entre deux postes, maximum de nuits consécutives, etc.

En mode Personnalisé, vous configurez librement : nb d'heures journalières, jours de weekend, plafonds d'HS, etc.

🔧 Expert — API
GET/api/conventions GET/api/conventions/{id} PUT/api/config
Body: { "convention_id": "fph" | "fph_12h" | "ccn51" | "custom",
  "hours_per_day": 7.5, "max_consecutive_days_hard": 6 }

🔗 Système d'Invitation

Depuis le menu Équipe → Invitations, générez un lien d'accès pour qu'un nouvel agent crée son compte :

  1. Cliquez Générer un lien ou QR Code.
  2. Envoyez le lien par email ou affichez le QR Code.
  3. L'agent s'inscrit lui-même (nom, email, mot de passe).
  4. Vous recevez une notification pour approuver l'inscription.
📖 Standard

Les liens d'invitation ont une durée de validité configurable (24h, 72h, 7 jours). Passé ce délai, le lien expire et doit être regénéré.

En cas de doublon (l'agent existe déjà avec un autre email), une option de fusion de comptes permet de consolider les deux entrées. Attention : la fusion est irréversible.

🔬 Complet

Vous pouvez pré-configurer le rôle et le service dans le lien d'invitation — l'agent arrive directement assigné sans intervention manuelle supplémentaire.

🔧 Expert — API
POST/api/invitations/generate GET/api/invitations/{token}/info POST/api/invitations/{token}/register
Body: { "expires_in_hours": 72, "role": "agent",
  "allowed_planning_types": ["IDE Jour"] }

Questions fréquentes

J'ai posé un congé mais l'icône ⏳ a disparu sans validation ?
La demande a probablement été refusée. Ouvrez le panneau « Mes Demandes » (icône valise 💼) pour voir le statut et le motif. Une notification aurait dû vous alerter.
Je ne vois pas le planning du mois prochain ?
Les agents ne voient que les plannings validés publiquement. Si le mois prochain est encore en brouillon interne, il reste invisible jusqu'à ce que la direction le valide.
Puis-je poser plusieurs jours de congé en même temps ?
Oui. Cliquez-glissez sur plusieurs cellules consécutives dans la grille pour sélectionner plusieurs jours. Le menu de demande s'ouvrira pour l'ensemble de la sélection.
Comment annuler une demande de congé en attente ?
Ouvrez « Mes Demandes » (💼), repérez la demande avec le statut ⏳, et cliquez dessus. Un bouton « Annuler » apparaît. Une fois la demande approuvée, l'annulation doit passer par votre manager.
La différence entre CA, RTT et Desiderata ?
CA = Congé Annuel classique (solde limité). RTT = Réduction du Temps de Travail (si applicable à votre convention). Desiderata = souhait sans garantie, le solveur en tient compte si possible sans en faire une obligation.
Les notifications push fonctionnent-elles sur mobile ?
Oui, si vous avez accepté les notifications lors de votre première connexion. Sur iOS, l'application doit être ajoutée à l'écran d'accueil (PWA) pour recevoir les notifications en arrière-plan.
Mon compteur d'heures est faux dans le récap ?
Le récap ne se calcule que sur les plannings validés. Si le mois est en brouillon, les compteurs affichent zéro. Vérifiez aussi que vos demandes de congés approuvées ont bien été prises en compte (elles influencent le calcul).
Comment changer mon thème sombre/clair ?
Cliquez sur l'icône ⚙️ (Profil) en haut à droite. Le toggle Thème permet de basculer. Votre préférence est sauvegardée sur le serveur et se synchronise sur tous vos appareils.
Pourquoi ne puis-je pas répondre à une demande d'échange ?
La demande a peut-être expiré (le jour concerné est passé) ou a été annulée par l'initiateur. Vérifiez votre panneau de notifications pour voir l'état de la demande.
Je ne vois pas mes crédits d'équité ?
Les crédits sont visibles dans le panneau Récap mensuel, onglet « Crédits ». Ils ne sont mis à jour que lorsqu'un planning est validé — les brouillons ne génèrent pas de crédits.
Comment savoir si un message a été lu par mon destinataire ?
Dans la conversation, les messages affichent un statut de lecture (✓ envoyé, ✓✓ lu). Cette fonctionnalité est disponible pour les messages directs (1-à-1), pas pour les groupes.
L'application se déconnecte trop vite ?
Le token d'authentification expire après une période d'inactivité (configurable par l'admin). C'est une mesure de sécurité. Fermez simplement l'onglet et reconnectez-vous — vos données sont sauvegardées.
Comment lancer le solveur automatique ?
Sur la grille d'un brouillon, cliquez sur le bouton Baguette Magique 🪄. Le solveur génère un planning complet en quelques secondes en respectant les règles légales et en tenant compte des desiderata des agents.
La jauge de couverture est rouge — que faire ?
Vérifiez quels jours sont en sous-effectif (colonne rouge). Ajoutez des agents ou modifiez des cellules manuellement pour atteindre le quota minimal. Vous pouvez aussi relancer le solveur pour qu'il tente de combler les lacunes.
Comment approuver tous les congés d'un coup ?
Dans le panneau Notifications → onglet Congés, un bouton Tout valider approuve toutes les demandes en attente du mois pour votre service. Idéal en début de mois après diffusion du planning.
Un agent a été absent (maladie) — comment le marquer ?
Clic droit sur la cellule de l'agent le jour concerné → « Marquer Maladie ». Le jour est retiré des compteurs contractuels et apparaît dans l'export CSV paie dans la colonne « Maladie ».
Le solveur dit « Infeasible » — pourquoi ?
Il n'arrive pas à trouver un planning qui respecte TOUTES les contraintes légales avec l'équipe disponible. Causes courantes : trop de congés approuvés, agents en maladie, quotas trop élevés. Assouplissez les règles de confort (non légales) et relancez.
Comment voir le récap d'un seul agent ?
Dans l'onglet Récap, cliquez sur le nom de l'agent dans le tableau pour voir le détail de ses heures. Vous pouvez comparer plusieurs agents en gardant leurs lignes sélectionnées (Ctrl+clic).
Puis-je verrouiller des cellules avant de lancer le solveur ?
Oui. Clic droit sur une cellule → « Verrouiller ». Le solveur preserve ces cellules et n'y touche pas lors de son optimisation. Débloquez de la même façon.
Un renfort ne s'affiche pas sur la grille de l'agent acceptant ?
Le badge de renfort (icône verte +) s'affiche sur la planning de tous les agents après acceptation. Si absent, rechargez la page — il est possible que le SSE n'ait pas livré l'événement de mise à jour.
Comment envoyer un renfort à un agent ?
Via le panneau Notifications → onglet Renforts → Nouvelle demande. Sélectionnez l'agent, le jour, et le type de renfort (Jour Normal / Récupération / HS). L'agent reçoit une notification et peut accepter ou refuser.
L'export CSV affiche des zéros partout ?
Seuls les plannings au statut Validé Public sont comptabilisés dans les exports. Validez le brouillon via le bouton « Valider » avant d'exporter le CSV mensuel.
Fusion de compte lors d'une invitation — est-ce réversible ?
Non. La fusion de comptes est irréversible — le compte source est supprimé et toutes ses données sont consolidées dans le compte cible. Vérifiez bien les comptes avant de confirmer.
Changer de convention (FPH → CCN 51) modifie-t-il les plannings passés ?
Non. La convention n'affecte que les futurs calculs (solveur, score, exports). Les plannings déjà validés conservent leurs données telles quelles.
Comment désactiver un agent sans supprimer son compte ?
Dans le Panel Agents, cliquez sur l'agent → « Désactiver ». Son compte reste en base (historique préservé) mais il ne peut plus se connecter ni apparaître dans les plannings.
Un lien d'invitation a expiré — comment en générer un nouveau ?
Allez dans Équipe → Invitations → cliquez « Regénérer » sur le lien expiré. Un nouveau token est créé avec la durée de validité configurée. L'ancien lien est automatiquement invalidé.
Puis-je avoir plusieurs plannings validés pour le même mois et service ?
Non. Un seul planning peut être Validé Public par couple (service, mois). Si vous validez un brouillon alors qu'un autre est déjà validé, le système dévalidera automatiquement l'ancien.
Comment ajuster manuellement les crédits d'équité d'un agent ?
Panel Agents → cliquez l'agent → onglet Crédits → bouton « Ajuster ». Saisissez la valeur (positive ou négative) et un motif. L'action est tracée dans l'historique de l'agent.
Que se passe-t-il aux demandes de congés si je supprime un brouillon ?
Rien. Les demandes de congés sont partagées entre tous les brouillons du même mois et service — elles survivent à la suppression d'un brouillon individuel.
Comment réinitialiser la base démo ?
Exécutez le script reset_demo.sh sur le serveur (fichier dans /docs/). Il recrée tous les utilisateurs, plannings et conversations de démo sans affecter les données de production.
L'auto-acceptation des CA — comment ça fonctionne ?
Dans Configuration Globale, un toggle active l'auto-acceptation : toutes les demandes CA/RTT sont approuvées instantanément sans intervention manager. Pratique en période creuse, à désactiver en période chargée.