Tous les articles
Ingénierie28 novembre 20231 min de lecture

Un créneau ne peut pas être réservé deux fois

Deux clients cliquent sur le même créneau à la même seconde. Un seul doit l'obtenir. Là où ça se joue vraiment, ce n'est pas dans l'interface.

Spotrak

Spotrak

Équipe produit

Partager

Deux clients ouvrent votre page de réservation. Le même créneau de 14h s'affiche libre pour les deux. Ils cliquent à une seconde d'intervalle. Combien de rendez-vous existent maintenant à 14h ?

Si la réponse peut être « deux », vous avez un bug que personne ne verra en démo et que tout le monde verra un jour chargé. Le double-booking est le test le plus simple pour savoir si un logiciel de rendez-vous a été pensé sérieusement.

L'interface ne protège rien

Le réflexe naïf : « on vérifie que le créneau est libre, puis on enregistre ». Entre le moment où on vérifie et le moment où on enregistre, l'autre réservation passe. Cette fenêtre dure quelques millisecondes, et c'est largement assez. Vérifier puis écrire, ce sont deux opérations ; entre les deux, tout peut arriver.

La garantie vit dans la transaction

La seule place où l'unicité d'un créneau peut être garantie, c'est la base de données, dans une transaction. On ne vérifie pas avant d'écrire. On laisse Postgres refuser la seconde écriture, via une contrainte d'exclusion sur la plage horaire et la ressource. La première réservation passe, la seconde est rejetée par la base, pas par un if. Il n'y a pas de fenêtre, parce qu'il n'y a qu'une opération.

Le détail qui change tout : la ressource et le fuseau

Un créneau, ce n'est pas qu'une heure. C'est une heure, un membre de l'équipe, et parfois une salle ou un équipement. Deux rendez-vous à 14h avec deux personnes différentes sont valides. À 14h avec la même personne, non. La contrainte porte donc sur la combinaison, pas sur l'heure seule. Et tout est stocké en UTC, pour qu'un passage à l'heure d'été ne crée ni trou ni doublon.

Ce sont des détails invisibles pour l'utilisateur. C'est exactement pour ça qu'ils comptent : un bon logiciel de rendez-vous, c'est un logiciel où la question du double-booking ne se pose même pas.

Spotrak

Spotrak

Équipe produit

L'équipe Spotrak construit les plateformes métier qu'on déploie chez nos clients et écrit sur ce qu'on apprend en les exploitant.

Rejoignez la newsletter Spotrak.

Deux fois par mois.