Cashback (campagnes promotionnelles)¶
Extrait du domain map API, qui était chargé dans chaque session agent. La rule garde l'index module → contexte ; le détail vit ici, à côté du code.
Endpoint leger (GET /app-config, JWT required) appele une fois au demarrage de l'app. Retourne la config temps-dependante :
Cashback : campagnes promotionnelles appliquees sur les achats primaires pendant une periode.
- Source de verite : businessRules.cashback dans @bricks-common/api-communication
- Convention : une seule campagne active a un instant T
- getActiveCampaignAt(date) : retourne la premiere campagne dont date est dans [startDate, endDate] (inclusif, timezone Europe/Paris)
- Reponse : { activeCashback?: { operationName, percentage, startDate, endDate } }
Application backend : lors d'un achat primaire, primary-purchase.service evalue getActiveCampaignAt(purchaseDate). Si actif, le cashback est attache au contexte de la WT : amount = round(purchaseValue * percentage / 100) en centimes + percentage + operationName
Integration front :
- Mobile : AppConfigProvider gate (bloque le rendu si pending), prefetch au boot via runMandatoryLoader. CashbackBadge sur les cartes projet, CashbackBanner sur l'ecran d'achat
- Web : RTK Query lazy + Redux slice appConfig. Badge sur les cartes projet, banner dans le modal d'achat