# PROMPTS D’EXÉCUTION PAR PHASE POUR CODEX

**Projet :** `reservation.energiedin.ma`  
**Mode conseillé :** une phase par session Codex, dans l’ordre, avec commit propre après validation.

## Préambule à inclure au début de chaque session

```text
Tu travailles dans la racine du dépôt reservation.energiedin.ma.
Lis intégralement AGENTS.md, PLAN_MAITRE_RESERVATION_ENERGIEDIN.md, README.md, docs/ et les ADR avant toute modification.
Inspecte l’état Git et exécute la suite de vérification existante avant de coder.
Implémente uniquement la phase demandée ci-dessous. Ne remplace pas une implémentation fonctionnelle par un mock, sauf dépendance externe explicitement absente. Ne fabrique jamais de spécification OTA ou PSP.
Toute mutation de réservation/inventaire doit être transactionnelle, idempotente et testée en concurrence. Aucun secret dans Git. Toute route admin doit être autorisée côté serveur par propriété. Toute UI doit être responsive, accessible et compatible FR/EN/AR avec RTL.
À la fin, exécute tests, analyse statique, lint et build. Mets à jour documentation, OpenAPI, ADR et changelog. Fournis résumé, fichiers, migrations, tests, risques, rollback et prochaine tranche.
```

---

# Session 0 — Audit et bootstrap

```text
Réalise la Phase 0 et la fondation minimale décrites dans le prompt maître. Audite précisément l’environnement WHM/cPanel sans exposer de secret. Si le dépôt est vide et l’environnement compatible, initialise Laravel 13 dans le répertoire courant avec le starter React officiel. Crée les documents de gouvernance, les ADR initiaux, i18n FR/EN/AR, une page publique minimale, l’auth admin, un endpoint /health sûr et les premiers tests. Ne crée pas encore le domaine hôtelier.
```

# Session 1 — Fondation applicative complète

```text
Implémente la Phase 1. Termine l’authentification, MFA ou au minimum son architecture activable, RBAC multi-propriété, invitations utilisateurs, audit de connexion, gestion centralisée des erreurs, request/correlation IDs, logs structurés, health/readiness checks, feature flags, i18n et design tokens. Ajoute le layout public et le layout admin. Configure tests PHP/TypeScript, analyse statique, formatage, CI et scripts make/composer. Vérifie l’isolation tenant/property avec des tests de sécurité. N’implémente pas encore chambres et tarifs.
```

# Session 2 — Catalogue hôtelier

```text
Implémente la Phase 2 sous forme de tranche verticale complète. Crée organisations, propriétés, traductions, paramètres, types de chambres, unités physiques, lits, capacités, tranches d’âge enfant, équipements, médias, repas, politiques d’annulation, politiques de dépôt, taxes et frais. Ajoute migrations, factories, seed de démonstration, services de domaine, policies, CRUD admin, uploads sécurisés, variantes d’images et pages publiques /rooms et /rooms/{slug}. Documente les invariants, ajoute OpenAPI pour la lecture publique et teste FR/EN/AR/RTL.
```

# Session 3 — Inventaire, tarifs, restrictions et promotions

```text
Implémente la Phase 3. Crée plans tarifaires, associations chambre-tarif, inventory_days, ledger append-only, rate_days, restriction_days, règles tarifaires dérivées, promotions et codes promo. Implémente l’objet Money sans float, le moteur de prix déterministe et explicable, les règles d’occupation/adultes/enfants, taxes et arrondis. Ajoute le calendrier admin et les mises à jour de masse avec aperçu. Le ledger doit permettre de reconstruire la projection. Écris des tests unitaires et property-based couvrant saisons, dérivés, promotions non cumulables, CTA/CTD, min/max stay, enfants et arrondis.
```

# Session 4 — Moteur de recherche de disponibilité

