Reporter un bug • Documentation intéractive • Contribute • Publicodes
Modèle de calcul des coûts et de l'empreinte CO2e de la possession et
l'utilisation d'une voiture individuelle et de ses alternatives. Il existe un
client autonome agir-voiture
et
une intégration est en cours dans l'application
J'agis.
Warning
Ce projet est en cours de construction et est susceptible de fortement évoluer. Voir le document de travail pour plus d'informations sur le projet.
Ajouter le paquet à vos dépendances :
yarn add @betagouv/publicodes-voiture
Afin de faciliter la réutilisation du modèle, ce paquet expose en plus des
règles Publicodes (accessibles depuis
./src/rules
, une classe
CarSimulator
qui encapsule un moteur Publicodes.
Note
To see the full API documentation, please refer to jsDocs.io.
import { CarSimulator } from "@betagouv/publicodes-voiture"
// Initialisation du moteur (parsing des règles Publicodes)
const simulator = new CarSimulator()
// Définition des paramètres (cad. les réponses aux questions)
simulator.setInputs({
"voiture . prix d'achat": 10000,
"voiture . occasion": true,
"voiture . gabarit": "moyenne",
"voiture . motorisation": "thermique",
"voiture . thermique . carburant": "gazole B7 ou B10",
"usage . km annuels . connus": true,
"usage . km annuels . renseignés": 5000,
"voiture . thermique . prix carburant": 5,
"voiture . durée de détention totale": 10,
// ...
})
// Calcul pour la voiture "actuelle"
console.log(simulator.evaluateCar())
// Sortie :
{
emissions: {
value: 1115.731110659287,
unit: "kgCO2e",
title: "Empreinte carbone annuelle de votre voiture",
isEnumValue: false,
isApplicable: true,
},
cost: {
value: 4344.882978723404,
unit: "€/an",
title: "Coûts annuels de votre voiture",
isEnumValue: false,
isApplicable: true,
},
size: {
value: "moyenne",
unit: undefined,
title: "Monospace",
isEnumValue: true,
isApplicable: true,
},
motorisation: {
value: "thermique",
unit: undefined,
title: "Thermique",
isEnumValue: true,
isApplicable: true,
},
fuel: {
value: "gazole B7 ou B10",
unit: undefined,
title: "Diesel",
isEnumValue: true,
isApplicable: true,
},
}
// Calcul des alternatives
const alternatives = simulator.evaluateAlternatives()
// Récupération des informations de la voiture cibles afin de filtrer les alternatives
// non compatibles (ex: ne pas proposer une voiture électrique si la personne
// n'a pas la possibilité de pouvoir recharger sa voiture quotidiennement).
simulator.setInputs(
{
"voiture . cible . gabarit": "SUV",
"voiture . cible . borne de recharge": false,
},
{
// Permet de simplement mettre à jours les entrées au lieu de les écraser
// (comportement par défaut).
overwrite: false
},
)
console.log(simulator.evaluateTargetInfos())
// Sortie :
{
size: {
value: "SUV",
unit: undefined,
title: "SUV",
isEnumValue: true,
isApplicable: true,
},
hasChargingStation: {
value: false,
unit: undefined,
title: "Borne de recharge",
isEnumValue: false,
isApplicable: true,
}
}
Il est également possible d'utiliser uniquement les règles Publicodes directement avec
@betagouv/publicodes-voiture/rules
:
import Engine from "publicodes"
import rules from "@betagouv/publicodes-voiture/rules"
const engine = new Engine(rules)
engine.setSituation({
"voiture . prix d'achat": "10000 €",
"voiture . occasion": "oui",
"usage . km annuels . renseignés": "1000 km/mois",
//...
})
const costs = engine.evaluate("coûts")
const emissions = engine.evaluate("empreinte")
Les règles Publicodes du modèle sont disponible dans le dossier
rules/
.
yarn compile:rules
yarn test
Le code de la documentation est disponible dans le dossier
online-doc/
.
Pour lancer l'app React en local permettant de parcourir la documentation du modèle, il suffit d'exécuter la commande suivante :
yarn install --cwd doc
yarn doc
Afin de publier une nouvelle version il suffit d'exécuter la commande yarn version
.