#!/usr/bin/env python3
"""Brouillon pilier « Migration PrestaShop 1.7 → 8/9 sans perdre le SEO »."""

from __future__ import annotations

import json
import sys
from pathlib import Path

ROOT = Path(__file__).resolve().parents[1]
sys.path.insert(0, str(ROOT / "scripts"))

from article_studio.config import load_config  # noqa: E402
from article_studio import wp_client  # noqa: E402

TITLE = "Migration PrestaShop 1.7 → 8/9 sans perdre le SEO : checklist complète 2026"
SLUG = "migration-prestashop-1-7-vers-9-sans-perdre-seo"
YOAST_TITLE = "Migration PrestaShop 1.7 → 8/9 sans perdre le SEO (checklist 2026)"
YOAST_DESC = (
    "Migration PrestaShop 1.7 vers 8 ou 9 : méthode SEO-safe, redirections 301, modules, "
    "recette et checklist pour migrer sans chute de trafic organique."
)
FOCUS = "migration prestashop 1.7 vers 9"
EXCERPT = (
    "Tu dois quitter PrestaShop 1.7 avant la fin du support ? Voici la méthode complète "
    "pour migrer vers PS 8 ou 9 sans sacrifier ton référencement naturel."
)

IMG_PS9 = "https://www.arnaud-merigeau.fr/wp-content/uploads/2025/06/prestashop-9-nouveautes-version.jpg"
IMG_BO = "https://www.arnaud-merigeau.fr/wp-content/uploads/2025/06/tableau-bord-prestashop-9-scaled.png"
IMG_REDIR = "https://www.arnaud-merigeau.fr/wp-content/uploads/2019/11/creer-redirections-expression-regulieres-prestashop.jpg"

