From ab0e5b4e8ce5f35a58e210bf4e4b348b70a7b296 Mon Sep 17 00:00:00 2001 From: Emile Rolley Date: Wed, 11 Sep 2024 18:52:57 +0200 Subject: [PATCH] fix: generate correct alternatives with the new rules --- build.js | 2 - copy.js | 7 --- personas.yaml | 1 - rules/cout.publicodes | 75 ++++++++++++++++++++------------ rules/empreinte.publicodes | 12 ++--- rules/usage.publicodes | 2 +- rules/voiture.publicodes | 49 +++++++++++---------- scripts/generate-alternatives.js | 58 +++++++++++++++--------- ui.yaml | 6 +-- 9 files changed, 120 insertions(+), 92 deletions(-) delete mode 100644 copy.js diff --git a/build.js b/build.js index dffb7ed..77b8f4f 100644 --- a/build.js +++ b/build.js @@ -45,12 +45,10 @@ writeFileSync(modelDestPath, JSON.stringify(resolvedRules)) console.log(`✅ ${modelDestPath} generated`) const personas = getPersonas(model) - writeFileSync(personasDestPath, JSON.stringify(personas)) console.log(`✅ ${personasDestPath} generated`) const ui = getUI(model) - writeFileSync(uiDestPath, JSON.stringify(ui)) console.log(`✅ ${uiDestPath} generated`) diff --git a/copy.js b/copy.js deleted file mode 100644 index 429e875..0000000 --- a/copy.js +++ /dev/null @@ -1,7 +0,0 @@ -import { copyFileSync } from "fs" - -const srcPath = "publicodes-evenements.model.json" -const destPath = `doc/src/${srcPath}` - -copyFileSync(srcPath, destPath) -console.log(`✅ ${destPath} correctly written in "doc/src"`) diff --git a/personas.yaml b/personas.yaml index 671718f..2b70591 100644 --- a/personas.yaml +++ b/personas.yaml @@ -1,5 +1,4 @@ # TODO: check if the rules are still valid at compile time - aller-retours travail électrique ville: titre: Aller-retours travail en ville (électrique) description: | diff --git a/rules/cout.publicodes b/rules/cout.publicodes index 222360d..15377b4 100644 --- a/rules/cout.publicodes +++ b/rules/cout.publicodes @@ -54,9 +54,15 @@ coûts . voiture . coûts de possession . contrôle technique: coûts . voiture . coûts de possession . entretien: - titre: Coût annuel de l'entretien de votre voiture - question: En moyenne, combien payez-vous pour l'entretien de votre voiture par an ? + question: Combien coûte l'entretien de votre voiture ? + description: | + Renseignez le coût annuel moyen de l'entretien de votre voiture hors + contrôle technique. Cela comprend les réparations occasionnelles, + changement de batterie, etc... + Si vous ne connaissez pas ce coût, vous pouvez laisser la valeur par + défaut. par défaut: entretien estimé + plancher: 0 unité: €/an coûts . voiture . coûts de possession . entretien estimé: @@ -114,9 +120,13 @@ coûts . voiture . coûts de possession . entretien thermique moyen: comptabilisé à part). coûts . voiture . coûts de possession . assurance: - titre: Coût annuel de votre assurance - question: Coût annuel de votre assurance ? + question: Quel est le coût de l'assurance de votre voiture ? + description: | + Renseignez le coût annuel de l'assurance de votre voiture. Si vous ne + connaissez pas ce coût, vous pouvez laisser la valeur par défaut. par défaut: assurance estimée + plancher: 0 + unité: €/an coûts . voiture . coûts de possession . assurance estimée: titre: Coût annuel estimé de l'assurance @@ -220,42 +230,42 @@ coûts . voiture . coûts d'utilisation . consommation: titre: Coût de la consommation annuelle valeur: consommation au km * usage . km annuels -coûts . voiture . coûts d'utilisation . consommation au km: +coûts . voiture . coûts d'utilisation . consommation . consommation au km: titre: Coût de la consommation au km formule: variations: - si: voiture . motorisation = 'électrique' - alors: consommation au km . électrique + alors: électrique - si: voiture . motorisation = 'thermique' - alors: consommation au km . thermique + alors: thermique - si: voiture . motorisation = 'hybride' - alors: consommation au km . hybride + alors: hybride unité: €/km note: | Pour les voitures hybrides nous faisons la même hypothèse que pour la note d'analyse [_Voiture électrique : à quel coût ?_](https://www.strategie.gouv.fr/sites/strategie.gouv.fr/files/atoms/files/fs-2022-na-115-voiture_electrique-annexe_methodo-novembre.pdf) de France Stratégie. + avec: + thermique: + valeur: voiture . thermique . consommation carburant * voiture . thermique . prix carburant / 100 + unité: €/km -coûts . voiture . coûts d'utilisation . consommation au km . thermique: - valeur: voiture . thermique . consommation * voiture . thermique . prix carburant / 100 - unité: €/km - -coûts . voiture . coûts d'utilisation . consommation au km . électrique: - valeur: voiture . électrique . consommation * voiture . électrique . prix kWh / 100 - unité: €/km + électrique: + valeur: voiture . électrique . consommation électricité * voiture . électrique . prix kWh / 100 + unité: €/km -coûts . voiture . coûts d'utilisation . consommation au km . hybride: - formule: - somme: - - consommation au km . thermique * 75% - - consommation au km . électrique * 25% - unité: €/km - note: | - Pour les voitures hybrides nous faisons la même hypothèse que pour la - note d'analyse [_Voiture électrique : à quel coût - ?_](https://www.strategie.gouv.fr/sites/strategie.gouv.fr/files/atoms/files/fs-2022-na-115-voiture_electrique-annexe_methodo-novembre.pdf) - de France Stratégie. + hybride: + formule: + somme: + - consommation au km . thermique * 75% + - consommation au km . électrique * 25% + unité: €/km + note: | + Pour les voitures hybrides nous faisons la même hypothèse que pour la + note d'analyse [_Voiture électrique : à quel coût + ?_](https://www.strategie.gouv.fr/sites/strategie.gouv.fr/files/atoms/files/fs-2022-na-115-voiture_electrique-annexe_methodo-novembre.pdf) + de France Stratégie. coûts . voiture . coûts d'utilisation . stationnement: question: Combien coûte le stationnement de votre voiture ? @@ -263,6 +273,7 @@ coûts . voiture . coûts d'utilisation . stationnement: Renseignez le coût annuel associé au stationnement de votre voiture (parking, garage, place payante, etc...). par défaut: 50 €/mois + plancher: 0 unité: €/an note: | Valeur par défaut basée sur le [baromètre de @@ -280,8 +291,12 @@ coûts . voiture . coûts d'utilisation . stationnement: coûts . voiture . coûts d'utilisation . péage: titre: Coût annuel lié aux péages - question: Combien payez-vous en moyenne pour les péages par an ? - par défaut: estimé + question: Combien payez-vous en moyenne pour les péages ? + par défaut: + valeur: estimé + arrondi: oui + plancher: 0 + unité: €/an avec: estimé: titre: Coût annuel estimé des péages @@ -302,7 +317,7 @@ coûts . voiture . coûts d'utilisation . péage: comparant l'évolution des tarifs des autoroutes entre 2022 et 2023. coûts . voiture . coûts d'utilisation . contraventions: - question: Quel le coût des contraventions que vous devez payer en moyenne par an ? + question: Quel le coût des contraventions que vous payez ? description: | Il s'agit ici de toutes les contraventions qui surviennent : parking, vitesse, ivresse, feu cassé, stop grillé, etc. @@ -312,6 +327,8 @@ coûts . voiture . coûts d'utilisation . contraventions: par défaut: valeur: recettes annuelles 2022 / parc français 2022 arrondi: oui + unité: €/an + plancher: 0 note: | Cette question n'est pas évidente, mais elle est néanmoins non négligeable. Les recettes des amendes diverses de circulation [ont atteint 1,8 milliards diff --git a/rules/empreinte.publicodes b/rules/empreinte.publicodes index 8562b36..bac4430 100644 --- a/rules/empreinte.publicodes +++ b/rules/empreinte.publicodes @@ -33,16 +33,16 @@ empreinte . voiture: # Permet de forcer l'utilisation de la consommation estimée lors des # recalculs pour les alternatives. variations: - - si: voiture . thermique . consommation > 1 - alors: voiture . thermique . consommation - - sinon: voiture . thermique . consommation . consommation estimée + - si: voiture . thermique . consommation carburant > 1 + alors: voiture . thermique . consommation carburant + - sinon: voiture . thermique . consommation estimée ngc . transport . voiture . électrique . consommation aux 100: valeur: # Permet de forcer l'utilisation de la consommation estimée lors des # recalculs pour les alternatives. variations: - - si: voiture . électrique . consommation > 1 - alors: voiture . électrique . consommation - - sinon: voiture . électrique . consommation . consommation estimée + - si: voiture . électrique . consommation électricité > 1 + alors: voiture . électrique . consommation électricité + - sinon: voiture . électrique . consommation estimée # On souhaite estimer l'empreinte total de la voiture et non par personne. ngc . transport . voiture . voyageurs: 1 diff --git a/rules/usage.publicodes b/rules/usage.publicodes index 84ba6b2..d1c4914 100644 --- a/rules/usage.publicodes +++ b/rules/usage.publicodes @@ -37,7 +37,7 @@ usage . km annuels . estimés: formule: variations: - si: voiture . thermique . carburant = 'gazole B7 ou B10' - alors: 953 + alors: 9535 - si: voiture . thermique . carburant = 'essence E5 ou E10' alors: 13975 - sinon: (13975 + 9535) / 2 diff --git a/rules/voiture.publicodes b/rules/voiture.publicodes index 2764f5b..ebb900b 100644 --- a/rules/voiture.publicodes +++ b/rules/voiture.publicodes @@ -116,10 +116,10 @@ voiture . prix d'achat . estimé: unité: € note: | La valeur du prix d'achat moyen d'une voiture neuve est importante pour le - calcul des coûts des alternatives et non vraiment pour le calcul de la + calcul des coûts des alternatives et pas vraiment pour le calcul de la voiture actuelle. En effet, le prix d'achat de la voiture actuelle pourra - facilement être renseigné par l'utilisateurice. C'est pourquoi nous avons - choisi de nous baser sur des valeurs d'achat de voitures récentes, car ce + facilement être renseigné par l'utilisateurice. C'est **pourquoi nous avons + choisi de nous baser sur des valeurs d'achat de voitures récentes**, car ce seront elles qui seront les plus susceptibles d'être achetées en remplacement de la voiture actuelle. @@ -146,7 +146,7 @@ voiture . prix d'achat . estimé: carburants. Il faudrait alors trouver une source le détaillant. Cependant, pour une première version, cela nous semble suffisant. -voiture . thermique . consommation: +voiture . thermique . consommation carburant: question: Quelle est sa consommation moyenne ? applicable si: une de ces conditions: @@ -159,21 +159,21 @@ voiture . thermique . consommation: Renseignez la consommation moyenne de votre voiture en litre aux 100 km tel que renseigné par le constructeur. Si vous ne la connaissez pas, vous pouvez laisser la valeur par défaut. - avec: - consommation estimée: - titre: Consommation éstimée par défaut - valeur: ngc . transport . voiture . thermique . consommation estimée - unité: l/100km - contexte: - ngc . transport . voiture . utilisateur: "'propriétaire'" - ngc . transport . voiture . gabarit: voiture . gabarit - ngc . transport . voiture . motorisation: voiture . motorisation - ngc . transport . voiture . thermique . carburant: voiture . thermique . carburant + +voiture . thermique . consommation estimée: + titre: Consommation estimée par défaut + valeur: ngc . transport . voiture . thermique . consommation estimée + unité: l/100km + contexte: + ngc . transport . voiture . utilisateur: "'propriétaire'" + ngc . transport . voiture . gabarit: voiture . gabarit + ngc . transport . voiture . motorisation: voiture . motorisation + ngc . transport . voiture . thermique . carburant: voiture . thermique . carburant voiture . électrique: titre: Voiture électrique -voiture . électrique . consommation: +voiture . électrique . consommation électricité: question: Quelle est sa consommation électrique moyenne ? applicable si: une de ces conditions: @@ -181,18 +181,19 @@ voiture . électrique . consommation: - motorisation = 'hybride' par défaut: consommation estimée unité: kWh/100km + plancher: 1 description: | Renseignez la consommation moyenne de votre voiture en kWh par 100 km tel que renseigné par le constructeur. Si vous ne la connaissez pas, vous pouvez laisser la valeur par défaut. - avec: - consommation estimée: - titre: Consommation estimée par défaut - valeur: ngc . transport . voiture . électrique . consommation estimée - unité: kWh/100km - contexte: - ngc . transport . voiture . utilisateur: "'propriétaire'" - ngc . transport . voiture . gabarit: voiture . gabarit + +voiture . électrique . consommation estimée: + titre: Consommation estimée par défaut + valeur: ngc . transport . voiture . électrique . consommation estimée + unité: kWh/100km + contexte: + ngc . transport . voiture . utilisateur: "'propriétaire'" + ngc . transport . voiture . gabarit: voiture . gabarit voiture . électrique . prix kWh: question: Quel est le prix du kWh ? @@ -381,6 +382,7 @@ voiture . thermique . prix carburant: - motorisation = 'thermique' - motorisation = 'hybride' par défaut: prix carburant moyen + plancher: 0 description: | Renseignez le prix moyen du carburant que vous avez dû payer cette année. Si vous ne le connaissez pas, vous pouvez laisser la valeur par défaut. @@ -411,6 +413,7 @@ voiture . thermique . prix carburant moyen: voiture . durée de détention: question: Depuis combien de temps possédez-vous votre voiture ? par défaut: 5.5 + plancher: 0 unité: an description: | Renseignez la durée totale de détention de votre voiture. Si vous la diff --git a/scripts/generate-alternatives.js b/scripts/generate-alternatives.js index d9e0760..30bfc7e 100644 --- a/scripts/generate-alternatives.js +++ b/scripts/generate-alternatives.js @@ -45,18 +45,33 @@ export default function generateAlternatives(rules) { const baseContexte = { "voiture . gabarit": `'${gabarit}'`, "voiture . motorisation": `'${motorisation}'`, - // 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", + "voiture . électrique . consommation électricité": { + valeur: "voiture . électrique . consommation estimée", + contexte: { + "voiture . gabarit": `'${gabarit}'`, + }, + }, } - if (motorisation !== "électrique") { + if (motorisation === "électrique") { rules[`empreinte . ${motorisation} . ${gabarit}`] = { - titre: `Ensemble des ${gabarit} ${motorisation}`, + titre: `${gabaritTitle} ${motorisation}`, + unité: "kgCO2eq/an", + valeur: "empreinte . voiture", + contexte: baseContexte, + } + rules[`coûts . ${motorisation} . ${gabarit}`] = { + titre: `${gabaritTitle} ${motorisation}`, + unité: "€/an", + valeur: "coûts . voiture", + contexte: baseContexte, + } + } else { + rules[`empreinte . ${motorisation} . ${gabarit}`] = { + titre: `Ensemble des ${gabaritTitle} ${motorisation}`, } rules[`coûts . ${motorisation} . ${gabarit}`] = { - titre: `Ensemble des ${gabarit} ${motorisation}`, + titre: `Ensemble des ${gabaritTitle} ${motorisation}`, } for (const carburant of carburants) { const carburantTitle = @@ -70,6 +85,14 @@ export default function generateAlternatives(rules) { contexte: { ...baseContexte, "voiture . thermique . carburant": `'${carburant}'`, + "voiture . thermique . consommation carburant": { + valeur: "voiture . thermique . consommation estimée", + contexte: { + "voiture . gabarit": `'${gabarit}'`, + "voiture . motorisation": `'${motorisation}'`, + "voiture . thermique . carburant": `'${carburant}'`, + }, + }, }, } rules[`coûts . ${motorisation} . ${gabarit} . ${carburant}`] = { @@ -79,22 +102,17 @@ export default function generateAlternatives(rules) { contexte: { ...baseContexte, "voiture . thermique . carburant": `'${carburant}'`, + "voiture . thermique . consommation carburant": { + valeur: "voiture . thermique . consommation estimée", + contexte: { + "voiture . gabarit": `'${gabarit}'`, + "voiture . motorisation": `'${motorisation}'`, + "voiture . thermique . carburant": `'${carburant}'`, + }, + }, }, } } - } else { - rules[`empreinte . ${motorisation} . ${gabarit}`] = { - titre: `${gabaritTitle} ${motorisation}`, - unité: "kgCO2eq/an", - valeur: "empreinte . voiture", - contexte: baseContexte, - } - rules[`coûts . ${motorisation} . ${gabarit}`] = { - titre: `${gabaritTitle} ${motorisation}`, - unité: "€/an", - valeur: "coûts . voiture", - contexte: baseContexte, - } } } } diff --git a/ui.yaml b/ui.yaml index be362fb..42dd292 100644 --- a/ui.yaml +++ b/ui.yaml @@ -14,15 +14,15 @@ categories: # Définition des questions par catégorie questions: voiture: - - voiture . occasion - voiture . gabarit - voiture . durée de détention + - voiture . occasion - voiture . prix d'achat - voiture . motorisation - voiture . thermique . carburant - - voiture . thermique . consommation + - voiture . thermique . consommation carburant - voiture . thermique . prix carburant - - voiture . électrique . consommation + - voiture . électrique . consommation électricité - voiture . électrique . prix kWh - coûts . voiture . coûts de possession . entretien - coûts . voiture . coûts de possession . assurance