GLO-4002 2026

Carnet · Iter 5 · aubergiste

OPTIONS — Les commodités du séjour

Description

En tant qu’aubergiste, je peux vendre des commodités à mes clients.

Le premier article du Traité garantit qu’il n’y aura jamais de seconde auberge au Carrefour. Mes clients n’ont donc nulle part où aller, et les crédits promis à la signature n’arrivent plus depuis longtemps. J’en ai tiré la seule conclusion raisonnable : je vends des choses.

Je mets donc en vente trois commodités. On en souscrit autant qu’on veut, et même deux fois la même.

Commodité Sur l’appétit Sur la note
Table d’hôte une portion de plus +40 pièces la nuitée
Demi-pension l’appétit est coupé en deux −20 %
Régime imposé le voyageur mange ce qu’il a choisi, pas ce que son espèce commande +25 %

L’ordre change tout

Les commodités s’appliquent dans l’ordre où elles ont été souscrites, chacune sur ce que la précédente a laissé.

L’appétit se réarrondit après chaque commodité. La note, elle, ne s’arrondit qu’une seule fois, une fois toutes les commodités appliquées (voir critères 2 et 3, et l’exemple 1).

Mes clients l’ont compris avant moi et souscrivent dans l’ordre qui les arrange.

⚠️ L’appétit ainsi obtenu est un besoin total. C’est seulement ensuite que le régime le répartit entre les réserves, et c’est là qu’un omnivore paie son second arrondi, comme toujours.

Quand ça prend effet

Tout dépend de l’état du séjour quand la souscription s’exécute. Encore BOOKED, la commodité s’applique dès la première nuit, même si cette première nuit est celle qui commence : l’arrivée ne vient qu’après les actions. Déjà ACTIVE, elle ne s’applique qu’à partir de la nuit suivante. Une commodité ne se retire pas (voir critères 6 et 7).

La chambre privative

La chambre privative n’est pas une commodité. Elle ne se souscrit pas, elle se demande à la réservation, et ne se demande qu’à ce moment-là. On ne peut ni l’ajouter ni la retirer en cours de route (voir critère 12).

Toute ma méthode consiste à tasser les gens. Le client privatif paie pour que je ne le fasse pas : il occupe une chambre à lui seul, quel que soit son nombre de places, du jour de sa réservation à son départ. Personne d’autre n’y entre, même s’il reste quatre lits vides.

Je lui attribue la chambre par ma règle habituelle, mais en ne regardant que les chambres compatibles dont toutes les places sont libres. S’il n’y en a aucune, le séjour est refusé comme n’importe quel autre séjour qui ne trouve pas de chambre (voir critères 9 et 10).

Ça se paie : le tarif du forfait est multiplié par quatre, avant toute commodité (voir critère 11 et l’exemple 2).

Déroulement d’une nuit

Actions possibles (en ordre)
Commander des denrées, souscrire ou résilier un abonnement.
Aménager ou rerégler une chambre.
Réserver un séjour, privatif ou non.
Embaucher un employé.
Souscrire une commodité à un séjour.
Conséquences d’une nuit (en ordre)
1. Faire arriver les voyageurs dont le séjour commence cette nuit.
2. Établir le quart de la nuit.
3. Ranger les livraisons attendues.
4. Jeter les denrées périmées, sauf dans les réserves sous fraîcheur.
5. Servir le repas du soir.
6. Faire partir les voyageurs et libérer leurs places, frustrés compris, en consignant le motif.
7. Facturer la nuitée de chaque voyageur ayant passé la nuit, commodités et privative comprises.
8. Sceller et transmettre le journal de la nuit.

Conditions de succès

📎 Ce qu’« arrondi » veut dire exactement : les arrondis, dans le fonctionnement.

