refactor(pricing): refonte v7.0 — 3 Cloud (Basic 189$/Essentiel 349$/Pro 549$) + DictIA Local (5998$ An1) + Pro+ soumission

Remplace l'ancien pricing (DictIA 8 / 16 / Cloud) par la nouvelle structure
canonique v7.0 : 4 forfaits + 1 sentinel quote-only.

Changements clés :
- pricing_card.html : signature étendue (badge, recommended, capacity_audio,
  capacity_storage, gpu, yearly_renewal, cta_label) + format prix server-side
  avec NBSP OQLF (5998 -> 5 998 $)
- _pricing_tiers.html : 4 cards (Cloud Basic 189$, Cloud Essentiel 349$,
  Cloud Pro 549$+485$ RECOMMANDÉ, DictIA Local 5998$ An1) + chip Pro+
  soumission -> /contact?pro-plus=1
- plans.py : refonte complète avec yearly_renewal_env (DictIA Local An 2+ =
  500$/an) + is_quote_only sentinel (Pro+ -> redirect /contact, jamais Stripe)
- routes.py : Pro+ intercepté avant le flow Stripe Checkout
- env.stripe.example : nouveau naming STRIPE_CLOUD_BASIC|ESSENTIEL|PRO_*
  + STRIPE_DICTIA_LOCAL_SETUP/RENEWAL_YEARLY
- tarifs.html : header "Quatre forfaits", matrice comparative 4 colonnes,
  FAQ enrichie (7 questions incluant DictIA Local + onboarding Pro + Pro+)
- fonctionnalites.html : section Architecture refondue (4 cards v7.0)
- landing.html : ROI footnote + cycle "189$" + wave "189$/mois" actualisés
- roi_calculator.js : recalibrage sur Cloud ESSENTIEL 349$ × 12 = 4188$/an
- routes.py marketing : FAQ "DictIA 8 et 16" -> "DictIA LOCAL"
- contact.html : "déploiements DictIA 16" -> "Cloud PRO" + "DictIA LOCAL"

Tests :
- test_marketing_landing_template.py : assertions prix v7.0 (189/349/549/5998),
  4 slugs (cloud-basic, cloud-essentiel, cloud-pro, dictia-local), Pro+ chip,
  capacity chips, RECOMMANDÉ sur Cloud PRO
- test_marketing_secondary_pages.py : 4 cards + Pro+ chip + matrice 4 col +
  FAQ 7 questions
- test_stripe_checkout.py : env vars v7.0, slugs cloud-basic/cloud-pro/
  dictia-local + nouveau test pro-plus -> /contact + tests setup pour Cloud PRO
  et DictIA Local
- test_stripe_webhook.py : plan_slug metadata cloud-basic

Status : 28/28 Stripe checkout + 17/17 webhook + 93/98 marketing pass
(les 5 marketing failures sont pré-existantes, non liées au pricing :
test_landing_has_main_nav et test_footer_links_complete = /blog manquant ;
test_trust_bar_has_eyebrow_factual_phrasing + 2 tests conformite =
casing eyebrow + entité é — vérifié par git stash baseline).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Allison
2026-04-28 21:06:12 -04:00
parent e8c7e5cd43
commit 1c4cafaf69
16 changed files with 648 additions and 301 deletions

View File

