LOT P1.0 : paquet @transformer/moteurs v0.1.0

Extraction du cœur autonomie de calculs.trans-former.fr (12 modules, sans
singleton, couplages sans mutation, console derrière debug), découpage en trois
moteurs d'axe + intégrateur (mode global = calculs, mode par_axe = plateforme),
moteurs commun.contexte (Corse 2A/2B, DOM 97x corrigés) et commun.geometrie,
table des coefficients harmonisés (docs/CONSTANTES.md pour Jules, R-7),
validation structurelle des données (schemas/), tests hors ligne : 28 assertions
d'origine + épingle générée depuis le code d'astro-pro + écarts d'harmonisation
figés + contrat des moteurs. dist/ committé.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019UBHYPdeQYy2m1GVJp6b12
This commit is contained in:
Jules
2026-09-28 17:06:49 +02:00
co-authored by Claude Fable 5.1
commit 69809df5d1
123 changed files with 13225 additions and 0 deletions
+14
View File
@@ -0,0 +1,14 @@
# fixtures/ — jeux de données figés et datés
Les tests tournent hors ligne sur ces copies. Aucun fichier d'ici n'est importé par `src/` : les moteurs reçoivent leurs données en paramètre. Un consommateur peut lire `algo-config.json` et `profils-reference.json` par `@transformer/moteurs/fixtures/<fichier>` (exposés par `exports`).
| Fichier | Contenu | Origine | Date de l'instantané |
|---|---|---|---|
| `postes.json` (14 lignes) · `options.json` (85) · `france_climat.json` (101, dont 2A, 2B, 971-976) | tables du simulateur autonomie, **prix compris** (ce sont des données de test, jamais des constantes du paquet) | `astro-pro/tests/fixtures/` (copie de la publication `calculs.trans-former.fr/calculs/data/`) | 2026-08-16 |
| `algo-config.json` | heuristiques de conception du noyau (poids, modulateurs, matrices, tolérances, alias, poids des postes) ; les clés `orientation_factors` et `dju_defaults_by_zone` y figurent encore mais **ne sont plus lues** (les coefficients vivent dans `src/commun/coefficients.ts`) | `astro-pro/src/lib/autonomie/algo-config.json` | 2026-09-28 (inchangé depuis mai 2026) |
| `profils-reference.json` | les trois profils de calibrage A / B / C | `astro-pro/tests/profils-reference.json` | 2026-09-28 |
| `coefficients-2026-05.json` | jeu de coefficients **d'origine** (valeurs du code de calculs), injecté par le test de non-régression | relevé sur `astro-pro` master `c628cf9` | 2026-09-28 |
| `sorties-origine-2026-09-28.json` | sorties de `selectionner()` **d'origine** sur les trois profils (pipeline complet + mode un seul axe), générées par `scripts/pin-origine.mjs` depuis le code d'astro-pro | `astro-pro` master `c628cf9` | 2026-09-28 |
| `ecarts-harmonisation-2026-09-28.json` | écarts de sélection et de taux entre coefficients d'origine et table harmonisée (`npm run ecarts -- --ecrire <date>`) ; relus par Jules avec `docs/CONSTANTES.md` | ce paquet | 2026-09-28 |
Refiger une épingle est un acte volontaire : on relit `docs/CONSTANTES.md`, on relance le script avec la date du jour, on met à jour les tests qui la citent, et on l'écrit dans le message de commit.
+186
View File
@@ -0,0 +1,186 @@
{
"poids_axes_base": {
"eau": 40,
"energie": 40,
"alim": 20
},
"modulateurs": {
"toit_petit_seuil_m2": 30,
"toit_petit_delta": {
"energie": -15,
"eau": 5,
"alim": 10
},
"famille_grande_seuil": 5,
"famille_grande_delta": {
"eau": 10,
"alim": 5,
"energie": -15
},
"biogeo_med_delta": {
"eau": 10
},
"pluvio_basse_seuil_mm": 600,
"pluvio_basse_delta": {
"eau": 5
},
"parcelle_petite_seuil_m2": 300,
"parcelle_petite_alim_zero": true,
"parcelle_grande_seuil_m2": 1000,
"parcelle_grande_temps3_delta": {
"alim": 10
}
},
"adequation_weights": {
"_comment": "Cf. V2-algo-spec-FONCTIONS.md §1.3 + codes postes BDD post-M1a",
"eau_captage": {
"pluviometrie": 30,
"surface_toit": 30,
"taille_foyer": 10,
"temps_dispo": 5
},
"eau_stockage": {
"pluviometrie": 25,
"taille_foyer": 25,
"surface_parcelle": 5,
"temps_dispo": 5
},
"eau_filtration": {
"taille_foyer": 15,
"temps_dispo": 10
},
"eau_distribution": {
"taille_foyer": 20,
"temps_dispo": 5
},
"eau_eg_epuration": {
"taille_foyer": 20,
"surface_parcelle": 30,
"temps_dispo": 5
},
"energie_pv": {
"climat_chauffage": 5,
"taille_foyer": 10,
"surface_toit": 35,
"orientation_toit": 25,
"temps_dispo": 5
},
"energie_solaire_th": {
"climat_chauffage": 5,
"taille_foyer": 30,
"temps_dispo": 5
},
"energie_chauffage_bois": {
"climat_chauffage": 35,
"taille_foyer": 15,
"temps_dispo": 10
},
"energie_emetteurs": {
"taille_foyer": 20,
"temps_dispo": 5
},
"energie_pilotage": {
"taille_foyer": 10,
"temps_dispo": 5
},
"alim_etude_fonciere": {
"surface_parcelle": 20,
"temps_dispo": 5
},
"alim_strate_haute": {
"climat_meridional": 5,
"surface_parcelle": 25,
"taille_foyer": 5,
"temps_dispo": 10
},
"alim_strate_moyenne": {
"surface_parcelle": 15,
"metres_haie_possibles": 30,
"temps_dispo": 10
},
"alim_strate_basse": {
"climat_meridional": 10,
"surface_parcelle": 30,
"taille_foyer": 10,
"temps_dispo": 15
}
},
"orientation_factors": {
"sud": 1.0,
"sud-est": 0.93,
"sud-ouest": 0.93,
"est": 0.78,
"ouest": 0.78,
"nord": 0.4
},
"dju_defaults_by_zone": {
"H1": 2800,
"H2": 2200,
"H3": 1500
},
"tolerances": {
"budget_overrun_pct": 5,
"budget_underspend_pct": 5,
"tolerance_par_poste_pct": 20
},
"bonus_malus": {
"boost_diy_temps3": 1.3,
"malus_pose3_temps1": 0.5,
"malus_non_accessible_fr": 0.6
},
"couplages_alias": {
"stherm_ballon_tampon": "th_ballon_500",
"emetteur_pcbt": "emet_pcbt",
"batterie_min_10kwh": "pv_batterie_lifepo4_5",
"cuve_decantation": "eg_separation_source",
"stockage_cuve_pehd_horsol": "stockage_pehd_horssol_5m3",
"distrib_kit_double_reseau": "distrib_kit_double_reseau",
"pv_batterie_lifepo4": "pv_batterie_lifepo4_5",
"pv_kit_string": "pv_kit_3kwc_string",
"pv_onduleur_hybride": "pv_onduleur_hybride_5kw"
},
"postes_poids": {
"eau_captage": {
"poids": 15
},
"eau_filtration": {
"poids": 15
},
"eau_stockage": {
"poids": 40
},
"eau_distribution": {
"poids": 20
},
"eau_eg_epuration": {
"poids": 10
},
"energie_pv": {
"poids": 35
},
"energie_solaire_th": {
"poids": 15
},
"energie_chauffage_bois": {
"poids": 30
},
"energie_emetteurs": {
"poids": 10
},
"energie_pilotage": {
"poids": 10
},
"alim_etude_fonciere": {
"poids": 10
},
"alim_strate_haute": {
"poids": 30
},
"alim_strate_moyenne": {
"poids": 30
},
"alim_strate_basse": {
"poids": 30
}
}
}
+22
View File
@@ -0,0 +1,22 @@
{
"_commentaire": "Jeu de coefficients D'ORIGINE : valeurs du code de calculs.trans-former.fr (astro-pro master c628cf9, relevé le 2026-09-28 ; code écrit en mai 2026). Sert UNIQUEMENT au test de non-régression (le noyau extrait rend la même sélection que l'original). La référence est src/commun/coefficients.ts (table harmonisée) — docs/CONSTANTES.md donne, ligne à ligne, ancienne valeur → retenue.",
"captage_rendement": { "valeur": 0.7, "source": "scoreurs.js score_pluviometrie (0,7) ; taux.js portait 0,8 ; V1 bioclimatique 0,85", "date": "2026-05-01" },
"captage_rendement_par_toiture": { "valeur": { "tuile": 0.85, "ardoise": 0.85, "gravillonnee": 0.5, "vegetalisee": 0.3 }, "source": "absent du code (01-recherche-eau §7 n°6)", "date": "2026-04-28" },
"besoin_eau_l_j_pers": { "valeur": 150, "source": "taux.js BESOIN_EAU_L_PERS_AN = 54 750", "date": "2026-05-01" },
"part_eau_substituable": { "valeur": 0.7, "source": "taux.js PART_SUBSTITUABLE", "date": "2026-05-01" },
"orientation_pv": { "valeur": { "sud": 1.0, "sud-est": 0.93, "sud-ouest": 0.93, "est": 0.78, "ouest": 0.78, "nord": 0.4 }, "source": "calibrage.js ORIENTATION_FACTORS (dupliqué dans algo-config.json orientation_factors, non lu)", "date": "2026-05-01" },
"productible_pv_kwh_kwc": { "valeur": { "par": "zone_biogeo_code", "table": { "1": 1050, "2": 1180, "3": 1280, "4": 1100, "5": 1480, "6": 1230, "7": 1280, "8": 1550 }, "defaut": 1200 }, "source": "constants.js FALLBACK_PVGIS (table par zone biogéographique) ; pvgis.js défaut 1 200", "date": "2026-05-01" },
"autoconso_sans_batterie": { "valeur": 1.0, "source": "absent du code : taux.js comparait la production brute au besoin (équivaut à un taux de 1)", "date": "2026-05-01" },
"autoconso_avec_batterie_10kwh": { "valeur": 1.0, "source": "absent du code (idem)", "date": "2026-05-01" },
"besoin_elec_kwh_pers_an": { "valeur": 1000, "source": "taux.js BESOIN_ELEC_KWH_PERS_AN", "date": "2026-05-01" },
"dju_defaut_par_classe_rt": { "valeur": { "H1": 2800, "H2": 2200, "H3": 1500 }, "source": "calibrage.js DJU_DEFAULTS_BY_ZONE", "date": "2026-05-01" },
"ml_haie_par_pers": { "valeur": 25, "source": "taux.js ML_HAIE_PAR_PERS", "date": "2026-05-01" },
"contexte_defaut": { "valeur": { "zone_rt": "H2a", "zone_biogeo_code": 4, "pluviometrie_mm": 800, "dju": 2200 }, "source": "algo.js deriveContexte (défauts)", "date": "2026-05-01" },
"geometrie_ratio_shab_emprise": { "valeur": 1.0, "source": "V1 autoconstruction : shab = S (plain-pied, aucune correction)", "date": "2025-01-01" },
"geometrie_ratio_vitrage_shab": { "valeur": 0.16666666666666666, "source": "V1 autoconstruction : vit = S / 6", "date": "2025-01-01" },
"geometrie_hauteur_etage_m": { "valeur": 2.5, "source": "absent du code (Z saisi par l'utilisateur)", "date": "2025-01-01" },
"geometrie_facteur_perimetre": { "valeur": 1.3, "source": "V1 autoconstruction : perimetre = √(S × 1,3) × 4", "date": "2025-01-01" },
"geometrie_part_mur_mitoyen": { "valeur": 0.25, "source": "absent du code", "date": "2025-01-01" },
"geometrie_majoration_toiture": { "valeur": 1.05, "source": "V1 autoconstruction : toiture = S / cos α × 1,05", "date": "2025-01-01" },
"geometrie_pente_defaut_deg": { "valeur": 30, "source": "absent du code (A saisi par l'utilisateur)", "date": "2025-01-01" }
}
@@ -0,0 +1,535 @@
{
"_commentaire": "Écarts de sélection et de taux entre le jeu de coefficients d'origine et la table harmonisée, sur les trois profils de référence, figés le 2026-09-28. Un changement de coefficient ou de code qui modifie ces écarts casse test/decoupage.test.mjs : c'est voulu, on relit CONSTANTES.md avant de refiger.",
"date": "2026-09-28",
"ecarts": [
{
"profil": "A — Frugal urbain",
"mode": "taux (par_axe)",
"axe": "eau",
"origine": "23 %",
"harmonisee": "27 %"
},
{
"profil": "A — Frugal urbain",
"mode": "taux (global)",
"axe": "eau",
"origine": "23 %",
"harmonisee": "27 %"
},
{
"profil": "A — Frugal urbain",
"mode": "taux (par_axe)",
"axe": "energie",
"origine": "22 %",
"harmonisee": "6 %"
},
{
"profil": "A — Frugal urbain",
"mode": "taux (global)",
"axe": "energie",
"origine": "22 %",
"harmonisee": "6 %"
},
{
"profil": "B — Famille moyenne",
"mode": "taux (par_axe)",
"axe": "eau",
"origine": "24 %",
"harmonisee": "27 %"
},
{
"profil": "B — Famille moyenne",
"mode": "taux (global)",
"axe": "eau",
"origine": "24 %",
"harmonisee": "27 %"
},
{
"profil": "B — Famille moyenne",
"mode": "taux (par_axe)",
"axe": "energie",
"origine": "100 %",
"harmonisee": "80 %"
},
{
"profil": "C — Autonomie large",
"mode": "taux (par_axe)",
"axe": "eau",
"origine": "20 %",
"harmonisee": "23 %"
},
{
"profil": "C — Autonomie large",
"mode": "taux (global)",
"axe": "eau",
"origine": "20 %",
"harmonisee": "23 %"
},
{
"profil": "C — Autonomie large",
"mode": "taux (par_axe)",
"axe": "energie",
"origine": "10 %",
"harmonisee": "3 %"
},
{
"profil": "C — Autonomie large",
"mode": "taux (global)",
"axe": "energie",
"origine": "100 %",
"harmonisee": "63 %"
}
],
"lignes": [
{
"profil": "A — Frugal urbain",
"jeu": "origine",
"global": {
"total": 15180,
"status": "OK",
"typologies": {
"eau": [
"captage_descente_directe",
"filtration_particulaire_simple",
"stockage_souple_5m3",
"distrib_gravitaire",
"eg_noue",
"eg_pedoepuration",
"eg_fpv_autoconstruit"
],
"energie": [
"pv_batterie_plomb_5",
"th_ballon_500",
"bois_poele_double",
"emet_vannes_thermo",
"pil_home_assistant",
"bois_conduit_fumee"
],
"alim": []
},
"taux": {
"eau": 23,
"energie": 22,
"alim": null
}
},
"par_axe": {
"eau": {
"typologies": [
"captage_descente_directe",
"filtration_particulaire_simple",
"stockage_souple_5m3",
"distrib_gravitaire",
"eg_pedoepuration",
"distrib_kit_double_reseau",
"eg_fpv_autoconstruit"
],
"sous_total": 8130,
"status": "BUDGET_INSUFFISANT",
"taux": 23
},
"energie": {
"typologies": [
"pv_kit_beem_balcon",
"th_ballon_500",
"bois_poele_granules",
"emet_radiateur_acier",
"pil_routeur_ecs",
"bois_conduit_fumee"
],
"sous_total": 7110,
"status": "OK",
"taux": 22
},
"alim": {
"typologies": [],
"sous_total": 0,
"status": "OK",
"taux": null
}
}
},
{
"profil": "A — Frugal urbain",
"jeu": "harmonisee",
"global": {
"total": 15180,
"status": "OK",
"typologies": {
"eau": [
"captage_descente_directe",
"filtration_particulaire_simple",
"stockage_souple_5m3",
"distrib_gravitaire",
"eg_noue",
"eg_pedoepuration",
"eg_fpv_autoconstruit"
],
"energie": [
"pv_batterie_plomb_5",
"th_ballon_500",
"bois_poele_double",
"emet_vannes_thermo",
"pil_home_assistant",
"bois_conduit_fumee"
],
"alim": []
},
"taux": {
"eau": 27,
"energie": 6,
"alim": null
}
},
"par_axe": {
"eau": {
"typologies": [
"captage_descente_directe",
"filtration_particulaire_simple",
"stockage_souple_5m3",
"distrib_gravitaire",
"eg_pedoepuration",
"distrib_kit_double_reseau",
"eg_fpv_autoconstruit"
],
"sous_total": 8130,
"status": "BUDGET_INSUFFISANT",
"taux": 27
},
"energie": {
"typologies": [
"pv_kit_beem_balcon",
"th_ballon_500",
"bois_poele_granules",
"emet_radiateur_acier",
"pil_routeur_ecs",
"bois_conduit_fumee"
],
"sous_total": 7110,
"status": "OK",
"taux": 6
},
"alim": {
"typologies": [],
"sous_total": 0,
"status": "OK",
"taux": null
}
}
},
{
"profil": "B — Famille moyenne",
"jeu": "origine",
"global": {
"total": 36661,
"status": "OK",
"typologies": {
"eau": [
"captage_descente_directe",
"filtration_particulaire_simple",
"stockage_souple_5m3",
"distrib_gravitaire",
"eg_noue",
"eg_pedoepuration",
"eg_fpv_autoconstruit"
],
"energie": [
"pv_monitoring",
"th_ballon_500",
"bois_poele_masse_indus",
"emet_seche_serviette",
"pil_delesteur",
"bois_conduit_fumee"
],
"alim": [
"etude_topo_ensoleil",
"haute_fruit_coque",
"moy_petit_fruit_3L",
"basse_compost_3bacs"
]
},
"taux": {
"eau": 24,
"energie": null,
"alim": null
}
},
"par_axe": {
"eau": {
"typologies": [
"captage_descente_directe",
"filtration_particulaire_simple",
"stockage_pehd_enterree_5m3",
"distrib_gravitaire",
"eg_pedoepuration",
"eg_pedoepuration"
],
"sous_total": 14645,
"status": "OK",
"taux": 24
},
"energie": {
"typologies": [
"pv_kit_3kwc_string",
"th_ballon_500",
"bois_poele_granules",
"emet_seche_serviette",
"pil_delesteur",
"bois_conduit_fumee"
],
"sous_total": 13455,
"status": "OK",
"taux": 100
},
"alim": {
"typologies": [
"etude_analyse_labo",
"haute_plantation_pose_pro",
"moy_haie_biodiv_complete",
"basse_planche_bec",
"basse_planche_bec"
],
"sous_total": 6985,
"status": "OK",
"taux": 50
}
}
},
{
"profil": "B — Famille moyenne",
"jeu": "harmonisee",
"global": {
"total": 36661,
"status": "OK",
"typologies": {
"eau": [
"captage_descente_directe",
"filtration_particulaire_simple",
"stockage_souple_5m3",
"distrib_gravitaire",
"eg_noue",
"eg_pedoepuration",
"eg_fpv_autoconstruit"
],
"energie": [
"pv_monitoring",
"th_ballon_500",
"bois_poele_masse_indus",
"emet_seche_serviette",
"pil_delesteur",
"bois_conduit_fumee"
],
"alim": [
"etude_topo_ensoleil",
"haute_fruit_coque",
"moy_petit_fruit_3L",
"basse_compost_3bacs"
]
},
"taux": {
"eau": 27,
"energie": null,
"alim": null
}
},
"par_axe": {
"eau": {
"typologies": [
"captage_descente_directe",
"filtration_particulaire_simple",
"stockage_pehd_enterree_5m3",
"distrib_gravitaire",
"eg_pedoepuration",
"eg_pedoepuration"
],
"sous_total": 14645,
"status": "OK",
"taux": 27
},
"energie": {
"typologies": [
"pv_kit_3kwc_string",
"th_ballon_500",
"bois_poele_granules",
"emet_seche_serviette",
"pil_delesteur",
"bois_conduit_fumee"
],
"sous_total": 13455,
"status": "OK",
"taux": 80
},
"alim": {
"typologies": [
"etude_analyse_labo",
"haute_plantation_pose_pro",
"moy_haie_biodiv_complete",
"basse_planche_bec",
"basse_planche_bec"
],
"sous_total": 6985,
"status": "OK",
"taux": 50
}
}
},
{
"profil": "C — Autonomie large",
"jeu": "origine",
"global": {
"total": 77465,
"status": "OK",
"typologies": {
"eau": [
"captage_capteur_sol",
"filtration_3_corps_uv",
"stockage_beton_5m3",
"distrib_gravitaire",
"eg_phytostation"
],
"energie": [
"pv_kit_3kwc_micro",
"th_ballon_500",
"bois_chaudiere_granules",
"emet_vannes_thermo",
"pil_onduleur_hybride",
"bois_conduit_fumee"
],
"alim": [
"etude_analyse_labo",
"haute_haute_tige",
"moy_haie_biodiv_complete",
"basse_planche_bec"
]
},
"taux": {
"eau": 20,
"energie": 100,
"alim": 67
}
},
"par_axe": {
"eau": {
"typologies": [
"captage_capteur_sol",
"filtration_3_corps_uv",
"stockage_beton_5m3",
"distrib_per_bleu_interieur",
"eg_phytostation",
"eg_phytostation",
"eg_phytostation",
"eg_pedoepuration",
"distrib_kit_double_reseau"
],
"sous_total": 41000,
"status": "OK",
"taux": 20
},
"energie": {
"typologies": [
"pv_batterie_plomb_5",
"th_ballon_500",
"bois_poele_hydro",
"emet_radiateur_acier",
"pil_routeur_ecs",
"bois_conduit_fumee"
],
"sous_total": 19210,
"status": "OK",
"taux": 10
},
"alim": {
"typologies": [
"etude_analyse_labo",
"haute_haute_tige",
"moy_haie_biodiv_complete",
"basse_planche_bec",
"basse_planche_bec"
],
"sous_total": 20855,
"status": "OK",
"taux": 67
}
}
},
{
"profil": "C — Autonomie large",
"jeu": "harmonisee",
"global": {
"total": 77465,
"status": "OK",
"typologies": {
"eau": [
"captage_capteur_sol",
"filtration_3_corps_uv",
"stockage_beton_5m3",
"distrib_gravitaire",
"eg_phytostation"
],
"energie": [
"pv_kit_3kwc_micro",
"th_ballon_500",
"bois_chaudiere_granules",
"emet_vannes_thermo",
"pil_onduleur_hybride",
"bois_conduit_fumee"
],
"alim": [
"etude_analyse_labo",
"haute_haute_tige",
"moy_haie_biodiv_complete",
"basse_planche_bec"
]
},
"taux": {
"eau": 23,
"energie": 63,
"alim": 67
}
},
"par_axe": {
"eau": {
"typologies": [
"captage_capteur_sol",
"filtration_3_corps_uv",
"stockage_beton_5m3",
"distrib_per_bleu_interieur",
"eg_phytostation",
"eg_phytostation",
"eg_phytostation",
"eg_pedoepuration",
"distrib_kit_double_reseau"
],
"sous_total": 41000,
"status": "OK",
"taux": 23
},
"energie": {
"typologies": [
"pv_batterie_plomb_5",
"th_ballon_500",
"bois_poele_hydro",
"emet_radiateur_acier",
"pil_routeur_ecs",
"bois_conduit_fumee"
],
"sous_total": 19210,
"status": "OK",
"taux": 3
},
"alim": {
"typologies": [
"etude_analyse_labo",
"haute_haute_tige",
"moy_haie_biodiv_complete",
"basse_planche_bec",
"basse_planche_bec"
],
"sous_total": 20855,
"status": "OK",
"taux": 67
}
}
}
]
}
+103
View File
@@ -0,0 +1,103 @@
[
{"dept":"01","nom_dept":"Ain","zone_rt":"H1c","pluvio_mm_an":1050,"dju_base_18":2700,"zone_biogeo":4,"verifie":false,"source_climat":"Météo-France normales 1991-2020 + RE2020","source_date":"2026-04-28"},
{"dept":"02","nom_dept":"Aisne","zone_rt":"H1a","pluvio_mm_an":720,"dju_base_18":2600,"zone_biogeo":4,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"03","nom_dept":"Allier","zone_rt":"H1c","pluvio_mm_an":780,"dju_base_18":2550,"zone_biogeo":4,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"04","nom_dept":"Alpes-de-Haute-Provence","zone_rt":"H2d","pluvio_mm_an":750,"dju_base_18":2400,"zone_biogeo":6,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"05","nom_dept":"Hautes-Alpes","zone_rt":"H1c","pluvio_mm_an":830,"dju_base_18":3100,"zone_biogeo":6,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"06","nom_dept":"Alpes-Maritimes","zone_rt":"H3","pluvio_mm_an":820,"dju_base_18":1500,"zone_biogeo":5,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"07","nom_dept":"Ardèche","zone_rt":"H2d","pluvio_mm_an":1100,"dju_base_18":2200,"zone_biogeo":5,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"08","nom_dept":"Ardennes","zone_rt":"H1b","pluvio_mm_an":950,"dju_base_18":2900,"zone_biogeo":4,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"09","nom_dept":"Ariège","zone_rt":"H2c","pluvio_mm_an":1000,"dju_base_18":2500,"zone_biogeo":7,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"10","nom_dept":"Aube","zone_rt":"H1b","pluvio_mm_an":700,"dju_base_18":2700,"zone_biogeo":4,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"11","nom_dept":"Aude","zone_rt":"H3","pluvio_mm_an":650,"dju_base_18":1800,"zone_biogeo":5,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"12","nom_dept":"Aveyron","zone_rt":"H2c","pluvio_mm_an":900,"dju_base_18":2700,"zone_biogeo":7,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"13","nom_dept":"Bouches-du-Rhône","zone_rt":"H3","pluvio_mm_an":540,"dju_base_18":1750,"zone_biogeo":5,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"14","nom_dept":"Calvados","zone_rt":"H2a","pluvio_mm_an":850,"dju_base_18":2500,"zone_biogeo":1,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"15","nom_dept":"Cantal","zone_rt":"H1c","pluvio_mm_an":1100,"dju_base_18":3000,"zone_biogeo":7,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"16","nom_dept":"Charente","zone_rt":"H2b","pluvio_mm_an":850,"dju_base_18":2200,"zone_biogeo":2,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"17","nom_dept":"Charente-Maritime","zone_rt":"H2b","pluvio_mm_an":820,"dju_base_18":2100,"zone_biogeo":2,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"18","nom_dept":"Cher","zone_rt":"H1c","pluvio_mm_an":750,"dju_base_18":2500,"zone_biogeo":4,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"19","nom_dept":"Corrèze","zone_rt":"H1c","pluvio_mm_an":1100,"dju_base_18":2600,"zone_biogeo":3,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"21","nom_dept":"Côte-d'Or","zone_rt":"H1c","pluvio_mm_an":750,"dju_base_18":2700,"zone_biogeo":4,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"22","nom_dept":"Côtes-d'Armor","zone_rt":"H2a","pluvio_mm_an":900,"dju_base_18":2400,"zone_biogeo":1,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"23","nom_dept":"Creuse","zone_rt":"H1c","pluvio_mm_an":1000,"dju_base_18":2700,"zone_biogeo":3,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"24","nom_dept":"Dordogne","zone_rt":"H2c","pluvio_mm_an":900,"dju_base_18":2200,"zone_biogeo":2,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"25","nom_dept":"Doubs","zone_rt":"H1c","pluvio_mm_an":1200,"dju_base_18":3000,"zone_biogeo":6,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"26","nom_dept":"Drôme","zone_rt":"H2d","pluvio_mm_an":900,"dju_base_18":2200,"zone_biogeo":5,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"27","nom_dept":"Eure","zone_rt":"H1a","pluvio_mm_an":700,"dju_base_18":2500,"zone_biogeo":4,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"28","nom_dept":"Eure-et-Loir","zone_rt":"H1a","pluvio_mm_an":650,"dju_base_18":2500,"zone_biogeo":4,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"29","nom_dept":"Finistère","zone_rt":"H2a","pluvio_mm_an":1200,"dju_base_18":2300,"zone_biogeo":1,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"2A","nom_dept":"Corse-du-Sud","zone_rt":"H3","pluvio_mm_an":700,"dju_base_18":1500,"zone_biogeo":5,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"2B","nom_dept":"Haute-Corse","zone_rt":"H3","pluvio_mm_an":750,"dju_base_18":1600,"zone_biogeo":5,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"30","nom_dept":"Gard","zone_rt":"H3","pluvio_mm_an":700,"dju_base_18":1800,"zone_biogeo":5,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"31","nom_dept":"Haute-Garonne","zone_rt":"H2c","pluvio_mm_an":650,"dju_base_18":2200,"zone_biogeo":3,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"32","nom_dept":"Gers","zone_rt":"H2c","pluvio_mm_an":750,"dju_base_18":2200,"zone_biogeo":3,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"33","nom_dept":"Gironde","zone_rt":"H2c","pluvio_mm_an":900,"dju_base_18":2050,"zone_biogeo":2,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"34","nom_dept":"Hérault","zone_rt":"H3","pluvio_mm_an":650,"dju_base_18":1700,"zone_biogeo":5,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"35","nom_dept":"Ille-et-Vilaine","zone_rt":"H2a","pluvio_mm_an":750,"dju_base_18":2400,"zone_biogeo":1,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"36","nom_dept":"Indre","zone_rt":"H1c","pluvio_mm_an":750,"dju_base_18":2500,"zone_biogeo":4,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"37","nom_dept":"Indre-et-Loire","zone_rt":"H2b","pluvio_mm_an":700,"dju_base_18":2400,"zone_biogeo":4,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"38","nom_dept":"Isère","zone_rt":"H1c","pluvio_mm_an":1000,"dju_base_18":2700,"zone_biogeo":6,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"39","nom_dept":"Jura","zone_rt":"H1c","pluvio_mm_an":1200,"dju_base_18":2900,"zone_biogeo":6,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"40","nom_dept":"Landes","zone_rt":"H2c","pluvio_mm_an":1100,"dju_base_18":2000,"zone_biogeo":2,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"41","nom_dept":"Loir-et-Cher","zone_rt":"H1c","pluvio_mm_an":700,"dju_base_18":2500,"zone_biogeo":4,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"42","nom_dept":"Loire","zone_rt":"H1c","pluvio_mm_an":750,"dju_base_18":2600,"zone_biogeo":4,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"43","nom_dept":"Haute-Loire","zone_rt":"H1c","pluvio_mm_an":900,"dju_base_18":2900,"zone_biogeo":7,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"44","nom_dept":"Loire-Atlantique","zone_rt":"H2b","pluvio_mm_an":820,"dju_base_18":2300,"zone_biogeo":1,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"45","nom_dept":"Loiret","zone_rt":"H1a","pluvio_mm_an":650,"dju_base_18":2500,"zone_biogeo":4,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"46","nom_dept":"Lot","zone_rt":"H2c","pluvio_mm_an":850,"dju_base_18":2300,"zone_biogeo":3,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"47","nom_dept":"Lot-et-Garonne","zone_rt":"H2c","pluvio_mm_an":800,"dju_base_18":2150,"zone_biogeo":3,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"48","nom_dept":"Lozère","zone_rt":"H2d","pluvio_mm_an":1100,"dju_base_18":2900,"zone_biogeo":7,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"49","nom_dept":"Maine-et-Loire","zone_rt":"H2b","pluvio_mm_an":700,"dju_base_18":2400,"zone_biogeo":1,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"50","nom_dept":"Manche","zone_rt":"H2a","pluvio_mm_an":900,"dju_base_18":2400,"zone_biogeo":1,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"51","nom_dept":"Marne","zone_rt":"H1b","pluvio_mm_an":700,"dju_base_18":2700,"zone_biogeo":4,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"52","nom_dept":"Haute-Marne","zone_rt":"H1b","pluvio_mm_an":850,"dju_base_18":2800,"zone_biogeo":4,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"53","nom_dept":"Mayenne","zone_rt":"H2b","pluvio_mm_an":750,"dju_base_18":2400,"zone_biogeo":1,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"54","nom_dept":"Meurthe-et-Moselle","zone_rt":"H1b","pluvio_mm_an":800,"dju_base_18":2800,"zone_biogeo":4,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"55","nom_dept":"Meuse","zone_rt":"H1b","pluvio_mm_an":900,"dju_base_18":2800,"zone_biogeo":4,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"56","nom_dept":"Morbihan","zone_rt":"H2a","pluvio_mm_an":900,"dju_base_18":2300,"zone_biogeo":1,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"57","nom_dept":"Moselle","zone_rt":"H1b","pluvio_mm_an":800,"dju_base_18":2800,"zone_biogeo":4,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"58","nom_dept":"Nièvre","zone_rt":"H1c","pluvio_mm_an":800,"dju_base_18":2600,"zone_biogeo":4,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"59","nom_dept":"Nord","zone_rt":"H1a","pluvio_mm_an":750,"dju_base_18":2600,"zone_biogeo":1,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"60","nom_dept":"Oise","zone_rt":"H1a","pluvio_mm_an":700,"dju_base_18":2500,"zone_biogeo":4,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"61","nom_dept":"Orne","zone_rt":"H2a","pluvio_mm_an":800,"dju_base_18":2500,"zone_biogeo":1,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"62","nom_dept":"Pas-de-Calais","zone_rt":"H1a","pluvio_mm_an":850,"dju_base_18":2600,"zone_biogeo":1,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"63","nom_dept":"Puy-de-Dôme","zone_rt":"H1c","pluvio_mm_an":800,"dju_base_18":2700,"zone_biogeo":7,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"64","nom_dept":"Pyrénées-Atlantiques","zone_rt":"H2c","pluvio_mm_an":1300,"dju_base_18":2100,"zone_biogeo":2,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"65","nom_dept":"Hautes-Pyrénées","zone_rt":"H2c","pluvio_mm_an":1000,"dju_base_18":2400,"zone_biogeo":7,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"66","nom_dept":"Pyrénées-Orientales","zone_rt":"H3","pluvio_mm_an":600,"dju_base_18":1700,"zone_biogeo":5,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"67","nom_dept":"Bas-Rhin","zone_rt":"H1b","pluvio_mm_an":650,"dju_base_18":2700,"zone_biogeo":4,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"68","nom_dept":"Haut-Rhin","zone_rt":"H1b","pluvio_mm_an":700,"dju_base_18":2700,"zone_biogeo":4,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"69","nom_dept":"Rhône","zone_rt":"H1c","pluvio_mm_an":830,"dju_base_18":2500,"zone_biogeo":4,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"70","nom_dept":"Haute-Saône","zone_rt":"H1b","pluvio_mm_an":1050,"dju_base_18":2800,"zone_biogeo":4,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"71","nom_dept":"Saône-et-Loire","zone_rt":"H1c","pluvio_mm_an":800,"dju_base_18":2600,"zone_biogeo":4,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"72","nom_dept":"Sarthe","zone_rt":"H2b","pluvio_mm_an":700,"dju_base_18":2400,"zone_biogeo":1,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"73","nom_dept":"Savoie","zone_rt":"H1c","pluvio_mm_an":1200,"dju_base_18":3000,"zone_biogeo":6,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"74","nom_dept":"Haute-Savoie","zone_rt":"H1c","pluvio_mm_an":1300,"dju_base_18":2900,"zone_biogeo":6,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"75","nom_dept":"Paris","zone_rt":"H1a","pluvio_mm_an":640,"dju_base_18":2450,"zone_biogeo":4,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"76","nom_dept":"Seine-Maritime","zone_rt":"H1a","pluvio_mm_an":850,"dju_base_18":2500,"zone_biogeo":1,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"77","nom_dept":"Seine-et-Marne","zone_rt":"H1a","pluvio_mm_an":680,"dju_base_18":2500,"zone_biogeo":4,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"78","nom_dept":"Yvelines","zone_rt":"H1a","pluvio_mm_an":680,"dju_base_18":2500,"zone_biogeo":4,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"79","nom_dept":"Deux-Sèvres","zone_rt":"H2b","pluvio_mm_an":850,"dju_base_18":2300,"zone_biogeo":2,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"80","nom_dept":"Somme","zone_rt":"H1a","pluvio_mm_an":750,"dju_base_18":2600,"zone_biogeo":1,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"81","nom_dept":"Tarn","zone_rt":"H2c","pluvio_mm_an":850,"dju_base_18":2200,"zone_biogeo":3,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"82","nom_dept":"Tarn-et-Garonne","zone_rt":"H2c","pluvio_mm_an":750,"dju_base_18":2150,"zone_biogeo":3,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"83","nom_dept":"Var","zone_rt":"H3","pluvio_mm_an":700,"dju_base_18":1600,"zone_biogeo":5,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"84","nom_dept":"Vaucluse","zone_rt":"H3","pluvio_mm_an":650,"dju_base_18":1850,"zone_biogeo":5,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"85","nom_dept":"Vendée","zone_rt":"H2b","pluvio_mm_an":820,"dju_base_18":2300,"zone_biogeo":2,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"86","nom_dept":"Vienne","zone_rt":"H2b","pluvio_mm_an":750,"dju_base_18":2400,"zone_biogeo":2,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"87","nom_dept":"Haute-Vienne","zone_rt":"H1c","pluvio_mm_an":1050,"dju_base_18":2500,"zone_biogeo":3,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"88","nom_dept":"Vosges","zone_rt":"H1b","pluvio_mm_an":1100,"dju_base_18":2900,"zone_biogeo":6,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"89","nom_dept":"Yonne","zone_rt":"H1b","pluvio_mm_an":700,"dju_base_18":2600,"zone_biogeo":4,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"90","nom_dept":"Territoire de Belfort","zone_rt":"H1b","pluvio_mm_an":1100,"dju_base_18":2800,"zone_biogeo":4,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"91","nom_dept":"Essonne","zone_rt":"H1a","pluvio_mm_an":680,"dju_base_18":2500,"zone_biogeo":4,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"92","nom_dept":"Hauts-de-Seine","zone_rt":"H1a","pluvio_mm_an":640,"dju_base_18":2450,"zone_biogeo":4,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"93","nom_dept":"Seine-Saint-Denis","zone_rt":"H1a","pluvio_mm_an":640,"dju_base_18":2450,"zone_biogeo":4,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"94","nom_dept":"Val-de-Marne","zone_rt":"H1a","pluvio_mm_an":640,"dju_base_18":2450,"zone_biogeo":4,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"95","nom_dept":"Val-d'Oise","zone_rt":"H1a","pluvio_mm_an":680,"dju_base_18":2500,"zone_biogeo":4,"verifie":false,"source_climat":"Météo-France + RE2020","source_date":"2026-04-28"},
{"dept":"971","nom_dept":"Guadeloupe","zone_rt":"H3","pluvio_mm_an":null,"dju_base_18":null,"zone_biogeo":8,"verifie":false,"source_climat":"DOM tropical — pluvio variable 1000-3500mm selon altitude, DJU non pertinent","source_date":"2026-04-28"},
{"dept":"972","nom_dept":"Martinique","zone_rt":"H3","pluvio_mm_an":null,"dju_base_18":null,"zone_biogeo":8,"verifie":false,"source_climat":"DOM tropical — idem","source_date":"2026-04-28"},
{"dept":"973","nom_dept":"Guyane","zone_rt":"H3","pluvio_mm_an":null,"dju_base_18":null,"zone_biogeo":8,"verifie":false,"source_climat":"DOM équatorial — pluvio 2000-4000mm","source_date":"2026-04-28"},
{"dept":"974","nom_dept":"La Réunion","zone_rt":"H3","pluvio_mm_an":null,"dju_base_18":null,"zone_biogeo":8,"verifie":false,"source_climat":"DOM tropical insulaire — pluvio très variable littoral/montagne","source_date":"2026-04-28"},
{"dept":"976","nom_dept":"Mayotte","zone_rt":"H3","pluvio_mm_an":null,"dju_base_18":null,"zone_biogeo":8,"verifie":false,"source_climat":"DOM tropical — pluvio 1000-1500mm","source_date":"2026-04-28"}
]
File diff suppressed because it is too large Load Diff
+170
View File
@@ -0,0 +1,170 @@
[
{
"Id": 1,
"CreatedAt": "2026-04-28 19:54:29+00:00",
"UpdatedAt": null,
"axe": "eau",
"code": "eau_captage",
"poste": "Captage",
"ordre": 10,
"description": "Comment vous récupérez l'eau de pluie",
"obligatoire": true,
"actif": true
},
{
"Id": 2,
"CreatedAt": "2026-04-28 19:54:29+00:00",
"UpdatedAt": null,
"axe": "eau",
"code": "eau_filtration",
"poste": "Filtration",
"ordre": 20,
"description": "Étapes de potabilisation",
"obligatoire": true,
"actif": true
},
{
"Id": 3,
"CreatedAt": "2026-04-28 19:54:29+00:00",
"UpdatedAt": null,
"axe": "eau",
"code": "eau_stockage",
"poste": "Stockage",
"ordre": 30,
"description": "Volume cuve selon nb pers et pluvio",
"obligatoire": true,
"actif": true
},
{
"Id": 4,
"CreatedAt": "2026-04-28 19:54:29+00:00",
"UpdatedAt": null,
"axe": "eau",
"code": "eau_distribution",
"poste": "Distribution",
"ordre": 40,
"description": "Pompes et réseau de distribution",
"obligatoire": true,
"actif": true
},
{
"Id": 5,
"CreatedAt": "2026-04-28 19:54:29+00:00",
"UpdatedAt": null,
"axe": "eau",
"code": "eau_eg_epuration",
"poste": "Eaux grises + Épuration",
"ordre": 50,
"description": "Recyclage EG et assainissement",
"obligatoire": false,
"actif": true
},
{
"Id": 6,
"CreatedAt": "2026-04-28 19:54:29+00:00",
"UpdatedAt": null,
"axe": "energie",
"code": "energie_pv",
"poste": "Solaire PV",
"ordre": 10,
"description": "Production électrique panneaux + batteries",
"obligatoire": false,
"actif": true
},
{
"Id": 7,
"CreatedAt": "2026-04-28 19:54:29+00:00",
"UpdatedAt": null,
"axe": "energie",
"code": "energie_solaire_th",
"poste": "Solaire thermique",
"ordre": 20,
"description": "CESI / SSC pour ECS et chauffage",
"obligatoire": false,
"actif": true
},
{
"Id": 8,
"CreatedAt": "2026-04-28 19:54:29+00:00",
"UpdatedAt": null,
"axe": "energie",
"code": "energie_chauffage_bois",
"poste": "Chauffage bois",
"ordre": 30,
"description": "Poêles et chaudières bois ou granulés",
"obligatoire": false,
"actif": true
},
{
"Id": 9,
"CreatedAt": "2026-04-28 19:54:29+00:00",
"UpdatedAt": null,
"axe": "energie",
"code": "energie_emetteurs",
"poste": "Émetteurs",
"ordre": 40,
"description": "Radiateurs, plancher chauffant, mur chauffant",
"obligatoire": false,
"actif": true
},
{
"Id": 10,
"CreatedAt": "2026-04-28 19:54:29+00:00",
"UpdatedAt": null,
"axe": "energie",
"code": "energie_pilotage",
"poste": "Pilotage / ilotage",
"ordre": 50,
"description": "Monitoring, onduleur hybride, ilotage",
"obligatoire": false,
"actif": true
},
{
"Id": 11,
"CreatedAt": "2026-04-28 19:54:29+00:00",
"UpdatedAt": null,
"axe": "alimentation",
"code": "alim_etude_fonciere",
"poste": "Étude foncière",
"ordre": 10,
"description": "Diagnostic sol, topo, plan paysager",
"obligatoire": false,
"actif": true
},
{
"Id": 12,
"CreatedAt": "2026-04-28 19:54:29+00:00",
"UpdatedAt": null,
"axe": "alimentation",
"code": "alim_strate_haute",
"poste": "Strate haute",
"ordre": 20,
"description": "Arbres fruitiers haute-tige et demi-tige",
"obligatoire": false,
"actif": true
},
{
"Id": 13,
"CreatedAt": "2026-04-28 19:54:29+00:00",
"UpdatedAt": null,
"axe": "alimentation",
"code": "alim_strate_moyenne",
"poste": "Strate moyenne",
"ordre": 30,
"description": "Petits fruits et haies fruitières",
"obligatoire": false,
"actif": true
},
{
"Id": 14,
"CreatedAt": "2026-04-28 19:54:29+00:00",
"UpdatedAt": null,
"axe": "alimentation",
"code": "alim_strate_basse",
"poste": "Strate basse",
"ordre": 40,
"description": "Vivaces, médicinales, légumes",
"obligatoire": false,
"actif": true
}
]
+64
View File
@@ -0,0 +1,64 @@
[
{
"nom": "A — Frugal urbain",
"inputs": {
"budget_eur": 15000,
"code_postal": "75019",
"nb_personnes": 2,
"surface_parcelle_m2": 200,
"surface_toit_m2": 40,
"orientation_toit": "sud",
"pente_toit_deg": 30,
"metres_haie_possibles": 0,
"temps_dispo": 1
},
"notes": "Toit 40m2 → énergie+eau prioritaires; parcelle 200m2 < 300 → alim=0; temps=1 → pas complexite_pose=3",
"attendus_indicatifs": [
"captage_filtre_collecteur",
"filtration_particulaire_simple",
"stockage_pehd_horssol_5m3",
"pv_kit_3kwc_string"
]
},
{
"nom": "B — Famille moyenne",
"inputs": {
"budget_eur": 35000,
"code_postal": "31000",
"nb_personnes": 4,
"surface_parcelle_m2": 800,
"surface_toit_m2": 80,
"orientation_toit": "sud-est",
"pente_toit_deg": 30,
"metres_haie_possibles": 50,
"temps_dispo": 2
},
"notes": "4 pers, 800m2 parcelle, toit 80m2. Cuve ~9m3, PV 9kWc (80×0.15×0.93 clamp 9), potager.",
"attendus_indicatifs": [
"stockage_beton_5m3",
"pv_kit_3kwc_string",
"basse_serre_6m2"
]
},
{
"nom": "C — Autonomie large",
"inputs": {
"budget_eur": 80000,
"code_postal": "13100",
"nb_personnes": 6,
"surface_parcelle_m2": 2500,
"surface_toit_m2": 120,
"orientation_toit": "sud",
"pente_toit_deg": 25,
"metres_haie_possibles": 100,
"temps_dispo": 3
},
"notes": "6 pers, 2500m2, H3 (13xxx = Bouches-du-Rhône). Grande parcelle + temps=3 → alim max. PV 9kWc clamp (120×0.15×1.0=18 → clamp 9). Bois poêle hydro requis pour budget.",
"attendus_indicatifs": [
"stockage_beton_5m3",
"pv_kit_3kwc_string",
"bois_poele_hydro",
"basse_serre_6m2"
]
}
]
File diff suppressed because it is too large Load Diff