#!/usr/bin/env python3
"""Active les landing pages SEO (nationales + locales) via REST API WordPress."""

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.wp_client import _request  # noqa: E402

TEMPLATE = "template-pages/landing-service.php"

CITIES = {
    "bordeaux": "Bordeaux",
    "paris": "Paris",
    "lyon": "Lyon",
    "marseille": "Marseille",
}

NATIONAL = {
    "freelance-prestashop": {
        "title": "Freelance PrestaShop",
        "yoast_title": "Freelance PrestaShop | Développeur expert certifié +15 ans | Bordeaux & France",
        "yoast_description": (
            "Freelance PrestaShop certifié Experts : création, refonte, migration PS8/PS9, "
            "modules sur mesure, maintenance et SEO. +400 projets livrés. Devis gratuit sous 24h."
        ),
        "yoast_focus": "freelance prestashop",
    },
    "freelance-wordpress": {
        "title": "Freelance WordPress",
        "yoast_title": "Freelance WordPress | Développeur expert +15 ans | Bordeaux & France",
        "yoast_description": (
            "Freelance WordPress & WooCommerce : création, refonte, thèmes et plugins sur mesure, "
            "maintenance et SEO. +400 projets livrés. Devis gratuit sous 24h."
        ),
        "yoast_focus": "freelance wordpress",
    },
    "freelance-seo": {
        "title": "Freelance SEO",
        "yoast_title": "Freelance SEO PrestaShop & WordPress | Audit & optimisation +15 ans",
        "yoast_description": (
            "Freelance SEO spécialiste e-commerce : audit technique, contenu, Core Web Vitals "
            "pour PrestaShop, WordPress et WooCommerce. +400 sites optimisés. Devis gratuit."
        ),
        "yoast_focus": "freelance seo prestashop wordpress",
    },
}


def local_pages() -> dict[str, dict]:
    pages: dict[str, dict] = {}
    for slug, name in CITIES.items():
        pages[f"freelance-prestashop-{slug}"] = {
            "title": f"Freelance PrestaShop {name}",
            "yoast_title": f"Freelance PrestaShop {name} | Expert +15 ans",
            "yoast_description": (
                f"Freelance PrestaShop à {name} : création, refonte, migration, modules. "
                "Expert certifié +15 ans. Devis gratuit."
            ),
            "yoast_focus": f"freelance prestashop {slug}",
        }
        pages[f"freelance-wordpress-{slug}"] = {
            "title": f"Freelance WordPress {name}",
            "yoast_title": f"Freelance WordPress {name} | Expert +15 ans",
            "yoast_description": (
                f"Freelance WordPress & WooCommerce à {name}. +15 ans d'expérience. Devis gratuit."
            ),
            "yoast_focus": f"freelance wordpress {slug}",
        }
    return pages


def ensure_page(base_url: str, user: str, password: str, slug: str, cfg: dict) -> None:
    base = base_url.rstrip("/")
    lookup = f"{base}/wp-json/wp/v2/pages?slug={slug}&context=edit"
    _, pages = _request("GET", lookup, user, password)

    payload = {
        "title": cfg["title"],
        "slug": slug,
        "status": "publish",
        "content": "",
        "template": TEMPLATE,
        "meta": {
            "_yoast_wpseo_title": cfg["yoast_title"],
            "_yoast_wpseo_metadesc": cfg["yoast_description"],
            "_yoast_wpseo_focuskw": cfg["yoast_focus"],
        },
    }

    if pages:
        page_id = pages[0]["id"]
        url = f"{base}/wp-json/wp/v2/pages/{page_id}"
        _request(
            "POST",
            url,
            user,
            password,
            data=json.dumps(payload).encode("utf-8"),
            headers={"Content-Type": "application/json"},
        )
        print(f"✓ mis à jour {slug} (ID {page_id})")
        return

    url = f"{base}/wp-json/wp/v2/pages"
    _, created = _request(
        "POST",
        url,
        user,
        password,
        data=json.dumps(payload).encode("utf-8"),
        headers={"Content-Type": "application/json"},
    )
    print(f"✓ créée {slug} (ID {created.get('id')})")


def main() -> int:
    cfg = load_config()
    if not cfg.wp_user or not cfg.wp_application_password:
        print("Identifiants WordPress manquants dans .secrets/.env", file=sys.stderr)
        return 1

    all_pages = {**NATIONAL, **local_pages()}
    for slug, page_cfg in all_pages.items():
        ensure_page(cfg.wp_base_url, cfg.wp_user, cfg.wp_application_password, slug, page_cfg)

    print(f"Terminé : {len(all_pages)} landing(s) configurée(s).")
    return 0


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