@@ -44,7 +44,7 @@
.orb-float-a { animation: orb-float 8s ease-in-out infinite; }
.orb-float-b { animation: orb-float 11s ease-in-out infinite reverse; }
/* DictIA Cloud pulse glow */
/* Cloud PRO pulse glow (recommended tier) */
@keyframes card-pulse-glow {
0%, 100% { box-shadow: 0 4px 20px rgba(37,99,235, 0.28); }
50% { box-shadow: 0 12px 40px rgba(37,99,235, 0.5); }
@@ -197,7 +197,7 @@
'title': 'Résumés &amp; points d\'action',
'desc': 'Résumé exécutif, décisions clés et liste d\'actions générés en français. Format avocat, notaire, CPA ou médecin selon votre profil. Récupérez ~2 h/jour de rédaction.',
'icon': icon_document,
'chips': ['Mistral 7B local (DictIA 16+)', 'Templates pro', 'Décisions + actions', '2&nbsp;h/jour récupérées']
'chips': ['Mistral Nemo 12B (Cloud) · Mistral 7B (Local)', 'Templates pro', 'Décisions + actions', '2&nbsp;h/jour récupérées']
},
{
'n': '04',
@@ -336,53 +336,65 @@
<div class="text-center max-w-3xl mx-auto mb-14">
<p class="eyebrow grad-text mb-4">ARCHITECTURE &amp; INFRASTRUCTURE</p>
<h2 id="architecture-title" class="text-[clamp(2rem,3vw,2.75rem)] font-black">
<span class="ani-underline" data-ani-underline>Trois formules selon votre cabinet.</span>
<span class="ani-underline" data-ani-underline>Quatre formules selon votre organisation.</span>
</h2>
<p class="text-lg text-white/70 mt-6">
DictIA 8 et 16 fonctionnent localement chez vous. DictIA Cloud tourne sur GPU NVIDIA L4 dédié à OVH Beauharnois (Québec). Toutes les formules incluent volume audio illimité, zéro frais par utilisateur.
Cloud BASIC, ESSENTIEL et PRO tournent sur GPU NVIDIA L4 à OVH Beauharnois (Québec). DictIA LOCAL fonctionne 100&nbsp;% hors-ligne chez vous. Toutes les formules incluent aucune limite utilisateurs.
</p>
</div>
{%- set tiers = [
{
'name': 'DictIA 8',
'tagline': 'Petit cabinet, mode local',
'gpu': 'RTX 8&nbsp;Go',
'users': '2 à 5 utilisateurs',
'setup': '3&nbsp;450&nbsp;$',
'monthly': '173&nbsp;$',
'host': 'Local chez vous',
'llm': 'Mistral 7B non inclus',
'recommended': False,
'features': ['Transcription WhisperX FR-CA', 'Diarisation 8 locuteurs', 'Exports DOCX, PDF, SRT, VTT, TXT, JSON, MD', 'Synchronisation audio-texte', 'Admissible achat direct gouv. (≤ 34&nbsp;700&nbsp;$)']
},
{
'name': 'DictIA 16',
'tagline': 'Cabinet moyen, IA locale complète',
'gpu': 'RTX 16&nbsp;Go',
'users': '5 à 15 utilisateurs',
'setup': '5&nbsp;750&nbsp;$',
'monthly': '201&nbsp;$',
'host': 'Local chez vous',
'llm': 'Mistral 7B inclus',
'recommended': False,
'features': ['Tout DictIA 8', 'Résumés Mistral 7B local', 'Chat Q&amp;R sur enregistrement', 'Recherche sémantique', 'Templates avocat · notaire · CPA · médecin']
},
{
'name': 'DictIA Cloud',
'tagline': 'Multi-sites, infra gérée',
'gpu': 'NVIDIA L4 dédié',
'users': 'Utilisateurs illimités',
'name': 'Cloud BASIC',
'tagline': 'Solopreneur · petite équipe',
'gpu': 'NVIDIA L4 partagé',
'users': 'Aucune limite',
'setup': '—',
'monthly': '369&nbsp;$',
'monthly': '189&nbsp;$',
'host': 'OVH Beauharnois (QC)',
'llm': 'Mistral 7B inclus',
'llm': 'Mistral Nemo 12B',
'recommended': False,
'features': ['Transcription WhisperX Large-v3', 'Diarisation pyannote', '~165&nbsp;h audio/mois · 100&nbsp;Go', 'Exports DOCX, PDF, SRT, VTT, TXT, JSON, MD', 'Self-service · 0&nbsp;$ d&rsquo;installation']
},
{
'name': 'Cloud ESSENTIEL',
'tagline': 'Cabinet en croissance',
'gpu': 'L4 partagé étendu',
'users': 'Aucune limite',
'setup': '—',
'monthly': '349&nbsp;$',
'host': 'OVH Beauharnois (QC)',
'llm': 'Mistral Nemo 12B',
'recommended': False,
'features': ['Tout Cloud BASIC', '~330&nbsp;h audio/mois · 200&nbsp;Go', 'Onboarding assisté', 'Templates métier (avocat · notaire · CPA · médecin)']
},
{
'name': 'Cloud PRO',
'tagline': 'Usage intensif multi-postes',
'gpu': 'NVIDIA L4 dédié priorité',
'users': 'Aucune limite',
'setup': '485&nbsp;$',
'monthly': '549&nbsp;$',
'host': 'OVH Beauharnois (QC)',
'llm': 'Mistral Nemo 12B',
'recommended': True,
'features': ['Tout DictIA 16', 'Aucune infrastructure à gérer', 'Mises à jour automatiques', 'Hébergé au Québec (OVH)', 'Multi-sites et télétravail']
'features': ['Tout Cloud ESSENTIEL', '~660&nbsp;h audio/mois · 500&nbsp;Go', 'GPU dédié priorité (latence garantie)', 'Onboarding assisté inclus (485&nbsp;$ unique)', 'Multi-sites et télétravail']
},
{
'name': 'DictIA LOCAL',
'tagline': '100&nbsp;% hors-ligne · chez vous',
'gpu': 'RTX 5070&nbsp;Ti 16&nbsp;Go',
'users': 'Aucune limite',
'setup': '5&nbsp;998&nbsp;$',
'monthly': '500&nbsp;$/an dès An&nbsp;2',
'host': 'Chez le client',
'llm': 'Mistral 7B local',
'recommended': False,
'features': ['Tout Cloud PRO en mode local', '~1&nbsp;100&nbsp;h audio/mois · 2&nbsp;To SSD', 'GPU local dédié', 'Données jamais sortantes', 'Admissible achat direct gouv. (≤ 34&nbsp;700&nbsp;$)']
}
] -%}
<div class="grid md:grid-cols-3 gap-6 items-stretch">
<div class="grid md:grid-cols-2 lg:grid-cols-4 gap-6 items-stretch">
{% for tier in tiers %}
<article class="ani-fade {% if tier.recommended %}card-pulse-glow grad-bg p-[1.5px] rounded{% endif %} relative h-full"
style="--delay: {{ loop.index0 * 100 }}ms;"
@@ -395,22 +407,22 @@
{% endif %}
<div class="bg-brand-navy2 p-6 rounded border border-white/[0.08] h-full flex flex-col">
<header class="mb-4 pb-4 border-b border-white/[0.08]">
<h3 class="text-xl font-black mb-1 text-white">{{ tier.name }}</h3>
<p class="text-xs uppercase tracking-wider text-white/60">{{ tier.tagline }}</p>
<h3 class="text-xl font-black mb-1 text-white">{{ tier.name | safe }}</h3>
<p class="text-xs uppercase tracking-wider text-white/60">{{ tier.tagline | safe }}</p>
</header>
<dl class="grid grid-cols-2 gap-x-4 gap-y-2 mb-5 text-xs">
<dt class="text-white/60">GPU</dt><dd class="font-mono text-white">{{ tier.gpu | safe }}</dd>
<dt class="text-white/60">Utilisateurs</dt><dd class="text-white">{{ tier.users }}</dd>
<dt class="text-white/60">Hébergement</dt><dd class="text-white">{{ tier.host }}</dd>
<dt class="text-white/60">LLM résumés</dt><dd class="text-white">{{ tier.llm }}</dd>
<dt class="text-white/60">Utilisateurs</dt><dd class="text-white">{{ tier.users | safe }}</dd>
<dt class="text-white/60">Hébergement</dt><dd class="text-white">{{ tier.host | safe }}</dd>
<dt class="text-white/60">LLM résumés</dt><dd class="text-white">{{ tier.llm | safe }}</dd>
</dl>
<div class="mb-5 pb-5 border-b border-white/[0.08]">
{% if tier.setup != '—' %}
<div class="text-3xl font-black grad-text leading-none">{{ tier.setup | safe }}</div>
<div class="text-xs text-white/60 mt-1">setup unique + {{ tier.monthly | safe }}&nbsp;/ mois</div>
<div class="text-xs text-white/60 mt-1">{% if tier.name == 'DictIA LOCAL' %}An&nbsp;1 · puis {{ tier.monthly | safe }}{% else %}setup unique + {{ tier.monthly | safe }}&nbsp;/ mois{% endif %}</div>
{% else %}
<div class="text-3xl font-black grad-text leading-none">{{ tier.monthly | safe }}</div>
<div class="text-xs text-white/60 mt-1">par mois · sans frais de setup</div>
<div class="text-xs text-white/60 mt-1">par mois · sans frais d&rsquo;installation</div>
{% endif %}
</div>
<ul class="space-y-2 mb-6 flex-grow text-sm" role="list">
@@ -428,16 +440,16 @@
{% endfor %}
</div>
{# Bloc inclus dans setup local #}
{# Bloc inclus dans le forfait DictIA LOCAL #}
<div class="mt-12 max-w-4xl mx-auto bg-white/[0.05] backdrop-blur-sm p-6 rounded border border-white/[0.08]">
<p class="eyebrow grad-text mb-3">INCLUS DANS LE SETUP LOCAL (DICTIA 8 &amp; 16)</p>
<p class="eyebrow grad-text mb-3">INCLUS DANS LE FORFAIT DICTIA LOCAL (5&nbsp;998&nbsp;$ AN&nbsp;1)</p>
<ul class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-5 gap-3 text-sm" role="list">
{% for inc in [
'Fourniture du PC + GPU',
'PC + GPU RTX 5070&nbsp;Ti + 2&nbsp;To SSD',
'Configuration complète',
'Installation sur site',
'Formation équipe (23&nbsp;h)',
'Support démarrage 30&nbsp;jours'
'1<sup>re</sup> année logiciel + support'
] %}
<li class="flex items-start gap-2 text-white/80">
<span class="text-brand-b3 mt-0.5" aria-hidden="true">{{ icon_check | safe }}</span>
@@ -448,7 +460,7 @@
</div>
<p class="text-xs text-white/60 text-center mt-6 max-w-2xl mx-auto">
DictIA 8 est admissible à l'achat direct gouvernemental sans appel d'offres (seuil 34&nbsp;700&nbsp;$ — Règlement sur les contrats d'approvisionnement, art.&nbsp;15).
DictIA LOCAL est admissible à l'achat direct gouvernemental sans appel d'offres (seuil 34&nbsp;700&nbsp;$ — Règlement sur les contrats d'approvisionnement, art.&nbsp;15). Pour &gt;&nbsp;660&nbsp;h audio/mois ou SLA&nbsp;99,9&nbsp;%, demandez une <a href="/contact?pro-plus=1" class="grad-text underline">soumission Pro+</a>.
</p>
</div>
</section>