Étape (Step)
En une phrase : un créneau de l'itinéraire d'un tour — « le déjeuner du jour 2 », « l'activité de l'après-midi » — qui sera dévoilé au voyageur le moment venu.
Rôle métier
L'étape découpe le tour en moments successifs. Elle est le support de la mécanique de révélation (chaque étape se dévoile au fil de la journée — voir Routage d'étape : l'instant revealable_at est calculé et imposé côté serveur, en Europe/Zurich) et l'unité de planification du back-office :
position— l'ordre du voyage (1..N contigu dans le tour) : c'est la seule vérité d'ordre, celle que les planificateurs réarrangent par glisser-déposer ;day_number— le jour du voyage auquel l'étape appartient (indicatif ; absent sur les tours d'une seule journée — la révélation le traite alors comme le jour 1, voir Routage d'étape) ;start_time— l'heure de début envisagée (indicative) ;reveal_time/reveal_days_before— quand l'étape se dévoile au voyageur : àreveal_time,reveal_days_beforejours avant le jour de l'étape (0= le jour même,1= la veille).
Ces horaires appartiennent au créneau du tour, pas à l'activité : la même dégustation de vin peut être une étape de début d'après-midi dans un tour (révélée 13h30, début 14h) et une étape du soir dans un autre (révélée 17h, début 17h30) — l'activité est agnostique de l'horaire.
Rien ne force les positions à suivre l'ordre des jours : le métier assume que la position est la réalité, le reste de l'annotation.
Le plan A / plan B
Une étape ne désigne pas une activité mais une liste d'alternatives priorisées (voir ActivityStep) : si le restaurant du plan A est complet ou fermé, le voyageur est dérouté vers un autre plan. C'est la réponse du produit à l'absence de gestion de disponibilité en temps réel des activités.
À la révélation de l'étape, le parcours individuel du voyageur se fige dans son routage : les éditions du gabarit ne touchent jamais un voyageur pour ses étapes déjà révélées, et restent libres pour tout ce que personne n'a encore vu.
Cycle de vie
L'étape vit au rythme de la planification : création en fin d'itinéraire (ou à une position choisie), réordonnancement, suppression avec re-numérotation — les positions restent toujours contiguës, sans trous. Deux garde-fous dès qu'il y a des voyageurs :
- une étape qui porte de l'histoire (des routages) ne peut plus être supprimée (
RESTRICT) ; - retirer le plan vers lequel des voyageurs sont en route aujourd'hui doit les signaler à l'admin pour re-routage — le retrait est permis, le silence non.
Relations métier
| Relation | Sens métier |
|---|---|
| → Tour | L'itinéraire d'appartenance ; une étape n'existe pas seule |
| ↔ Activités (alternatives priorisées) | Ce qui se passe concrètement à ce créneau, plan A d'abord |
| ← Journal d'audit | Ajouts, réordonnancements et suppressions tracés |
Règles métier
- Visibilité héritée du tour : on ne voit les étapes que si l'on voit le tour (mêmes règles par casquette) ; seule l'équipe les modifie.
- Le réordonnancement échange les créneaux : le squelette de l'itinéraire (jour + heures par position) est invariant — l'étape déplacée en position p reprend le
day_number,start_timeet la révélation que la position p portait avant l'appel. Réordonner ne déplace jamais les horaires du tour, seulement ce qui s'y passe. - Les alternatives d'une étape s'éditent par différence à partir de la liste complète envoyée (ordre = priorité) : les lignes survivantes gardent leur identité, les lignes historisées sont retirées, jamais supprimées — voir ActivityStep.
- Une même activité peut apparaître dans plusieurs étapes et plusieurs tours, mais au plus une fois par étape.

