Aller au contenu

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 flag ENABLE_BOOSTED_BALANCE_GAINS_PAYOUT est désactivé (early return), ou si aucune campagne active n'est trouvée par computeActiveCampaign.

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