Skip to content

Alternative d'étape (ActivityStep)

En une phrase : le lien « cette étape propose cette activité en plan N » — la matérialisation du plan A / plan B qui rend le road-trip robuste aux imprévus.

Rôle métier

L'alternative relie une étape à une activité du catalogue en lui donnant une priorité : 1 = plan A (l'expérience voulue), 2 = plan B (le repli), et ainsi de suite. Le jour J, si le plan A est fermé ou complet, le voyageur est dérouté vers un autre plan — c'est le mécanisme qui permet de vendre un itinéraire surprise sans gérer la disponibilité en temps réel des prestataires.

Cycle de vie — vivante, retirée, jamais réécrite en bloc

Les alternatives sont éditées par différence : l'API reçoit toujours la liste complète (l'ordre du tableau est l'ordre de priorité), mais l'écriture préserve l'identité des lignes survivantes — leur UUID est ce que les routages référencent, il doit survivre aux éditions.

Une alternative référencée par au moins un routage ne peut plus être supprimée : elle est retirée (retired_at), d'un même geste qui annule sa priorité (priority = NULL) — une alternative retirée n'est plus dans la course, elle n'a plus de rang. Retirée, elle est invisible au routage et à la révélation, mais reste le support de la mémoire des voyageurs qui y sont passés — grisée dans l'éditeur d'étape du cockpit super-admin ; l'écran du voyageur, lui, sert son contenu normalement (le drapeau plan_retired y est informatif, voir routage d'étape). La suppression physique reste possible pour une ligne que personne n'a jamais suivie — la base l'arbitre toute seule (RESTRICT).

Ré-ajouter à une étape une activité dont l'alternative avait été retirée ressuscite la ligne existante (le retired_at s'efface, une nouvelle priorité est posée) : une seule ligne par couple (étape, activité), pour toujours — les souvenirs d'avant la fermeture et les routages d'après la réouverture pointent le même endroit.

Relations métier

RelationSens métier
ÉtapeLe créneau du road-trip concerné
ActivitéL'expérience proposée à ce rang de priorité
RoutagesLes voyageurs qui suivent ou ont suivi ce plan ; leur existence transforme la suppression en retrait

Règles métier

  • Une activité au plus une fois par étape — retirée comprise (c'est la résurrection qui gère le retour) — et une seule alternative vivante par rang : priority est unique parmi les lignes vivantes de l'étape.
  • Vivante et classée, ou retirée et sans rang — jamais entre les deux : la base l'impose (CHECK), aucun bug applicatif ne peut produire un plan vivant sans priorité ni un plan retiré qui squatte un rang.
  • Une même activité reste librement réutilisable dans d'autres étapes et d'autres tours — l'alternative est un lien de composition, pas une exclusivité.

Détail des contraintes (unicité différée, NULLS DISTINCT, clé composite) : base de données.

Contributors

No contributors

Changelog

No recent changes