Skip to content

Glossaire métier (mobile)

Sous-ensemble du jargon Buchard / Horizon utilisé côté mobile. Pour la définition complète, voir la doc backend via MCP internal-docs : /docs/spektrum/buchard/horizon/domain/glossary.md. À mettre à jour quand un terme est introduit, renommé ou que sa définition change.

Voyage

  • Travel — produit voyage commercialisé. Enum TravelType : Catalog (cas dominant), Seaside (balnéaire, autre cas dominant), OneDay (course du jour), OutOfCatalog, Group (les 2 derniers rares). Type : api_travel_Travel. Voir stores/travels.ts, views/TravelDetails.vue.
  • Travel statique vs dynamiquedynamique = les stops (arrêts) varient d'une occurrence à l'autre. Sinon statique. Détection : isDynamicTravel dans stores/bookingConstructor.ts. Impacte l'étape DepartureLocation du wizard.
  • TravelCategory — catégorie marketing/produit (Costa Brava, …). Côté Seaside, sert aussi de groupement de rotations.
  • TravelRange — gamme éditoriale (MainTravelRange + collection). Mappée dans composables/travelRangesMap.json.
  • Favorite — voyage mis en avant en home page (web). Le mobile fait sa propre sélection (UpcomingDepartures, getRandom).
  • Early Booking — promo de réservation anticipée portée par le Travel (earlyBooking, earlyBookingDate, earlyBookingType Value/Percent, earlyBookingValue). Remise par adulte, deadline inclusive jour J. Appliquée dans la chaîne de prix mobile (utils/booking-pricing.ts) — cf. business-rules.md → « Early booking ».
  • Acompte (depositPercentage) — taux d'acompte par voyage (travel.depositPercentage, int %). Source de vérité de l'option « Payer un acompte » du paiement — ne jamais hardcoder un taux. Cf. business-rules.md → « Acompte ».
  • Legacy — flag sur Travel/Booking importé de l'ancien système Globe. Ne pas éditer.

