VERSION 57 — SEO ET AGENT SEO Pages du site - Adresse officielle du site : un seul réglage (Admin > Agent SEO > Adresse de votre site), enregistré avec les réglages de la boutique et utilisé par toutes les pages (liens officiels, partages Facebook/WhatsApp, données Google). - Boutique : titre, description, lien officiel et fil d'Ariane Google propres à chaque catégorie, marque, Promotions, Nouveautés et Meilleures ventes. Recherches et filtres : « noindex » (pas de pages en double). - Fiche produit : prix pour Facebook (product:price), image de partage, catégorie et fil d'Ariane complet dans les données Google, marque « Générique » retirée des données Google, produit introuvable en noindex. - Pages privées (panier, commande, compte, favoris, connexion, admin, hors ligne) : cachées de Google (noindex). - Blog : un seul titre principal (H1) par page. Images : texte alternatif ajouté (logo, suggestions de recherche). Agent SEO - Nouvelles vérifications : prix absent, fausse promo, référence absente, marque absente/générique, produit sans catégorie, nom trop long, méta description sans le nom du produit. - Filtres du rapport par gravité et par type (site, produits, catégories, articles, pages). - Bouton Google sur chaque ligne : aperçu du résultat Google aujourd'hui et après correction du robot. - Carte « Évolution de la note » : courbe des notes sur 60 jours (objectif 80/100). Fichiers modifiés - frontend : js/data.js, js/app.js, js/product.js, js/custom-page.js, js/admin-seo-agent.js, css/admin.css, shop.html, blog.html, admin.html, pages privées (balise robots), toutes les pages (numéros de version), sw.js (amy-pwa-v29). - backend : app/Support/ShopSettings.php (nouveau réglage siteUrl). Aucune migration à lancer. ===================================================================== VERSION 58 — L'AGENT SEO RÉPARE AUSSI LE SITE ===================================================================== Nouveau fichier : frontend/js/admin-seo-health.js (chargé par admin.html) Ce que le robot trouve ET répare tout seul (bouton « Corriger » ou « Tout corriger ») : - Liens cassés dans la bannière promo, le diaporama, le pied de page et les marques : produit supprimé ou désactivé, catégorie inexistante (faute de frappe), page .html qui n'existe pas, page ou article supprimé, lien vide, lien en http://. Le lien est remplacé par la bonne page (ex. « shop.html?cat=securit » devient « shop.html?cat=securite »). - Images : photos cassées retirées des fiches (si une autre photo reste), photos en http:// passées en https://, photos en double supprimées. Image de catégorie, de diapo, de bannière ou de partage cassée : remplacée par une vraie photo produit. - Petits défauts : noms de produits avec espaces en trop ou « _ », code HTML ou   visibles dans les fiches, sous-catégorie inexistante (chemin Google cassé), produits liés supprimés. Ce que le robot signale (à faire à la main, bouton « Ouvrir ») : - Aucune photo ne s'affiche, photo principale trop petite (moins de 300 px) ou très lente, rayon inexistant ou désactivé, logo cassé. Nouveautés de l'écran Agent SEO : - Carte « Vérification des images » : le robot ouvre chaque photo du site et repère celles qui ne s'affichent pas (1 à 3 minutes pour ~1400 images). - Case « Réparer seul les liens cassés, images et petits défauts à chaque ouverture ». Désactivée par défaut : à cocher puis « Enregistrer ». - Deux nouveaux filtres du rapport : « Liens » et « Images ». Aucune mise à jour de base de données à lancer. ##################################################### VERSION 59 — LIENS PRODUITS PROPRES (comme mytek.tn) ##################################################### Nouvelle adresse d'un produit : https://amyevolution.com/securite/videosurveillance/camera-de-surveillance-dahua-tube-exterieure-2-mpx-amy-50 (domaine / catégorie / sous-catégorie / sous-sous-catégorie / nom-produit-référence) - Fiche produit > onglet SEO : bouton « Générer le lien SEO propre ». Contrôles : minuscules/chiffres/tirets seulement, 120 caractères max, catégorie obligatoire, DOUBLON refusé (le bouton ajoute -2, -3… automatiquement). Aperçu du lien complet en vert/rouge. Lien vide à l'enregistrement = généré automatiquement. Le serveur revérifie (doublon refusé). - Anciens liens product.html?id=51 et /produit/slug : redirection 301 vers le nouveau lien (Google garde le référencement). Mauvaise catégorie dans l'adresse : 301 vers la seule bonne adresse (jamais de contenu en double). Plan du site, données Google, canonique : nouveaux liens. - Tous les liens de la boutique (cartes, recherche, panier, chatbot, admin) utilisent le nouveau lien. - Mode démo (sans serveur) : les liens restent product.html?id= (normal, pas de réécriture possible). Fichiers modifiés - backend : app/Support/Seo/ShopUrls.php, ShopHtml.php, StructuredData.php, CatalogPresenter.php, Http/Controllers/ShopPageController.php, SitemapController.php, Admin/AdminProductApiController.php, routes/web.php - frontend : admin.html, js/admin.js, js/data.js, js/app.js, js/product.js, js/chatbot.js, js/admin-seo-agent.js, cart.html, sw.js Installation : copier les fichiers, puis php artisan route:clear && php artisan cache:clear Les produits déjà en base gardent leur lien actuel (nom seul) : ouvrez une fiche, cliquez « Générer le lien SEO propre » puis Enregistrer pour ajouter la référence. ================================================== VERSION 60 — Liens SEO produits : cohérence fiche produit / Agent SEO ================================================== 1. Agent SEO : contrôle des liens produits (absent, invalide, doublon, trop long, référence absente, petits mots inutiles) avec correction automatique. 2. Redirection 301 des anciens liens : quand le lien d'un produit change, l'ancien est gardé (table product_slug_redirects) et redirige vers le nouveau. -> lancer « php artisan migrate » après mise à jour. 3. Une seule règle partout (fiche produit, serveur, import du catalogue) : nom + référence, 75 caractères conseillés, 120 maximum, sans couper un mot. 4. Petits mots retirés des liens (de, la, pour, avec…). 5. Catégories : adresse /categorie/... utilisée partout (plan du site de l'Agent SEO, aperçus Google, fil d'Ariane de la fiche produit), comme le serveur. ==================== VERSION 61 ==================== - Agent SEO : nouvelle barre "Rechercher un produit par référence ou nom" au-dessus du rapport. La référence se trouve avec ou sans tirets/espaces (AMY-50 = amy50), le nom par mots (accents ignorés, ex : "camera dahua"). Le rapport n'affiche que les points des produits trouvés (titres, descriptions, liens, images...). Fonctionne avec les filtres Gravité / Type. ==================== VERSION 62 ==================== - Agent SEO : la recherche affiche la ligne de chaque produit trouvé (réf., nom, lien SEO, état, Voir / Ouvrir). - Agent SEO : nouveau contrôle « Lien à l'ancien format » (nom ou référence changés). « Corriger » crée le nouveau lien ; l'ancien redirige en 301 vers le nouveau (pas de perte Google). - Adresses propres des pages : /livraison, /retours, /garantie, /contact, /faq, /blog, /blog/titre-article, /page/adresse, /destockage, /cgv, /mentions-legales, /confidentialite, /cookies. Les anciennes adresses (.html, blog.html?article=, page.html?p=) redirigent en 301. Plan du site, liens canoniques, menus et pieds de page utilisent les nouvelles adresses. - Fichiers serveur : SitePageController.php (nouveau), ShopUrls.php, SitemapController.php, config/shop.php, routes/web.php, .htaccess. Après mise en ligne : php artisan config:clear && php artisan route:clear ==================== VERSION 63 — COUPONS ==================== - Tableau des coupons : nouvelle colonne « Nom » (nom de la campagne) avant le code. - Nouveau coupon : code aléatoire difficile à deviner (bouton « Générer »), usage unique par défaut. - Code à usage unique (Utilisations max = 1) : refusé après une commande (« déjà utilisé »). - Bouton « Générer un nouveau code » : même réduction, nouveau code ; l'ancien reste dans l'historique. - Bouton « Historique » : tous les codes de la même campagne, date, commandes qui les ont utilisés, statut. - Le chatbot n'annonce plus les codes à usage unique. - Serveur : le nom est enregistré dans coupons.description (aucune migration nécessaire).