https://github.com/betagouv/publicodes-voiture
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
https://github.com/betagouv/publicodes-voiture
car co2-emissions costs publicodes publicodes-model
Last synced: 20 days ago
JSON representation
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
- Host: GitHub
- URL: https://github.com/betagouv/publicodes-voiture
- Owner: betagouv
- License: apache-2.0
- Created: 2024-07-26T09:18:00.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-09-11T03:43:58.000Z (about 2 months ago)
- Last Synced: 2025-10-10T11:54:01.512Z (22 days ago)
- Topics: car, co2-emissions, costs, publicodes, publicodes-model
- Language: TypeScript
- Homepage: https://agir-voiture.netlify.app
- Size: 1.44 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
@betagouv/publicodes-voiture
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`](https://github.com/betagouv/agir-voiture) et
une intégration est en cours dans l'application
[J'agis](https://jagis.beta.gouv.fr).
> [!WARNING]
> Ce projet est en cours de construction et est susceptible de fortement
> évoluer. Voir le [document de travail](/specs.md) 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](https://publi.codes) (accessibles depuis
[`./src/rules`](./src/rules), une classe
[`CarSimulator`](https://www.jsdocs.io/package/@betagouv/publicodes-voiture#CarSimulator)
qui encapsule un moteur [Publicodes](https://publi.codes).
> [!NOTE]
> To see the full API documentation, please refer to
> [jsDocs.io](https://www.jsdocs.io/package/@betagouv/publicodes-voiture).
```typescript
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,
}
}
```
### Avec le moteur Publicodes
Il est également possible d'utiliser uniquement les règles Publicodes directement avec
`@betagouv/publicodes-voiture/rules` :
```typescript
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/`](https://github.com/betagouv/publicodes-voiture/tree/main/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/`](https://github.com/betagouv/publicodes-voiture/tree/main/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`.
```
```