# Description
1 Les commodités s’appliquent dans l’ordre où elles ont été souscrites, jamais dans un ordre convenu d’avance.
2 L’appétit est réarrondi après chaque commodité, et pas seulement à la fin.
3 La note n’est arrondie qu’une seule fois, une fois toutes les commodités appliquées.
4 Souscrire deux fois la même commodité l’applique deux fois.
5 Le régime imposé remplace le régime de l’espèce et change donc les réserves où le voyageur se sert, y compris s’il devient ou cesse d’être omnivore.
6 Ce qui décide est l’état du séjour au moment où la souscription s’exécute. BOOKED : la commodité s’applique dès la première nuit du séjour, y compris quand cette première nuit est la nuit en cours. ACTIVE : elle ne s’applique qu’à partir de la nuit suivante ; ni le quart, ni le repas, ni la note de la nuit en cours n’en tiennent compte. Souscrite pendant la dernière nuit d’un séjour ACTIVE, elle est acceptée et ne s’applique jamais.
7 Une commodité ne peut pas être retirée.
8 Une souscription portant sur un séjour inconnu, terminé ou refusé est rejetée à l’exécution avec le motif STAY_NOT_ONGOING. Une souscription portant sur un séjour BOOKED est recevable.
9 Un séjour privatif ne considère que les chambres compatibles dont toutes les places sont libres, et choisit parmi elles par la règle de RESA critère 7. Faute de quoi, il est refusé avec le motif NO_COMPATIBLE_ROOM, comme tout séjour (voir RESA critère 8).
10 Un séjour privatif occupe toutes les places de sa chambre, de l’exécution de la réservation à son départ. La chambre n’a plus aucune place libre et ne ressort d’aucune recherche de place. Son départ libère toutes ses places, utilisables à partir de la nuit suivante.
11 La privative multiplie par quatre le tarif du forfait, avant toute commodité. Elle ne change rien à l’appétit.
12 La privative se demande à la réservation et ne se modifie plus : aucune action ne l’ajoute à un séjour existant ni ne la retire.
13 La demande de chaque réserve, calculée à l’étape 2 pour établir le quart, tient compte des commodités actives : c’est le même appétit que celui du repas, obtenu par la même chaîne de commodités.
14 Plusieurs régimes imposés sur un même séjour : c’est le dernier souscrit qui fixe le régime. Chacun reste dans la pile et majore la note de ses +25 %.

🖥️ À l’écran

  • Pour un séjour donné : s’il est privatif, la pile de ses commodités dans l’ordre, et l’appétit et la note qui en résultent. Les clients viennent contester leur facture, et c’est avec ça que je leur réponds.
  • Les souscriptions rejetées, avec leur motif.

API

Dans le texte Dans l’API
table d’hôte SET_MENU
demi-pension HALF_BOARD
régime imposé CHOSEN_DIET
chambre privative privateRoom

✅ Réserver un séjour

POST /stays : la charge utile gagne un champ optionnel.

{
  ...
  "privateRoom": true::boolean
}

privateRoom vaut false s’il est absent. Le reste de la route, réponses et refus compris, est celui de RESA.


✅ Souscrire une commodité

POST /stays/<existenceNumber::string>/amenities

{
  "amenity": "SET_MENU"::string(SET_MENU | HALF_BOARD | CHOSEN_DIET),
  "diet": "MINERAL"::string(PLANT | MEAT | MINERAL | OMNIVORE)
}

diet n’est requis que pour CHOSEN_DIET.

➡️ HTTP 202 Accepted


✅ Consulter le détail d’un séjour

GET /stays/<existenceNumber::string>/breakdown

➡️ HTTP 200 Ok

{
  "existenceNumber": "EX-01"::string,
  "privateRoom": false::boolean,
  "baseAppetite": 3::int,
  "baseRate": 150.00::float,
  "amenities": ["SET_MENU", "HALF_BOARD"]::string(SET_MENU | HALF_BOARD | CHOSEN_DIET)[],
  "finalAppetite": 2::int,
  "finalRate": 152.00::float,
  "servings": [
    { "foodType": "PLANT"::string, "portions": 1::int }, ...
  ]
}

baseRate est le tarif du forfait, déjà multiplié par quatre pour un séjour privatif. amenities liste les commodités dans l’ordre où elles ont été souscrites, doublons compris. finalRate est arrondi, une seule fois (voir critère 3).


✅ Consulter les souscriptions rejetées

GET /amenities/rejections

➡️ HTTP 200 Ok

[
  {
    "existenceNumber": "EX-09"::string,
    "amenity": "HALF_BOARD"::string(SET_MENU | HALF_BOARD | CHOSEN_DIET),
    "rejectedAtNight": 5::int,
    "reason": "STAY_NOT_ONGOING"::string
  }, ...
]