```text
Implémente la Phase 4. Crée l’API versionnée de recherche avec dates, occupation par chambre, âge des enfants, devise, langue, code promo, room_type optionnel et dates flexibles. Retourne chambres, plans tarifaires, détail total, taxes, conditions et alternatives. Ajoute cache court et invalidation sans compromettre la vérité transactionnelle. Gère no-result, dates adjacentes et suggestions. Ajoute OpenAPI, métriques et tests de performance sur un jeu de données réaliste. Interdis toute requête incohérente ou trop large.
```

# Session 5 — UX publique premium et widget

```text
Implémente la Phase 5. Construis le parcours date-first sur /, le parcours room-first depuis /rooms/{slug}, le calendrier accessible, le sélecteur d’occupation par chambre, les résultats par chambre, galeries, plans tarifaires, détail des conditions, panier visuel, tri/filtres, dates flexibles, état no-result et récapitulatif sticky. Crée /widget.js avec configuration property, locale, thème et deep link, en évitant de mettre le paiement dans un iframe non maîtrisé. Optimise images, code splitting et Core Web Vitals. Ajoute Playwright et axe pour desktop/mobile/RTL.
```

# Session 6 — Holds et réservation directe

```text
Implémente la Phase 6. Crée availability_holds avec TTL configurable, expiration atomique et prolongation contrôlée. Implémente la création de réservation avec verrouillage SELECT FOR UPDATE sur les dates triées, idempotency key, revalidation prix/stock/restrictions, détails par nuit, voyageurs, extras, statuts et outbox interne. Crée checkout sans compte obligatoire, confirmation, référence publique non séquentielle, lien manage sécurisé, e-mails et annulation selon politique. Aucun appel externe pendant le verrou. Teste double clic, hold expiré, dernière chambre avec au moins 50 requêtes simultanées, annulation et multi-chambres.
```

# Session 7 — Paiements

```text
Implémente la Phase 7 avec une interface PaymentGateway et un FakePaymentGateway complet. Prépare des adaptateurs indépendants CMI/NAPS/Payzone, mais n’invente aucune API : n’active qu’un adaptateur réel si la documentation et les identifiants sandbox sont présents. Implémente sessions, callbacks signés, idempotence, vérification serveur-à-serveur, autorisation/capture, acompte, paiement total, paiement à l’hôtel, remboursement partiel/total et rapprochement. Le retour navigateur ne doit jamais décider du succès. Aucun PAN/CVV ne transite ni n’est stocké. Ajoute tests succès, 3DS, échec, timeout, webhook doublon/hors ordre et montant/devise incorrects.
```

# Session 8 — Back-office opérationnel

```text
Implémente la Phase 8. Crée dashboard, planning tape chart, vues arrivées/départs, réservation manuelle, détail et historique, notes internes, changement de chambre, extras, statuts, paiements/remboursements selon rôle, clients, exports et rapports occupation/ADR/RevPAR/source. Toute action sensible exige autorisation serveur et audit. Les modifications affectant stock/prix doivent produire les événements adéquats. Ajoute tests de permissions et E2E des tâches quotidiennes réception/réservation/finance.
```

# Session 9 — Noyau de channel manager

```text
Implémente la Phase 9 sans connecter un vrai OTA. Crée ChannelConnector, ConnectorCapabilities, channels, accounts, connections, mappings, cursors, inbox, outbox, deliveries, failures et reconciliation_runs. Implémente coalescence ARI, priorités de queues, retries avec backoff+jitter, respect Retry-After, circuit breaker, dead-letter, replay, full sync, dry-run, chiffrement des credentials et masquage des payloads. Crée un FakeOtaConnector capable de nouvelle réservation, modification, annulation, doublon, événement hors ordre, timeout, 429 et erreur permanente. Construis l’assistant de mapping et le dashboard santé. Prouve la reprise après panne par tests.
```

# Session 10 — Passerelle certifiée en marque blanche

