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:
Allison
2026-04-27 21:06:26 -04:00
parent d471626183
commit 202e1a08d9
8 changed files with 45 additions and 67 deletions

View File

@@ -199,7 +199,8 @@ def test_pas_probleme_section_present():
client = app.test_client()
body = client.get('/').data.decode('utf-8')
assert 'PROBL' in body and 'TRANSCRIPTION CLOUD' in body, "Missing Problème eyebrow"
assert 'violent la Loi 25' in body, "Missing legal-risk H2 anchor phrase"
assert 'violent la Loi 25' in body or 'violent la Loi 25' in body, \
"Missing legal-risk H2 anchor phrase"
assert 'Cloud Act' in body, "Missing Cloud Act card"
assert 'biom' in body and 'Loi 25' in body, "Missing Loi 25 biometric card"
assert 'Sanctions disciplinaires' in body, "Missing sanctions disciplinaires card"
@@ -661,7 +662,7 @@ def test_faq_section_with_7_questions():
assert f'id="faq-panel-{i}"' in body, f"Missing FAQ panel {i}"
# Question topic anchors
topics = ['Loi', 'Cloud et DictIA on-premise', 'fran', 'audiences', 'formats',
'résilie', 'AGPL']
'résilie', 'AGPL']
for topic in topics:
assert topic in body, f"FAQ missing topic anchor: {topic}"

View File

@@ -141,7 +141,7 @@ def test_fonctionnalites_tech_specs_6_items():
client = app.test_client()
body = client.get('/fonctionnalites').data.decode('utf-8')
assert 'specs-title' in body
for spec_keyword in ['Modèle ASR', 'pyannote', 'Mistral 7B', 'Flask', 'WAV, MP3', 'québécois']:
for spec_keyword in ['Modèle ASR', 'pyannote', 'Mistral 7B', 'Flask', 'WAV, MP3', 'québécois']:
assert spec_keyword in body, f"Missing tech spec keyword: {spec_keyword}"