Comme un rejet ne change rien au séjour, c’est le seul endroit où il se constate. La route est globale et non rattachée à un séjour, parce qu’un STAY_NOT_ONGOING peut porter sur un numéro d’existence qui n’a jamais rien réservé : il n’y aurait alors aucun séjour sous lequel le ranger.

Les rejets sont retournés dans l’ordre où ils ont été exécutés.

Un séjour privatif refusé ne figure pas ici : c’est un refus de séjour, il se consulte là où RESA les range.

💡 Exemple 1 : deux clients, les mêmes commodités, deux notes

Aliqua et Bram sont Quidams de 100 kg, forfait Confort, avec un appétit de base de 3 portions et un tarif de base de 150 pièces.

Aliqua souscrit la table d’hôte, puis la demi-pension.

Étape Appétit Note
départ 3 150,00
table d’hôte 3 + 1 = 4 150 + 40 = 190,00
demi-pension 4 ÷ 2 = 2 190 − 20 % = 152,00

Aliqua paie 152,00 pièces et mange 2 portions, donc, étant omnivore, 1 végétale et 1 carnée.

Bram souscrit les mêmes deux commodités, dans l’ordre inverse.

Étape Appétit Note
départ 3 150,00
demi-pension 3 ÷ 2 arrondi vers le haut = 2 150 − 20 % = 120,00
table d’hôte 2 + 1 = 3 120 + 40 = 160,00

Bram paie 160,00 pièces et mange 3 portions, donc 2 végétales et 2 carnées.

Même chambre, mêmes commodités, tout diffère.

💡 Exemple 2 : la privative passe avant tout

Cyd est Quidam, forfait Confort, privatif. Il souscrit la table d’hôte, puis la demi-pension, comme Aliqua.

Étape Note
forfait 150,00
privative 150 × 4 = 600,00
table d’hôte 600 + 40 = 640,00
demi-pension 640 − 20 % = 512,00

Cyd paie 512,00 pièces, et non 152 × 4 = 608,00 : la privative multiplie le forfait, jamais les commodités. Les 40 pièces de la table d’hôte ne sont pas quadruplées, mais la demi-pension, qui vient après, réduit tout ce qui la précède, privative comprise.

💡 Exemple 3 : la chambre qu’on ne partage pas

Toutes ces chambres conviennent aux Quidams.

Chambre Places Occupants
1 2 Cyd
5 6 personne
8 2 personne

Trois réservations de Quidams sont déposées la même nuit, dans cet ordre : Aliqua, privative, puis Brann et Lorem, ordinaires.

  1. Aliqua ne regarde que les chambres entièrement libres : la 5 et la 8. La règle habituelle retient celle qui a le moins de places libres : la 8. Elle y est seule, et la chambre 8 n’a plus de place libre.
  2. Brann cherche une place libre : la 1 en a une, la 5 en a six. Il va en chambre 1, avec Cyd.
  3. Lorem : la 1 est pleine, la 8 n’a plus de place libre, il reste la 5.

Si la chambre 8 n’avait pas existé, Aliqua aurait pris la chambre 5, ses six places, pour elle seule, et Lorem aurait été refusé. Rien dans les règles ne l’interdit : une privative prend la plus petite chambre libre, pas une chambre à sa taille.

⚠️ Et si Aliqua avait réservé en dernier ? Brann va en chambre 1. Lorem va en chambre 8, qui a deux places libres contre six pour la 5. Aliqua ne trouve plus que la 5 entièrement libre, et la prend : six places pour elle seule. Tout le monde est logé, mais pas dans les mêmes chambres. Aucune règle nouvelle : ce sont les réservations, exécutées en ordre d’arrivée, comme dans RESA.

💡 Exemple 4 : le régime imposé change les réserves

Basaltazar est Menhir, donc au régime minéral. Il souscrit un régime imposé carné.

Il ne touche plus à la réserve minérale et se sert entièrement dans la carnée. Son appétit ne change pas ; ce qui change, c’est où il mange, et donc de quelle cuisine il dépend, et à quel moment il manquera.