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. Voirstores/travels.ts,views/TravelDetails.vue. - Travel statique vs dynamique — dynamique = les
stops(arrêts) varient d'une occurrence à l'autre. Sinon statique. Détection :isDynamicTraveldansstores/bookingConstructor.ts. Impacte l'étapeDepartureLocationdu wizard. - TravelCategory — catégorie marketing/produit (Costa Brava, …). Côté Seaside, sert aussi de groupement de rotations.
- TravelRange — gamme éditoriale (
MainTravelRange+ collection). Mappée danscomposables/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,earlyBookingTypeValue/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é (
VehicleCapacityaller +VehicleCapacityReturnretour pour Seaside), son prix par tier d'âge, sonStatus(Published/Cancelled), sonbookingState. 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). Voirbusiness-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,AdultMinqui drivent lePassengerType. 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 viaparseDaysAccommodations, 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, typeSettingInsurance) — portepriceStart/priceEnd(tranche de prix par personne) etstartDate/endDate(validité). L'option « Aucune assurance » est une assurance réellevalue 0fournie 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 parPendingWebOrMobilepuisConfirmed/Billedaprès callback Saferpay. - BookingPassenger — passager d'un booking, porte
TripType,Civility,MealPlan, prix, sièges, assurances. - Passenger — personne physique réutilisable (
MyPassengers). - TripType —
OneWay,RoundTrip(défaut),Return. - PassengerType —
Adult,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)) —BABYest 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 :JUNIORs'affiche « Enfant » etCHILDs'affiche « Bébé » (BABYjamais rendu) ; quand l'accommodation Seaside n'a pas de tranche junior (juniorMin === juniorMax),CHILDbascule sur « Enfant » — cf.childTierShowsAsEnfantetbusiness-rules.md. - Civility —
Madam/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 basculerConfirmedvsBilled(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 routewaiting-list-confirmationaffiche 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 dansbooking.paymentType. - TransactionStatus —
AUTHORIZED | 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 webcost.jset 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 viaprotectedApi.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) ouPercent(%). Flags :isForMembersOnly(réservé aux membres Club actifs — sinon tout le monde),isPerPerson(value × nb passagers,Valueuniquement — forcéfalsepour unPercentcôté admin). Les offres occurrence + voyage se cumulent (sommées). Le mobile les résout en lignesDiscount(utils/special-offers.ts→resolveSpecialOfferDiscounts) envoyées dansbooking.discounts— Horizon les applique verbatim (il ne les re-dérive pas, contrairement à l'early booking).isPerPersonabsent 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 (composantSpecialOfferPrice, cf.travel-catalog.md). Heuristique d'affichage (ignoreisPerPersonet 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,rating0-5,isApproved,parentCommentId). Affichage public filtré surIsApproved=true. Voir modulecomments-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/checkOutdu séjour envoyé dansfinalBooking(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
NavNoapparaissent sur Booking / Occurrence / Invoice via la doc backend.
Contributors
No contributors
Changelog
No recent changes

