---
# System prepended metadata

title: Moteur incitation
tags: [specs]

---

---
tags: specs
---

# Moteur incitation

09/01/2020 - Point d'étape

## Fonctionnement du service policy
Ce service affecte une incitation aux passagers, conducteurs des trajets éligibles à une campagne d’incitation définie dans le registre. 
La sortie est sous forme d'un tableau reprenant les participants du trajet et les incitations affectées. Sur chaque participant du trajet des "parcours" de politique sont calculés successivement. Les actions sont toutes indépendantes et sont binaires (applicables ==> modification du résultat ou non applicables). L'ensemble des parcours sont passés successivement. Les incitations sont fléchées vers le carpool.id (passager ou conducteur).

Il existent des règles applicables à l'ensemble des parcours (global.rules) et d'autres applicables qu'à certain parcours.

## Règles existantes

*_filter : règles ne modifiant pas le résultat*

- adult_only_filter : filtre sur les personnes majeures.
- cost_based_amount : affectation du résultat de l'incitation en fonction du  coût du trajet
- distance_range_filter : filtre par borne de distance (rien à voir avec Elisabeth Borne)
- driver_only_filter : filtre par conducteur
- fixed_amount : montant fixe
- insee_whitelist_filter : filtre par insee
- insee_blacklist_filter : filtre par insee
- max_amount_per_target_restriction : plafond de montant par passager/conducteur par plage temporelle (jour, mois, campagne)
- max_amount_restriction : plafond de montant
- max_trip_per_target_restriction : plafond de trajet par passager/conducteur par plage temporelle (jour, mois, campagne)
- max_trip_restriction : plafond de trajet
- operator_whitelist_filter : filtre par opérateur
- passenger_only_filter: filtre par passager
- per_km : multiplie le résultat précedent par le nombre de km du trajet
- per_passenger: multiplie le résultat précédent par le nombre total de passager (prise en compte également du passenger.seat)
- rank_whitelist_filter : filtre par classe de preuve
- time_range_filter : filtre par heure de la journée
- weekday_filter : filtre par jour de la semaine

## Fonctionnalités manquantes (du plus important au moins important) : 
 - Configuration du mode échelloné par tranche. To Do : faire un échange spécifique entre Nico & Sam pour comprendre ce qui est implémenté en Front aujourd'hui et ce qu'il est possible de faire ou pas.
 ![](https://i.imgur.com/e0Nmiyc.png)
   - piste 1 (privilégiée) : faire une addition sur les chemins, un de peu de refacto légère à faire ;
 - Ajouter le passenger.seat dans la prise en compte du calcul (https://github.com/betagouv/preuve-covoiturage/issues/713)
 - Mise en place d'un timer sur le delais d'affectation d'une incitation.
 - Simulation des campagnes 
     - Simulation d'une campagne brouillon sur le passé.
     - Simulation d'une campagne brouillon sur des données tests pour valider la bonne appréciation des parties prenantes sur la méthode de calcul.
     - Troisième proposition Nico j'ai oublié. 
- Affectation d'un ordre d'application dans le cas où plusieurs campagnes du même territoire sont actives (ref : https://github.com/betagouv/preuve-covoiturage/issues/748)
- Filter par destination A ET origine B sur le territoire. 
- Possibilité de faire des avenants à une politique. Nb : ajouter par exemple des nouveaux opérateurs. 

## Related doc
https://hackmd.io/8zSDpIzXR5modSgbms_VJw