[!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.
Usage
Ajouter le paquet à vos dépendances :
yarn add @betagouv/publicodes-voiture
Avec la classe CarSimulator
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"
const simulator = new CarSimulator()
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,
})
console.log(simulator.evaluateCar())
{
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,
},
}
const alternatives = simulator.evaluateAlternatives()
simulator.setInputs(
{
"voiture . cible . gabarit": "SUV",
"voiture . cible . borne de recharge": false,
},
{
overwrite: false
},
)
console.log(simulator.evaluateTargetInfos())
{
size: {
value: "SUV",
unit: undefined,
title: "SUV",
isEnumValue: true,
isApplicable: true,
},
hasChargingStation: {
value: false,
unit: undefined,
title: "Borne de recharge",
isEnumValue: false,
isApplicable: true,
}
}
Avec le moteur Publicodes
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")
En local
Compiler le modèle
Les règles Publicodes du modèle sont disponible dans le dossier
rules/
.
yarn compile:rules
Lancer les tests
yarn test
Lancer la documentation
[!TIP]
Pour facilement parcourir la documentation et tester différentes situations pendant
le développement, il est conseillé d'utiliser la commande yarn dev
à la place.
La online-doc
sera bientôt dépréciée.
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
Publier une nouvelle version
Afin de publier une nouvelle version il suffit d'exécuter la commande yarn version
.