Files
Momento/memento-note/docs/admin-billing-quotas-guide.md
Antigravity ee70e74bf5
All checks were successful
CI / Lint, Unit Tests & Build (push) Successful in 5m39s
CI / Deploy production (on server) (push) Successful in 22s
fix: 5 bugs critiques de l'éditeur (Phase 1 audit)
1. replaceAll (Find & Replace) — une seule transaction ProseMirror
   au lieu d'un forEach cassé. Tous les matchs sont maintenant remplacés.

2. Link Preview unwrap — deleteNode() au lieu de clearer les attrs
   qui laissaient un nœud fantôme invisible dans le document.

3. Conversion Markdown → richtext — breaks: true dans marked.parse()
   Les simple newlines sont maintenant convertis en <br>.
   + préserve les blocs custom (toggle, callout, math, columns,
   outline, link-preview) en commentaires HTML lors de l'export MD.

4. emitNoteChange exercices — shape corrigée (type:'created' attend
   un objet Note, pas noteId/notebookId séparés).

5. Raccourcis clavier sans conflit :
   Cmd+Shift+C → Cmd+Alt+C (callout, avant: copier)
   Cmd+Shift+O → Cmd+Alt+O (outline, avant: historique/signets)
   Cmd+Shift+L → Cmd+Alt+L (colonnes, avant: lock screen macOS)
2026-06-20 15:48:18 +00:00

4.2 KiB

Guide d'utilisation — Admin Facturation & Quotas

Objectif

La page Admin > Facturation & Quotas permet de gérer, sans redéploiement :

  • les limites mensuelles par fonctionnalité IA (par tier)
  • les Price IDs Stripe utilisés par le checkout
  • l'activation/désactivation de l'interface de facturation
  • un aperçu d'usage (requêtes/tokens)

Accès

  1. Connectez-vous avec un compte ADMIN.
  2. Ouvrez la console admin (/admin).
  3. Cliquez sur Facturation & quotas dans la sidebar.

Si vous n'êtes pas admin, les actions sont refusées côté serveur.


Section 1 — Config Stripe (métier)

Cette section sert à configurer les éléments business de Stripe :

  • STRIPE_PRICE_PRO_MONTHLY
  • STRIPE_PRICE_PRO_ANNUAL
  • STRIPE_PRICE_BUSINESS_MONTHLY
  • STRIPE_PRICE_BUSINESS_ANNUAL
  • toggle Activer la facturation

Procédure

  1. Renseignez/mettez à jour les price_... IDs.
  2. Activez ou désactivez la facturation via la case.
  3. Cliquez sur Enregistrer la config.

Important sécurité

  • STRIPE_SECRET_KEY et STRIPE_WEBHOOK_SECRET ne sont pas gérés ici.
  • Ils doivent rester dans les secrets d'environnement serveur (Docker/env/vault).

Section 2 — Quotas par palier

Vous pouvez définir, pour chaque tier (BASIC, PRO, BUSINESS, ENTERPRISE) :

  • Indisponible : fonctionnalité non accessible
  • Limité : plafond mensuel (nombre entier >= 0)
  • Illimité : pas de plafond

Procédure

  1. Cliquez sur le tier ciblé.
  2. Pour chaque fonctionnalité :
    • choisissez le mode d'accès
    • si mode Limité, entrez la valeur mensuelle
  3. Cliquez sur Enregistrer sur la ligne concernée.

Délai d'effet

Les changements sont appliqués rapidement (cache), en général sous ~60 secondes.


Section 3 — Aperçu consommation

La section affiche :

  • usage par fonctionnalité (requêtes + tokens)
  • top utilisateurs
  • date de dernière synchronisation

Source des données

  • Compteurs temps réel : Redis
  • Consolidation historique : table UsageLog
  • Sync via cron (/api/cron/sync-usage)

Si la synchronisation n'a pas encore tourné, l'interface peut indiquer un état non synchronisé.


Cas d'usage fréquents

1) Augmenter temporairement le quota chat de PRO

  1. Tier: PRO
  2. Ligne chat -> mode Limité
  3. Mettre par exemple 50 -> 100
  4. Enregistrer

2) Désactiver la vente (maintenance Stripe)

  1. Décochez Activer la facturation
  2. Enregistrer la config
  3. Vérifiez côté utilisateur: /settings/billing montre l'état désactivé

3) Rendre une feature inaccessible en BASIC

  1. Tier: BASIC
  2. Ligne feature -> mode Indisponible
  3. Enregistrer

Validation rapide après changement

Après une modification importante, vérifier :

  1. Le toast de succès en admin
  2. Le comportement côté utilisateur (/settings/billing / appels IA)
  3. Les logs serveur en cas d'erreur
  4. L'AuditLog pour tracer qui a modifié quoi

Dépannage

"Le bouton Enregistrer ne semble rien faire"

  • Vérifiez que vous êtes bien connecté en ADMIN.
  • Regardez le toast d'erreur.
  • Vérifiez les logs serveur (action rejetée, validation invalide, etc.).

"Les quotas ne changent pas immédiatement"

  • Attendez ~60 secondes (cache).
  • Relancez une action IA qui consomme réellement le quota.
  • Vérifiez que la feature est bien en mode attendu (indisponible/limité/illimité).

"Le checkout ne démarre pas"

  • Vérifiez les 4 STRIPE_PRICE_* IDs.
  • Vérifiez que la facturation est activée.
  • Vérifiez que les secrets Stripe serveur sont présents (STRIPE_SECRET_KEY, STRIPE_WEBHOOK_SECRET).

Bonnes pratiques d'exploitation

  • Éviter les changements massifs sans validation progressive.
  • Journaliser les changements critiques (tiers très utilisés).
  • Préférer des paliers de quota cohérents entre fonctionnalités similaires.
  • Garder un rituel de revue hebdo des usages (section Aperçu consommation).

Référence technique (fichiers clés)

  • app/(admin)/admin/billing/page.tsx
  • app/(admin)/admin/billing/billing-admin-client.tsx
  • app/actions/admin-billing.ts
  • lib/plan-entitlements.ts
  • lib/entitlements.ts
  • lib/billing/stripe-prices.ts
  • app/api/billing/status/route.ts