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:
@@ -0,0 +1,65 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"$id": "https://git.trans-former.fr/jules/moteurs/schemas/algo_config.schema.json",
|
||||
"description": "Heuristiques de conception du simulateur autonomie (poids, modulateurs, matrices, tolérances, alias, poids des postes). Données non sourcées, injectées, jamais importées.",
|
||||
"type": "object",
|
||||
"required": [
|
||||
"poids_axes_base",
|
||||
"modulateurs",
|
||||
"adequation_weights",
|
||||
"tolerances",
|
||||
"bonus_malus",
|
||||
"couplages_alias",
|
||||
"postes_poids"
|
||||
],
|
||||
"properties": {
|
||||
"poids_axes_base": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"eau",
|
||||
"energie",
|
||||
"alim"
|
||||
],
|
||||
"properties": {
|
||||
"eau": {
|
||||
"type": "number"
|
||||
},
|
||||
"energie": {
|
||||
"type": "number"
|
||||
},
|
||||
"alim": {
|
||||
"type": "number"
|
||||
}
|
||||
}
|
||||
},
|
||||
"modulateurs": {
|
||||
"type": "object"
|
||||
},
|
||||
"adequation_weights": {
|
||||
"type": "object"
|
||||
},
|
||||
"tolerances": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"budget_overrun_pct": {
|
||||
"type": "number"
|
||||
},
|
||||
"budget_underspend_pct": {
|
||||
"type": "number"
|
||||
},
|
||||
"tolerance_par_poste_pct": {
|
||||
"type": "number"
|
||||
}
|
||||
}
|
||||
},
|
||||
"bonus_malus": {
|
||||
"type": "object"
|
||||
},
|
||||
"couplages_alias": {
|
||||
"type": "object"
|
||||
},
|
||||
"postes_poids": {
|
||||
"type": "object"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,68 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"$id": "https://git.trans-former.fr/jules/moteurs/schemas/france_climat.schema.json",
|
||||
"description": "Une ligne par département (2A, 2B et 971-976 compris) : zone RT, pluviométrie, DJU base 18, zone biogéographique numérique.",
|
||||
"type": "array",
|
||||
"minItems": 1,
|
||||
"items": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"dept",
|
||||
"zone_rt"
|
||||
],
|
||||
"properties": {
|
||||
"dept": {
|
||||
"type": "string"
|
||||
},
|
||||
"nom_dept": {
|
||||
"type": [
|
||||
"string",
|
||||
"null"
|
||||
]
|
||||
},
|
||||
"zone_rt": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"H1a",
|
||||
"H1b",
|
||||
"H1c",
|
||||
"H2a",
|
||||
"H2b",
|
||||
"H2c",
|
||||
"H2d",
|
||||
"H3"
|
||||
]
|
||||
},
|
||||
"pluvio_mm_an": {
|
||||
"type": [
|
||||
"number",
|
||||
"null"
|
||||
]
|
||||
},
|
||||
"dju_base_18": {
|
||||
"type": [
|
||||
"number",
|
||||
"null"
|
||||
]
|
||||
},
|
||||
"zone_biogeo": {
|
||||
"type": [
|
||||
"number",
|
||||
"null"
|
||||
]
|
||||
},
|
||||
"source_climat": {
|
||||
"type": [
|
||||
"string",
|
||||
"null"
|
||||
]
|
||||
},
|
||||
"source_date": {
|
||||
"type": [
|
||||
"string",
|
||||
"null"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,183 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"$id": "https://git.trans-former.fr/jules/moteurs/schemas/options.schema.json",
|
||||
"description": "Typologies (options) du simulateur autonomie. Les prix y sont des DONNÉES publiées par calculs, jamais des constantes du paquet. parametre_dim, couplages_requis et couplages_exclus arrivent en JSON sérialisé (NocoDB) ou déjà parsés.",
|
||||
"type": "array",
|
||||
"minItems": 1,
|
||||
"items": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"Id",
|
||||
"poste_id",
|
||||
"code",
|
||||
"nom"
|
||||
],
|
||||
"properties": {
|
||||
"Id": {
|
||||
"type": "integer"
|
||||
},
|
||||
"poste_id": {
|
||||
"type": "integer"
|
||||
},
|
||||
"code": {
|
||||
"type": "string"
|
||||
},
|
||||
"nom": {
|
||||
"type": "string"
|
||||
},
|
||||
"typologie": {
|
||||
"type": [
|
||||
"string",
|
||||
"null"
|
||||
]
|
||||
},
|
||||
"actif": {
|
||||
"type": [
|
||||
"boolean",
|
||||
"null"
|
||||
]
|
||||
},
|
||||
"prix_mat_min": {
|
||||
"type": [
|
||||
"number",
|
||||
"null"
|
||||
]
|
||||
},
|
||||
"prix_mat_max": {
|
||||
"type": [
|
||||
"number",
|
||||
"null"
|
||||
]
|
||||
},
|
||||
"prix_pro_min": {
|
||||
"type": [
|
||||
"number",
|
||||
"null"
|
||||
]
|
||||
},
|
||||
"prix_pro_max": {
|
||||
"type": [
|
||||
"number",
|
||||
"null"
|
||||
]
|
||||
},
|
||||
"prix_par_unite": {
|
||||
"type": [
|
||||
"number",
|
||||
"null"
|
||||
]
|
||||
},
|
||||
"prix_fixe": {
|
||||
"type": [
|
||||
"number",
|
||||
"null"
|
||||
]
|
||||
},
|
||||
"unite": {
|
||||
"type": [
|
||||
"string",
|
||||
"null"
|
||||
]
|
||||
},
|
||||
"quantite_default": {
|
||||
"type": [
|
||||
"number",
|
||||
"null"
|
||||
]
|
||||
},
|
||||
"parametre_dim": {
|
||||
"type": [
|
||||
"string",
|
||||
"object",
|
||||
"null"
|
||||
]
|
||||
},
|
||||
"couplages_requis": {
|
||||
"type": [
|
||||
"string",
|
||||
"array",
|
||||
"null"
|
||||
]
|
||||
},
|
||||
"couplages_exclus": {
|
||||
"type": [
|
||||
"string",
|
||||
"array",
|
||||
"null"
|
||||
]
|
||||
},
|
||||
"flag_diy": {
|
||||
"type": [
|
||||
"boolean",
|
||||
"null"
|
||||
]
|
||||
},
|
||||
"complexite_pose": {
|
||||
"type": [
|
||||
"number",
|
||||
"null"
|
||||
]
|
||||
},
|
||||
"accessible_fr": {
|
||||
"type": [
|
||||
"boolean",
|
||||
"null"
|
||||
]
|
||||
},
|
||||
"filiere_agreee": {
|
||||
"type": [
|
||||
"boolean",
|
||||
"null"
|
||||
]
|
||||
},
|
||||
"surface_min_m2": {
|
||||
"type": [
|
||||
"number",
|
||||
"null"
|
||||
]
|
||||
},
|
||||
"surface_optimale_m2": {
|
||||
"type": [
|
||||
"number",
|
||||
"null"
|
||||
]
|
||||
},
|
||||
"tags": {
|
||||
"type": [
|
||||
"array",
|
||||
"null"
|
||||
]
|
||||
},
|
||||
"source": {
|
||||
"type": [
|
||||
"string",
|
||||
"null"
|
||||
]
|
||||
},
|
||||
"source_date": {
|
||||
"type": [
|
||||
"string",
|
||||
"null"
|
||||
]
|
||||
},
|
||||
"description": {
|
||||
"type": [
|
||||
"string",
|
||||
"null"
|
||||
]
|
||||
},
|
||||
"description_pedago": {
|
||||
"type": [
|
||||
"string",
|
||||
"null"
|
||||
]
|
||||
},
|
||||
"notes_techniques": {
|
||||
"type": [
|
||||
"string",
|
||||
"null"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"$id": "https://git.trans-former.fr/jules/moteurs/schemas/postes.schema.json",
|
||||
"description": "Postes du simulateur autonomie (calculs.trans-former.fr/calculs/data/postes.json). Champs lus par les moteurs.",
|
||||
"type": "array",
|
||||
"minItems": 1,
|
||||
"items": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"Id",
|
||||
"axe",
|
||||
"code",
|
||||
"poste"
|
||||
],
|
||||
"properties": {
|
||||
"Id": {
|
||||
"type": "integer"
|
||||
},
|
||||
"axe": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"eau",
|
||||
"energie",
|
||||
"alimentation"
|
||||
]
|
||||
},
|
||||
"code": {
|
||||
"type": "string"
|
||||
},
|
||||
"poste": {
|
||||
"type": "string"
|
||||
},
|
||||
"ordre": {
|
||||
"type": [
|
||||
"number",
|
||||
"null"
|
||||
]
|
||||
},
|
||||
"obligatoire": {
|
||||
"type": [
|
||||
"boolean",
|
||||
"null"
|
||||
]
|
||||
},
|
||||
"actif": {
|
||||
"type": [
|
||||
"boolean",
|
||||
"null"
|
||||
]
|
||||
},
|
||||
"description": {
|
||||
"type": [
|
||||
"string",
|
||||
"null"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user