feat(legal): B-2.9 6 pages légales (CGU, Loi 25, cookies, remboursement, accessibilité, mentions)

- src/legal/__init__.py: define canonical LEGAL_VERSION='2026-04-27' constant
  (single source of truth — auth.py now imports it as SIGNUP_LEGAL_VERSION).
- src/legal/routes.py: add /legal/<page> + /legal/ index routes; markdown rendered
  from src/legal/content/*.md with toc, tables, fenced_code, attr_list extensions.
- src/legal/content/: 6 French (Québec) markdown documents — DictIA Inc. /
  InnovA AI S.E.N.C. branding, Loi 25-compliant 12-section privacy policy,
  WCAG 2.2 AA accessibility statement, AGPL-3.0 attribution. All marked
  DRAFT v1.0 pending legal review by Allison Rioux.
- templates/legal/_layout.html + index.html: extends marketing/base.html;
  inline .legal-content typographic styles (no CSS rebuild required).
- .gitignore: allow-rule for src/legal/content/*.md so markdown is tracked
  despite the global *.md ignore.
- tests/test_legal_pages.py: 9 tests covering 200 responses, DictIA branding,
  rprp@dictia.ca presence, 12 mandatory Loi 25 sections, public indexability
  (no X-Robots-Tag noindex), shared layout, marketing/base.html extension,
  DRAFT callout, and LEGAL_VERSION/SIGNUP_LEGAL_VERSION equivalence.
- tests/_run_legal_pages_windows.py: manual driver (Windows fcntl stub).
- static/css/marketing.css: regenerated by `npm run build:css` to include
  new utility classes referenced from templates/legal/*.html.

Tests: 9/9 pass. No off-limits files modified beyond the 2-line auth.py
constant move spec'd in B-2.9. No schema changes; markdown==3.5.1 already
pinned in requirements.txt (B-1.1). Pages publicly indexable by design
(Loi 25 transparency).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Allison
2026-04-28 08:57:36 -04:00
parent 64738bfd1f
commit 55569366f4
15 changed files with 1034 additions and 6 deletions

View File

@@ -0,0 +1,120 @@
<div class="legal-draft-callout" role="note" aria-label="Document en cours de révision juridique">
<strong>DRAFT v1.0</strong> &mdash; pending legal review by Allison Rioux. Ce document a valeur informative jusqu'à la revue finale par la responsable légale de DictIA Inc.
</div>
DictIA Inc. (filiale d'InnovA AI S.E.N.C.) attache la plus grande importance à la protection des renseignements personnels de ses utilisateurs. La présente Politique de confidentialité décrit, conformément à la *Loi modernisant des dispositions législatives en matière de protection des renseignements personnels* (Loi 25 du Québec), les pratiques de collecte, d'utilisation, de conservation et de communication des renseignements personnels.
## 1. Identité du responsable
Le responsable du traitement des renseignements personnels est :
- **Raison sociale** : DictIA Inc. (filiale d'InnovA AI S.E.N.C.)
- **Adresse du siège social** : 77 chemin de la Seigneurie, Inverness QC G0S 1K0, Canada
- **Courriel général** : <info@dictia.ca>
- **Activité** : service SaaS de transcription audio assistée par intelligence artificielle, conforme à la Loi 25 du Québec.
## 2. Coordonnées du responsable de la protection des renseignements personnels (RPRP)
Conformément à l'article 3.1 de la Loi 25, DictIA Inc. a désigné un responsable de la protection des renseignements personnels (RPRP) :
- **Nom** : Allison Rioux, présidente
- **Courriel dédié** : <rprp@dictia.ca> (alias surveillé exclusivement par la fonction RPRP)
- **Adresse postale** : RPRP — DictIA Inc., 77 chemin de la Seigneurie, Inverness QC G0S 1K0
Toute demande relative à la présente Politique, à l'exercice des droits Loi 25 ou à un incident de confidentialité doit être adressée à <rprp@dictia.ca>.
## 3. Renseignements personnels collectés
DictIA collecte les catégories de renseignements personnels suivantes :
- **Identification** : adresse courriel, prénom, nom, mot de passe (haché en bcrypt — jamais stocké en clair) ;
- **Métadonnées professionnelles** (facultatives) : ordre professionnel d'appartenance et cabinet/organisation ;
- **Renseignements techniques** : adresse IP, en-tête User-Agent, identifiant de session ;
- **Contenu utilisateur** : fichiers audio téléversés et textes transcrits associés ;
- **Métadonnées de paiement** : adresse de facturation et identifiant client Stripe (les numéros de carte ne transitent jamais par les serveurs DictIA — ils sont collectés directement par Stripe) ;
- **Métadonnées d'authentification forte (WebAuthn)** : clé publique de la passkey, compteur de signatures, identifiant d'attestation.
## 4. Finalités
Les renseignements personnels sont collectés et utilisés pour les finalités suivantes uniquement :
- Fournir le Service de transcription audio ;
- Gérer les comptes utilisateurs et l'authentification (y compris l'authentification multifacteur) ;
- Émettre les factures et percevoir les paiements ;
- Assurer le support client ;
- Garantir la sécurité du Service (prévention de la fraude, journaux d'audit) ;
- Respecter les obligations légales et réglementaires applicables.
## 5. Base légale
La base légale du traitement est le **consentement explicite** de l'utilisateur, recueilli au moment de l'inscription conformément à l'article 14 de la Loi 25. Quatre consentements granulaires sont capturés et journalisés :
1. Conditions d'utilisation (obligatoire pour la fourniture du Service) ;
2. Politique de confidentialité (obligatoire pour la fourniture du Service) ;
3. Communications marketing (facultatif, révocable à tout moment) ;
4. Mesures d'analyse d'audience anonymisées (facultatif, révocable à tout moment).
Le journal des consentements (`ConsentLog`) conserve la version exacte des documents acceptés, l'horodatage et l'adresse IP au moment du consentement.
## 6. Destinataires
Aucun tiers ne reçoit le contenu transcrit (audio source ou texte) ni les fichiers téléversés. Les destinataires limités sont :
- **Stripe Payments Canada Ltd.** (siège : États-Unis) : reçoit le nom, le courriel et l'adresse de facturation aux fins exclusives du traitement du paiement ;
- **Resend Inc.** (États-Unis) : reçoit l'adresse courriel et le contenu des notifications transactionnelles (confirmation d'inscription, réinitialisation de mot de passe, factures) ;
- **OVH Hébergement Canada Inc.** (centre de données Beauharnois, Québec) : héberge les serveurs DictIA Cloud — l'opérateur n'a pas accès au contenu utilisateur (chiffrement au repos et en transit).
## 7. Transfert hors-Québec
Conformément à l'article 17 de la Loi 25, DictIA informe l'utilisateur que certains renseignements personnels limités sont transférés en dehors du Québec :
- **Stripe (États-Unis)** : nom, courriel, adresse de facturation, métadonnées de transaction ;
- **Resend (États-Unis)** : adresse courriel, contenu des courriels transactionnels.
Une évaluation des facteurs relatifs à la vie privée (EFVP) a été réalisée pour ces transferts. Les ententes contractuelles avec Stripe et Resend prévoient un niveau de protection équivalent à celui exigé par la Loi 25. **Aucun contenu transcrit (audio source ou texte) n'est transféré hors-Québec.**
## 8. Durée de conservation
Les renseignements sont conservés selon les durées suivantes :
| Catégorie | Durée de conservation |
| --- | --- |
| Données de compte (courriel, nom, mot de passe haché) | Durée de l'abonnement + 24 mois après résiliation (obligation comptable québécoise) |
| Audio source téléversé | Supprimé à la fin de la transcription, sauf demande explicite de conservation par l'utilisateur |
| Texte transcrit | Conservé jusqu'à suppression manuelle par l'utilisateur |
| Journal des consentements (ConsentLog) | 36 mois après le dernier consentement (Loi 25 art. 3.5) |
| Journaux d'audit de sécurité | 36 mois |
| Métadonnées de facturation Stripe | 6 ans (obligation fiscale Revenu Québec) |
## 9. Droits de l'utilisateur
Conformément à la Loi 25, l'utilisateur dispose des droits suivants :
- **Droit d'accès** : obtenir copie des renseignements personnels détenus ;
- **Droit de rectification** : faire corriger des renseignements inexacts ou incomplets ;
- **Droit à l'effacement** (art. 28.1 — *right to erasure*) : faire supprimer les renseignements lorsque la finalité du traitement est atteinte ou que le consentement est retiré ;
- **Droit à la portabilité** : recevoir les renseignements dans un format technologique structuré et couramment utilisé ;
- **Droit d'opposition** : s'opposer au traitement à des fins de prospection commerciale.
**Procédure** : adresser la demande à <rprp@dictia.ca> en joignant une preuve d'identité (copie de pièce d'identité avec photo). Délai de réponse maximal : 30 jours conformément à l'article 32 de la Loi 25.
## 10. Procédure de plainte
Si l'utilisateur estime que DictIA Inc. ne respecte pas ses obligations en matière de protection des renseignements personnels, il peut déposer une plainte auprès de la **Commission d'accès à l'information du Québec (CAI)** :
- **Site web** : <https://www.cai.gouv.qc.ca>
- **Courriel** : <cai.communications@cai.gouv.qc.ca>
- **Téléphone (Québec)** : 418 528-7741
- **Téléphone (Montréal)** : 514 873-4196
- **Sans frais** : 1 888 528-7741
## 11. Cookies et traceurs
DictIA utilise un nombre minimal de cookies, décrits en détail dans la [Politique de cookies](/legal/cookies) :
- **Cookies essentiels** (sans consentement) : session Flask, jeton anti-CSRF ;
- **Cookies analytiques** (avec consentement opt-in) : Plausible Analytics auto-hébergé sur l'infrastructure DictIA au Québec, sans aucun cookie publicitaire ni traçage tiers.
## 12. Date de mise à jour
Version 2026-04-27 — Inverness, Québec.