{
  "schema_version": "1.0",
  "edition": "2026-T3",
  "previous_edition": "2026-T2",
  "generated_at": "2026-07-03T09:38:57+00:00",
  "methodology_version": "2.0",
  "hypotheses": {
    "gazole": 5.8,
    "sp95": 6.5,
    "electrique": 17,
    "km_par_an": 15000,
    "source": "tco_parameters.json (conso_reference, ADEME)"
  },
  "params_status": {
    "ok": false,
    "summary": {
      "total_leafs": 19,
      "non_sourced": 4,
      "expired": 0
    },
    "non_sourced": [
      "prix_vehicule_reference.thermique",
      "prix_vehicule_reference.electrique",
      "lom_objectifs.paliers[0]",
      "aen_paliers.paliers[0]"
    ]
  },
  "indicators": {
    "cout_100km": {
      "status": "ok",
      "national": {
        "gazole": {
          "value": 10.88,
          "unit": "€/100 km",
          "sources": [
            "carburants",
            "ADEME"
          ],
          "method": "Prix carburant TTC × consommation ADEME (gazole 5.8 L, SP95 6.5 L /100 km)."
        },
        "sp95": {
          "value": 12.6,
          "unit": "€/100 km",
          "sources": [
            "carburants",
            "ADEME"
          ],
          "method": "Prix carburant TTC × consommation ADEME (gazole 5.8 L, SP95 6.5 L /100 km)."
        },
        "electrique": {
          "value": 5.38,
          "unit": "€/100 km",
          "sources": [
            "electricite (Eurostat pro)",
            "ADEME"
          ],
          "method": "Recharge sur site entreprise (tarif pro) : prix élec pro TTC (Eurostat nrg_pc_205, bande IA < 20 MWh/an) × 17.0 kWh/100 km (ADEME). Ce tarif pro correspond à la recharge d'une flotte sur son propre site (dépôt/entreprise) — ce N'EST PAS un proxy de l'itinérance publique (revoir cout_recharge_domicile)."
        }
      },
      "by_region": {
        "Auvergne-Rhône-Alpes": {
          "gazole": 10.96,
          "sp95": 12.66
        },
        "Bourgogne-Franche-Comté": {
          "gazole": 11.01,
          "sp95": 12.73
        },
        "Bretagne": {
          "gazole": 10.61,
          "sp95": 12.29
        },
        "Centre-Val de Loire": {
          "gazole": 10.82,
          "sp95": 12.61
        },
        "Corse": {
          "gazole": 11.54,
          "sp95": 12.94
        },
        "Grand Est": {
          "gazole": 10.92,
          "sp95": 12.67
        },
        "Hauts-de-France": {
          "gazole": 10.81,
          "sp95": 12.54
        },
        "Île-de-France": {
          "gazole": 11.01,
          "sp95": 12.65
        },
        "Normandie": {
          "gazole": 10.79,
          "sp95": 12.54
        },
        "Nouvelle-Aquitaine": {
          "gazole": 10.76,
          "sp95": 12.54
        },
        "Occitanie": {
          "gazole": 10.84,
          "sp95": 12.6
        },
        "Pays de la Loire": {
          "gazole": 10.7,
          "sp95": 12.55
        },
        "Provence-Alpes-Côte d'Azur": {
          "gazole": 10.92,
          "sp95": 12.66
        }
      },
      "unit": "€/100 km"
    },
    "cout_recharge_domicile": {
      "status": "ok",
      "unit": "€/100 km",
      "reference_salarie_km_mois": 1250,
      "scenarios": {
        "domicile_base": {
          "cout_100km": 3.28,
          "prix_kwh_ttc": 0.19266,
          "source": "CRE tarif réglementé (Option Base, 9 kVA)",
          "cout_mensuel_salarie": 41
        },
        "domicile_heures_creuses": {
          "cout_100km": 2.68,
          "prix_kwh_ttc": 0.1578,
          "source": "CRE tarif réglementé (Option HPHC, heures creuses, 9 kVA)",
          "cout_mensuel_salarie": 33.5
        },
        "thermique_gazole": {
          "cout_100km": 10.88,
          "prix_l_ttc": 1.875,
          "source": "prix-carburants.gouv.fr (gazole)",
          "cout_mensuel_salarie": 136
        }
      },
      "method": "Coût au 100 km = prix énergie TTC × consommation ADEME (17.0 kWh/100 km élec ; 5.8 L/100 km gazole). Coût mensuel salarié = coût au 100 km × 1250 km/mois. Chaque scénario nomme explicitement son tarif (jamais de « coût électrique » générique). Le tarif réglementé résidentiel est une borne haute pour la recharge domicile (offres de marché souvent moins chères). Recharge publique / itinérance : NON publiée à cette édition — le tarif pro Eurostat n'est pas un proxy défendable (l'itinérance se surfacture de 30-50 % au-dessus du pro) ; une série consolidée (barèmes opérateurs) est attendue pour activer ce scénario sans risque pour la crédibilité.",
      "sources": [
        "electricite (CRE résidentiel)",
        "carburants",
        "ADEME"
      ]
    },
    "tco_annuel": {
      "status": "partial",
      "reference_km_par_an": 15000,
      "thermique": {
        "energie": {
          "value": 1632,
          "unit": "€/an",
          "measured": true,
          "source": "pipeline (carburants/electricite × ADEME)"
        },
        "maintenance": {
          "value": 535,
          "unit": "€/an",
          "measured": false,
          "source": "Roole Data / ADEME (écart ~30 % favorable au VE)",
          "as_of": "2026-07-03",
          "next_review": "2026-10-01",
          "sourced": true
        },
        "assurance": {
          "value": 720,
          "unit": "€/an",
          "measured": false,
          "source": "France Assureurs (étude 11/2025, 1,9 M véhicules) + comparateurs (secondaire)",
          "as_of": "2026-07-03",
          "next_review": "2026-10-01",
          "sourced": true
        },
        "decote": {
          "value": 6.8,
          "unit": "%/an",
          "measured": false,
          "source": "AAA Data pour Avere-France/Mobilians (T1 2025) + TCO Scope (poste dépréciation)",
          "as_of": "2026-07-03",
          "next_review": "2026-10-01",
          "sourced": true
        },
        "leasing": {
          "value": null,
          "unit": "€/mois",
          "measured": false,
          "source": "Arval Mobility Observatory — TCO Scope 15e éd. (2026, base 48 mois / 100 000 km)",
          "as_of": "2026-07-03",
          "next_review": "2027-01-01",
          "sourced": false
        },
        "subtotal_mesurable": {
          "value": 2887,
          "unit": "€/an",
          "comprend": "énergie (mesurée) + maintenance + assurance (paramétrées sourcées)",
          "hors": "décote € (taux × prix véhicule : prix TODO) et loyer LLD (structurel)"
        }
      },
      "electrique": {
        "energie": {
          "value": 807,
          "unit": "€/an",
          "measured": true,
          "source": "pipeline (carburants/electricite × ADEME)"
        },
        "maintenance": {
          "value": 381,
          "unit": "€/an",
          "measured": false,
          "source": "Roole Data / ADEME (écart ~30 % favorable au VE)",
          "as_of": "2026-07-03",
          "next_review": "2026-10-01",
          "sourced": true
        },
        "assurance": {
          "value": 805,
          "unit": "€/an",
          "measured": false,
          "source": "France Assureurs (étude 11/2025, 1,9 M véhicules) + comparateurs (secondaire)",
          "as_of": "2026-07-03",
          "next_review": "2026-10-01",
          "sourced": true
        },
        "decote": {
          "value": 11.4,
          "unit": "%/an",
          "measured": false,
          "source": "AAA Data pour Avere-France/Mobilians (T1 2025) + TCO Scope",
          "as_of": "2026-07-03",
          "next_review": "2026-10-01",
          "sourced": true
        },
        "leasing": {
          "value": null,
          "unit": "€/mois",
          "measured": false,
          "source": "Arval Mobility Observatory — TCO Scope 15e éd. (2026)",
          "as_of": "2026-07-03",
          "next_review": "2027-01-01",
          "sourced": false
        },
        "subtotal_mesurable": {
          "value": 1993,
          "unit": "€/an",
          "comprend": "énergie (mesurée) + maintenance + assurance (paramétrées sourcées)",
          "hors": "décote € (taux × prix véhicule : prix TODO) et loyer LLD (structurel)"
        }
      },
      "total": {
        "thermique": null,
        "electrique": null
      },
      "method": "TCO annuel pour 15 000 km/an. Décomposition mesuré vs paramétré : l'énergie est MESURÉE par le pipeline chaque trimestre (carburants/électricité) ; la maintenance, l'assurance, la décote et le loyer LLD sont des PARAMÈTRES ANNUELS versionnés (tco_parameters.json). Le sous-total mesurable (énergie + maintenance + assurance) est publié ; le total complet attend la monétisation de la décote (prix véhicule de référence à sourcer). Le loyer LLD est exclusif de la décote (non sommé).",
      "decomposition_note": "V1 : énergie mesurée + maintenance/assurance paramétrées sourcées (Roole/ADEME, France Assureurs) ; décote publiée en TAUX (monétisation € en attente du prix véhicule) ; loyer LLD structurel (TCO Scope Arval). Total complet dès sourcement du prix véhicule.",
      "sources": [
        "carburants",
        "electricite",
        "ADEME",
        "tco_parameters.json"
      ]
    },
    "surcout_hivernal": {
      "status": "indisponible",
      "blockers": [
        "meteo (températures régionales mensuelles non agrégées — voir fetch_meteo)"
      ],
      "penalite_froid_sourced": true,
      "courbe": [
        {
          "temp_min_c": 15,
          "temp_max_c": null,
          "surconso_pct": 0
        },
        {
          "temp_min_c": 5,
          "temp_max_c": 15,
          "surconso_pct": 15
        },
        {
          "temp_min_c": 0,
          "temp_max_c": 5,
          "surconso_pct": 25
        },
        {
          "temp_min_c": null,
          "temp_max_c": 0,
          "surconso_pct": 35
        }
      ],
      "method": "Surcoût au 100 km corrigé de la température régionale du trimestre = coût élec pro × (1 + surconso_pct(T_région)) via la courbe penalite_froid par paliers (+0 % > 15 °C, +15 % 5-15 °C, +25 % 0-5 °C, +35 % < 0 °C). Sorties prévues : écart été/hiver national + déclinaison régionale.",
      "note": "Indicateur saisonnier différenciant chaque édition. La courbe penalite_froid est désormais sourcée (AAA / NAF / ADEME) ; ne manque que l'agrégation des températures régionales (fetch_meteo KO en V1) pour activer le calcul.",
      "sources": [
        "meteo (Météo-France)",
        "tco_parameters.json (penalite_froid)"
      ]
    },
    "bornes": {
      "status": "ok",
      "national": {
        "stations": 63946,
        "points_de_charge": {
          "value": 160138,
          "unit": "points",
          "sources": [
            "irve (Etalab)"
          ],
          "method": "Somme des PDC du fichier consolidé IRVE."
        },
        "puissance_mw": {
          "value": 9537.7,
          "unit": "MW",
          "sources": [
            "irve (Etalab)"
          ],
          "method": "Somme des puissances nominales."
        },
        "puissance_mediane_kw": {
          "value": 22,
          "unit": "kW",
          "sources": [
            "irve (Etalab)"
          ],
          "method": "Médiane des puissances nominales par PDC — point typique (parc majoritairement AC 7-22 kW, médiane ~22 kW)."
        },
        "puissance_moyenne_kw": {
          "value": 59.7,
          "unit": "kW",
          "sources": [
            "irve (Etalab)"
          ],
          "method": "Moyenne des puissances nominales par PDC — tirée vers le haut par la charge rapide DC (queue ≥150 kW)."
        }
      },
      "by_region": [
        {
          "region": "Auvergne-Rhône-Alpes",
          "stations": 8208,
          "points_de_charge": 19509,
          "puissance_kw": 1443607.2,
          "stations_avec_tarif": 2807,
          "stations_gratuites": 32,
          "croissance_pdc_pct": null
        },
        {
          "region": "Bourgogne-Franche-Comté",
          "stations": 2361,
          "points_de_charge": 6378,
          "puissance_kw": 548915.2,
          "stations_avec_tarif": 829,
          "stations_gratuites": 6,
          "croissance_pdc_pct": null
        },
        {
          "region": "Bretagne",
          "stations": 2589,
          "points_de_charge": 6461,
          "puissance_kw": 426480.1,
          "stations_avec_tarif": 598,
          "stations_gratuites": 4,
          "croissance_pdc_pct": null
        },
        {
          "region": "Centre-Val de Loire",
          "stations": 3186,
          "points_de_charge": 6325,
          "puissance_kw": 474296.3,
          "stations_avec_tarif": 307,
          "stations_gratuites": 4,
          "croissance_pdc_pct": null
        },
        {
          "region": "Corse",
          "stations": 272,
          "points_de_charge": 710,
          "puissance_kw": 43427.3,
          "stations_avec_tarif": 90,
          "stations_gratuites": 4,
          "croissance_pdc_pct": null
        },
        {
          "region": "Grand Est",
          "stations": 5596,
          "points_de_charge": 13909,
          "puissance_kw": 954039,
          "stations_avec_tarif": 739,
          "stations_gratuites": 19,
          "croissance_pdc_pct": null
        },
        {
          "region": "Hauts-de-France",
          "stations": 4383,
          "points_de_charge": 12951,
          "puissance_kw": 834267,
          "stations_avec_tarif": 726,
          "stations_gratuites": 14,
          "croissance_pdc_pct": null
        },
        {
          "region": "Île-de-France",
          "stations": 8275,
          "points_de_charge": 27876,
          "puissance_kw": 1141684.3,
          "stations_avec_tarif": 2151,
          "stations_gratuites": 15,
          "croissance_pdc_pct": null
        },
        {
          "region": "Normandie",
          "stations": 4258,
          "points_de_charge": 9145,
          "puissance_kw": 519417.2,
          "stations_avec_tarif": 370,
          "stations_gratuites": 9,
          "croissance_pdc_pct": null
        },
        {
          "region": "Nouvelle-Aquitaine",
          "stations": 7394,
          "points_de_charge": 18971,
          "puissance_kw": 1094381.9,
          "stations_avec_tarif": 2205,
          "stations_gratuites": 20,
          "croissance_pdc_pct": null
        },
        {
          "region": "Occitanie",
          "stations": 7778,
          "points_de_charge": 16477,
          "puissance_kw": 1047606.4,
          "stations_avec_tarif": 927,
          "stations_gratuites": 12,
          "croissance_pdc_pct": null
        },
        {
          "region": "Pays de la Loire",
          "stations": 3281,
          "points_de_charge": 7480,
          "puissance_kw": 488969.4,
          "stations_avec_tarif": 851,
          "stations_gratuites": 12,
          "croissance_pdc_pct": null
        },
        {
          "region": "Provence-Alpes-Côte d'Azur",
          "stations": 5763,
          "points_de_charge": 12863,
          "puissance_kw": 675288.7,
          "stations_avec_tarif": 1603,
          "stations_gratuites": 6,
          "croissance_pdc_pct": null
        },
        {
          "region": "Guadeloupe",
          "stations": 69,
          "points_de_charge": 164,
          "puissance_kw": 3104,
          "stations_avec_tarif": 1,
          "stations_gratuites": 0,
          "croissance_pdc_pct": null
        },
        {
          "region": "Martinique",
          "stations": 19,
          "points_de_charge": 39,
          "puissance_kw": 1153.2,
          "stations_avec_tarif": 3,
          "stations_gratuites": 0,
          "croissance_pdc_pct": null
        },
        {
          "region": "Guyane",
          "stations": 2,
          "points_de_charge": 3,
          "puissance_kw": 47.7,
          "stations_avec_tarif": 0,
          "stations_gratuites": 0,
          "croissance_pdc_pct": null
        },
        {
          "region": "La Réunion",
          "stations": 143,
          "points_de_charge": 441,
          "puissance_kw": 11660,
          "stations_avec_tarif": 5,
          "stations_gratuites": 0,
          "croissance_pdc_pct": null
        },
        {
          "region": "Mayotte",
          "stations": 0,
          "points_de_charge": 0,
          "puissance_kw": 0,
          "stations_avec_tarif": 0,
          "stations_gratuites": 0,
          "croissance_pdc_pct": null
        }
      ],
      "croissance_pdc_pct": null,
      "dedup_audit": "Dédup sur id_pdc_itinerance : 67094 doublon(s) supprimé(s) sur 227232 ligne(s) portant un id_pdc → 160138 PDC uniques.",
      "qualite_irve": {
        "duplicates_removed": 67094,
        "csv_rows": 227232,
        "unique_id_pdc": 160138,
        "watts_corrections": 1515,
        "high_power_excluded": 1922,
        "power_fill_rate_pct": 99.8
      }
    },
    "motorisations_immatriculations": {
      "status": "ok",
      "ventilation": [
        {
          "energie": "Diesel",
          "effectif": 19191086,
          "part_pourcentage": 48.3
        },
        {
          "energie": "Essence",
          "effectif": 16060755,
          "part_pourcentage": 40.4
        },
        {
          "energie": "Essence HNR",
          "effectif": 2110298,
          "part_pourcentage": 5.3
        },
        {
          "energie": "Electrique",
          "effectif": 1132361,
          "part_pourcentage": 2.9
        },
        {
          "energie": "Essence HR",
          "effectif": 684320,
          "part_pourcentage": 1.7
        },
        {
          "energie": "Gaz",
          "effectif": 335942,
          "part_pourcentage": 0.8
        },
        {
          "energie": "Diesel HNR",
          "effectif": 176374,
          "part_pourcentage": 0.4
        },
        {
          "energie": "Diesel HR",
          "effectif": 27033,
          "part_pourcentage": 0.1
        },
        {
          "energie": "Inconnu",
          "effectif": 2266,
          "part_pourcentage": 0
        },
        {
          "energie": "Hydrogène et autre ZE",
          "effectif": 1304,
          "part_pourcentage": 0
        },
        {
          "energie": "Gaz HNR",
          "effectif": 38,
          "part_pourcentage": 0
        },
        {
          "energie": "Gaz HR",
          "effectif": 10,
          "part_pourcentage": 0
        }
      ],
      "nature": "stock du parc (SDES)",
      "sources": [
        "parc (SDES)"
      ],
      "note": "Ventilation du STOCK de VP par motorisation (SDES, parc au 1er janvier) à défaut du FLUX d'immatriculations d'entreprise. C'est une part de parc cumulée, non un flux annuel — source de secours en attendant l'import AAA/PFA/Avere."
    },
    "point_de_bascule": {
      "status": "ok",
      "energie_seule": {
        "seuil_prix_kwh_pour_parite": 0.64,
        "prix_kwh_reel": 0.3165,
        "marge_kwh_avant_parite": 0.3235,
        "seuil_prix_gazole_pour_parite": 0.9276,
        "prix_gazole_reel": 1.8759,
        "verdict": "l'électrique reste moins cher"
      },
      "tco_complet": {
        "status": "indisponible",
        "note": "Variante TCO complet : indisponible tant que les composantes paramétrées du TCO (maintenance/assurance/décote/leasing) ne sont pas sourcées dans tco_parameters.json."
      },
      "method": "Point de bascule = prix de l'énergie à laquelle le coût électrique égale le thermique. Variante énergie seule : seuil_kWh = coût_gazole_100km ÷ conso_élec ; variante TCO complet : seuil intégrant maintenance/assurance/décote/leasing. Indicateur « rendez-vous » suivi d'édition en édition.",
      "sources": [
        "carburants",
        "electricite",
        "ADEME"
      ]
    },
    "classement_readiness": {
      "status": "partial",
      "ranking": [
        {
          "region": "Bretagne",
          "score": 100,
          "composantes": {
            "densite_pdc_pour_1000_vp_vul": 54.21,
            "prix_energie": 100,
            "croissance": null
          },
          "pdc": 6461,
          "densite_pdc_pour_1000_vp_vul": 2.473,
          "croissance_pdc_pct": null,
          "prix_gazole_median": 1.829,
          "rang": 1
        },
        {
          "region": "Pays de la Loire",
          "score": 90.7,
          "composantes": {
            "densite_pdc_pour_1000_vp_vul": 57.35,
            "prix_energie": 90.68,
            "croissance": null
          },
          "pdc": 7480,
          "densite_pdc_pour_1000_vp_vul": 2.614,
          "croissance_pdc_pct": null,
          "prix_gazole_median": 1.844,
          "rang": 2
        },
        {
          "region": "Nouvelle-Aquitaine",
          "score": 83.8,
          "composantes": {
            "densite_pdc_pour_1000_vp_vul": 87.3,
            "prix_energie": 83.85,
            "croissance": null
          },
          "pdc": 18971,
          "densite_pdc_pour_1000_vp_vul": 3.961,
          "croissance_pdc_pct": null,
          "prix_gazole_median": 1.855,
          "rang": 3
        },
        {
          "region": "Normandie",
          "score": 80.1,
          "composantes": {
            "densite_pdc_pour_1000_vp_vul": 80.7,
            "prix_energie": 80.12,
            "croissance": null
          },
          "pdc": 9145,
          "densite_pdc_pour_1000_vp_vul": 3.664,
          "croissance_pdc_pct": null,
          "prix_gazole_median": 1.861,
          "rang": 4
        },
        {
          "region": "Hauts-de-France",
          "score": 78.3,
          "composantes": {
            "densite_pdc_pour_1000_vp_vul": 71.36,
            "prix_energie": 78.26,
            "croissance": null
          },
          "pdc": 12951,
          "densite_pdc_pour_1000_vp_vul": 3.244,
          "croissance_pdc_pct": null,
          "prix_gazole_median": 1.864,
          "rang": 5
        },
        {
          "region": "Centre-Val de Loire",
          "score": 77.6,
          "composantes": {
            "densite_pdc_pour_1000_vp_vul": 72.34,
            "prix_energie": 77.64,
            "croissance": null
          },
          "pdc": 6325,
          "densite_pdc_pour_1000_vp_vul": 3.288,
          "croissance_pdc_pct": null,
          "prix_gazole_median": 1.865,
          "rang": 6
        },
        {
          "region": "Occitanie",
          "score": 75.2,
          "composantes": {
            "densite_pdc_pour_1000_vp_vul": 80.76,
            "prix_energie": 75.16,
            "croissance": null
          },
          "pdc": 16477,
          "densite_pdc_pour_1000_vp_vul": 3.667,
          "croissance_pdc_pct": null,
          "prix_gazole_median": 1.869,
          "rang": 7
        },
        {
          "region": "Grand Est",
          "score": 67.1,
          "composantes": {
            "densite_pdc_pour_1000_vp_vul": 77.7,
            "prix_energie": 67.08,
            "croissance": null
          },
          "pdc": 13909,
          "densite_pdc_pour_1000_vp_vul": 3.529,
          "croissance_pdc_pct": null,
          "prix_gazole_median": 1.882,
          "rang": 8
        },
        {
          "region": "Provence-Alpes-Côte d'Azur",
          "score": 66.5,
          "composantes": {
            "densite_pdc_pour_1000_vp_vul": 78.03,
            "prix_energie": 66.46,
            "croissance": null
          },
          "pdc": 12863,
          "densite_pdc_pour_1000_vp_vul": 3.544,
          "croissance_pdc_pct": null,
          "prix_gazole_median": 1.883,
          "rang": 9
        },
        {
          "region": "Auvergne-Rhône-Alpes",
          "score": 62.7,
          "composantes": {
            "densite_pdc_pour_1000_vp_vul": 72.65,
            "prix_energie": 62.73,
            "croissance": null
          },
          "pdc": 19509,
          "densite_pdc_pour_1000_vp_vul": 3.302,
          "croissance_pdc_pct": null,
          "prix_gazole_median": 1.889,
          "rang": 10
        },
        {
          "region": "Bourgogne-Franche-Comté",
          "score": 56.5,
          "composantes": {
            "densite_pdc_pour_1000_vp_vul": 66.49,
            "prix_energie": 56.52,
            "croissance": null
          },
          "pdc": 6378,
          "densite_pdc_pour_1000_vp_vul": 3.025,
          "croissance_pdc_pct": null,
          "prix_gazole_median": 1.899,
          "rang": 11
        },
        {
          "region": "Île-de-France",
          "score": 56.5,
          "composantes": {
            "densite_pdc_pour_1000_vp_vul": 100,
            "prix_energie": 56.52,
            "croissance": null
          },
          "pdc": 27876,
          "densite_pdc_pour_1000_vp_vul": 4.532,
          "croissance_pdc_pct": null,
          "prix_gazole_median": 1.899,
          "rang": 12
        },
        {
          "region": "Corse",
          "score": 0,
          "composantes": {
            "densite_pdc_pour_1000_vp_vul": 56.66,
            "prix_energie": 0,
            "croissance": null
          },
          "pdc": 710,
          "densite_pdc_pour_1000_vp_vul": 2.583,
          "croissance_pdc_pct": null,
          "prix_gazole_median": 1.99,
          "rang": 13
        }
      ],
      "ponderation": {
        "densite": 0.45,
        "prix_energie": 0.3,
        "croissance": 0.25
      },
      "composantes_manquantes": [
        "pénalité climatique (meteo + penalite_froid)"
      ],
      "denominateur_parc": "Parc VP+VUL régional SDES au 1er janvier 2025 (stock annuel, réutilisé 4 éditions ; re-vérification octobre). Densité = PDC pour 1 000 VP+VUL.",
      "method": "Score composite normalisé (min-max base 100) par région, moyenne pondérée. Composantes : densité (PDC pour 1 000 VP+VUL = rapportée au PARC régional SDES, jamais à la population/surface), prix énergie (gazole médian, inversé), croissance trimestrielle des PDC. La pénalité climatique sera ajoutée quand météo + penalite_froid seront sourcés. Pensé pour un angle presse régionale (une région = un article local).",
      "sources": [
        "irve (Etalab)",
        "parc (SDES)",
        "carburants",
        "tco_parameters.json"
      ]
    },
    "compte_a_rebours_lom": {
      "status": "indisponible",
      "blockers": [
        "lom_objectifs (paliers TODO: à sourcer sur Légifrance)"
      ],
      "method": "Écart entre la part réelle de véhicules à faibles émissions dans les immatriculations d'entreprise et la trajectoire imposée par la loi LOM (code des transports). Sortie prévue : « au rythme actuel, l'objectif [année] sera atteint/manqué de X points ».",
      "note": "Paliers LOM à reporter depuis Légifrance (ne pas citer de mémoire) et immatriculations entreprises à fournir (import manuel).",
      "sources": [
        "immatriculations",
        "tco_parameters.json (lom_objectifs)"
      ]
    },
    "indice_greenway": {
      "value": 100,
      "base_edition": "2026-T3",
      "status": "ok",
      "ponderation": {
        "recharge": 0.35,
        "cout": 0.35,
        "verdissement": 0.3
      },
      "components_raw": {
        "recharge": 160138,
        "cout": 2.0223,
        "verdissement": 2.9
      },
      "components_index": {
        "recharge": 100,
        "cout": 100,
        "verdissement": 100
      },
      "method": "Indice synthétique base 100 (première édition = base). Composantes normalisées, moyenne pondérée (cf. pondération).",
      "sources": [
        "carburants",
        "electricite",
        "irve",
        "ADEME"
      ]
    }
  },
  "key_findings": [
    "Au T3 2026, rouler à l'électrique coûte 5.38 € / 100 km contre 10.88 € au gazole en France — soit 5.50 € de moins au 100 km.",
    "Recharger sa voiture d'entreprise à domicile en heures creuses coûte environ 34 €/mois (1 250 km) contre 136 €/mois au gazole — l'écart que remboursent les flottes en note de frais.",
    "Point de bascule : l'électrique reste moins cher tant que le kWh reste sous 0.640 € (réel 0.317 €) — l'électrique reste moins cher.",
    "Le réseau de recharge public français compte 160 138 points de charge (IRVE).",
    "Classement régional de readiness : reporté au T4 — la densité de bornes est désormais sourcée (parc VP+VUL SDES), mais la croissance (N vs N-1) et la pénalité climatique régionale manquent encore.",
    "TCO partiel (énergie + entretien + assurance, 15 000 km/an) : ~2887 €/an thermique vs ~1993 €/an électrique — décote et loyer LLD exclus (à sourcer) pour le total complet."
  ],
  "sources": [
    {
      "source": "carburants",
      "status": "ok",
      "url": "https://donnees.roulez-eco.fr/opendata/instantane",
      "licence": "Données ouvertes — flux instantané prix-carburants.gouv.fr (ministère de l'Économie)",
      "nb_records": 33792,
      "error": null
    },
    {
      "source": "irve",
      "status": "ok",
      "url": "https://www.data.gouv.fr/api/1/datasets/fichier-consolide-des-bornes-de-recharge-pour-vehicules-electriques/",
      "licence": "Licence Ouverte v2.0 (Etalab / data.gouv.fr)",
      "nb_records": 227232,
      "error": null
    },
    {
      "source": "electricite",
      "status": "ok",
      "url": "https://ec.europa.eu/eurostat/databrowser/view/nrg_pc_205/default/table",
      "licence": "Eurostat — données réutilisables gratuitement (règles Eurostat, équivalent CC-BY-4.0) / CRE — open data Marché de détail (tarif réglementé de vente)",
      "nb_records": 2,
      "error": null
    },
    {
      "source": "meteo",
      "status": "ko",
      "url": "https://meteo.data.gouv.fr/",
      "licence": "Météo-France — données publiques (open data, licence ouverte)",
      "nb_records": 0,
      "error": "Aucun jeu de données de température moyenne mensuelle *régionale* exploitable en open data direct (recherche data.gouv / meteo.data.gouv.fr → 0 résultat(s), 0 candidat(s) utilisable(s)). L'indicateur 'surcoût hivernal' reste indisponible tant que (a) cette source n'est pas agrégée et (b) le paramètre penalite_froid n'est pas sourcé. Plan V2 : agréger les températures quotidiennes par station Météo-France (postes + observations) puis par région."
    },
    {
      "source": "parc",
      "status": "ok",
      "url": "https://www.data.gouv.fr/api/1/datasets/parc-de-vehicules-routiers/",
      "licence": "SDES — Parc de véhicules routiers (data.gouv.fr / Dido SDES), licence Ouverte v2.0 (Etalab)",
      "nb_records": 18,
      "error": null
    },
    {
      "source": "immatriculations",
      "status": "ko",
      "url": "https://www.pfa-auto.fr/",
      "licence": "Source primaire manuelle (AAA/PFA, SDES ou Avere-France) — à valider",
      "nb_records": 0,
      "error": "Aucun import CSV fourni. Déposer manual/immatriculations_2026-T3.csv (cf. docstring) puis relancer."
    }
  ]
}