feat(marketing): refonte stratégique 'Comment ça marche' — 4 catégories × 12 sous-modes

Audit complet des fonctionnalités réelles DictIA (manuel utilisateur + composants
production) puis restructuration de l'animation phone container en 4 catégories
logiques regroupant 12 sous-modes (6 historiques + 6 nouveaux).

CATÉGORIES (bottom tab bar 4 boutons + sub-mode dots indicator) :
- Capture (b2 cyan)         : Transcription, Recording live, Recherche IA
- Transformation IA (b1)    : Diarisation, 99+ langues, Résumé+actions, Chat IA
- Distribution (b3 fuchsia) : Exports, Intégrations Hub, Partage, Users
- Gouvernance (b1 blue)     : Audit trail, Conformité Loi 25 + 9 ordres pros

NOUVEAUX MODES IMPLÉMENTÉS :
- Mode 7 Recording live : minuteur 99s + waveform 24 bars random + 3 boutons
  sources (mic/système/combiné) selon manuel utilisation v1.0
- Mode 8 Recherche sémantique : query typed + 3 résultats highlight RAG
- Mode 9 Résumé + actions : décisions/actions stagger + extraction ICS
- Mode 10 Intégrations : hub central DictIA + 8 logos en orbite (Word, Outlook,
  Teams, Notion, Obsidian, Zapier, Make, n8n) + lignes connexion SVG
- Mode 11 Audit trail : 6 events horodatés (INFO/AUTH/PROC/READ/EXP/SHARE) +
  badge consentement tracé immutable (Loi 25 art. 8)
- Mode 12 Conformité Loi 25 : 6 badges (Loi 25/96/EFVP CAI/MCN/AGPL/0 Cloud
  Act US) + 9 ordres pros (Barreau, CNQ, CPA, ChAD, OACIQ, CMQ, OIIQ, OPQ, OEQ)

REFACTOR Alpine dictiaDashboard() :
- FEATURES étendu de 7 à 13 entrées (idx 0-12)
- CATEGORIES array avec submodes[], iconPath, color, subtitle
- activeCategory + handleCategorySelect(ci) en plus de handleManualSelect(i)
- Auto-cycle 1100ms entre sous-modes ; switch catégorie quand fin atteinte
- Right grid 3×6 → 2×2 categories cards (preview sub-modes dots)
- Bottom tab bar 6 modes → 4 catégories (icons larger 18px) + sub-mode dots
- Mobile pills par catégorie (au lieu de par mode)

Préservé : palette brand-b1/b2/b3 stricte, phone shell statique 280×580,
WCAG AA, prefers-reduced-motion, eyebrow text-brand-navy, IA Mistral card,
section integrations, architecture, conformité-resume.

Tests : 9/9 passent dans test_fonctionnalites_*. Assertions ajoutées pour les
4 catégories + 6 nouveaux modes + handleCategorySelect + 1100ms cycle.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Allison
2026-04-29 12:57:44 -04:00
parent 323f0c81c4
commit 8a7650f9fa
2 changed files with 594 additions and 62 deletions

View File

@@ -190,8 +190,32 @@ def test_fonctionnalites_how_it_works_reactor_section():
# Auto-cycle + manual select logic
assert 'startAutoCycle' in body, "Missing auto-cycle function"
assert 'handleManualSelect' in body, "Missing manual select handler"
assert '900' in body, "Missing 900ms cycle interval"
assert '1100' in body, "Missing 1100ms sub-mode cycle interval (refonte 2026-04-29)"
assert '4500' in body, "Missing 4500ms manual reset timer"
# Refonte 2026-04-29 : 4 catégories × 12 sous-modes
assert 'CATEGORIES' in body, "Missing CATEGORIES array (refonte 4 catégories)"
assert 'activeCategory' in body, "Missing activeCategory state"
assert 'handleCategorySelect' in body, "Missing category click handler"
for cat_title in ['Capture', 'Transformation IA', 'Distribution', 'Gouvernance']:
assert cat_title in body, f"Missing category : {cat_title}"
# Nouveaux modes 7-12
assert 'recModeData' in body, "Missing Mode 7 (Recording live)"
assert 'searchModeData' in body, "Missing Mode 8 (Recherche sémantique)"
assert 'summaryModeData' in body, "Missing Mode 9 (Résumé + actions)"
assert 'integModeData' in body, "Missing Mode 10 (Intégrations Hub)"
assert 'auditModeData' in body, "Missing Mode 11 (Audit trail)"
assert 'loi25ModeData' in body, "Missing Mode 12 (Conformité Loi 25)"
# Mode panels content keywords
assert 'ENREGISTREMENT LIVE' in body, "Missing recording header"
assert 'RECHERCHE IA SÉMANTIQUE' in body, "Missing semantic search header"
assert 'RÉSUMÉ EXÉCUTIF' in body, "Missing summary header"
assert 'INTÉGRATIONS HUB' in body, "Missing integrations hub header"
assert 'AUDIT TRAIL' in body, "Missing audit trail header"
assert 'CONFORMITÉ QUÉBEC' in body, "Missing conformity header"
assert 'ÉVÉNEMENT DÉTECTÉ' in body, "Missing ICS event detection"
assert '9 ordres professionnels' in body, "Missing 9 ordres listing"
for ordre in ['Barreau', 'CNQ', 'CPA', 'OIIQ']:
assert ordre in body, f"Missing ordre pro: {ordre}"
# Auto / Manual status text
assert 'Auto' in body, "Missing Auto status indicator"
assert 'Auto reprend bientôt' in body, "Missing manual mode hint"
@@ -249,8 +273,9 @@ def test_fonctionnalites_how_it_works_reactor_section():
assert 'dictia-bg-orbs' in body, "Missing floating orbs"
assert 'dictia-connecting-line' in body, "Missing connecting line phone↔IA"
# Stats row in section header
# Stats row in section header (refonte 2026-04-29 : 4 catégories · 6 modules)
assert 'modules' in body, "Missing stats row 'modules'"
assert 'catégories' in body, "Missing stats row 'catégories' (refonte)"
assert 'cloud' in body, "Missing stats row 'cloud'"
assert 'Voir une démo' in body, "Missing demo CTA link"