{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "Rapport d'impact biodiversité 2025 — IMT Atlantique — Schéma",
  "description": "Format canonique de l'enrichissement par les données de terrain du volet biodiversité du rapport d'activité 2025 d'IMT Atlantique. Source unique pour ingestion LLM lors de la mise à jour annuelle.",
  "type": "object",
  "required": ["meta", "rapport_passages", "preuves_terrain", "analyse_comparative"],
  "properties": {
    "meta": {
      "type": "object",
      "required": ["document_source", "contribution_type", "author", "date_generated", "campuses"],
      "properties": {
        "document_source": { "type": "string", "examples": ["Rapport annuel IMT Atlantique 2025"] },
        "document_url_local": { "type": "string" },
        "document_url_public": { "type": "string", "format": "uri" },
        "contribution_type": { "type": "string", "enum": ["enrichissement_preuve_terrain", "synthese", "comparative"] },
        "author": { "type": "string" },
        "author_role": { "type": "string" },
        "date_generated": { "type": "string", "format": "date" },
        "campuses": {
          "type": "array",
          "items": { "type": "string", "enum": ["Brest", "Nantes", "Rennes"] },
          "description": "Toujours en ordre alphabétique : Brest, Nantes, Rennes."
        },
        "rapport_pages_biodiv": {
          "type": "array",
          "items": { "type": "integer" },
          "description": "Numéros de pages du rapport officiel contenant des éléments biodiv."
        }
      }
    },
    "rapport_passages": {
      "type": "array",
      "items": {
        "type": "object",
        "required": ["id", "page", "section", "citation", "theme"],
        "properties": {
          "id": { "type": "string", "pattern": "^RP-[0-9]{3}$" },
          "page": { "type": "integer" },
          "section": { "type": "string" },
          "citation": { "type": "string", "description": "Citation exacte du rapport officiel, entre guillemets." },
          "theme": { "type": "string", "enum": ["biodiversite", "TES", "campus", "formation", "gouvernance"] },
          "campus_mentionnes": { "type": "array", "items": { "type": "string" } },
          "enrichissement_par": {
            "type": "array",
            "items": { "type": "string", "pattern": "^PT-[0-9]{3}$" },
            "description": "IDs des preuves terrain qui enrichissent ce passage."
          },
          "ecart_principal": { "type": "string", "description": "Ce qui manque ou est imprécis dans le rapport officiel par rapport aux preuves terrain." }
        }
      }
    },
    "preuves_terrain": {
      "type": "array",
      "items": {
        "type": "object",
        "required": ["id", "titre", "type", "campus", "url", "dans_rapport_officiel"],
        "properties": {
          "id": { "type": "string", "pattern": "^PT-[0-9]{3}$" },
          "titre": { "type": "string" },
          "type": { "type": "string", "enum": ["monitoring", "formation", "gestion", "partenariat", "planification", "politique", "evenement"] },
          "campus": { "type": "array", "items": { "type": "string", "enum": ["Brest", "Nantes", "Rennes"] } },
          "url": { "type": "string", "format": "uri-reference" },
          "chiffre_cle": { "type": "string" },
          "especes": { "type": "array", "items": { "type": "string" } },
          "partenaires": { "type": "array", "items": { "type": "string" } },
          "annee": { "type": "integer" },
          "date_iso": { "type": "string", "format": "date" },
          "dans_rapport_officiel": { "type": "boolean", "description": "Si la preuve est mentionnée dans le rapport officiel 2025." },
          "passage_rapport_associe": { "type": "string", "pattern": "^RP-[0-9]{3}$" }
        }
      }
    },
    "analyse_comparative": {
      "type": "object",
      "required": ["affirmations_enrichies", "actions_absentes_du_rapport", "chiffres_mis_a_jour"],
      "properties": {
        "affirmations_enrichies": { "type": "integer", "description": "Nombre d'affirmations du rapport rendues plus précises via les preuves terrain." },
        "actions_absentes_du_rapport": { "type": "integer", "description": "Nombre d'actions documentées sur fredericpallu.com mais absentes du rapport officiel." },
        "chiffres_mis_a_jour": { "type": "integer", "description": "Nombre de chiffres du rapport remplacés ou complétés par des données terrain plus précises." }
      }
    }
  }
}
