{
    "ok": true,
    "generated_at": "2026-07-06T19:11:36+00:00",
    "summary": "Matrice de rapprochement inter-sources pour transformer INAO, BAN, Insee, DATAtourisme, Sirene, HVE, DGDDI, Agreste et FranceAgriMer en KPI territoire publiables.",
    "join_key_count": 5,
    "recipe_count": 6,
    "join_keys": [
        {
            "key": "commune_code",
            "label": "Code commune INSEE",
            "role": "Cle geographique principale pour relier INAO, BAN, Insee capacite touristique, HVE, DATAtourisme et Sirene.",
            "sources": [
                "inao_aoc_aop_communes",
                "ban_address_reference",
                "insee_tourism_capacity_communes",
                "hve_certified_estates",
                "datatourisme_oenotourism",
                "sirene_wine_establishments"
            ],
            "quality_gate": "Code commune present, normalise sur 5 caracteres et coherent avec le libelle commune."
        },
        {
            "key": "appellation_name_normalized",
            "label": "Libelle appellation normalise",
            "role": "Relier les preuves reglementaires, produits SIQO, aires communales et recits appellation.",
            "sources": [
                "inao_siqo_products",
                "inao_aoc_aop_communes",
                "eambrosia_gi",
                "appellation_evidence_pack"
            ],
            "quality_gate": "Normalisation accents/casse/ponctuation, puis revue manuelle des non-matchs."
        },
        {
            "key": "siret_or_establishment_id",
            "label": "SIRET ou identifiant etablissement",
            "role": "Relier etablissement, activite economique, geocodage, certification et offre ouverte au public.",
            "sources": [
                "sirene_wine_establishments",
                "ban_address_reference",
                "hve_certified_estates",
                "tourisme_handicap_establishments"
            ],
            "quality_gate": "SIRET privilegie ; sinon rapprochement nom/adresse/commune avec score et caveat."
        },
        {
            "key": "address_fingerprint",
            "label": "Empreinte adresse",
            "role": "Controle de qualite avant carte et avant rapprochement nominatif entre lieux.",
            "sources": [
                "ban_address_reference",
                "datatourisme_oenotourism",
                "atout_france_classified_accommodations",
                "hve_certified_estates"
            ],
            "quality_gate": "Adresse nettoyee, score BAN suffisant, longitude/latitude presentes et statut faible isole."
        },
        {
            "key": "territory_scope",
            "label": "Perimetre territoire",
            "role": "Composer commune, departement, region, destination et appellation pour publier un KPI agregable.",
            "sources": [
                "vignobles_decouvertes",
                "insee_tourism_capacity_communes",
                "rpg_parcels",
                "agreste_viticulture_territorial",
                "dgddi_vitivinicole_stocks_harvests"
            ],
            "quality_gate": "Perimetre annonce explicitement : commune, departement, region, appellation ou destination."
        }
    ],
    "recipes": [
        {
            "key": "territory_reference_score",
            "label": "Score reference territoire",
            "user_question": "Ce territoire viticole est-il assez prouve pour etre publie comme reference ?",
            "join_keys": [
                "commune_code",
                "appellation_name_normalized",
                "territory_scope"
            ],
            "source_stack": [
                "inao_aoc_aop_communes",
                "inao_siqo_products",
                "eambrosia_gi",
                "rpg_parcels",
                "source_fidelity_ledger"
            ],
            "kpi_slots": [
                "official_appellation_count",
                "commune_coverage",
                "vineyard_surface_ha",
                "source_fidelity_score",
                "publication_gate"
            ],
            "visual_family": "reference_authority",
            "copy_sentence": "Un territoire reference combine preuves appellation, surface viticole, sources citees et gate de publication explicite.",
            "caveat": "Ne pas publier comme preuve juridique sans revue des libelles et cahiers des charges."
        },
        {
            "key": "oenotourism_readiness_score",
            "label": "Score readiness oenotourisme",
            "user_question": "Le territoire a-t-il une offre et une capacite d accueil coherentes avec une promesse oenotouristique ?",
            "join_keys": [
                "commune_code",
                "address_fingerprint",
                "territory_scope"
            ],
            "source_stack": [
                "datatourisme_oenotourism",
                "vignobles_decouvertes",
                "insee_tourism_capacity_communes",
                "atout_france_classified_accommodations",
                "tourisme_handicap_establishments"
            ],
            "kpi_slots": [
                "wine_relevant_offer_count",
                "classified_beds",
                "accessible_establishment_count",
                "labeled_destination_count",
                "offer_density_per_commune"
            ],
            "visual_family": "oenotourism_capacity",
            "copy_sentence": "Le potentiel oenotouristique devient publiable quand offres, capacite, labels et accessibilite racontent la meme histoire.",
            "caveat": "Ces KPI mesurent offre et capacite, pas frequentation reelle ni satisfaction visiteur."
        },
        {
            "key": "wine_business_density_score",
            "label": "Densite economique vin",
            "user_question": "Y a-t-il assez d acteurs vin pour justifier une priorite produit, commerciale ou territoriale ?",
            "join_keys": [
                "commune_code",
                "siret_or_establishment_id",
                "address_fingerprint"
            ],
            "source_stack": [
                "sirene_wine_establishments",
                "ban_address_reference",
                "hve_certified_estates",
                "tourisme_handicap_establishments"
            ],
            "kpi_slots": [
                "active_wine_establishment_count",
                "core_naf_share",
                "geocoded_rate",
                "hve_wine_related_count",
                "address_quality_score"
            ],
            "visual_family": "business_density",
            "copy_sentence": "La densite business vin doit separer volume economique, qualite adresse, certification et statut pipeline.",
            "caveat": "Sirene et HVE peuvent contenir des donnees nominatives : usage public a cadrer, agregats a privilegier."
        },
        {
            "key": "sustainable_territory_signal",
            "label": "Signal durabilite territoire",
            "user_question": "Le territoire dispose-t-il de preuves environnementales et qualite suffisamment visibles ?",
            "join_keys": [
                "commune_code",
                "siret_or_establishment_id",
                "territory_scope"
            ],
            "source_stack": [
                "hve_certified_estates",
                "rpg_parcels",
                "agreste_viticulture_territorial",
                "inao_siqo_products"
            ],
            "kpi_slots": [
                "hve_estate_count",
                "hve_wine_related_rate",
                "vineyard_surface_ha",
                "siqo_product_count",
                "sustainability_caveat"
            ],
            "visual_family": "wine_territory",
            "copy_sentence": "La durabilite devient un angle fiable seulement si HVE est rattachee au bon territoire et aux preuves viticoles.",
            "caveat": "HVE est un annuaire volontaire ; ne pas assimiler absence dans l annuaire a absence de certification."
        },
        {
            "key": "supply_market_context",
            "label": "Contexte offre et marche",
            "user_question": "Quel contexte production, stocks, foncier et prix ajouter autour d un territoire ?",
            "join_keys": [
                "territory_scope",
                "commune_code"
            ],
            "source_stack": [
                "dgddi_vitivinicole_stocks_harvests",
                "agreste_vineyard_land_values",
                "franceagrimer_bulk_prices",
                "agreste_viticulture_territorial"
            ],
            "kpi_slots": [
                "production_hl_total",
                "stock_to_production_ratio",
                "vineyard_land_value_eur_ha",
                "bulk_price_trend",
                "market_publication_status"
            ],
            "visual_family": "market_context",
            "copy_sentence": "Le contexte marche doit rester secondaire tant que les donnees prix et stocks ne sont pas normalisees et fraiches.",
            "caveat": "DGDDI data.gouv est historique et FranceAgriMer reste a normaliser : ne pas publier de tendance recente sans controle."
        },
        {
            "key": "map_publication_readiness",
            "label": "Readiness carte publique",
            "user_question": "Les lieux peuvent-ils etre affiches sur une carte publique sans degrader la confiance ?",
            "join_keys": [
                "address_fingerprint",
                "commune_code",
                "siret_or_establishment_id"
            ],
            "source_stack": [
                "ban_address_reference",
                "datatourisme_oenotourism",
                "sirene_wine_establishments",
                "atout_france_classified_accommodations",
                "tourisme_handicap_establishments"
            ],
            "kpi_slots": [
                "geocoded_rate",
                "low_quality_address_count",
                "public_place_count",
                "accessibility_badge_count",
                "map_gate"
            ],
            "visual_family": "source_operations",
            "copy_sentence": "Une carte publique doit afficher moins de lieux mais mieux sourcer adresse, statut et caveat.",
            "caveat": "Adresse geocodee ne prouve pas ouverture au public ; verifier chaque famille de lieux avant affichage nominatif."
        }
    ],
    "quality_gates": [
        {
            "key": "declare_scope",
            "label": "Perimetre explicite",
            "rule": "Chaque KPI doit annoncer s il porte sur commune, departement, region, appellation, destination ou France entiere."
        },
        {
            "key": "prefer_aggregates",
            "label": "Agregats avant nominatif",
            "rule": "Publier d abord les volumes et scores agreges ; exposer les noms seulement apres revue RGPD/metier."
        },
        {
            "key": "separate_active_pipeline",
            "label": "Actif vs pipeline",
            "rule": "Les sources metadata_only ou non importees doivent rester visibles comme contexte, pas comme KPI affirme."
        },
        {
            "key": "attach_receipt",
            "label": "Recu de confiance",
            "rule": "Chaque carte KPI doit embarquer source, date/metadonnée, transformation et caveat."
        }
    ],
    "copy_markdown": "# Reference Territory KPI Crosswalk\n\nMatrice de rapprochement inter-sources pour transformer INAO, BAN, Insee, DATAtourisme, Sirene, HVE, DGDDI, Agreste et FranceAgriMer en KPI territoire publiables.\n\n## Cles de rapprochement\n\n### Code commune INSEE\n- Cle : `commune_code`\n- Role : Cle geographique principale pour relier INAO, BAN, Insee capacite touristique, HVE, DATAtourisme et Sirene.\n- Sources : inao_aoc_aop_communes, ban_address_reference, insee_tourism_capacity_communes, hve_certified_estates, datatourisme_oenotourism, sirene_wine_establishments\n- Gate : Code commune present, normalise sur 5 caracteres et coherent avec le libelle commune.\n\n### Libelle appellation normalise\n- Cle : `appellation_name_normalized`\n- Role : Relier les preuves reglementaires, produits SIQO, aires communales et recits appellation.\n- Sources : inao_siqo_products, inao_aoc_aop_communes, eambrosia_gi, appellation_evidence_pack\n- Gate : Normalisation accents/casse/ponctuation, puis revue manuelle des non-matchs.\n\n### SIRET ou identifiant etablissement\n- Cle : `siret_or_establishment_id`\n- Role : Relier etablissement, activite economique, geocodage, certification et offre ouverte au public.\n- Sources : sirene_wine_establishments, ban_address_reference, hve_certified_estates, tourisme_handicap_establishments\n- Gate : SIRET privilegie ; sinon rapprochement nom/adresse/commune avec score et caveat.\n\n### Empreinte adresse\n- Cle : `address_fingerprint`\n- Role : Controle de qualite avant carte et avant rapprochement nominatif entre lieux.\n- Sources : ban_address_reference, datatourisme_oenotourism, atout_france_classified_accommodations, hve_certified_estates\n- Gate : Adresse nettoyee, score BAN suffisant, longitude/latitude presentes et statut faible isole.\n\n### Perimetre territoire\n- Cle : `territory_scope`\n- Role : Composer commune, departement, region, destination et appellation pour publier un KPI agregable.\n- Sources : vignobles_decouvertes, insee_tourism_capacity_communes, rpg_parcels, agreste_viticulture_territorial, dgddi_vitivinicole_stocks_harvests\n- Gate : Perimetre annonce explicitement : commune, departement, region, appellation ou destination.\n\n## Recettes KPI territoire\n\n### Score reference territoire\n- Question : Ce territoire viticole est-il assez prouve pour etre publie comme reference ?\n- Cles : commune_code, appellation_name_normalized, territory_scope\n- Sources : inao_aoc_aop_communes, inao_siqo_products, eambrosia_gi, rpg_parcels, source_fidelity_ledger\n- KPI slots : official_appellation_count, commune_coverage, vineyard_surface_ha, source_fidelity_score, publication_gate\n- Famille visuelle : reference_authority\n- Copy : Un territoire reference combine preuves appellation, surface viticole, sources citees et gate de publication explicite.\n- Caveat : Ne pas publier comme preuve juridique sans revue des libelles et cahiers des charges.\n\n### Score readiness oenotourisme\n- Question : Le territoire a-t-il une offre et une capacite d accueil coherentes avec une promesse oenotouristique ?\n- Cles : commune_code, address_fingerprint, territory_scope\n- Sources : datatourisme_oenotourism, vignobles_decouvertes, insee_tourism_capacity_communes, atout_france_classified_accommodations, tourisme_handicap_establishments\n- KPI slots : wine_relevant_offer_count, classified_beds, accessible_establishment_count, labeled_destination_count, offer_density_per_commune\n- Famille visuelle : oenotourism_capacity\n- Copy : Le potentiel oenotouristique devient publiable quand offres, capacite, labels et accessibilite racontent la meme histoire.\n- Caveat : Ces KPI mesurent offre et capacite, pas frequentation reelle ni satisfaction visiteur.\n\n### Densite economique vin\n- Question : Y a-t-il assez d acteurs vin pour justifier une priorite produit, commerciale ou territoriale ?\n- Cles : commune_code, siret_or_establishment_id, address_fingerprint\n- Sources : sirene_wine_establishments, ban_address_reference, hve_certified_estates, tourisme_handicap_establishments\n- KPI slots : active_wine_establishment_count, core_naf_share, geocoded_rate, hve_wine_related_count, address_quality_score\n- Famille visuelle : business_density\n- Copy : La densite business vin doit separer volume economique, qualite adresse, certification et statut pipeline.\n- Caveat : Sirene et HVE peuvent contenir des donnees nominatives : usage public a cadrer, agregats a privilegier.\n\n### Signal durabilite territoire\n- Question : Le territoire dispose-t-il de preuves environnementales et qualite suffisamment visibles ?\n- Cles : commune_code, siret_or_establishment_id, territory_scope\n- Sources : hve_certified_estates, rpg_parcels, agreste_viticulture_territorial, inao_siqo_products\n- KPI slots : hve_estate_count, hve_wine_related_rate, vineyard_surface_ha, siqo_product_count, sustainability_caveat\n- Famille visuelle : wine_territory\n- Copy : La durabilite devient un angle fiable seulement si HVE est rattachee au bon territoire et aux preuves viticoles.\n- Caveat : HVE est un annuaire volontaire ; ne pas assimiler absence dans l annuaire a absence de certification.\n\n### Contexte offre et marche\n- Question : Quel contexte production, stocks, foncier et prix ajouter autour d un territoire ?\n- Cles : territory_scope, commune_code\n- Sources : dgddi_vitivinicole_stocks_harvests, agreste_vineyard_land_values, franceagrimer_bulk_prices, agreste_viticulture_territorial\n- KPI slots : production_hl_total, stock_to_production_ratio, vineyard_land_value_eur_ha, bulk_price_trend, market_publication_status\n- Famille visuelle : market_context\n- Copy : Le contexte marche doit rester secondaire tant que les donnees prix et stocks ne sont pas normalisees et fraiches.\n- Caveat : DGDDI data.gouv est historique et FranceAgriMer reste a normaliser : ne pas publier de tendance recente sans controle.\n\n### Readiness carte publique\n- Question : Les lieux peuvent-ils etre affiches sur une carte publique sans degrader la confiance ?\n- Cles : address_fingerprint, commune_code, siret_or_establishment_id\n- Sources : ban_address_reference, datatourisme_oenotourism, sirene_wine_establishments, atout_france_classified_accommodations, tourisme_handicap_establishments\n- KPI slots : geocoded_rate, low_quality_address_count, public_place_count, accessibility_badge_count, map_gate\n- Famille visuelle : source_operations\n- Copy : Une carte publique doit afficher moins de lieux mais mieux sourcer adresse, statut et caveat.\n- Caveat : Adresse geocodee ne prouve pas ouverture au public ; verifier chaque famille de lieux avant affichage nominatif.\n\n## Gates qualite\n- **Perimetre explicite** : Chaque KPI doit annoncer s il porte sur commune, departement, region, appellation, destination ou France entiere.\n- **Agregats avant nominatif** : Publier d abord les volumes et scores agreges ; exposer les noms seulement apres revue RGPD/metier.\n- **Actif vs pipeline** : Les sources metadata_only ou non importees doivent rester visibles comme contexte, pas comme KPI affirme.\n- **Recu de confiance** : Chaque carte KPI doit embarquer source, date/metadonnée, transformation et caveat.\n"
}