fix(marketing): A-2.8a — extract pricing partial + sync bento + OQLF + test calibration
- Extract 3 pricing tiers to templates/marketing/_partials/_pricing_tiers.html
Single source of truth — landing.html and tarifs.html now {% include %} it.
Prevents price drift (LPC art. 219 risk).
- Sync bento card #2 description across landing + fonctionnalites
(was diverged: 'embeddings' vs 'embeddings vocaux'). Add maintenance
reminder comments in both files.
- Fix OQLF NBSP on '~2 semaines' matrix cells in /tarifs deep-dive table.
- Fix mixed UTF-8/entity 'québécois' -> 'québécois' in tech
specs (consistent with rest of file).
- Calibrate H2 size on /tarifs FAQ to match landing (clamp 2.75rem cap).
- Repair 2 pre-existing test bugs from earlier A-2.x commits:
* 'violent la Loi 25' -> accept both NBSP and plain forms (commit 7c6c6fd
added the NBSP after the test was written)
* 'résilie' -> 'résilie' (Jinja outputs raw UTF-8, not entities)
- Update src/marketing/routes.py module docstring to reflect 2/4 done.
This commit is contained in:
@@ -195,10 +195,12 @@
|
||||
</h2>
|
||||
</div>
|
||||
|
||||
{# NOTE: bento card content is duplicated between landing.html and fonctionnalites.html.
|
||||
When editing, sync both files. Future refactor: extract to _partials/_bento_features.html. #}
|
||||
{% from 'macros/bento.html' import bento_card %}
|
||||
<div class="grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 gap-[1.5px] bg-brand-border rounded-[18px] overflow-hidden">
|
||||
{{ bento_card('01', 'Transcription WhisperX', 'Large-v3 fine-tuné FR-CA. Précision 95 %+ sur réunions, dictées, audiences (méthodologie disponible sur demande).', '🎙️') }}
|
||||
{{ bento_card('02', 'Diarisation 8 locuteurs', 'pyannote sépare automatiquement les intervenants. Identification par embeddings.', '👥') }}
|
||||
{{ bento_card('02', 'Diarisation 8 locuteurs', 'pyannote sépare automatiquement les intervenants. Identification par embeddings vocaux.', '👥') }}
|
||||
{{ bento_card('03', 'Résumés Mistral 7B', 'IA locale génère résumés, points d\'action et procès-verbaux. Aucune connexion cloud.', '📝') }}
|
||||
{{ bento_card('04', 'Q&R sur enregistrement', 'Posez des questions à vos réunions. RAG local sur embeddings sentence-transformers.', '💬') }}
|
||||
{{ bento_card('05', 'Exports multiples', 'DOCX, PDF, SRT, VTT, TXT, JSON, MD. Formats avocat, notaire, CPA.', '📄') }}
|
||||
@@ -220,34 +222,7 @@
|
||||
</p>
|
||||
</div>
|
||||
|
||||
{% from 'macros/pricing_card.html' import pricing_card %}
|
||||
<div class="grid md:grid-cols-3 gap-6 max-w-5xl mx-auto items-stretch">
|
||||
{{ pricing_card(
|
||||
'dictia-8',
|
||||
'DictIA 8',
|
||||
'3 450 $',
|
||||
'173 $',
|
||||
'PME · RH · Manufacturiers',
|
||||
['GPU 8 Go RTX', 'Volume illimité', 'WhisperX FR-CA', 'Diarisation 8 locuteurs', 'Support inclus']
|
||||
) }}
|
||||
{{ pricing_card(
|
||||
'dictia-16',
|
||||
'DictIA 16',
|
||||
'5 750 $',
|
||||
'201 $',
|
||||
'Cabinets juridiques · CPA · Finance',
|
||||
['GPU 16 Go RTX', 'Mistral 7B local', 'Q&R sur enregistrement', 'Tout DictIA 8', 'Support prioritaire'],
|
||||
recommended=True
|
||||
) }}
|
||||
{{ pricing_card(
|
||||
'dictia-cloud',
|
||||
'DictIA Cloud',
|
||||
'0 $',
|
||||
'369 $',
|
||||
'Organismes · Municipalités · Multi-sites',
|
||||
['Hébergé OVH Beauharnois (Québec)', 'Opérationnel sous 48 h', 'Aucun matériel à gérer', 'SLA visé 99,9 %', 'Conforme Loi 25']
|
||||
) }}
|
||||
</div>
|
||||
{% include 'marketing/_partials/_pricing_tiers.html' %}
|
||||
|
||||
{# ROI CALCULATOR — Alpine.js, hypotheses transparentes pour LPC art. 219 hygiene #}
|
||||
<div x-data="roiCalculator()" class="mt-16 max-w-3xl mx-auto bg-white p-8 rounded-[18px] border border-brand-border" aria-labelledby="roi-title">
|
||||
|
||||
Reference in New Issue
Block a user