import { SITE, ZONES } from "@/lib/site";

/**
 * ── APPRENTISSAGE ────────────────────────────────────────────────────────────
 * JSON-LD : une fiche d'identité de l'entreprise, écrite en JSON dans un
 * <script>, que Google lit pour comprendre QUI publie la page. C'est ce qui
 * alimente le panneau de droite dans les résultats et la cohérence avec la
 * fiche Google Business.
 *
 * `dangerouslySetInnerHTML` : React échappe tout par défaut (bonne nouvelle
 * contre les failles XSS). Pour injecter du JSON brut dans un <script>, il
 * faut donc le lui dire explicitement — d'où le nom volontairement effrayant.
 * Ici c'est sans risque : le contenu est écrit par nous, pas saisi par un
 * visiteur.
 *
 * Pas d'`aggregateRating` : afficher une note moyenne sans avis vérifiés est
 * une infraction aux règles Google (et ce serait un chiffre inventé).
 * ─────────────────────────────────────────────────────────────────────────────
 */
export function DonneesStructurees() {
  const fiche = {
    "@context": "https://schema.org",
    "@type": "ProfessionalService",
    "@id": `${SITE.url}#entreprise`,
    name: SITE.nom,
    url: SITE.url,
    image: `${SITE.url}/og.png`,
    logo: `${SITE.url}/logo-adt-fond-clair.webp`,
    description:
      "Développement de logiciels et de plateformes sur mesure pour les lieux " +
      "et les ateliers : réservation, codes d'accès, suivi de production, " +
      "stock, interventions, gestion locative. Et les sites internet qui vont " +
      "avec. Basé à Laval (53).",
    // NAP — Name / Address / Phone.
    // L'adresse postale et le téléphone restent à fournir : mieux vaut une
    // fiche incomplète qu'une fiche fausse, que Google recoupe avec l'annuaire
    // et la fiche Google Business. [À COMPLÉTER] — voir TODO.md.
    address: {
      "@type": "PostalAddress",
      addressLocality: SITE.ville,
      postalCode: SITE.codePostal,
      addressRegion: SITE.region,
      addressCountry: SITE.pays,
    },
    areaServed: ZONES.map((zone) => ({ "@type": "Place", name: zone })),
    knowsAbout: [
      "Logiciel de réservation en ligne",
      "Contrôle d'accès et codes d'accès",
      "Suivi de production",
      "Gestion de stock",
      "Planning d'interventions",
      "Gestion locative",
      "Site internet",
      "Référencement local",
    ],
    hasOfferCatalog: {
      "@type": "OfferCatalog",
      name: "Prestations",
      itemListElement: [
        {
          "@type": "Offer",
          itemOffered: {
            "@type": "Service",
            name: "Plateformes d'accès et de réservation",
            url: `${SITE.url}/logiciels-sur-mesure/`,
          },
        },
        {
          "@type": "Offer",
          itemOffered: {
            "@type": "Service",
            name: "Logiciels d'exploitation sur mesure",
            url: `${SITE.url}/logiciels-sur-mesure/`,
          },
        },
        {
          "@type": "Offer",
          itemOffered: {
            "@type": "Service",
            name: "Sites internet et référencement local",
            url: `${SITE.url}/sites-internet/`,
          },
        },
      ],
    },
  };

  return (
    <script
      type="application/ld+json"
      dangerouslySetInnerHTML={{ __html: JSON.stringify(fiche) }}
    />
  );
}
