From 3a0be3819209c85a708c54b2944d85173b171a50 Mon Sep 17 00:00:00 2001 From: Emile Rolley Date: Tue, 27 Aug 2024 11:54:19 +0200 Subject: [PATCH] fix: correctly use estimated values for alternatives --- rules/cout.publicodes | 15 +++++++++++++-- rules/empreinte.publicodes | 12 +++++++++++- rules/voiture-cible.publicodes | 3 ++- rules/voiture.publicodes | 11 +---------- scripts/generate-alternatives.js | 30 +++++++++++------------------- 5 files changed, 38 insertions(+), 33 deletions(-) diff --git a/rules/cout.publicodes b/rules/cout.publicodes index a61b61e..777a029 100644 --- a/rules/cout.publicodes +++ b/rules/cout.publicodes @@ -13,12 +13,23 @@ coût . voiture: unité: €/an contexte: futureco . trajet . voyageurs: 1 - futureco . voiture . consommation thermique: voiture . thermique . consommation + futureco . voiture . consommation thermique: + valeur: + # TODO: factoriser avec empreinte + # Permet de forcer l'utilisation de la consommation estimée lors des + # recalculs pour les alternatives. + # + # Par défaut, si la personne n'a pas renseigné le prix d'achat, on avec + # le mécansime `plancher`, la règle `prix d'achat` est évaluée à 1. + variations: + - si: voiture . thermique . consommation > 1 + alors: voiture . thermique . consommation + - sinon: voiture . thermique . consommation . consommation estimée futureco . voiture . km annuels . par défaut: usage . km annuels futureco . voiture . prix d'achat: valeur: # Permet de forcer l'utilisation du prix d'achat estimé lors des - # recalculs pour les combinaisons. + # recalculs pour les alternatives. # # Par défaut, si la personne n'a pas renseigné le prix d'achat, on avec # le mécansime `plancher`, la règle `prix d'achat` est évaluée à 1. diff --git a/rules/empreinte.publicodes b/rules/empreinte.publicodes index 321d2b3..fd36c69 100644 --- a/rules/empreinte.publicodes +++ b/rules/empreinte.publicodes @@ -32,6 +32,16 @@ empreinte . voiture: ngc . transport . voiture . motorisation: voiture . motorisation ngc . transport . voiture . thermique . carburant: voiture . thermique . carburant ngc . transport . voiture . km: usage . km annuels - ngc . transport . voiture . thermique . consommation aux 100: voiture . thermique . consommation + ngc . transport . voiture . thermique . consommation aux 100: + valeur: + # Permet de forcer l'utilisation de la consommation estimée lors des + # recalculs pour les alternatives. + # + # Par défaut, si la personne n'a pas renseigné le prix d'achat, on avec + # le mécansime `plancher`, la règle `prix d'achat` est évaluée à 1. + variations: + - si: voiture . thermique . consommation > 1 + alors: voiture . thermique . consommation + - sinon: voiture . thermique . consommation . consommation estimée ngc . transport . voiture . voyageurs: 1 unité: kgCO2e/an diff --git a/rules/voiture-cible.publicodes b/rules/voiture-cible.publicodes index add9f7e..b480bce 100644 --- a/rules/voiture-cible.publicodes +++ b/rules/voiture-cible.publicodes @@ -45,7 +45,8 @@ voiture . cible . gabarit: - berline - SUV - VUL - par défaut: "'moyenne'" + # NOTE: est-ce que l'on a envie de pousser vers un gabarit plus petit ? + par défaut: voiture . gabarit avec: petite: titre: Citadine diff --git a/rules/voiture.publicodes b/rules/voiture.publicodes index aeb170d..8722e91 100644 --- a/rules/voiture.publicodes +++ b/rules/voiture.publicodes @@ -137,8 +137,6 @@ voiture . thermique . consommation . consommation estimée: unité: l/100km contexte: ngc . transport . voiture . utilisateur: "'propriétaire'" - # NOTE: il faut seulement que distance soit supérieur à 0 pour que la règle - ngc . transport . voiture . km: usage . km annuels ngc . transport . voiture . gabarit: voiture . gabarit ngc . transport . voiture . motorisation: voiture . motorisation ngc . transport . voiture . thermique . carburant: voiture . thermique . carburant @@ -254,17 +252,10 @@ voiture . gabarit: - berline - SUV - VUL - par défaut: "'moyenne'" + par défaut: "'berline'" description: | Si vous ne savez pas quel gabarit choisir, vous pouvez penser à la taille comme (petite, moyenne, grande, 4x4 urbain, camionnette). - - # description: | - # - Citadine : petite voiture, type Zoé, Fiat 500 - # - Monospace : modèle au dessus de la petite citadine, type Mégane, Golf - # - Berline : une voiture longue, type 308, Tesla Model 3, Audi A3 - # - SUV : "Sport utility vehicle", type 4x4 urbain - # - VUL : camionette de type Kangoo ou Partner jusqu'au Trafic et Vito note: | Nous considérons que la voiture par défaut est une "Berline", en témoigne [une étude menée par AAA diff --git a/scripts/generate-alternatives.js b/scripts/generate-alternatives.js index b371e26..ee0bf4d 100644 --- a/scripts/generate-alternatives.js +++ b/scripts/generate-alternatives.js @@ -42,21 +42,13 @@ export default function generateAlternatives(rules) { for (const gabarit of gabarits) { const gabaritTitle = rules[`voiture . gabarit . ${gabarit}`]?.titre ?? gabarit - const contexteBaseEmission = { - "ngc . transport . voiture . utilisateur": "'propriétaire'", - "ngc . transport . voiture . gabarit": `'${gabarit}'`, - "ngc . transport . voiture . motorisation": `'${motorisation}'`, - "ngc . transport . voiture . km": "usage . km annuels", - "ngc . transport . voiture . voyageurs": 1, - "ngc . transport . voiture . thermique . consommation aux 100": - "voiture . thermique . consommation", - } - - const contexteBaseCost = { + const baseContexte = { "voiture . gabarit": `'${gabarit}'`, "voiture . motorisation": `'${motorisation}'`, - // We need to disable the rule to use the 'voiture . prix d'achat . estimé' instead + // Needed to force the use of the 'voiture . prix d'achat . estimé' "voiture . prix d'achat": "non", + // Needed to force the use of the 'voiture . thermique . consommation . estimée' + "voiture . thermique . consommation": "non", } if (motorisation !== "électrique") { @@ -74,10 +66,10 @@ export default function generateAlternatives(rules) { rules[`empreinte . ${motorisation} . ${gabarit} . ${carburant}`] = { titre: `${gabaritTitle} ${motorisation} (${carburantTitle})`, unité: "kgCO2eq/an", - valeur: "ngc . transport . voiture", + valeur: "empreinte . voiture", contexte: { - ...contexteBaseEmission, - "ngc . transport . voiture . thermique . carburant": `'${carburant}'`, + ...baseContexte, + "voiture . thermique . carburant": `'${carburant}'`, }, } rules[`coût . ${motorisation} . ${gabarit} . ${carburant}`] = { @@ -85,7 +77,7 @@ export default function generateAlternatives(rules) { unité: "€/an", valeur: "coût . voiture", contexte: { - ...contexteBaseCost, + ...baseContexte, "voiture . thermique . carburant": `'${carburant}'`, }, } @@ -94,14 +86,14 @@ export default function generateAlternatives(rules) { rules[`empreinte . ${motorisation} . ${gabarit}`] = { titre: `${gabaritTitle} ${motorisation}`, unité: "kgCO2eq/an", - valeur: "ngc . transport . voiture", - contexte: contexteBaseEmission, + valeur: "empreinte . voiture", + contexte: baseContexte, } rules[`coût . ${motorisation} . ${gabarit}`] = { titre: `${gabaritTitle} ${motorisation}`, unité: "€/an", valeur: "coût . voiture", - contexte: contexteBaseCost, + contexte: baseContexte, } } }