# PROMPT MAÎTRE POUR CODEX — reservation.energiedin.ma

Tu travailles dans le répertoire racine déjà créé pour `reservation.energiedin.ma` sur un serveur WHM/cPanel.

## Mission

Construire progressivement un moteur de réservation directe hôtelier moderne, un mini-PMS et un noyau de channel manager, conformément au fichier `PLAN_MAITRE_RESERVATION_ENERGIEDIN.md`.

## Architecture imposée

- Laravel 13.
- PHP 8.4.
- Starter officiel React : Inertia 3, React 19, TypeScript, Tailwind CSS 4, shadcn/ui.
- MySQL ou MariaDB InnoDB.
- Monolithe modulaire.
- Valkey/Redis en production si disponible ; fallback base de données.
- Outbox/inbox transactionnelles pour les intégrations.
- API REST `/api/v1` documentée en OpenAPI 3.1.
- FR, EN, AR avec RTL.
- Fuseau établissement `Africa/Casablanca` ; timestamps techniques UTC.
- Montants sans flottants binaires.
- Aucune donnée de carte brute.

## Règles absolues

1. Lis intégralement le plan maître, `AGENTS.md`, les ADR et le code existant avant toute modification.
2. Commence par un audit du répertoire et de l’environnement. Ne détruis aucun fichier existant sans justification.
3. Travaille phase par phase. Pour cette exécution, réalise uniquement la phase explicitement demandée.
4. Ne fabrique jamais des endpoints, champs ou règles d’une OTA. Tant que les identifiants et la documentation officielle ne sont pas disponibles, construis interfaces, mocks, fixtures et contract tests.
5. N’appelle jamais une API OTA de production depuis les tests ou le développement.
6. Ne commits jamais de secret. Maintiens `.env.example` sans valeur sensible.
7. Toute opération créant une réservation doit être idempotente et transactionnelle.
8. Toute mutation de stock doit utiliser verrouillage et tests de concurrence.
9. Tout événement d’intégration doit être journalisé, dédupliqué et rejouable.
10. Aucun appel réseau externe ne doit se produire pendant un verrou de transaction d’inventaire.
11. Toute UI doit être responsive, accessible clavier et compatible RTL.
12. Toute route admin doit avoir une autorisation serveur par propriété.
13. Toute migration doit être réversible ou documenter clairement pourquoi elle ne l’est pas.
14. Exécute tests, analyse statique, lint et build avant de conclure.
15. Mets à jour la documentation et OpenAPI dans le même changement.

## Première exécution — Phase 0 puis fondation minimale

Effectue les actions suivantes :

1. Audite PHP, Composer, Node, npm, extensions PHP, base disponible, Git, droits, document root probable, cron, Supervisor/systemd et Redis/Valkey.
2. Crée un rapport `docs/environment-audit.md` sans secrets.
3. Crée `AGENTS.md` à partir des règles ci-dessus.
4. Crée l’arborescence documentaire prévue dans le plan.
5. Crée un registre d’hypothèses `docs/assumptions.md`.
6. Crée les premiers ADR :
   - monolithe modulaire ;
   - Laravel/React ;
   - source de vérité inventaire ;
   - outbox/inbox ;
   - gateway OTA d’abord, connecteurs directs ensuite ;
   - paiement tokenisé/hébergé.
7. Si le répertoire est vide et l’environnement compatible, initialise Laravel 13 avec le starter React officiel dans le répertoire courant, sans sous-répertoire supplémentaire.
8. Configure TypeScript strict, formatage, tests PHP et JS, analyse statique, `.editorconfig`, `.gitignore`, `.env.example` et scripts de vérification.
9. Implémente une page publique minimale et une page de connexion admin sans logique métier avancée.
10. Configure i18n FR/EN/AR et la direction RTL de base.
11. Configure `/health` sans exposition de secrets.
12. Ajoute un test backend et un test frontend de fumée.
13. N’implémente pas encore les tables hôtel, réservation ou OTA lors de cette première exécution, sauf les tables d’authentification générées par le starter.

## Rapport final obligatoire

Retourne :

- résumé ;
- audit environnement ;
- hypothèses ;
- fichiers créés/modifiés ;
- commandes exécutées ;
- tests et résultats ;
- limites ;
- risques ;
- rollback ;
- prochaine phase recommandée.

Ne prétends jamais qu’une connexion Booking.com ou Expedia fonctionne tant qu’elle n’a pas été testée et certifiée dans l’environnement prévu.
# AVIS D'IMPLÉMENTATION 2026-07-14

Lire d'abord `docs/DECISIONS_IMPLEMENTATION.md`. Toute instruction contradictoire ci-dessous est obsolète, notamment React/Inertia/TypeScript, Channex et l'initialisation conditionnée à un répertoire vide.