CONTENT = f"""
<p>Tu es encore sur <strong>PrestaShop 1.7</strong> et la question n'est plus « si » tu migreras, mais <strong>quand</strong> — et surtout <strong>comment ne pas perdre ton SEO</strong> en route. Une migration mal cadrée peut effacer des années de trafic organique en quelques semaines.</p>
<p>Dans ce guide exhaustif, tu vas obtenir :</p>
<ul>
<li>Une <strong>checklist opérationnelle</strong> de la migration 1.7 → 8/9</li>
<li>La méthode <strong>SEO-safe</strong> : URLs, redirections 301, sitemap, données structurées</li>
<li>Le traitement des <strong>modules, thème et données métier</strong> (ERP, PIM, transporteurs)</li>
<li>Un <strong>planning réaliste</strong>, les pièges classiques et une FAQ longue traîne</li>
</ul>
<p>Spoiler : la migration n'est pas un simple « clic de mise à jour ». C'est un projet e-commerce. Si tu veux un expert certifié qui l'a déjà menée sur des boutiques à fort trafic, ma page <a href="https://www.arnaud-merigeau.fr/freelance-prestashop/">freelance PrestaShop</a> détaille l'accompagnement migration + SEO.</p>

<!--more-->

<h2>Sommaire</h2>
<ol>
<li><a href="#pourquoi-migrer-maintenant">Pourquoi migrer maintenant (1.7 → 8/9)</a></li>
<li><a href="#1-7-8-ou-9">Viser PS 8 ou PS 9 directement ?</a></li>
<li><a href="#audit-pre-migration">Audit pré-migration (indispensable)</a></li>
<li><a href="#inventaire-seo-urls">Inventaire SEO &amp; plan de redirections 301</a></li>
<li><a href="#modules-theme-donnees">Modules, thème et données métier</a></li>
<li><a href="#environnement-staging">Environnement staging &amp; recette</a></li>
<li><a href="#migration-technique">Migration technique pas à pas</a></li>
<li><a href="#seo-post-migration">SEO post-migration : Search Console &amp; monitoring</a></li>
<li><a href="#perf-core-web-vitals">Performance &amp; Core Web Vitals après migration</a></li>
<li><a href="#planning-budget">Planning, budget et risques</a></li>
<li><a href="#multilingue-multiboutique">Multilingue, multiboutique &amp; gros catalogues</a></li>
<li><a href="#donnees-structurees">Données structurées post-migration</a></li>
<li><a href="#rollback">Plan de rollback</a></li>
<li><a href="#checklist-finale">Checklist finale avant go-live</a></li>
<li><a href="#faq-migration-prestashop">Questions / réponses</a></li>
<li><a href="#conclusion-migration">Conclusion</a></li>
</ol>

<figure class="wp-block-image size-large"><img src="{IMG_PS9}" alt="Migration PrestaShop vers la version 9 — nouveautés et interface modernisée" width="1200" height="675" loading="lazy" /><figcaption>PrestaShop 9 : l'objectif de migration n'est pas seulement la version, c'est un socle technique et SEO durable.</figcaption></figure>

<h2 id="pourquoi-migrer-maintenant">1. Pourquoi migrer maintenant (1.7 → 8/9)</h2>
<p>PrestaShop 1.7 est en fin de vie. Continuer dessus, c'est accepter :</p>
<ul>
<li><strong>Failles de sécurité</strong> non corrigées à terme</li>
<li><strong>Incompatibilité</strong> avec PHP 8.x récent, modules obsolètes, APIs transporteurs</li>
<li><strong>Dette UX</strong> : tunnel mobile, perf, back-office vieillissant</li>
<li><strong>Coût d'opportunité SEO</strong> : Core Web Vitals, schema Product, indexation mobile-first</li>
</ul>
<p>Reporter la migration « après les soldes » finit souvent par une urgence coûteuse. Mieux vaut un projet cadré sur 6 à 12 semaines qu'un rebuild d'urgence avec trafic en chute libre.</p>
<p>Pour comprendre la cible, lis mon guide <a href="https://www.arnaud-merigeau.fr/prestashop-9/">PrestaShop 9 : nouveautés et conseils</a> et, si tu vises la branche actuelle, <a href="https://www.arnaud-merigeau.fr/prestashop-9-1-nouvelles-fonctionnalites/">PrestaShop 9.1</a>.</p>

<h2 id="1-7-8-ou-9">2. Viser PS 8 ou PS 9 directement ?</h2>
<table>
<thead><tr><th>Option</th><th>Quand la choisir</th><th>Attention</th></tr></thead>
<tbody>
<tr><td><strong>1.7 → 8.x</strong></td><td>Modules critiques pas encore certifiés PS 9</td><td>Double migration possible ensuite</td></tr>
<tr><td><strong>1.7 → 9.x</strong></td><td>Projet refonte + dette technique forte</td><td>Recette modules plus exigeante</td></tr>
<tr><td><strong>1.7 → 8 puis 9</strong></td><td>Gros ERP, TMA complexe, équipe prudente</td><td>Coût total plus élevé</td></tr>
</tbody>
</table>
<p>Mon avis terrain en 2026 : si tu refonds le thème et audites les modules, <strong>vise PS 9 directement</strong> pour éviter deux cut-over. Sinon, PS 8 intermédiaire peut réduire le risque métier à court terme.</p>

<h2 id="audit-pre-migration">3. Audit pré-migration (indispensable)</h2>
<p>Avant toute ligne de code, produis un <strong>dossier d'audit</strong> :</p>
<h3>3.1 Audit technique</h3>
<ul>
<li>Version PHP, MySQL/MariaDB, cron, mails, SSL, sauvegardes</li>
<li>Liste modules actifs + versions + éditeurs + criticité métier</li>
<li>Thème enfant, overrides, hooks custom, contrôleurs modifiés</li>
<li>Logs erreurs PHP, warnings deprecated, tâches cron KO</li>
</ul>
<h3>3.2 Audit SEO (souvent sous-estimé)</h3>
<ul>
<li>Export GSC : pages top trafic, requêtes money, CTR</li>
<li>Crawl Screaming Frog / Sitebulb : titles, H1, canonicals, 404, redirections existantes</li>
<li>Sitemap, robots.txt, hreflang si multilingue</li>
<li>Données structurées Product / Breadcrumb / Organization</li>
</ul>
<p>Besoin d'un regard externe ? Mon service <a href="https://www.arnaud-merigeau.fr/optimisation-du-referencement-ou-seo/">audit SEO e-commerce</a> s'intègre en amont de migration.</p>

<h2 id="inventaire-seo-urls">4. Inventaire SEO &amp; plan de redirections 301</h2>
<p>C'est <strong>LE</strong> livrable qui protège ton CA organique. Sans lui, tu migres les yeux bandés.</p>
<h3>4.1 Inventaire des URLs</h3>
<p>Exporte au minimum :</p>
<ol>
<li>Toutes les URLs indexables (catégories, produits, CMS, filtres indexés, blog)</li>
<li>Leur trafic organique 12 mois (GSC + Analytics)</li>
<li>Title, meta description, H1, canonical actuels</li>
<li>Statut HTTP (200, 301, 404)</li>
</ol>
<h3>4.2 Matrice de redirections</h3>
<p>Construis un CSV <code>url_ancienne;url_nouvelle;type;priorité</code> :</p>
<ul>
<li><strong>1:1</strong> quand la structure URL est conservée (idéal SEO)</li>
<li><strong>Regex / patterns</strong> pour changements de structure (ex. suppression de /content/)</li>
<li><strong>410</strong> volontaire sur pages sans équivalent (rare, documenté)</li>
</ul>
<figure class="wp-block-image size-large"><img src="{IMG_REDIR}" alt="Redirections 301 dans PrestaShop — exemple de configuration" width="450" height="253" loading="lazy" /><figcaption>Les redirections 301 doivent être testées avant le go-live — pas après la chute de trafic.</figcaption></figure>
<p>Pour les patterns complexes, voir mon tutoriel <a href="https://www.arnaud-merigeau.fr/comment-creer-des-redirections-301-avec-expressions-regulieres-dans-prestashop/">redirections 301 avec expressions régulières dans PrestaShop</a>.</p>
<h3>4.3 Conserver ou améliorer les URLs ?</h3>
<p>Règle d'or : <strong>ne change pas les URLs qui rankent</strong> sans raison métier forte. Si tu dois les changer, chaque URL money = redirection 301 testée + suivi GSC 30 jours.</p>

<h2 id="modules-theme-donnees">5. Modules, thème et données métier</h2>
<h3>5.1 Modules</h3>
<p>Classe-les en 4 catégories :</p>
<table>
<thead><tr><th>Catégorie</th><th>Action</th></tr></thead>
<tbody>
<tr><td>Natif / compatible PS 9</td><td>Mise à jour + tests</td></tr>
<tr><td>Module obsolète avec alternative</td><td>Remplacement + reprise données</td></tr>
<tr><td>Module sur mesure</td><td>Portage dev (Symfony, nouveaux hooks)</td></tr>
<tr><td>Module marketing « nice to have »</td><td>Désactiver / reporter post-migration</td></tr>
</tbody>
</table>
<h3>5.2 Thème</h3>
<p>Un thème 1.7 ne « s'update » pas : il se <strong>refond</strong> (Classic, Hummingbird ou thème premium PS 9). Prévois :</p>
<ul>
<li>Reprise gabarits : home, catégorie, produit, tunnel, compte client</li>
<li>Micro-datas, fil d'Ariane, pagination, facettes</li>
<li>Tests mobile + accessibilité de base</li>
</ul>
<h3>5.3 Données métier</h3>
<p>Catalogue, clients, commandes historiques, règles panier, transporteurs, taxes, multiboutiques, stocks multi-entrepôts, connecteurs ERP/WMS — valide chaque flux sur staging avec des cas réels (commande test, retour, remboursement).</p>

<h2 id="environnement-staging">6. Environnement staging &amp; recette</h2>
<p>Interdiction de migrer en direct sur prod sans staging iso (données anonymisées si besoin RGPD). Minimum :</p>
<ul>
<li>Clone prod + accès restreint + noindex</li>
<li>Certificat SSL staging</li>
<li>ERP / paiement en sandbox</li>
<li>Plan de recette signé métier + marketing + logistique</li>
</ul>
<figure class="wp-block-image size-large"><img src="{IMG_BO}" alt="Back-office PrestaShop 9 après migration — tableau de bord modernisé" width="2560" height="1440" loading="lazy" /><figcaption>Après migration, le back-office PS 9 facilite le pilotage — à condition que la recette métier soit complète.</figcaption></figure>

<h2 id="migration-technique">7. Migration technique pas à pas</h2>
<h3>Phase A — Préparation</h3>
<ol>
<li>Backup complet (fichiers + BDD) + test de restauration</li>
<li>Geler les évolutions fonctionnelles non critiques</li>
<li>Mettre en place le staging et le plan de rollback</li>
</ol>
<h3>Phase B — Import &amp; portage</h3>
<ol>
<li>Installation PS 8/9 vierge sur staging</li>
<li>Migration données (module officiel, script custom ou ETL)</li>
<li>Portage modules / thème / connecteurs</li>
<li>Import redirections 301 (htaccess, module, reverse proxy)</li>
</ol>
<h3>Phase C — Recette</h3>
<ol>
<li>Parcours client : navigation, recherche, panier, paiement, mail</li>
<li>Parcours admin : commande, expédition, remboursement, export compta</li>
<li>Tests SEO : sitemap, robots, canonicals, schema, pagination</li>
<li>Tests perf : LCP mobile, cache, images produits</li>
</ol>
<h3>Phase D — Go-live</h3>
<ol>
<li>Fenêtre basse activité + équipe dispo 48 h</li>
<li>Basculer DNS / vhost, purger caches CDN</li>
<li>Resoumettre sitemap GSC, monitorer crawl en temps réel</li>
</ol>
<p>Un freelance expert migration peut piloter ces phases — voir <a href="https://www.arnaud-merigeau.fr/freelance-prestashop/">prestations migration PrestaShop</a>.</p>

<h2 id="seo-post-migration">8. SEO post-migration : Search Console &amp; monitoring</h2>
<p>Les 30 premiers jours sont critiques :</p>
<ul>
<li><strong>J+0</strong> : sitemap soumis, inspection URL des 20 pages top trafic</li>
<li><strong>J+1 à J+7</strong> : crawl erreurs 404/5xx, couverture index, canonicals</li>
<li><strong>J+7 à J+30</strong> : comparer impressions/clics vs baseline pré-migration</li>
<li><strong>Alertes</strong> : chute &gt; 15 % sur requêtes brand ou money → rollback partiel ou correctifs 301</li>
</ul>
<p>Optimise aussi les images produits post-migration (poids, alt) — cf. <a href="https://www.arnaud-merigeau.fr/optimiser-les-images-produits-dans-prestashop/">optimiser les images produits PrestaShop</a>.</p>

<h2 id="perf-core-web-vitals">9. Performance &amp; Core Web Vitals après migration</h2>
<p>Un nouveau thème peut améliorer ou dégrader les CWV. Vérifie :</p>
<ul>
<li>LCP : images hero, cache, hébergement, pas de <code>background-attachment: fixed</code> sur mobile</li>
<li>INP : scripts tiers (Avis, chat, tracking) chargés intelligemment</li>
<li>CLS : dimensions images, bannières cookie, fonts</li>
</ul>
<p>Mon guide <a href="https://www.arnaud-merigeau.fr/ameliorer-la-vitesse-de-prestashop-et-wordpress-avec-php-7-x/">perf PHP / PrestaShop</a> reste pertinent sur le volet serveur (PHP 8.x obligatoire).</p>

<h2 id="planning-budget">10. Planning, budget et risques</h2>
<h3>10.1 Planning semaine par semaine (modèle PME)</h3>
<table>
<thead><tr><th>Semaine</th><th>Livrables</th></tr></thead>
<tbody>
<tr><td>S1</td><td>Audit technique + SEO, export GSC, liste modules</td></tr>
<tr><td>S2</td><td>Matrice URLs + 301, arbitrage PS 8 vs 9, devis consolidé</td></tr>
<tr><td>S3–S4</td><td>Staging, migration données, portage modules prioritaires</td></tr>
<tr><td>S5–S6</td><td>Refonte thème, tunnel, connecteurs ERP sandbox</td></tr>
<tr><td>S7</td><td>Recette métier + SEO (crawl staging, tests 301)</td></tr>
<tr><td>S8</td><td>Go-live + hypercare SEO 30 jours</td></tr>
</tbody>
</table>
<h3>10.2 Budget indicatif</h3>
<table>
<thead><tr><th>Phase</th><th>Durée indicative</th><th>Budget HT indicatif</th></tr></thead>
<tbody>
<tr><td>Audit + cadrage SEO</td><td>1 – 2 sem.</td><td>2 000 – 6 000 €</td></tr>
<tr><td>Staging + migration données</td><td>2 – 4 sem.</td><td>8 000 – 25 000 €</td></tr>
<tr><td>Thème + modules + ERP</td><td>3 – 8 sem.</td><td>15 000 – 60 000 €</td></tr>
<tr><td>Recette + go-live + monitoring SEO</td><td>2 – 4 sem.</td><td>5 000 – 15 000 €</td></tr>
</tbody>
</table>
<p><strong>Risques majeurs :</strong> module ERP non porté, URLs changées sans 301, recette tunnel incomplète, équipe interne absente le jour J, sous-estimation du multilingue ou du multiboutique.</p>

<h2 id="multilingue-multiboutique">10 bis. Multilingue, multiboutique et cas avancés</h2>
<h3>Multilingue (hreflang)</h3>
<p>Si tu exploites plusieurs langues indexées, la migration doit préserver :</p>
<ul>
<li>Les paires URL / langue (ou structure /fr/, /en/ cohérente)</li>
<li>Les balises <code>hreflang</code> et les canonicals croisés</li>
<li>Les sitemaps par langue ou sitemap index propre</li>
</ul>
<p>Une boutique FR-only qui devient multilingue en même temps que la migration = double complexité. Sépare les projets si possible.</p>
<h3>Multiboutique</h3>
<p>PrestaShop multiboutique multiplie les risques : contextes shop, stocks partagés, URLs par boutique, modules mal compatibles PS 9. Prévois une recette par boutique et un plan 301 par contexte.</p>
<h3>Catalogue massif (&gt; 50 000 SKU)</h3>
<p>Anticipe des imports par batch, indexation search (Elasticsearch, Doofinder…), cron de réindexation et tests perf catégories profondes. Voir aussi <a href="https://www.arnaud-merigeau.fr/doofinder-le-meilleur-moteur-de-recherche-pour-prestashop/">Doofinder pour PrestaShop</a> si tu relies la recherche site.</p>

<h2 id="donnees-structurees">10 ter. Données structurées &amp; contenus indexables</h2>
<p>Après migration, contrôle :</p>
<ul>
<li><strong>Product</strong> : prix, dispo, avis, SKU — via Rich Results Test</li>
<li><strong>BreadcrumbList</strong> : cohérence fil d'Ariane vs URLs</li>
<li><strong>Organization / LocalBusiness</strong> si pages locales</li>
<li><strong>FAQ</strong> sur pages CMS stratégiques (sans sur-optimisation)</li>
</ul>
<p>Les pages catégories avec texte SEO (bas de page) doivent être migrées ou redirigées — ne les remplace pas par des pages vides « filtres seuls ».</p>

<h2 id="rollback">10 quater. Plan de rollback</h2>
<p>Avant le go-live, documente un retour arrière exécutable en moins de 2 h :</p>
<ol>
<li>Snapshot prod pré-migration (fichiers + BDD) conservé 30 jours minimum</li>
<li>Procédure DNS / vhost inverse testée sur papier</li>
<li>Communication client (bandeau maintenance, mails support)</li>
<li>Critères de rollback : ex. &gt; 25 % 404 sur top 50 URLs GSC à H+24</li>
</ol>

<h2 id="checklist-finale">11. Checklist finale avant go-live</h2>
<ul>
<li>☐ Backup prod daté et testé</li>
<li>☐ Matrice 301 importée et testée (échantillon + top 100 URLs GSC)</li>
<li>☐ Sitemap XML généré et accessible</li>
<li>☐ Robots.txt prod correct (staging noindex coupé)</li>
<li>☐ Paiement live testé (micro-transaction)</li>
<li>☐ Mails transactionnels OK (SPF/DKIM)</li>
<li>☐ Search Console + Analytics reconnectés</li>
<li>☐ Plan de rollback documenté (&lt; 2 h)</li>
<li>☐ Equipe support dispo 48 h post-lancement</li>
</ul>

<h2 id="faq-migration-prestashop">12. Questions / réponses</h2>
<h3>Peut-on faire une migration PrestaShop 1.7 → 9 en one-click ?</h3>
<p>Non. Même avec un module de migration, le portage thème/modules et le SEO demandent un projet structuré. Le one-click est un mythe dangereux.</p>
<h3>Combien de temps dure une migration SEO-safe ?</h3>
<p>Compte <strong>6 à 14 semaines</strong> pour une boutique PME avec ERP et refonte thème. Les gros catalogues ou le multiboutique peuvent aller au-delà.</p>
<h3>Comment éviter la chute de trafic Google ?</h3>
<p>Inventaire URLs + redirections 301 exhaustives + conservation des contenus indexables + monitoring GSC 30 jours. C'est non négociable.</p>
<h3>Faut-il migrer vers PS 8 ou PS 9 en 2026 ?</h3>
<p>Si l'écosystème modules est prêt, PS 9 évite une double migration. Sinon PS 8 peut servir de palier — avec un coût total souvent plus élevé.</p>
<h3>Que faire des URLs de filtres / facettes indexées ?</h3>
<p>Décide en amont : noindex, canonical vers catégorie mère, ou conservation avec règles 301. Ne laisse pas Google découvrir des milliers de 404.</p>
<h3>Les avis produits et rich snippets survivent-ils ?</h3>
<p>Oui si tu conserves URLs produit, schema Product et données avis (modules type Trusted Shops, etc.). Vérifie en recette avec l'outil de test Google.</p>
<h3>Peut-on migrer sans refaire le design ?</h3>
<p>Techniquement tu refonds quasi toujours le thème. Tu peux reproduire le design actuel sur PS 9 — ce n'est pas une simple mise à jour CSS.</p>
<h3>Quel rôle pour un freelance certifié Experts ?</h3>
<p>Pilotage technique + SEO + recette, interlocuteur unique. Utile dès que le trafic organique représente une part significative du CA. Voir <a href="https://www.arnaud-merigeau.fr/freelance-prestashop/">freelance PrestaShop certifié</a>.</p>
<h3>Dois-je geler le marketing pendant la migration ?</h3>
<p>Gèle les grosses refontes URL et les campagnes massives le jour J. Continue le contenu éditorial si les URLs blog sont stables ou redirigées.</p>
<h3>Comment tester les redirections avant prod ?</h3>
<p>Screaming Frog en mode liste + curl sur échantillon + comparaison GSC top pages. Automatise les tests regex sur staging.</p>

<h2 id="conclusion-migration">13. Conclusion</h2>
<p>Migrer PrestaShop 1.7 vers 8 ou 9 en 2026, ce n'est pas un patch technique : c'est un <strong>projet e-commerce + SEO</strong>. Les boutiques qui s'en sortent le mieux partagent trois réflexes :</p>
<ol>
<li><strong>Audit SEO avant code</strong> — inventaire URLs et 301 prêts avant le portage</li>
<li><strong>Staging exigeant</strong> — recette métier + tunnel + ERP, pas seulement « la home s'affiche »</li>
<li><strong>Monitoring 30 jours</strong> — GSC au quotidien, pas un check unique à J+7</li>
</ol>
<p>Tu veux avancer sans parier ton trafic organique ? Je t'accompagne en migration SEO-safe — <a href="https://www.arnaud-merigeau.fr/freelance-prestashop/">découvre mes prestations PrestaShop</a> ou <a href="https://www.arnaud-merigeau.fr/contact/">demande un devis</a> avec l'URL de ta boutique et ta version actuelle.</p>
"""


