✨ feat(admin.js): Regroupe l'enregistrement des custom elements et améliore l'UI.
✨ feat(app.js): Initialise Sentry et ajoute une gestion des erreurs Turbo.
✨ feat(reserve.js): Optimise le chargement des images et améliore l'UI.
✨ feat(ReserverController): Affiche les formules publiées et leur détail.
✨ feat(formule/show.twig): Crée template pour afficher détails d'une formule.
🎨 style(formules.twig): Améliore l'affichage des formules disponibles.
```
✨ feat(FormulesController): Gère l'ajout et la mise à jour des produits inclus.
Ajoute la logique pour ajouter et mettre à jour les produits inclus dans une formule, avec persistance en base de données. Affiche également les produits inclus existants.
✨ feat(admin.js): Enregistre le composant SearchProductFormule.
Enregistre le composant SearchProductFormule pour permettre son utilisation dans les templates.
✨ feat(config-pack.twig): Affiche et permet la gestion des produits inclus.
Affiche une liste des produits inclus dans une formule et permet leur ajout, modification et suppression via un formulaire.
✨ feat(SearchProductFormule.js): Crée un composant de recherche de produits.
Crée un composant web personnalisé pour rechercher et sélectionner des produits à ajouter à une formule.
```
✨ feat(admin.js): Ajoute CrmEditor pour l'édition WYSIWYG et l'initialise.
🎨 style(templates): Intègre CrmEditor pour la description des produits et formules.
```
✨ feat(cron/data): Ajoute une tâche cron pour nettoyer les données de performance et de suivi.
📝 feat(command): Crée une commande pour nettoyer les données de performance et de suivi obsolètes.
```
✨ feat(Formules.php): Ajoute les propriétés de prix et la fonction slug.
✨ feat(ReserverController.php): Affiche les formules sur la page d'accueil.
♻️ refactor(Dashboard/FormulesController.php): Gère le statut et les prix.
✨ feat(templates/dashboard): Affiche les tarifs des formules.
```
✨ feat(Formules.php): Ajoute les champs description et isPublish à l'entité Formules.
✨ feat(add.twig): Ajoute le champ description au formulaire d'ajout de formules.
✨ feat(FormulesType.php): Ajoute le champ description au formulaire FormulesType.
✨ feat(Dashboard/FormulesController.php): Gère l'ajout, la suppression et la vue des formules.
✨ feat(view.twig): Crée la vue pour modifier les détails d'une formule.
✨ feat(formules.twig): Affiche la liste des formules avec actions et statut.
```
✨ feat(SitePerformanceRepository): Ajoute fonction moyenne stats et logique random.
🐛 fix(ReserverController): Corrige la date de création en DateTimeImmutable.
✨ feat(HomeController): Affiche les moyennes des Core Web Vitals.
🎨 style(home.twig): Améliore l'esthétique du tableau de bord et ajoute CWV.
⚡️ perf(reserve.js): Ajoute l'envoi des métriques LCP, INP et CLS.
```
✨ feat(FormulesController): Ajoute la page et formulaire de création de formules
Ajoute la route, le controller et le formulaire pour créer des formules
(packs ou formules libres). Inclut la gestion de l'upload d'image.
```
//todo add seleted produit inclus and option pack if packmode selected, if free selected add line ("X structure") avec liste des produit allow in line
✨ feat(Product): Ajoute la relation avec l'entité FormulesProductInclus.
✨ feat(FormulesController): Crée le contrôleur pour gérer les formules.
✨ feat(templates): Ajoute le template pour afficher les formules dans le dashboard.
✨ feat(base.twig): Ajoute un lien vers la gestion des formules dans le menu.
⚙️ chore(vich_uploader): Configure vich uploader pour les images des formules.
```
✨ feat(SitePerformance): Ajoute la collecte des métriques web vitales.
🐛 fix(caddy): Corrige la redirection du script Trustpilot.
📦 chore: Ajoute web-vitals comme dépendance et adapte package.json.
```
✨ feat(ansible): Ajoute la mise à jour du journal client et permissions fichier
✨ feat(HomeController): Récupère et affiche le journal de bord client.
📦️ chore: Ajoute gemini-api-php/client et corrige des dépendances.
🐛 fix(docker): Supprime la configuration Xdebug obsolète.
```
✨ feat(UtmEvent): Ajoute le tracking Umami des utilisateurs connectés.
Ajoute l'identification des utilisateurs Umami et enregistre la session.
Implémente une bannière de consentement pour les cookies et gère l'état.
```
✨ feat(devis): Améliore la sélection des produits et options avec modales de recherche
Supprime la relation Product->DevisLine, ajoute des composants de recherche modale pour produits/options dans les devis.
```
✨ feat(contrat): Affiche les détails du contrat et gère les paiements.
📝 chore(contrat/view): Traduit "ID Yousign" en "Numéro de signature".
🎨 style(reservation/search): Supprime une condition d'affichage des produits.
♻️ refactor(ContratController): Modifie les routes de paiement du contrat.
🐛 fix(Signature/Client): Corrige les valeurs par défaut des champs signature.
🎨 style(revervation/produit): Améliore l'affichage de l'image du produit.
```
✨ feat(contrat): Améliore l'affichage des contrats et ajoute suivi des paiements.
Cette commit améliore l'affichage des contrats dans le dashboard,
ajoute le suivi des paiements et corrige des bugs mineurs.
```
✨ feat(reservation): Ajoute la gestion des contrats client et améliore l'authentification.
Corrige l'URL de retour, ajoute la gestion des contrats client et le logout client.
```
✨ feat(reservation/devis): Ajoute affichage des devis client et filtres Twig
Ajoute la vue des devis pour le client avec états et actions dynamiques.
Ajoute aussi un filtre Twig pour l'URL de signature du devis.
```
✨ feat(ReserverController): Ajoute des routes pour connexion, création de compte et recherche.
Crée les routes pour la connexion (`/reservation/connexion`), la création de compte
(`/reservation/creation-compte`), la gestion du mot de passe
(`/reservation/creation-compte`), et la recherche de produits
(`/reservation/recherche`). Intègre UploaderHelper et Client pour la recherche.
```