Comment un réseau de huit intervenantes à domicile, coordonné par une petite structure associative, peut-il gérer ses plannings hebdomadaires et ses remplacements de dernière minute sans investir dans un logiciel métier de gestion d’intervenants, hors de portée de son budget ? La réponse tient dans une extension WordPress construite autour de trois tables et d’une règle simple : un remplacement n’efface jamais un créneau initial, il s’ajoute comme une exception qui le complète.
Ce choix de modélisation, discuté avec la coordinatrice du réseau avant tout développement, s’est révélé décisif : elle avait besoin de conserver une trace de qui était initialement prévu sur un créneau, même après un remplacement, pour ses propres besoins de suivi RH.
La structure des données
Trois tables suffisent à couvrir le besoin, sans complexité inutile :
wp_garde_intervenantes: identité, disponibilités générales, coordonnées.wp_garde_creneaux: un créneau planifié, avec une intervenante titulaire, une famille, une date et une plage horaire.wp_garde_remplacements: un enregistrement séparé, qui référence un créneau existant et désigne l’intervenante de remplacement, sans jamais modifier la ligne d’origine.
CREATE TABLE wp_garde_creneaux (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
intervenante_id BIGINT UNSIGNED NOT NULL,
famille_id BIGINT UNSIGNED NOT NULL,
date_creneau DATE NOT NULL,
heure_debut TIME NOT NULL,
heure_fin TIME NOT NULL,
PRIMARY KEY (id),
KEY date_creneau (date_creneau)
) {$charset_collate};
CREATE TABLE wp_garde_remplacements (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
creneau_id BIGINT UNSIGNED NOT NULL,
intervenante_remplacante_id BIGINT UNSIGNED NOT NULL,
motif VARCHAR(255) NOT NULL,
date_declaration DATETIME NOT NULL,
PRIMARY KEY (id),
KEY creneau_id (creneau_id)
) {$charset_collate};
Pourquoi une exception plutôt qu’une réécriture

La tentation la plus courante face à un remplacement consiste à modifier directement la ligne du créneau, en remplaçant l’identifiant de l’intervenante titulaire par celui de la remplaçante. Cette approche semble plus simple à court terme, mais elle efface une information que la coordinatrice jugeait précieuse : qui était censé intervenir initialement, utile pour évaluer la charge de travail réellement planifiée pour chaque intervenante, indépendamment des aléas.
Avec une table de remplacements séparée, une requête suffit pour reconstruire l’affichage réel du planning tout en conservant l’historique complet :
SELECT
c.date_creneau,
c.heure_debut,
c.heure_fin,
COALESCE(r.intervenante_remplacante_id, c.intervenante_id) AS intervenante_effective,
(r.id IS NOT NULL) AS est_remplacement
FROM wp_garde_creneaux c
LEFT JOIN wp_garde_remplacements r ON r.creneau_id = c.id
WHERE c.date_creneau = '2023-05-22'
ORDER BY c.heure_debut ASC;
La fonction COALESCE() retient l’intervenante de remplacement si elle existe, sinon la titulaire d’origine, tandis que la colonne calculée est_remplacement permet à l’écran d’administration d’afficher un badge visuel distinctif sans logique PHP supplémentaire.
Le tableau de bord de la coordinatrice
L’écran d’administration principal affiche la semaine en cours sous forme de tableau, une ligne par créneau, avec le nom de l’intervenante effectivement affectée et un badge « remplacement » le cas échéant. Un simple formulaire permet de déclarer un remplacement en sélectionnant le créneau concerné et la nouvelle intervenante, sans jamais toucher à la ligne d’origine.
| Élément | Rôle |
|---|---|
| Vue hebdomadaire | Affiche les créneaux effectifs, remplacements inclus |
| Formulaire de remplacement | Enregistre une exception sans modifier le créneau d’origine |
| Export CSV mensuel | Fournit à la coordinatrice un relevé pour son propre suivi RH |
Ce que cette approche évite
Une structure de données pensée dès le départ pour distinguer le planifié de l’effectif évite une série de retouches ultérieures : ajout après-coup d’un historique de modifications, difficulté à répondre à la question « qui devait initialement travailler ce jour-là », ou confusion entre un remplacement ponctuel et un changement définitif d’affectation, qui relève d’une autre table de règle récurrente non traitée ici.
Le conseil que je donne sur ce type de projet associatif à petit budget : ne jamais chercher à modéliser toutes les possibilités futures, mais bien distinguer, dès la première table, ce qui est un fait établi de ce qui est une exception ponctuelle.
En résumé
Trois tables et une règle de non-réécriture suffisent à couvrir la gestion des plannings et des remplacements d’un petit réseau d’intervenantes, sans les coûts et la complexité d’un ERP dédié. La facturation aux familles, souvent gérée via un autre canal associatif, reste un sujet distinct qui n’entre pas dans le périmètre de cette extension.