Registre de crédits d’organisation
Comprenez crédits mutualisés, comptabilité append-only, expiration, consommation idempotente et remboursements.
Synchronisé avec le commit
7d452a6du starter.
Les crédits appartiennent à l’organisation et ses membres partagent le solde. Le registre est append-only : ne modifiez/supprimez aucune ligne et ne contournez pas src/services/credit.ts par SQL direct.
Une attribution ajoute une ligne positive avec transaction unique et expiration optionnelle. La dépense prend un advisory lock d’organisation, rejoue tout le registre, consomme d’abord ce qui expire tôt et n’ajoute du négatif que si le solde utilisable suffit. Elle peut créer des lignes :part:n, regroupées par l’API en transaction logique. Un remboursement ajoute des compensations liées à la dépense.
balance_after est le total comptable à l’insertion, pas toujours le disponible après expiration. Utilisez le résumé d’organisation pour disponible, attribué, consommé et expiré.
Toute mutation économique exige une clé métier stable. Deux appels identiques produisent un effet ; les tests l’imposent. Renouvellements et Stripe emploient des numéros déterministes. Les attributions admin sont plafonnées et auditées.
Pour une fonction payante : calculez le coût en configuration, exigez l’entitlement, dépensez via le service, gardez la transaction racine et remboursez si l’étape suivante échoue.