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

162 lines
4.2 KiB
Markdown

# 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`