{
    "ok": true,
    "generated_at": "2026-07-06T19:12:26+00:00",
    "summary": "Certificats de publication KPI : recu copiable pour chaque score avec valeur, statut, badge, sources, regles aggregation et caveat.",
    "certificate_count": 7,
    "source_count": 26,
    "certificates": [
        {
            "score_key": "territory_reference_score",
            "label": "Territory Reference Score",
            "value": "74/100",
            "raw_score": 74,
            "source_status": "mixed",
            "publication_status": "annotate",
            "publication_label": "Annoter",
            "badge_key": "kpi_partial",
            "badge_label": "Partiel",
            "badge_html": "<span class=\"wx-trust-badge\" data-badge=\"kpi_partial\" style=\"--badge-bg:#fff3d8;--badge-ink:#3d2b16;--badge-accent:#bd7a32;\">Partiel</span>",
            "sources": [
                "inao_aoc_aop_communes",
                "inao_siqo_products",
                "eambrosia_gi",
                "rpg_parcels",
                "reference_source_fidelity",
                "reference_publication_gate"
            ],
            "aggregation_rules": [
                {
                    "key": "pipeline_cap",
                    "label": "Plafond pipeline",
                    "caveat": "Score partiel : composants prets visibles, reste en pipeline."
                }
            ],
            "formula": "0.35 * regulatory_proof + 0.20 * source_fidelity + 0.15 * vineyard_footprint + 0.15 * data_freshness + 0.15 * publication_readiness",
            "minimum_gate": "Publier seulement si les preuves INAO/eAmbrosia/SIQO sont visibles et si le caveat principal est present.",
            "copy_receipt": "KPI Territory Reference Score : 74/100 ; statut Annoter ; sources inao_aoc_aop_communes, inao_siqo_products, eambrosia_gi, rpg_parcels, reference_source_fidelity, reference_publication_gate ; caveat : Publier seulement si les preuves INAO/eAmbrosia/SIQO sont visibles et si le caveat principal est present.",
            "caveat": "Certificat logique : verifier donnees normalisees, aggregation, Publication Gate et revue metier avant diffusion externe."
        },
        {
            "score_key": "oenotourism_readiness_score",
            "label": "Oenotourism Readiness Score",
            "value": "60/100",
            "raw_score": 60,
            "source_status": "mixed",
            "publication_status": "annotate",
            "publication_label": "Annoter",
            "badge_key": "kpi_partial",
            "badge_label": "Partiel",
            "badge_html": "<span class=\"wx-trust-badge\" data-badge=\"kpi_partial\" style=\"--badge-bg:#fff3d8;--badge-ink:#3d2b16;--badge-accent:#bd7a32;\">Partiel</span>",
            "sources": [
                "datatourisme_oenotourism",
                "insee_tourism_capacity_communes",
                "insee_tourism_occupancy",
                "atout_france_classified_accommodations",
                "vignobles_decouvertes",
                "qualite_tourisme_establishments",
                "bnsc_bike_parking",
                "tourisme_handicap_establishments",
                "ban_address_reference"
            ],
            "aggregation_rules": [
                {
                    "key": "same_denominator",
                    "label": "Denominateur constant",
                    "caveat": "Taux normalise sur le meme perimetre et la meme famille de sources."
                },
                {
                    "key": "source_granularity_guard",
                    "label": "Granularite source",
                    "caveat": "Contexte a maille large, non attribuable directement au territoire fin."
                },
                {
                    "key": "time_window_alignment",
                    "label": "Fenetre temporelle alignee",
                    "caveat": "Les millesimes source peuvent differer ; lire comme tendance ou contexte si non alignes."
                },
                {
                    "key": "pipeline_cap",
                    "label": "Plafond pipeline",
                    "caveat": "Score partiel : composants prets visibles, reste en pipeline."
                }
            ],
            "formula": "0.20 * wine_offer_density + 0.17 * accommodation_capacity + 0.14 * tourism_demand_signal + 0.12 * destination_label_signal + 0.11 * quality_reception_signal + 0.08 * bike_access_signal + 0.08 * accessibility_signal + 0.10 * address_quality",
            "minimum_gate": "Ne jamais decrire ce score comme frequentation oenotouristique : Insee mesure la demande hebergements generale, a croiser avec offre vin.",
            "copy_receipt": "KPI Oenotourism Readiness Score : 60/100 ; statut Annoter ; sources datatourisme_oenotourism, insee_tourism_capacity_communes, insee_tourism_occupancy, atout_france_classified_accommodations, vignobles_decouvertes, qualite_tourisme_establishments, bnsc_bike_parking, tourisme_handicap_establishments, ban_address_reference ; caveat : Ne jamais decrire ce score comme frequentation oenotouristique : Insee mesure la demande hebergements generale, a croiser avec offre vin.",
            "caveat": "Certificat logique : verifier donnees normalisees, aggregation, Publication Gate et revue metier avant diffusion externe."
        },
        {
            "score_key": "wine_business_density_score",
            "label": "Wine Business Density Score",
            "value": "52.7/100",
            "raw_score": 52.7,
            "source_status": "mixed",
            "publication_status": "hold",
            "publication_label": "Retenir",
            "badge_key": "kpi_blocked",
            "badge_label": "Bloqué",
            "badge_html": "<span class=\"wx-trust-badge\" data-badge=\"kpi_blocked\" style=\"--badge-bg:#f8e4e7;--badge-ink:#4a1620;--badge-accent:#9b2435;\">Bloqué</span>",
            "sources": [
                "sirene_wine_establishments",
                "wine_naf_codes",
                "ban_address_reference",
                "hve_certified_estates",
                "source_activation_status"
            ],
            "aggregation_rules": [
                {
                    "key": "privacy_first",
                    "label": "Agregat avant nominatif",
                    "caveat": "Les listings nominatifs restent internes tant que RGPD/metier/source gate ne sont pas passes."
                }
            ],
            "formula": "0.40 * active_wine_establishment_density + 0.20 * core_naf_share + 0.15 * geocoding_quality + 0.15 * sustainability_signal + 0.10 * source_activation_status",
            "minimum_gate": "Publier en agrege si Sirene/HVE ne sont pas relus nominativement ; marquer pipeline si le stock Sirene manque.",
            "copy_receipt": "KPI Wine Business Density Score : 52.7/100 ; statut Retenir ; sources sirene_wine_establishments, wine_naf_codes, ban_address_reference, hve_certified_estates, source_activation_status ; caveat : Publier en agrege si Sirene/HVE ne sont pas relus nominativement ; marquer pipeline si le stock Sirene manque.",
            "caveat": "Certificat logique : verifier donnees normalisees, aggregation, Publication Gate et revue metier avant diffusion externe."
        },
        {
            "score_key": "sustainable_wine_signal",
            "label": "Sustainable Wine Signal",
            "value": "57.1/100",
            "raw_score": 57.1,
            "source_status": "mixed",
            "publication_status": "hold",
            "publication_label": "Retenir",
            "badge_key": "kpi_blocked",
            "badge_label": "Bloqué",
            "badge_html": "<span class=\"wx-trust-badge\" data-badge=\"kpi_blocked\" style=\"--badge-bg:#f8e4e7;--badge-ink:#4a1620;--badge-accent:#9b2435;\">Bloqué</span>",
            "sources": [
                "hve_certified_estates",
                "agencebio_organic_wine",
                "inao_siqo_products",
                "rpg_parcels",
                "agreste_viticulture_territorial",
                "reference_source_fidelity"
            ],
            "aggregation_rules": [
                {
                    "key": "time_window_alignment",
                    "label": "Fenetre temporelle alignee",
                    "caveat": "Les millesimes source peuvent differer ; lire comme tendance ou contexte si non alignes."
                }
            ],
            "formula": "0.30 * hve_wine_related_density + 0.25 * organic_wine_operator_density + 0.15 * siqo_product_signal + 0.10 * vineyard_surface_context + 0.10 * source_fidelity + 0.10 * caveat_quality",
            "minimum_gate": "Toujours distinguer HVE, Bio et SIQO ; publier les operateurs bio en agregat territoire avant listing nominatif.",
            "copy_receipt": "KPI Sustainable Wine Signal : 57.1/100 ; statut Retenir ; sources hve_certified_estates, agencebio_organic_wine, inao_siqo_products, rpg_parcels, agreste_viticulture_territorial, reference_source_fidelity ; caveat : Toujours distinguer HVE, Bio et SIQO ; publier les operateurs bio en agregat territoire avant listing nominatif.",
            "caveat": "Certificat logique : verifier donnees normalisees, aggregation, Publication Gate et revue metier avant diffusion externe."
        },
        {
            "score_key": "organic_wine_sustainability_score",
            "label": "Organic Wine Sustainability Score",
            "value": "43.1/100",
            "raw_score": 43.1,
            "source_status": "mixed",
            "publication_status": "hold",
            "publication_label": "Retenir",
            "badge_key": "kpi_blocked",
            "badge_label": "Bloqué",
            "badge_html": "<span class=\"wx-trust-badge\" data-badge=\"kpi_blocked\" style=\"--badge-bg:#f8e4e7;--badge-ink:#4a1620;--badge-accent:#9b2435;\">Bloqué</span>",
            "sources": [
                "agencebio_organic_wine",
                "agencebio_organic_viticulture_surfaces",
                "hve_certified_estates",
                "sirene_wine_establishments",
                "ban_address_reference"
            ],
            "aggregation_rules": [
                {
                    "key": "same_denominator",
                    "label": "Denominateur constant",
                    "caveat": "Taux normalise sur le meme perimetre et la meme famille de sources."
                },
                {
                    "key": "privacy_first",
                    "label": "Agregat avant nominatif",
                    "caveat": "Les listings nominatifs restent internes tant que RGPD/metier/source gate ne sont pas passes."
                },
                {
                    "key": "pipeline_cap",
                    "label": "Plafond pipeline",
                    "caveat": "Score partiel : composants prets visibles, reste en pipeline."
                }
            ],
            "formula": "0.45 * organic_operator_density + 0.25 * organic_viticulture_surface_context + 0.15 * certifier_diversity_signal + 0.15 * hve_complement_signal",
            "minimum_gate": "Publier comme signal bio officiel uniquement avec agregats territoire, source Agence Bio citee, output surfaces VI normalise ou badge partiel explicite.",
            "copy_receipt": "KPI Organic Wine Sustainability Score : 43.1/100 ; statut Retenir ; sources agencebio_organic_wine, agencebio_organic_viticulture_surfaces, hve_certified_estates, sirene_wine_establishments, ban_address_reference ; caveat : Publier comme signal bio officiel uniquement avec agregats territoire, source Agence Bio citee, output surfaces VI normalise ou badge partiel explicite.",
            "caveat": "Certificat logique : verifier donnees normalisees, aggregation, Publication Gate et revue metier avant diffusion externe."
        },
        {
            "score_key": "supply_market_context_score",
            "label": "Supply & Market Context Score",
            "value": "37.3/100",
            "raw_score": 37.3,
            "source_status": "mixed",
            "publication_status": "hold",
            "publication_label": "Retenir",
            "badge_key": "kpi_blocked",
            "badge_label": "Bloqué",
            "badge_html": "<span class=\"wx-trust-badge\" data-badge=\"kpi_blocked\" style=\"--badge-bg:#f8e4e7;--badge-ink:#4a1620;--badge-accent:#9b2435;\">Bloqué</span>",
            "sources": [
                "dgddi_vitivinicole_stocks_harvests",
                "agreste_vineyard_land_values",
                "franceagrimer_bulk_prices",
                "agreste_viticulture_territorial",
                "source_refresh_policy"
            ],
            "aggregation_rules": [
                {
                    "key": "source_granularity_guard",
                    "label": "Granularite source",
                    "caveat": "Contexte a maille large, non attribuable directement au territoire fin."
                },
                {
                    "key": "time_window_alignment",
                    "label": "Fenetre temporelle alignee",
                    "caveat": "Les millesimes source peuvent differer ; lire comme tendance ou contexte si non alignes."
                }
            ],
            "formula": "0.25 * production_context + 0.20 * stock_context + 0.20 * land_value_context + 0.20 * bulk_price_context + 0.15 * freshness_gate",
            "minimum_gate": "Score a utiliser comme contexte secondaire tant que DGDDI/FranceAgriMer/Agreste ne sont pas normalises et frais.",
            "copy_receipt": "KPI Supply & Market Context Score : 37.3/100 ; statut Retenir ; sources dgddi_vitivinicole_stocks_harvests, agreste_vineyard_land_values, franceagrimer_bulk_prices, agreste_viticulture_territorial, source_refresh_policy ; caveat : Score a utiliser comme contexte secondaire tant que DGDDI/FranceAgriMer/Agreste ne sont pas normalises et frais.",
            "caveat": "Certificat logique : verifier donnees normalisees, aggregation, Publication Gate et revue metier avant diffusion externe."
        },
        {
            "score_key": "map_publication_readiness",
            "label": "Map Publication Readiness",
            "value": "61.6/100",
            "raw_score": 61.6,
            "source_status": "mixed",
            "publication_status": "annotate",
            "publication_label": "Annoter",
            "badge_key": "kpi_partial",
            "badge_label": "Partiel",
            "badge_html": "<span class=\"wx-trust-badge\" data-badge=\"kpi_partial\" style=\"--badge-bg:#fff3d8;--badge-ink:#3d2b16;--badge-accent:#bd7a32;\">Partiel</span>",
            "sources": [
                "ban_address_reference",
                "datatourisme_oenotourism",
                "sirene_wine_establishments",
                "atout_france_classified_accommodations",
                "tourisme_handicap_establishments"
            ],
            "aggregation_rules": [
                {
                    "key": "same_denominator",
                    "label": "Denominateur constant",
                    "caveat": "Taux normalise sur le meme perimetre et la meme famille de sources."
                },
                {
                    "key": "privacy_first",
                    "label": "Agregat avant nominatif",
                    "caveat": "Les listings nominatifs restent internes tant que RGPD/metier/source gate ne sont pas passes."
                }
            ],
            "formula": "0.35 * geocoded_rate + 0.25 * address_score + 0.15 * source_type_clarity + 0.15 * public_opening_confidence + 0.10 * privacy_gate",
            "minimum_gate": "Ne pas afficher de lieux nominatifs si adresse, ouverture au public ou statut RGPD ne sont pas clarifies.",
            "copy_receipt": "KPI Map Publication Readiness : 61.6/100 ; statut Annoter ; sources ban_address_reference, datatourisme_oenotourism, sirene_wine_establishments, atout_france_classified_accommodations, tourisme_handicap_establishments ; caveat : Ne pas afficher de lieux nominatifs si adresse, ouverture au public ou statut RGPD ne sont pas clarifies.",
            "caveat": "Certificat logique : verifier donnees normalisees, aggregation, Publication Gate et revue metier avant diffusion externe."
        }
    ],
    "copy_markdown": "# Reference KPI Publication Certificates\n\nCertificats de publication KPI : recu copiable pour chaque score avec valeur, statut, badge, sources, regles aggregation et caveat.\n\n## Synthese\n- Certificats : 7\n- Sources uniques : 26\n\n## Certificats\n\n### Territory Reference Score\n- Cle : `territory_reference_score`\n- Valeur : 74/100\n- Publication : Annoter (`annotate`)\n- Badge : Partiel (`kpi_partial`)\n- Sources : inao_aoc_aop_communes, inao_siqo_products, eambrosia_gi, rpg_parcels, reference_source_fidelity, reference_publication_gate\n- Gate : Publier seulement si les preuves INAO/eAmbrosia/SIQO sont visibles et si le caveat principal est present.\n- Recu copiable : KPI Territory Reference Score : 74/100 ; statut Annoter ; sources inao_aoc_aop_communes, inao_siqo_products, eambrosia_gi, rpg_parcels, reference_source_fidelity, reference_publication_gate ; caveat : Publier seulement si les preuves INAO/eAmbrosia/SIQO sont visibles et si le caveat principal est present.\n- Regles aggregation :\n  - Plafond pipeline : Score partiel : composants prets visibles, reste en pipeline.\n\n### Oenotourism Readiness Score\n- Cle : `oenotourism_readiness_score`\n- Valeur : 60/100\n- Publication : Annoter (`annotate`)\n- Badge : Partiel (`kpi_partial`)\n- Sources : datatourisme_oenotourism, insee_tourism_capacity_communes, insee_tourism_occupancy, atout_france_classified_accommodations, vignobles_decouvertes, qualite_tourisme_establishments, bnsc_bike_parking, tourisme_handicap_establishments, ban_address_reference\n- Gate : Ne jamais decrire ce score comme frequentation oenotouristique : Insee mesure la demande hebergements generale, a croiser avec offre vin.\n- Recu copiable : KPI Oenotourism Readiness Score : 60/100 ; statut Annoter ; sources datatourisme_oenotourism, insee_tourism_capacity_communes, insee_tourism_occupancy, atout_france_classified_accommodations, vignobles_decouvertes, qualite_tourisme_establishments, bnsc_bike_parking, tourisme_handicap_establishments, ban_address_reference ; caveat : Ne jamais decrire ce score comme frequentation oenotouristique : Insee mesure la demande hebergements generale, a croiser avec offre vin.\n- Regles aggregation :\n  - Denominateur constant : Taux normalise sur le meme perimetre et la meme famille de sources.\n  - Granularite source : Contexte a maille large, non attribuable directement au territoire fin.\n  - Fenetre temporelle alignee : Les millesimes source peuvent differer ; lire comme tendance ou contexte si non alignes.\n  - Plafond pipeline : Score partiel : composants prets visibles, reste en pipeline.\n\n### Wine Business Density Score\n- Cle : `wine_business_density_score`\n- Valeur : 52.7/100\n- Publication : Retenir (`hold`)\n- Badge : Bloqué (`kpi_blocked`)\n- Sources : sirene_wine_establishments, wine_naf_codes, ban_address_reference, hve_certified_estates, source_activation_status\n- Gate : Publier en agrege si Sirene/HVE ne sont pas relus nominativement ; marquer pipeline si le stock Sirene manque.\n- Recu copiable : KPI Wine Business Density Score : 52.7/100 ; statut Retenir ; sources sirene_wine_establishments, wine_naf_codes, ban_address_reference, hve_certified_estates, source_activation_status ; caveat : Publier en agrege si Sirene/HVE ne sont pas relus nominativement ; marquer pipeline si le stock Sirene manque.\n- Regles aggregation :\n  - Agregat avant nominatif : Les listings nominatifs restent internes tant que RGPD/metier/source gate ne sont pas passes.\n\n### Sustainable Wine Signal\n- Cle : `sustainable_wine_signal`\n- Valeur : 57.1/100\n- Publication : Retenir (`hold`)\n- Badge : Bloqué (`kpi_blocked`)\n- Sources : hve_certified_estates, agencebio_organic_wine, inao_siqo_products, rpg_parcels, agreste_viticulture_territorial, reference_source_fidelity\n- Gate : Toujours distinguer HVE, Bio et SIQO ; publier les operateurs bio en agregat territoire avant listing nominatif.\n- Recu copiable : KPI Sustainable Wine Signal : 57.1/100 ; statut Retenir ; sources hve_certified_estates, agencebio_organic_wine, inao_siqo_products, rpg_parcels, agreste_viticulture_territorial, reference_source_fidelity ; caveat : Toujours distinguer HVE, Bio et SIQO ; publier les operateurs bio en agregat territoire avant listing nominatif.\n- Regles aggregation :\n  - Fenetre temporelle alignee : Les millesimes source peuvent differer ; lire comme tendance ou contexte si non alignes.\n\n### Organic Wine Sustainability Score\n- Cle : `organic_wine_sustainability_score`\n- Valeur : 43.1/100\n- Publication : Retenir (`hold`)\n- Badge : Bloqué (`kpi_blocked`)\n- Sources : agencebio_organic_wine, agencebio_organic_viticulture_surfaces, hve_certified_estates, sirene_wine_establishments, ban_address_reference\n- Gate : Publier comme signal bio officiel uniquement avec agregats territoire, source Agence Bio citee, output surfaces VI normalise ou badge partiel explicite.\n- Recu copiable : KPI Organic Wine Sustainability Score : 43.1/100 ; statut Retenir ; sources agencebio_organic_wine, agencebio_organic_viticulture_surfaces, hve_certified_estates, sirene_wine_establishments, ban_address_reference ; caveat : Publier comme signal bio officiel uniquement avec agregats territoire, source Agence Bio citee, output surfaces VI normalise ou badge partiel explicite.\n- Regles aggregation :\n  - Denominateur constant : Taux normalise sur le meme perimetre et la meme famille de sources.\n  - Agregat avant nominatif : Les listings nominatifs restent internes tant que RGPD/metier/source gate ne sont pas passes.\n  - Plafond pipeline : Score partiel : composants prets visibles, reste en pipeline.\n\n### Supply & Market Context Score\n- Cle : `supply_market_context_score`\n- Valeur : 37.3/100\n- Publication : Retenir (`hold`)\n- Badge : Bloqué (`kpi_blocked`)\n- Sources : dgddi_vitivinicole_stocks_harvests, agreste_vineyard_land_values, franceagrimer_bulk_prices, agreste_viticulture_territorial, source_refresh_policy\n- Gate : Score a utiliser comme contexte secondaire tant que DGDDI/FranceAgriMer/Agreste ne sont pas normalises et frais.\n- Recu copiable : KPI Supply & Market Context Score : 37.3/100 ; statut Retenir ; sources dgddi_vitivinicole_stocks_harvests, agreste_vineyard_land_values, franceagrimer_bulk_prices, agreste_viticulture_territorial, source_refresh_policy ; caveat : Score a utiliser comme contexte secondaire tant que DGDDI/FranceAgriMer/Agreste ne sont pas normalises et frais.\n- Regles aggregation :\n  - Granularite source : Contexte a maille large, non attribuable directement au territoire fin.\n  - Fenetre temporelle alignee : Les millesimes source peuvent differer ; lire comme tendance ou contexte si non alignes.\n\n### Map Publication Readiness\n- Cle : `map_publication_readiness`\n- Valeur : 61.6/100\n- Publication : Annoter (`annotate`)\n- Badge : Partiel (`kpi_partial`)\n- Sources : ban_address_reference, datatourisme_oenotourism, sirene_wine_establishments, atout_france_classified_accommodations, tourisme_handicap_establishments\n- Gate : Ne pas afficher de lieux nominatifs si adresse, ouverture au public ou statut RGPD ne sont pas clarifies.\n- Recu copiable : KPI Map Publication Readiness : 61.6/100 ; statut Annoter ; sources ban_address_reference, datatourisme_oenotourism, sirene_wine_establishments, atout_france_classified_accommodations, tourisme_handicap_establishments ; caveat : Ne pas afficher de lieux nominatifs si adresse, ouverture au public ou statut RGPD ne sont pas clarifies.\n- Regles aggregation :\n  - Denominateur constant : Taux normalise sur le meme perimetre et la meme famille de sources.\n  - Agregat avant nominatif : Les listings nominatifs restent internes tant que RGPD/metier/source gate ne sont pas passes.\n"
}