Occurrence

  • Occurrence — instance datée d'un Travel : un départ précis avec sa capacité (VehicleCapacity aller + VehicleCapacityReturn retour pour Seaside), son prix par tier d'âge, son Status (Published/Cancelled), son bookingState. Côté mobile : stores/occurrence.ts, publicApi.occurrences.*.
  • OccurrenceSummary — version résumée utilisée en listing (cards, upcoming).
  • bookingState — porté par l'occurrence ou en fallback par le voyage ; détermine si on peut réserver, si c'est complet (→ liste d'attente), etc.
  • Supplément global (GlobalSupplement / BookingGlobalSupplement) — taxe/supplément porté par l'occurrence (amountPerPersonPerDay, isFlatRatePerPerson), calculé côté client (utils/global-supplements.ts) puis envoyé sur le booking (BookingGlobalSupplement : globalSupplementId, description, amount). Voir business-rules.md → « Suppléments globaux ».

Logistique (côté lecture mobile)

  • Line — parcours global (« Valais → Italie »).
  • Drive — sous-trajet d'une Line (« Sion → Martigny via Saxon »).
  • Stop — lieu d'arrêt géographique (locality + place). Flag IsTransfer = arrêt de transfert petit bus → grand car.

L'utilisateur mobile choisit son Stop de chargement à l'étape DepartureLocation quand le voyage est dynamique.

Hébergement

  • Accommodation — hôtel/logement. Porte les seuils d'âge ChildMin/Max, JuniorMin/Max, AdultMin qui drivent le PassengerType. Code : utils/age-tiers.ts, cards/AccommodationPreview.vue.
  • travel.accommodation (singulier) = hôtel principal d'un voyage Seaside.
  • travel.accommodations (collection) = pour les voyages catalogue qui visitent plusieurs hôtels (regroupés par jour via parseDaysAccommodations, cf. utils/accommodation-optimizer.ts).
  • RoomType / RoomTypeCategory / Room / Option (RoomTypeOption) — type de chambre, catégorie, instances de chambre, options (vue mer, balcon).
  • MealPlan — pension (breakfast, half-board, full-board, all-inclusive, program board). Obligatoire uniquement pour Seaside avec hôtel (requiresMealPlan).

Assurance

  • Insurance (alias front CatalogInsurance, type SettingInsurance) — porte priceStart/priceEnd (tranche de prix par personne) et startDate/endDate (validité). L'option « Aucune assurance » est une assurance réelle value 0 fournie par le backend (plus de constante synthétique front). L'assurance démarre vierge dans le wizard (choix conscient — cf. business-rules.md).

Réservation

  • Booking (booking_Booking) — réservation client. BookingStatus : InCreation, Estimate, Draft, WaitingList, Confirmed, Billed, Canceled, PendingWebOrMobile. Sur ce mobile, on crée principalement des bookings qui passent par PendingWebOrMobile puis Confirmed/Billed après callback Saferpay.
  • BookingPassenger — passager d'un booking, porte TripType, Civility, MealPlan, prix, sièges, assurances.
  • Passenger — personne physique réutilisable (MyPassengers).
  • TripTypeOneWay, RoundTrip (défaut), Return.
  • PassengerTypeAdult, Junior, Child, Baby. Calculé à la volée depuis l'âge + seuils du voyage / hôtel. Code : utils/age-tiers.ts. ⚠️ Libellés selon le parcours : sur les parcours room-less (course d'1 jour, vol-sec Seaside), les 4 tiers sont réels et se nomment « Adulte / Adolescent / Enfant / Bébé » avec tranche dynamique (passengerTypeName ; one-day : bébé [0-3), enfant [3-12), ado [12-18), 18+ ; vol-sec : bébé [0-2), enfant [2-12)) — BABY est réservable et toujours gratuit sur les deux parcours room-less (cf. business-rules.md → « Tranches d'âge & prix bébé sur les parcours sans chambre » ; borne one-day divergente d'Horizon : DETTE_TECHNIQUE.md §4). Sur le chemin accommodation, l'hôtel fixe les tranches et les prix, avec libellés décalés hérités d'Horizon : JUNIOR s'affiche « Enfant » et CHILD s'affiche « Bébé » (BABY jamais rendu) ; quand l'accommodation Seaside n'a pas de tranche junior (juniorMin === juniorMax), CHILD bascule sur « Enfant » — cf. childTierShowsAsEnfant et business-rules.md.
  • CivilityMadam / Sir / Other (string).
  • PaymentDepositOnly — flag booking : true = acompte uniquement, false = totalité. N'a de sens que pour les paiements web/mobile (Saferpay/CembraPay). Le mobile l'envoie quand l'acompte est choisi — c'est lui que lit le worker Horizon pour basculer Confirmed vs Billed (cf. business-rules.md → « Acompte »).
  • ReservationCode — code visible client.
  • Waiting list — sur ce mobile, ce n'est pas un Booking : c'est un simple envoi de mail via publicApi.mail.addWaitingList. La route waiting-list-confirmation affiche l'accusé.