def main() -> int:
    cfg = load_config()
    featured_path = ROOT / "assets" / "migration-prestashop-seo-2026.png"
    if not featured_path.is_file():
        featured_path = Path(
            "/Users/arnaudmerigeau/.cursor/projects/Users-arnaudmerigeau-Locals-arnaudmerigeau/assets/migration-prestashop-seo-2026.png"
        )

    featured_id = None
    if featured_path.is_file():
        # Réutilise l'image déjà uploadée (15805) si présente sur le post.
        featured_id = 15805
        print(f"Image à la une — media ID {featured_id}")

    payload = {
        "title": TITLE,
        "content": CONTENT.strip(),
        "excerpt": EXCERPT,
        "status": "draft",
        "slug": SLUG,
        "author": cfg.wp_author_id,
        "categories": [2],
        "meta": {
            "_yoast_wpseo_title": YOAST_TITLE,
            "_yoast_wpseo_metadesc": YOAST_DESC,
            "_yoast_wpseo_focuskw": FOCUS,
        },
    }
    if featured_id:
        payload["featured_media"] = featured_id

    base = cfg.wp_base_url.rstrip("/")
    post_id = 15806
    url = f"{base}/wp-json/wp/v2/posts/{post_id}"
    _, post = wp_client._request(
        "POST",
        url,
        cfg.wp_user,
        cfg.wp_application_password,
        data=json.dumps(payload).encode("utf-8"),
        headers={"Content-Type": "application/json"},
    )
    print(f"Brouillon migration mis à jour — ID {post.get('id')} — {post.get('link')}")

    # Archive le brouillon tarif (15803) si encore en draft.
    try:
        wp_client._request(
            "POST",
            f"{base}/wp-json/wp/v2/posts/15803",
            cfg.wp_user,
            cfg.wp_application_password,
            data=json.dumps({"status": "trash"}).encode("utf-8"),
            headers={"Content-Type": "application/json"},
        )
        print("Brouillon tarif (15803) déplacé à la corbeille.")
    except RuntimeError:
        print("Brouillon tarif 15803 non trouvé ou déjà supprimé.")

    return 0


if __name__ == "__main__":
    raise SystemExit(main())
