---
tags: Mode d'emploi
---
# Modifications des preuves à posteriori
Ce document traite de la question des **modifications ou invalidations** de preuve à posteriori de son envoi.
Le principal problème de cette fonctionnalité est qu'elle a des impacts sur plusieurs autres systèmes :
- le moteur d'incitation ;
- l'édition d'attestation ;
- le moteur de détection d'anomalie.
Idéalement, il faudrait que les modifications se fassent dans le laps de temps autorisé par le registre de preuve de covoiturage ([5 jours](https://registre-preuve-de-covoiturage.gitbook.io/produit/mode-demploi/envoyer-des-trajets#quel-est-le-delai-denvoi-des-preuves-de-covoiturage)) actuellement. Comme cela ne correspond pas au besoin des opérateurs, il faut proposer des solutions alternatives.
## Impacts
### Incitations
Sur le moteur d'incitation, actuellement, on fonctionne en "flux tendu", un trajet est envoyé pour être processé 5 jours après sa réalisation (un trajet du 11 est processé le 16). Si on fait le calcul, le résultat va :
- être accessible par les AOM ;
- être accessible par les opérateurs - notamment ceux qui n'ont pas de moteur de calcul en interne ;
On ne peut pas modifier ce résultat puisqu'il est public. Si on a un trajet qui est invalidé par la suite, cela peut avoir un impact sur l'ensemble des calculs d'incitation qui suivent :
- problème de plafond de trajet par jour ;
- problème de plafond de budget ;
- etc.
### Attestations
De manière analogue, l'édition d'attestation est une photographie a un instant T, difficile de l'éditer sachant qu'un trajet pourrait être invalidé par la suite.
### Anomalies & Fraudes
Sur le moteur de détection d'anomalie, l'impact est limité : on peut refaire passer les calculs. Par contre, lorsque le moteur de détection d'anomalie impacte le moteur d'incitation, alors, on a le même problème que pour celui-ci.
## Pistes de travail
Pour essayer de trouver une solution qui convienne, il faut :
- permettre d'invalider un trajet dans un laps de temps qui suit son envoie ;
- que l'intégrité du résultat des calculs d'inciation/ de fraude sont conservées.
La solution que nous proposons est de décaler l'application des 3 systèmes dépendants de l'acquisition à la fin de la période sur laquelle les trajets peuvent être modifiés/supprimés. L'impact concret est donc un décalage plus important qu'actuellement entre la date du trajet et son traitement.
### Période
Sur ce décalage, deux possibilités :
- soit on est sur un nombre de jour glissant - par ex 30 jours ;
- soit on est sur une période fixe - par ex, chaque mois.
Pour permettre aux AOMs d'avoir des chiffres - bien que non "réel" - on peut faire un mix entre le système actuel de traitement à J+5 (draft) et un calcul **complet** en fin de période. Les première données ne servant finalement qu'à des fins d'affichage.
### Scope (modification vs invalidations)
Concernant le scope, deux possibilités :
- modification des trajets à posteriori ;
- invalidation des trajets à posteriori.
Il semble que la modification des trajets à posteriori revienne à modifier la période à laquelle les opérateurs doivent envoyer les trajets. Par ailleurs, les effets de bords potentiels sont à mesurer. **C'est pourquoi, dans un premier temps, nous proposons de nous limiter à l'invalidation**.
## Synthèse
Mise en place d'une période de calcul (exemple, J+X, la périodicité est à discuter voir ci-avant) :
- Envoie des trajets par les opérateur, via API, à J+5 au plus tard ;
- Traitement de ces données pour incitation à J+5 en version "draft". Ces données sont accessibles par les AOMs pour prévisualiser leurs incitations ;
- Lancement du traitement fraude à J+X ;
- Lancement des calculs d'incitation à J+X (après la fraude) ;
- Ouverture des points d'API "attestation" à J+X ;
## Endpoints
### Endpoint d'invalidation d'un trajet
- DELETE /journeys/{journey_id}
Request :
```json
{
code: 1,
message: "Too many trip in period"
}
```
Response :
- OK
- code 204
- pas de body
- Not found
- 404
- Hors délais
- 403
---
---
### Endpoint d'information sur un trajet
- GET /journeys/{journey_id}
Response
- OK 200
- Not Found 404 (mm si journey_id d'un autre opé)
```json
{
journey_id: "",
status: "accepted",
error: {},
result: {},
}
```
Status possible =
```js
const status = [
"waiting_normalization", // received, waiting for processing
"acquisition_error", // received but not saved due to acquisition error
"normalization_error", // processing error
"waiting_fraudcheck" // processed, waiting for fraudcheck
"fraudcheck_error", // fraudcheck detected
"canceled", // cancelled by operator
"ok", // evrything is ok :)
]
```
## Retours du webinaire
Les opérateurs en présence n'ont pas utilisé de VETO. Les propositions faites semblent être acceptées par tous.
Proposition des opérateurs : standardiser les retours d’erreurs.
Du point de vue technique les règles sont divisées en deux catégories :
* Règles basiques.
* Règles avec états.
Chronologie :
- Envoie des trajets par les opérateur, via API, à J+5 au plus tard ;
- Traitement de ces données pour incitation à J+5 en version "draft" avec des règles basiques. Ces données sont accessibles par les AOMs pour prévisualiser leurs incitations ;
- Lancement du traitement fraude à J+X ;
- Itération des calculs d'incitation (règles avec états) le 6 de chaque mois sur les données du mois précédent ;
- Opération 1 : annulation des incitations sur les trajets annulés ;
* Opération 2 : application des limites (exemple : 10 trajets / mois) ;
* Opération 3 : restriction externe (exemple : priorisation des campagnes).
- Ouverture des points d'API "attestation" à J+X.