Investor Boosted Balance¶
Contrôleur HTTP exposant la vue et les actions liées à la balance boostée investisseur (gains journaliers calculés sur le solde du wallet, claim vers le gift balance). Source : investor-boosted-balance.controller.ts.
Tous les endpoints requièrent un JWT investisseur valide (JwtAuthGuard) et le rôle CUSTOMER (UserRoleGuard).
GET /investor/boosted-balance/view¶
Retourne la vue détaillée de la balance boostée pour l'investisseur connecté : taux applicable, solde du wallet, gains théoriques journaliers, gains déjà claim, gains claim-ables, FAQ traduite (FR / EN) et disclaimer optionnel (controller#L12-L17).
Pré-conditions¶
- Aucune autre que les guards. Le taux retourné est
0%si le feature flagENABLE_BOOSTED_BALANCE_GAINS_PAYOUTest désactivé (early return), ou si aucune campagne active n'est trouvée parcomputeActiveCampaign.
Campagnes (source : businessRules.boostedBalance.campaigns dans @bricks-common/api-communication) :
| Campagne | Taux | Début (Europe/Paris) |
|---|---|---|
launch_offer |
4% | 2025-09-01 |
rate_reduced_may_2026 (Taux standard) |
2,4% | 2026-05-29 00:00 |
computeActiveCampaign retourne la campagne dont la date courante est dans [startDate, endDate]. La réponse peut inclure un disclaimer optionnel si boostedBalanceDisclaimer est configuré (actuellement undefined).
Response¶
Type BoostedBalanceView :
{
"rate": {
"value": 2.4,
"inEffectSince": "2026-05-29T00:00:00+02:00"
},
"currentWalletTotalBalance": 250000,
"theoricalDailyGainsBasedOnCurrentWalletBalance": "27397260273",
"claimedGains": {
"value": 1234,
"lastTransactions": [
{ "value": 567, "date": "...", "status": "confirmed" }
]
},
"claimableGains": {
"valueWithPrecision": "12345678901",
"value": 12
},
"faqTranslations": { "fr": [...], "en": [...] },
"disclaimer": { "id": "...", "title": "...", "content": "..." }
}
claimableGains.valueWithPrecision est exprimé en NanoCents ; value est l'arrondi en cents entiers (le reliquat sub-cent reste réservé côté serveur).
GET /investor/boosted-balance/home-view¶
Variante allégée pour l'écran d'accueil (controller#L19-L24). Mêmes champs métiers que /view mais sans l'historique des transactions, sans la FAQ et sans le disclaimer.
Response¶
Type BoostedBalanceHomeView :
{
"rate": 4,
"claimableGains": 12,
"claimableGainsWithPrecision": "12345678901",
"claimedGains": 1234,
"theoricalDailyGainsBasedOnCurrentWalletBalance": "27397260273"
}
POST /investor/boosted-balance/claim¶
Convertit en wallet transaction (kind boosted_balance_gain) tous les gains claim-ables de l'investisseur et les crédite sur son giftBalance. Le reliquat sub-cent est conservé via une nouvelle ligne claim_cent_rounding_remaining qui sera utilisée au prochain claim (controller#L26-L36).
Pré-conditions¶
- Onboarding investisseur complété (
Customer.assertCompletedInvestorOnboarding) - Droits transactionnels actifs (
assertTransactionRights(['all'])) - Au moins 1 cent (entier) de gains claim-ables (sinon erreur)
Request body¶
Aucun.
Response¶
Vide (204 implicite). Tout retour BadRequestException indique que le claim a échoué.
Erreurs¶
| Code | Statut | Cause |
|---|---|---|
no-claimable-gains |
400 | Aucun gain claim-able (montant arrondi à 0 cent) |
Liens¶
- Service :
investor-boosted-balance.service.ts - Repository :
investor-boosted-balance.gain.repository.ts - Endpoints partagés :
boosted-balance/index.ts - Business rules :
businessRules.ts