```text
Implémente la Phase 10 uniquement après présence de documentation contractuelle, sandbox et secrets injectés hors Git pour la passerelle choisie. Crée l’adaptateur dans Infrastructure/Channels sans polluer le modèle canonique. Implémente validation connexion, création/mapping propriété, push disponibilité/prix/restrictions, réception ou revision feed des réservations, modifications, annulations, import futur, acquittement si applicable, full sync et monitoring. Ajoute des contract tests fondés sur la documentation officielle et des fixtures anonymisées. Commence en staging, puis prépare un runbook de pilote Booking.com/Expedia via la passerelle. Ne déclare pas le canal opérationnel sans tests bout en bout documentés.
```

# Session 11 — Durcissement et préparation production

```text
Implémente la Phase 11. Réalise revue ASVS niveau 2, OWASP Web/API, CSP, HSTS, rate limiting, MFA obligatoire, secrets, dépendances, uploads, audit, rétention, consentements et outils CNDP. Atteins WCAG 2.2 AA sur les écrans critiques. Exécute charge, concurrence, reprise de queues, panne fournisseur, sauvegarde/restauration et smoke tests. Configure workers Supervisor/Valkey si disponibles, scheduler, alertes, logs structurés, sauvegardes hors serveur, staging et runbooks. Crée la checklist go-live exécutable et une procédure rollback. N’active aucune production sans critères de sortie cochés.
```

# Session 12 — Booking.com direct

```text
Cette session est interdite sans accès officiel Booking.com Connectivity, machine account, propriété de test et périmètre de certification. Une fois présents, implémente le connecteur direct derrière ChannelConnector : Connections API, catalogue/mapping autorisé, Rates & Availability selon le pricing type certifié, Reservations API avec solution permettant acquittement, modifications/annulations, récupération/recovery et fonctions de paiement uniquement selon droits. Charge au moins la couverture future exigée, envoie des deltas, respecte batching et limites officielles. Ajoute contract tests, auto-évaluation, test property, pilote et comparaison contre la passerelle. Documente chaque capacité non certifiée comme désactivée.
```

# Session 13 — Expedia direct

```text
Cette session est interdite sans éligibilité Expedia, accord de licence, credentials, sandbox et APIs attribuées. Implémente Availability and Rates, catalogue/mapping et la solution de réservations assignée, dont GraphQL reservation management si autorisée. Gère nouveaux bookings, modifications, annulations, Hotel Collect/Expedia Collect, virtual cards/tokenisation seulement dans le périmètre PCI validé, promotions/capacités autorisées et suivi de certification. Ajoute tests officiels, pilote, bascule progressive et possibilité de retour passerelle. Ne présume aucune API non accordée.
```

# Session 14 — Distribution et croissance avancées

```text
Après stabilisation Booking/Expedia, ajoute canal par canal via la même architecture : Airbnb, Agoda, Trip.com, B2B pertinents, Google free booking links/Hotel Ads via partenaire ou accès accordé, messaging, reviews, promotions et contenu. Pour chaque canal, crée une matrice de profondeur réelle : ARI, restrictions, réservations, modifications, annulations, paiements, messages, contenu, délais et limites. Refuse d’étiqueter une synchronisation iCal comme API complète. Ajoute analytics de conversion directe, abandoned checkout respectueux du consentement, upsell post-réservation et revenue tools sous feature flags.
```

---

# Prompt de revue globale avant mise en ligne

```text
Effectue une revue complète du dépôt sans ajouter de fonctionnalité non nécessaire. Compare le code au plan maître et aux critères de sortie. Produis une matrice PASS/FAIL avec preuves pour : sécurité, permissions, tenant isolation, inventaire, concurrence, prix, paiements, accessibilité, FR/EN/AR, performances, queues, synchronisation, idempotence, observabilité, sauvegarde/restauration, conformité et déploiement cPanel. Corrige les FAIL que tu peux corriger sans dépendance externe. Pour les autres, crée des blockers explicites. Exécute toute la suite, un build production et un smoke test local/staging. Ne recommande le go-live que si aucun blocker critique n’existe.
```
# AVIS D'IMPLÉMENTATION 2026-07-14

Les phases sont remplacées par `docs/DECISIONS_IMPLEMENTATION.md` et le plan de travail actif. Ne pas installer React/Inertia et ne pas créer de commits manuels.