Paiement

  • Saferpay — passerelle de paiement en ligne (Initialize → Authorize → Capture). Unique passerelle du mobile : toutes les méthodes proposées au wizard (Facture, Carte de crédit, Twint, Reka) sont encaissées via Saferpay — le choix (PaymentType) part dans booking.paymentType.
  • TransactionStatusAUTHORIZED | CAPTURED | CANCELED | ERROR | UNKNOWN. Code : types/payment.ts.
  • CembraPay — paiement sur facture (échelonné Cembra côté backend). Sur ce mobile = la méthode « Facture » du wizard (PaymentType.CEMBRA_PAY), encaissée via Saferpay comme les autres méthodes. Aucun frais ajouté au total pour ce choix (parité site web cost.js et Horizon, qui n'appliquent aucun surcoût CembraPay).

Facturation

  • Invoice — facture émise. Types côté mobile en lecture : Confirmation (acompte), Balance (solde), Simple (facture totale hors-booking, ex: adhésion Club). Récupération PDF via protectedApi.bookings.getInvoice (base64).

Client

  • Customer (api_Customer) — fiche client. CustomerType : Private (cas mobile), Company, Agency (les 2 derniers irrelevants pour le mobile).
  • Club Buchard — adhésion annuelle payante. Niveaux None / Single / Couple (ClubMembershipType). Souscription mobile non implémentée (web only pour l'instant).
  • Points de fidélité — affichés dans LoyaltyPoints.vue / LoyaltyPointsCard.vue. Logique d'attribution / utilisation 100% backend.

Bons cadeaux

  • Gift — bon à montant libre (CHF). Validation via publicApi.gifts.validate(code), déduit du total au checkout. Création / envoi du bon non implémentés sur mobile (consommation uniquement).
  • RemainingValue — solde reportable d'un bon partiellement utilisé (null = bon intact). Géré côté backend, mais lu côté mobile : la déduction appliquée est remainingValue ?? value, plafonnée au sous-total de la réservation, suppléments globaux inclus (cf. business-rules.md → « Bon cadeau — solde restant… »).

Offres spéciales

  • Offre spéciale (SpecialOffer) — rabais programmé côté Horizon sur un ou des voyages et/ou une ou des occurrences (dates), actif si la réservation est passée dans la fenêtre [startDate, endDate] (bornes incluses, minuit). type : Value (montant CHF) ou Percent (%). Flags : isForMembersOnly (réservé aux membres Club actifs — sinon tout le monde), isPerPerson (value × nb passagers, Value uniquement — forcé false pour un Percent côté admin). Les offres occurrence + voyage se cumulent (sommées). Le mobile les résout en lignes Discount (utils/special-offers.tsresolveSpecialOfferDiscounts) envoyées dans booking.discounts — Horizon les applique verbatim (il ne les re-dérive pas, contrairement à l'early booking). isPerPerson absent de @spektrum/horizon-types → augmenté (SpecialOfferExt, types/extensions.ts). Cf. business-rules.md → « Offres spéciales ».
  • Prix teaser (minPrice.*WithSpecialOffers / *WithClubSpecialOffers) — prix « dès » pré-calculés par Horizon avec les offres publiques / club appliquées, affichés en teaser à tout le monde (composant SpecialOfferPrice, cf. travel-catalog.md). Heuristique d'affichage (ignore isPerPerson et le ×2 couple) — ne correspond pas au calcul réel de réservation, comme sur le site (parité assumée).
  • ×2 couple — un membre Club Couple voit la remise d'une offre membres doublée, sans condition sur le nombre de passagers (cf. business-rules.md → « Offres spéciales »).

Avis

  • TravelComment — avis client (comment, rating 0-5, isApproved, parentCommentId). Affichage public filtré sur IsApproved=true. Voir module comments-moderation.
  • MyComment — extension front qui dénormalise les infos du voyage (nom, slug, image, bookingId).

Seaside (spécificités)

  • Vol-sec Seaside — Seaside sans accommodation (transport seul) ; le wizard skip la pension et l'hôtel.
  • VehicleCapacity vs VehicleCapacityReturn — capacités aller/retour séparées (séjours 2/3 semaines avec rotation différente).
  • FirstNightInTheBus / LastNightInTheBus — flags voyage qui décalent les dates d'hôtel. Appliqués par le mobile au checkIn/checkOut du séjour envoyé dans finalBooking (start + 1 / end − 1) — cf. business-rules.md → « CheckIn/CheckOut Seaside : les nuits en bus décalent le séjour hôtel ».

ERP

  • NAV / Business Central — ERP comptable de Buchard. Le mobile ne le touche pas directement, mais les NavNo apparaissent sur Booking / Occurrence / Invoice via la doc backend.

Contributors

No contributors

Changelog

No recent changes