Consommer moins, consommer mieux.

Système de contribution

Fonctionnement général

Le stockage et la restitution des contributions sont assurés en temps réel. Le calcul des contributions estimées est effectué en batch, dans le processus d'agrégation des produits. N'hésitez pas à vous référer aux différents éléments techniques ci-dessous, les codes sont commentés et simples à comprendre.

Détail des composants

Services mis en oeuvre

Nom de la classe JavaDescription
ContributionService.javaService "temps réel" dédié au stockage et à la restitution des "nudges" (contributions estimées de l'utilisateur, cf. objet ContributionVote)
PriceAgregationService.java

Ce service "batch" est en charge de l'agrégation des prix. Il intègre également le calcul du montant de contribution estimé.

  • méthode `computeEstimatedContribution()`

Les ratios permettant d'estimer le montant reversé sont exprimés sous forme de constantes (car non voué à être changés) :

  • `averageAffiliationRatio` : Ratio moyen de rétrocommission.
  • `incomesToBenefitsRatio` : Ratio permettant d'estimer les bénéfices à partir des revenus (chiffre d'affaires).
  • `percentBenefitsReversed` : Pourcentage des bénéfices reversés par Nudger.

Objets modèles

Nom de la classe JavaDescription
ContributionVote.javaContient le vote de l'utilisateur

Repositories

Nom de la classe JavaDescription
ContributionVoteRepository.java  Repository Spring servant à stocker les ContributionVotes dans un index elasticsearch dédié

Objets de configuration

Nom de la classe JavaDescription
ReversementConfig.javaCet objet (et les sous classes associées) formalise les propriétés relatives aux contributions (montants reversés, organisations éligibles, etc.). Ces propriétés sont définies depuis le fichiers de configuration du composant UI application.yml.

Controllers

Nom de la classe JavaDescription
ContributionController.java

Ce controller Spring permet :

  • de recevoir les contributions des utilisateurs (sous forme de requêtes POST).
  • de définir les objets associés à la page de restitution.

Templates Thymleaf

Nom du templateDescription
contribution.htmlCe template Thymleaf est utilisé comme "vue" pour la page "contributions".