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)
4.2 KiB
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
- Connectez-vous avec un compte ADMIN.
- Ouvrez la console admin (
/admin). - 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_MONTHLYSTRIPE_PRICE_PRO_ANNUALSTRIPE_PRICE_BUSINESS_MONTHLYSTRIPE_PRICE_BUSINESS_ANNUAL- toggle Activer la facturation
Procédure
- Renseignez/mettez à jour les
price_...IDs. - Activez ou désactivez la facturation via la case.
- Cliquez sur Enregistrer la config.
Important sécurité
STRIPE_SECRET_KEYetSTRIPE_WEBHOOK_SECRETne 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
- Cliquez sur le tier ciblé.
- Pour chaque fonctionnalité :
- choisissez le mode d'accès
- si mode Limité, entrez la valeur mensuelle
- 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
- Tier: PRO
- Ligne
chat-> mode Limité - Mettre par exemple
50 -> 100 - Enregistrer
2) Désactiver la vente (maintenance Stripe)
- Décochez Activer la facturation
- Enregistrer la config
- Vérifiez côté utilisateur:
/settings/billingmontre l'état désactivé
3) Rendre une feature inaccessible en BASIC
- Tier: BASIC
- Ligne feature -> mode Indisponible
- Enregistrer
Validation rapide après changement
Après une modification importante, vérifier :
- Le toast de succès en admin
- Le comportement côté utilisateur (
/settings/billing/ appels IA) - Les logs serveur en cas d'erreur
- L'
AuditLogpour 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.tsxapp/(admin)/admin/billing/billing-admin-client.tsxapp/actions/admin-billing.tslib/plan-entitlements.tslib/entitlements.tslib/billing/stripe-prices.tsapp/api/billing/status/route.ts