feat: publication IA (magazine/brief/essay) + fixes critique
Some checks failed
CI / Lint, Unit Tests & Build (push) Failing after 1m22s
CI / Deploy production (on server) (push) Has been skipped

Publication IA:
- 4 templates (magazine, brief, essay, simple) avec CSS riche
- Rewrite IA (article/exercises/tutorial/reference/mixed)
- Modération avec timeout 12s + fallback safe
- Quotas publish_enhance par tier (basic=2, pro=15, business=100)
- Détection contenu stale (hash)
- Migration DB publishedContent/publishedTemplate/publishedSourceHash

Fixes:
- cheerio v1.2: Element -> AnyNode (domhandler), decodeEntities cast
- _isShared ajouté au type Note (champ virtuel serveur)
- callout colors PDF export: extraction fonction pure testable
- admin/published: guard note.userId null
- Cmd+S fonctionne en mode dialog (pas seulement fullPage)

i18n:
- 23 clés publish* traduites dans les 15 locales
- Extension Web Clipper: 13 locales mise à jour

Tests:
- callout-colors.test.ts (6 tests)
- note-visible-in-view.test.ts (5 tests)
- entitlements.test.ts + byok-entitlements.test.ts: mock usageLog + unstubAllEnvs
- 199/199 tests passent

Tracker: user-stories.md sync avec sprint-status.yaml
This commit is contained in:
Antigravity
2026-06-28 07:32:57 +00:00
parent 902fe95a69
commit 96e7902f01
169 changed files with 5382 additions and 1527 deletions

View File

@@ -1,8 +1,8 @@
# Momento — Guide Stripe : Configuration, Architecture et Utilisation
# Memento — Guide Stripe : Configuration, Architecture et Utilisation
## Vue d'ensemble
Momento utilise **Stripe** pour la gestion des abonnements payants (Pro, Business, Enterprise). Le système repose sur :
Memento utilise **Stripe** pour la gestion des abonnements payants (Pro, Business, Enterprise). Le système repose sur :
- **Stripe Embedded Checkout** (modal dans l'app, sans redirection)
- **Webhooks** pour synchroniser l'état des abonnements en temps réel
@@ -86,11 +86,11 @@ Momento utilise **Stripe** pour la gestion des abonnements payants (Pro, Busines
Dans le **Stripe Dashboard****Produits** :
#### Produit 1 : Momento Pro
#### Produit 1 : Memento Pro
| Champ | Valeur |
|-------|--------|
| Nom | Momento Pro |
| Nom | Memento Pro |
| Description | Pour les consultants et créateurs exigeants |
Créer **2 prix** :
@@ -100,11 +100,11 @@ Créer **2 prix** :
| Pro Mensuel | 9,90 EUR | Tous les mois |
| Pro Annuel | 99 EUR | Tous les ans |
#### Produit 2 : Momento Business
#### Produit 2 : Memento Business
| Champ | Valeur |
|-------|--------|
| Nom | Momento Business |
| Nom | Memento Business |
| Description | Pour les équipes et chefs de produit |
Créer **2 prix** :
@@ -244,7 +244,7 @@ Utilisateur Frontend Backend
### 3.2 Webhook — Cycle de vie des abonnements
| Événement Stripe | Action Momento | Statut Prisma |
| Événement Stripe | Action Memento | Statut Prisma |
|------------------|---------------|---------------|
| `checkout.session.completed` | Upsert subscription avec tier/periode | `ACTIVE` |
| `customer.subscription.created` | Upsert (nouvelle souscription) | Selon Stripe |
@@ -454,7 +454,7 @@ Devise : EUR (configurable dans Stripe Dashboard pour multi-devises).
## 11. Bons de réduction & Codes de promotion (Coupons & Promo Codes)
Momento intègre le support natif et sécurisé de Stripe pour les codes promotionnels lors du paiement en Embedded Checkout via l'attribut `allow_promotion_codes: true` dans `/api/billing/create-checkout/route.ts`.
Memento intègre le support natif et sécurisé de Stripe pour les codes promotionnels lors du paiement en Embedded Checkout via l'attribut `allow_promotion_codes: true` dans `/api/billing/create-checkout/route.ts`.
### 11.1 Concepts Clés : Bon de réduction (Coupon) vs Code de promotion (Promo Code)
Dans Stripe, la gestion des remises se fait en deux niveaux :
@@ -477,7 +477,7 @@ Dans Stripe, la gestion des remises se fait en deux niveaux :
- Nombre d'utilisations max (ex: limité aux 100 premiers utilisateurs).
- Date limite de validité (ex: valable uniquement jusqu'au 31 décembre).
- Limiter aux clients n'ayant jamais payé.
- Restriction à des plans spécifiques (ex: restreindre ce code promo uniquement au produit `Momento Pro`).
- Restriction à des plans spécifiques (ex: restreindre ce code promo uniquement au produit `Memento Pro`).
5. Cliquez sur **Créer le bon de réduction**.
### 11.3 Comment désactiver ou supprimer un Code Promo