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:
@@ -129,9 +129,10 @@ def csrf_exempt(f):
|
||||
|
||||
# --- Constants ---
|
||||
|
||||
# B-2.9 will define the canonical LEGAL_VERSION constant in src/legal/__init__.py.
|
||||
# Until then, use the ISO date of the current legal text revision as the placeholder.
|
||||
SIGNUP_LEGAL_VERSION = '2026-04-27'
|
||||
# Canonical LEGAL_VERSION lives in src/legal/__init__.py (B-2.9). Re-exported
|
||||
# here under the historical name so existing call sites in this file
|
||||
# (consent_log.version, signup view) keep working without touching them.
|
||||
from src.legal import LEGAL_VERSION as SIGNUP_LEGAL_VERSION # noqa: E402
|
||||
|
||||
|
||||
# --- Forms ---
|
||||
|
||||
@@ -2,12 +2,16 @@
|
||||
Accessibilite, Mentions.
|
||||
|
||||
Mounted at /legal/* prefix. Content rendered from markdown files in
|
||||
src/legal/content/ (added in Task B-2.9).
|
||||
|
||||
Routes added in Task B-2.9.
|
||||
src/legal/content/ (B-2.9). All 6 pages publicly indexable (Loi 25 transparency).
|
||||
"""
|
||||
from flask import Blueprint
|
||||
|
||||
# Canonical version of all 6 legal documents. Bump when ANY of the markdown
|
||||
# files in src/legal/content/ is updated. Stored on every ConsentLog row at
|
||||
# signup time (src/api/auth.py uses this to stamp consent_log.version).
|
||||
# Format: ISO date 'YYYY-MM-DD' of the document revision.
|
||||
LEGAL_VERSION = '2026-04-27'
|
||||
|
||||
legal_bp = Blueprint(
|
||||
'legal',
|
||||
__name__,
|
||||
@@ -15,3 +19,6 @@ legal_bp = Blueprint(
|
||||
template_folder='../../templates/legal',
|
||||
static_folder=None,
|
||||
)
|
||||
|
||||
# Register routes
|
||||
from src.legal import routes # noqa: E402, F401
|
||||
|
||||
66
src/legal/content/accessibilite.md
Normal file
66
src/legal/content/accessibilite.md
Normal file
@@ -0,0 +1,66 @@
|
||||
<div class="legal-draft-callout" role="note" aria-label="Document en cours de révision juridique">
|
||||
<strong>DRAFT v1.0</strong> — pending legal review by Allison Rioux. Ce document a valeur informative jusqu'à la revue finale par la responsable légale de DictIA Inc.
|
||||
</div>
|
||||
|
||||
## 1. Engagement DictIA pour l'accessibilité numérique
|
||||
|
||||
DictIA Inc. (filiale d'InnovA AI S.E.N.C., 77 chemin de la Seigneurie, Inverness QC G0S 1K0) considère que l'accessibilité numérique est un droit fondamental. Notre mission de transcription IA conforme à la Loi 25 s'adresse à des professionnels exigeants, dont certains vivent avec un handicap visuel, auditif, moteur ou cognitif. Nous nous engageons à rendre nos interfaces utilisables par toutes et tous.
|
||||
|
||||
## 2. Niveau de conformité visé
|
||||
|
||||
Le niveau de conformité visé par DictIA est **WCAG 2.2 niveau AA** (*Web Content Accessibility Guidelines*, version 2.2, niveau AA — recommandation officielle du W3C).
|
||||
|
||||
Ce standard couvre les quatre principes fondamentaux : perceptible, utilisable, compréhensible et robuste.
|
||||
|
||||
## 3. Standards techniques appliqués
|
||||
|
||||
L'équipe DictIA applique systématiquement les bonnes pratiques suivantes lors du développement :
|
||||
|
||||
- **Sémantique HTML5** : utilisation appropriée des balises `<header>`, `<nav>`, `<main>`, `<article>`, `<section>`, `<footer>` et de la hiérarchie des titres `<h1>` à `<h6>`.
|
||||
- **Contraste des couleurs** : ratio minimal de 4,5:1 pour le texte normal et 3:1 pour le texte large, vérifié avec Lighthouse et WAVE.
|
||||
- **Focus visible** : chaque élément interactif possède un indicateur de focus distinct (`focus-visible:outline`) compatible avec la navigation clavier.
|
||||
- **Navigation clavier** : toutes les fonctionnalités sont accessibles via le clavier (Tab, Shift+Tab, Entrée, Espace, Échap).
|
||||
- **Attributs ARIA** : utilisation parcimonieuse et conforme à la spécification (`aria-label`, `aria-labelledby`, `aria-describedby`, `role`, `aria-current`).
|
||||
- **Préférences de mouvement** : respect strict de `prefers-reduced-motion: reduce` (animations désactivées si l'utilisateur a configuré sa préférence).
|
||||
- **Texte alternatif** : chaque image porteuse de sens dispose d'un attribut `alt` descriptif ; les images décoratives portent `alt=""`.
|
||||
- **Formulaires accessibles** : chaque champ est associé à un `<label>` explicite, les erreurs sont annoncées via `aria-live="polite"`.
|
||||
- **Langue déclarée** : `<html lang="fr-CA">` sur toutes les pages.
|
||||
|
||||
## 4. Ce qui est conforme
|
||||
|
||||
À la date de publication de la présente déclaration, les sections suivantes du Service ont été auditées et sont jugées conformes au niveau WCAG 2.2 AA :
|
||||
|
||||
- **Pages marketing** : <https://dictia.ca/>, /fonctionnalites, /tarifs, /conformite, /blog, /contact ;
|
||||
- **Pages d'authentification** : /login, /signup, /forgot-password, flux MFA ;
|
||||
- **Pages légales** : /legal/* (les 6 documents légaux dont vous lisez actuellement l'un des éléments) ;
|
||||
- **Pages de facturation** : /billing/checkout, /billing/success, /billing/portal.
|
||||
|
||||
## 5. Ce qui n'est pas encore pleinement conforme
|
||||
|
||||
Nous reconnaissons honnêtement les limitations actuelles :
|
||||
|
||||
- **Tableau de bord application** (interface de gestion des transcriptions) : audit en cours, finalisation prévue à la phase B-3.x ;
|
||||
- **Lecteur audio synchronisé** : les contrôles clavier sont fonctionnels, mais l'expérience pour les utilisateurs de lecteurs d'écran fait l'objet d'améliorations continues ;
|
||||
- **Templates de courriels transactionnels** : la conformité dépend partiellement des limitations propres à chaque client de messagerie (Outlook, Gmail, Apple Mail).
|
||||
|
||||
Ces zones sont publiquement signalées par souci de transparence — ce n'est pas parce que c'est imparfait que ce n'est pas honnête.
|
||||
|
||||
## 6. Comment signaler un problème d'accessibilité
|
||||
|
||||
Si vous rencontrez un obstacle d'accessibilité sur l'un des sites ou services DictIA, écrivez-nous à :
|
||||
|
||||
- **Courriel** : <info@dictia.ca> avec pour sujet « **Accessibilité** »
|
||||
- **Adresse postale** : DictIA Inc. — Accessibilité, 77 chemin de la Seigneurie, Inverness QC G0S 1K0
|
||||
|
||||
Précisez la page concernée (URL), votre navigateur et votre système d'exploitation, et la description du problème rencontré (technologie d'assistance utilisée si pertinent). Nous nous engageons à accuser réception sous 2 jours ouvrables et à vous proposer une solution sous 30 jours.
|
||||
|
||||
## 7. Voies de recours
|
||||
|
||||
Si la réponse de DictIA Inc. ne vous satisfait pas, vous pouvez saisir la **Commission des droits de la personne et des droits de la jeunesse du Québec** :
|
||||
|
||||
- **Site web** : <https://www.cdpdj.qc.ca>
|
||||
- **Téléphone** : 1 800 361-6477
|
||||
|
||||
## 8. Date de mise à jour
|
||||
|
||||
Version 2026-04-27 — Inverness, Québec.
|
||||
107
src/legal/content/conditions.md
Normal file
107
src/legal/content/conditions.md
Normal file
@@ -0,0 +1,107 @@
|
||||
<div class="legal-draft-callout" role="note" aria-label="Document en cours de révision juridique">
|
||||
<strong>DRAFT v1.0</strong> — pending legal review by Allison Rioux. Ce document a valeur informative jusqu'à la revue finale par la responsable légale de DictIA Inc.
|
||||
</div>
|
||||
|
||||
## 1. Objet et champ d'application
|
||||
|
||||
Les présentes Conditions générales d'utilisation (ci-après les « **Conditions** » ou « **CGU** ») régissent l'accès et l'utilisation des services proposés par **DictIA Inc.**, filiale à 100 % de **InnovA AI S.E.N.C.** (société en nom collectif québécoise), dont le siège social est situé au 77 chemin de la Seigneurie, Inverness QC G0S 1K0, Canada.
|
||||
|
||||
Les services de DictIA (ci-après le « **Service** ») comprennent une plateforme SaaS de transcription audio assistée par intelligence artificielle, conforme à la *Loi modernisant des dispositions législatives en matière de protection des renseignements personnels* (Loi 25 du Québec).
|
||||
|
||||
L'utilisation du Service implique l'acceptation pleine et entière des présentes CGU. Si vous n'acceptez pas ces Conditions, n'utilisez pas le Service.
|
||||
|
||||
## 2. Définitions
|
||||
|
||||
- **Service** : la plateforme DictIA, incluant DictIA Cloud (SaaS hébergé au Québec), DictIA 8 et DictIA 16 (déploiements local-only).
|
||||
- **Utilisateur** : toute personne physique ou morale qui crée un compte et utilise le Service.
|
||||
- **Compte** : espace personnel sécurisé créé par l'Utilisateur lors de l'inscription.
|
||||
- **Contenu** : tout fichier audio téléversé, texte transcrit, métadonnée ou information transmise par l'Utilisateur via le Service.
|
||||
- **DictIA Inc.** : éditeur du Service, filiale d'InnovA AI S.E.N.C.
|
||||
|
||||
## 3. Inscription et compte utilisateur
|
||||
|
||||
L'inscription au Service requiert un consentement granulaire conforme à l'article 14 de la Loi 25. Quatre consentements distincts sont collectés au moment de l'inscription :
|
||||
|
||||
1. Acceptation des présentes Conditions d'utilisation (obligatoire) ;
|
||||
2. Acceptation de la Politique de confidentialité (obligatoire) ;
|
||||
3. Consentement aux communications marketing (facultatif) ;
|
||||
4. Consentement aux mesures d'analyse d'audience anonymisées (facultatif).
|
||||
|
||||
L'Utilisateur s'engage à fournir des informations exactes et à maintenir la confidentialité de ses identifiants. Toute activité menée depuis le Compte est réputée avoir été effectuée par l'Utilisateur.
|
||||
|
||||
## 4. Forfaits et prix
|
||||
|
||||
Trois formules sont proposées :
|
||||
|
||||
- **DictIA 8** : déploiement local single-user (boîtier livré au cabinet) ;
|
||||
- **DictIA 16** : déploiement local multi-user (boîtier livré au cabinet) ;
|
||||
- **DictIA Cloud** : SaaS hébergé chez OVH Beauharnois (Québec).
|
||||
|
||||
Les prix en vigueur sont publiés sur la page <https://dictia.ca/tarifs>. Les prix sont libellés en dollars canadiens (CAD) et excluent les taxes applicables (TPS et TVQ).
|
||||
|
||||
## 5. Modalités de paiement
|
||||
|
||||
Les paiements sont traités par **Stripe Payments Canada Ltd.**. Les modes de paiement acceptés incluent les cartes de crédit majeures, Apple Pay et Google Pay. Les abonnements peuvent être facturés mensuellement ou annuellement (avec une réduction de 15 % sur le tarif annuel).
|
||||
|
||||
Les taxes applicables (TPS 5 % et TVQ 9,975 %) sont ajoutées au moment de la facturation conformément à la législation fiscale québécoise.
|
||||
|
||||
## 6. Activation du service
|
||||
|
||||
L'accès au Service est activé après confirmation du paiement initial. Pour DictIA 8 et DictIA 16, l'activation requiert également la livraison et la configuration du boîtier matériel chez l'Utilisateur (délai indicatif : 5 à 10 jours ouvrables).
|
||||
|
||||
## 7. Obligations de l'utilisateur
|
||||
|
||||
L'Utilisateur s'engage à :
|
||||
|
||||
- Utiliser le Service conformément à la législation québécoise et canadienne en vigueur ;
|
||||
- Ne téléverser que des contenus dont il détient les droits ou pour lesquels il a obtenu les autorisations nécessaires ;
|
||||
- Maintenir la sécurité de ses identifiants et activer l'authentification à deux facteurs (TOTP, WebAuthn ou clé de récupération) ;
|
||||
- Ne pas tenter d'accéder à des comptes ou données autres que les siens ;
|
||||
- Ne pas utiliser le Service à des fins illicites, frauduleuses ou portant atteinte aux droits de tiers.
|
||||
|
||||
## 8. Propriété intellectuelle
|
||||
|
||||
Le code source de DictIA est publié sous la licence **GNU Affero General Public License v3.0 (AGPL-3.0)**. DictIA est un fork de Speakr ; l'attribution upstream est préservée dans le fichier `NOTICE` du dépôt.
|
||||
|
||||
Le contenu téléversé par l'Utilisateur (fichiers audio, transcriptions générées) demeure la propriété exclusive de l'Utilisateur. DictIA Inc. ne revendique aucun droit sur ce contenu et ne l'utilise pas à des fins d'entraînement de modèles d'intelligence artificielle.
|
||||
|
||||
## 9. Limitation de responsabilité
|
||||
|
||||
DictIA est un outil d'aide à la transcription. L'Utilisateur demeure entièrement responsable :
|
||||
|
||||
- De la véracité, l'exactitude et la légalité du contenu transcrit ;
|
||||
- De la révision humaine des transcriptions avant tout usage professionnel ou légal ;
|
||||
- Du respect du secret professionnel applicable à sa profession (Barreau, CPA, ChAD, OACIQ, CMQ, OIIQ, OPPQ, OEQ, etc.).
|
||||
|
||||
DictIA Inc. ne peut être tenue responsable des dommages indirects, perte de données ou perte de revenus résultant d'une utilisation du Service au-delà des dispositions impératives de la loi applicable.
|
||||
|
||||
## 10. Suspension et résiliation
|
||||
|
||||
DictIA Inc. se réserve le droit de suspendre ou de résilier un Compte en cas de :
|
||||
|
||||
- Manquement aux présentes Conditions ;
|
||||
- Non-paiement des sommes dues ;
|
||||
- Utilisation frauduleuse ou illicite du Service ;
|
||||
- Demande des autorités compétentes.
|
||||
|
||||
L'Utilisateur peut résilier son Compte à tout moment via la console DictIA. Les remboursements sont régis par la [Politique de remboursement](/legal/remboursement).
|
||||
|
||||
## 11. Modifications des conditions
|
||||
|
||||
DictIA Inc. peut modifier les présentes Conditions à tout moment. Les Utilisateurs actifs sont notifiés par courriel au moins 30 jours avant l'entrée en vigueur des modifications substantielles. La poursuite de l'utilisation du Service après cette période vaut acceptation des nouvelles Conditions.
|
||||
|
||||
## 12. Loi applicable et juridiction
|
||||
|
||||
Les présentes Conditions sont régies par les lois en vigueur dans la province de Québec et les lois fédérales canadiennes applicables. Tout litige relatif à l'interprétation ou à l'exécution des Conditions sera soumis à la compétence exclusive des tribunaux du district judiciaire de Québec, Canada.
|
||||
|
||||
## 13. Contact
|
||||
|
||||
Pour toute question relative aux présentes Conditions, écrivez à :
|
||||
|
||||
- **Courriel général** : <info@dictia.ca>
|
||||
- **Responsable de la protection des renseignements personnels (RPRP)** : <rprp@dictia.ca>
|
||||
- **Adresse postale** : DictIA Inc., 77 chemin de la Seigneurie, Inverness QC G0S 1K0, Canada
|
||||
|
||||
## 14. Date de mise à jour
|
||||
|
||||
Version 2026-04-27 — Inverness, Québec.
|
||||
120
src/legal/content/confidentialite.md
Normal file
120
src/legal/content/confidentialite.md
Normal 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> — 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.
|
||||
62
src/legal/content/cookies.md
Normal file
62
src/legal/content/cookies.md
Normal file
@@ -0,0 +1,62 @@
|
||||
<div class="legal-draft-callout" role="note" aria-label="Document en cours de révision juridique">
|
||||
<strong>DRAFT v1.0</strong> — pending legal review by Allison Rioux. Ce document a valeur informative jusqu'à la revue finale par la responsable légale de DictIA Inc.
|
||||
</div>
|
||||
|
||||
## 1. Que sont les cookies
|
||||
|
||||
Un cookie est un petit fichier texte qu'un site web dépose sur votre navigateur lorsque vous le visitez. Les cookies permettent au site de mémoriser vos préférences, de maintenir votre session ouverte et — lorsqu'autorisés — de mesurer la fréquentation du site.
|
||||
|
||||
DictIA Inc. (filiale d'InnovA AI S.E.N.C., 77 chemin de la Seigneurie, Inverness QC G0S 1K0) utilise un nombre minimal de cookies, dans le strict respect de la Loi 25 du Québec.
|
||||
|
||||
## 2. Cookies essentiels — sans consentement requis
|
||||
|
||||
Ces cookies sont strictement nécessaires au fonctionnement du Service et ne requièrent pas de consentement préalable.
|
||||
|
||||
| Nom du cookie | Finalité | Durée |
|
||||
| --- | --- | --- |
|
||||
| `session` | Session Flask authentifiée (maintien de la connexion) | 30 jours ou jusqu'à déconnexion |
|
||||
| `csrf_token` | Protection contre les attaques *Cross-Site Request Forgery* | Durée de la session |
|
||||
| `cookie_consent` | Mémorise vos choix de consentement | 12 mois |
|
||||
|
||||
Ces cookies sont déposés exclusivement par le domaine `dictia.ca` (cookies *first-party*) et ne sont jamais partagés avec des tiers.
|
||||
|
||||
## 3. Cookies analytiques — consentement requis (opt-in)
|
||||
|
||||
Si vous l'avez explicitement accepté lors de votre inscription ou via la bannière de consentement, DictIA dépose des cookies analytiques :
|
||||
|
||||
- **Plausible Analytics auto-hébergé** sur l'infrastructure DictIA au Québec (OVH Beauharnois). Aucune donnée n'est transmise à un tiers.
|
||||
- Identifiants de session anonymisés générés via le hachage de l'adresse IP (jamais stockée en clair).
|
||||
- Aucun profil utilisateur n'est constitué et aucune donnée n'est revendue.
|
||||
|
||||
Vous pouvez retirer ce consentement à tout moment depuis votre console DictIA → Paramètres → Confidentialité, ou en écrivant à <rprp@dictia.ca>.
|
||||
|
||||
## 4. Aucun cookie publicitaire ni de traçage tiers
|
||||
|
||||
DictIA s'engage à **ne jamais** utiliser :
|
||||
|
||||
- Cookies publicitaires (Google Ads, Meta Pixel, TikTok Pixel, etc.) ;
|
||||
- Cookies de réseaux sociaux (boutons de partage tiers, *like* tracking) ;
|
||||
- Trackers de profilage cross-site (Hotjar, FullStory, etc.) ;
|
||||
- *Fingerprinting* du navigateur ou de l'appareil.
|
||||
|
||||
Cette politique reflète notre positionnement : **la confidentialité est un produit, pas un compromis.**
|
||||
|
||||
## 5. Comment gérer vos cookies
|
||||
|
||||
Vous pouvez à tout moment :
|
||||
|
||||
- **Modifier vos consentements** dans la console DictIA → Paramètres → Confidentialité ;
|
||||
- **Bloquer les cookies** via les paramètres de votre navigateur (Chrome, Firefox, Safari, Edge — voir la documentation officielle de chaque navigateur) ;
|
||||
- **Supprimer les cookies déjà déposés** via les outils de votre navigateur (sachant que cela peut entraîner une déconnexion automatique de votre session DictIA).
|
||||
|
||||
Le blocage des cookies essentiels rendra le Service inutilisable (impossibilité de maintenir la session). Le blocage des cookies analytiques n'a aucun impact sur l'utilisation du Service.
|
||||
|
||||
## 6. Pour aller plus loin
|
||||
|
||||
Pour une description détaillée du traitement des renseignements personnels par DictIA, consultez la [Politique de confidentialité (Loi 25)](/legal/confidentialite).
|
||||
|
||||
Pour toute question sur la présente Politique de cookies, écrivez à <rprp@dictia.ca>.
|
||||
|
||||
## 7. Date de mise à jour
|
||||
|
||||
Version 2026-04-27 — Inverness, Québec.
|
||||
66
src/legal/content/mentions.md
Normal file
66
src/legal/content/mentions.md
Normal file
@@ -0,0 +1,66 @@
|
||||
<div class="legal-draft-callout" role="note" aria-label="Document en cours de révision juridique">
|
||||
<strong>DRAFT v1.0</strong> — pending legal review by Allison Rioux. Ce document a valeur informative jusqu'à la revue finale par la responsable légale de DictIA Inc.
|
||||
</div>
|
||||
|
||||
## 1. Identité de l'éditeur
|
||||
|
||||
Le présent site web et l'ensemble du Service DictIA sont édités par :
|
||||
|
||||
- **Raison sociale** : DictIA Inc.
|
||||
- **Forme juridique** : société par actions constituée en vertu de la *Loi sur les sociétés par actions du Québec* (LSAQ).
|
||||
- **Société mère** : InnovA AI S.E.N.C. (société en nom collectif québécoise) — détentrice de 100 % des actions de DictIA Inc.
|
||||
|
||||
## 2. Adresse du siège social
|
||||
|
||||
77 chemin de la Seigneurie
|
||||
Inverness QC G0S 1K0
|
||||
Canada
|
||||
|
||||
## 3. Numéro d'entreprise du Québec (NEQ)
|
||||
|
||||
Numéro d'entreprise du Québec (NEQ) : `{{NEQ_PLACEHOLDER}}` *(à compléter — l'inscription au Registraire des entreprises du Québec est en cours de finalisation)*.
|
||||
|
||||
## 4. Représentant légal
|
||||
|
||||
- **Présidente et représentante légale** : Allison Rioux
|
||||
- **Courriel** : <info@dictia.ca>
|
||||
|
||||
## 5. Responsable de la publication
|
||||
|
||||
- **Responsable de la publication du site dictia.ca** : Allison Rioux, présidente
|
||||
- **Responsable de la protection des renseignements personnels (RPRP)** : Allison Rioux — courriel dédié <rprp@dictia.ca>
|
||||
|
||||
## 6. Hébergement
|
||||
|
||||
L'infrastructure DictIA Cloud est hébergée par :
|
||||
|
||||
- **OVH Hébergement Canada Inc.**
|
||||
- 800 boulevard de Maisonneuve Est
|
||||
- Montréal QC H2L 4M5
|
||||
- Canada
|
||||
- Site web : <https://www.ovhcloud.com/fr-ca>
|
||||
|
||||
Les serveurs physiques sont situés au centre de données OVH de Beauharnois, Québec — toutes les données utilisateur du Service Cloud résident en sol québécois.
|
||||
|
||||
## 7. Crédits et propriété intellectuelle
|
||||
|
||||
Le code source de DictIA est publié sous la licence **GNU Affero General Public License v3.0 (AGPL-3.0)**.
|
||||
|
||||
DictIA est un *fork* du projet Speakr — l'attribution upstream à l'auteur originel du projet Speakr est intégralement préservée dans le fichier `NOTICE` du dépôt public.
|
||||
|
||||
- **Dépôt public DictIA (Gitea InnovA AI)** : <https://gitea.innova-ai.ca/Innova-AI/dictia-public>
|
||||
- **Notice d'attribution upstream** : voir le fichier `/NOTICE` à la racine du dépôt.
|
||||
|
||||
Les marques « **DictIA** » et « **InnovA AI** », ainsi que leurs logos respectifs, sont la propriété exclusive d'InnovA AI S.E.N.C.
|
||||
|
||||
## 8. Contact
|
||||
|
||||
Pour toute question relative aux présentes Mentions légales :
|
||||
|
||||
- **Courriel général** : <info@dictia.ca>
|
||||
- **Courriel RPRP (Loi 25)** : <rprp@dictia.ca>
|
||||
- **Adresse postale** : DictIA Inc., 77 chemin de la Seigneurie, Inverness QC G0S 1K0
|
||||
|
||||
## 9. Date de mise à jour
|
||||
|
||||
Version 2026-04-27 — Inverness, Québec.
|
||||
59
src/legal/content/remboursement.md
Normal file
59
src/legal/content/remboursement.md
Normal file
@@ -0,0 +1,59 @@
|
||||
<div class="legal-draft-callout" role="note" aria-label="Document en cours de révision juridique">
|
||||
<strong>DRAFT v1.0</strong> — 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.) souhaite que chaque utilisateur trouve réellement de la valeur dans le Service. La présente Politique de remboursement précise les modalités de retour, de résiliation et de remboursement applicables aux abonnements et au matériel DictIA.
|
||||
|
||||
## 1. Délai de rétractation — 14 jours
|
||||
|
||||
Conformément à l'article 1392 du *Code civil du Québec* (vente à distance) et à la *Loi sur la protection du consommateur*, vous disposez d'un **délai de rétractation de 14 jours calendaires** à compter de la date de la première facture pour annuler votre abonnement et obtenir un remboursement intégral.
|
||||
|
||||
Aucun motif n'est requis et aucune pénalité n'est appliquée pendant ce délai.
|
||||
|
||||
## 2. Remboursement au prorata après le délai de rétractation
|
||||
|
||||
Pour les abonnements **mensuels** résiliés après le délai de 14 jours, le service reste actif jusqu'à la fin de la période payée — aucun remboursement au prorata n'est accordé sur le mois en cours.
|
||||
|
||||
Pour les abonnements **annuels** résiliés après le délai de 14 jours, un remboursement au prorata est accordé sur les mois pleins restants (les fractions de mois ne sont pas remboursées). Exemple : un abonnement annuel résilié au bout de 7,5 mois donnera lieu à un remboursement de 4 mois.
|
||||
|
||||
## 3. Matériel DictIA 8 et DictIA 16
|
||||
|
||||
Pour les boîtiers matériels **DictIA 8** et **DictIA 16** :
|
||||
|
||||
- **0 à 30 jours** après la livraison : retour accepté avec remboursement intégral, à condition que le matériel soit retourné dans son emballage d'origine, en parfait état de marche, et accompagné de tous les accessoires.
|
||||
- **Au-delà de 30 jours** : aucun remboursement du matériel. La garantie limitée du fabricant (12 mois pièces et main-d'œuvre) reste applicable.
|
||||
|
||||
Les frais de retour sont à la charge du client, sauf si le matériel s'est avéré défectueux à la réception (dans ce cas, DictIA fournit une étiquette de retour prépayée).
|
||||
|
||||
## 4. Procédure de remboursement
|
||||
|
||||
Pour demander un remboursement, écrivez à <info@dictia.ca> en précisant :
|
||||
|
||||
1. Votre adresse courriel de compte DictIA ;
|
||||
2. Le numéro de la facture concernée (visible dans votre console DictIA → Facturation) ;
|
||||
3. Le motif de la demande (facultatif, mais utile pour notre amélioration continue) ;
|
||||
4. Pour le matériel : numéro de série du boîtier et description de l'état.
|
||||
|
||||
## 5. Délai de traitement
|
||||
|
||||
Les demandes de remboursement sont traitées dans un **délai de 14 jours ouvrables** à compter de leur réception complète. Le remboursement est effectué via le mode de paiement initial (carte de crédit, Apple Pay, Google Pay) par l'intermédiaire de Stripe Payments Canada Ltd.
|
||||
|
||||
Les délais de visibilité sur le relevé bancaire dépendent de votre établissement (généralement 5 à 10 jours ouvrables supplémentaires).
|
||||
|
||||
## 6. Résiliation sans remboursement
|
||||
|
||||
L'utilisateur peut résilier son abonnement à tout moment, sans avoir à demander de remboursement. Dans ce cas, le service reste accessible jusqu'à la fin de la période payée, puis le compte passe en mode lecture seule pendant 30 jours avant suppression définitive.
|
||||
|
||||
## 7. Litiges
|
||||
|
||||
En cas de désaccord persistant sur un remboursement, le client peut s'adresser à l'**Office de la protection du consommateur du Québec** :
|
||||
|
||||
- **Site web** : <https://www.opc.gouv.qc.ca>
|
||||
- **Téléphone** : 1 888 672-2556
|
||||
- **Adresse** : 400 boul. Jean-Lesage, bureau 450, Québec QC G1K 8W4
|
||||
|
||||
Les litiges non résolus relèvent de la compétence exclusive des tribunaux du district judiciaire de Québec, conformément aux Conditions d'utilisation.
|
||||
|
||||
## 8. Date de mise à jour
|
||||
|
||||
Version 2026-04-27 — Inverness, Québec.
|
||||
84
src/legal/routes.py
Normal file
84
src/legal/routes.py
Normal file
@@ -0,0 +1,84 @@
|
||||
"""Legal pages — 6 markdown-rendered pages (B-2.9).
|
||||
|
||||
Each page extends templates/legal/_layout.html and is publicly indexable
|
||||
(see src/app.py:_PUBLIC_INDEXABLE_PREFIXES = ('marketing.', 'legal.')).
|
||||
"""
|
||||
from pathlib import Path
|
||||
|
||||
import markdown
|
||||
from flask import abort, render_template
|
||||
|
||||
from src.legal import LEGAL_VERSION, legal_bp
|
||||
|
||||
CONTENT_DIR = Path(__file__).parent / 'content'
|
||||
|
||||
VALID_PAGES = (
|
||||
'conditions',
|
||||
'confidentialite',
|
||||
'cookies',
|
||||
'remboursement',
|
||||
'accessibilite',
|
||||
'mentions',
|
||||
)
|
||||
|
||||
PAGE_TITLES = {
|
||||
'conditions': "Conditions d'utilisation",
|
||||
'confidentialite': "Politique de confidentialité (Loi 25)",
|
||||
'cookies': "Politique de cookies",
|
||||
'remboursement': "Politique de remboursement",
|
||||
'accessibilite': "Déclaration d'accessibilité (WCAG 2.2 AA)",
|
||||
'mentions': "Mentions légales",
|
||||
}
|
||||
|
||||
PAGE_DESCRIPTIONS = {
|
||||
'conditions': "Conditions d'utilisation du service DictIA — droits, obligations, responsabilités.",
|
||||
'confidentialite': "Politique de confidentialité conforme à la Loi 25 du Québec — collecte, conservation, droits des utilisateurs.",
|
||||
'cookies': "Utilisation des cookies et traceurs sur les sites DictIA.",
|
||||
'remboursement': "Politique de remboursement des abonnements DictIA.",
|
||||
'accessibilite': "Engagement DictIA en matière d'accessibilité numérique (WCAG 2.2 AA).",
|
||||
'mentions': "Mentions légales — DictIA Inc. (filiale d'InnovA AI S.E.N.C.).",
|
||||
}
|
||||
|
||||
|
||||
def _render_markdown(page: str) -> str:
|
||||
"""Read the markdown file for `page` and return rendered HTML."""
|
||||
md_path = CONTENT_DIR / f'{page}.md'
|
||||
if not md_path.exists():
|
||||
abort(404)
|
||||
raw = md_path.read_text(encoding='utf-8')
|
||||
return markdown.markdown(
|
||||
raw,
|
||||
extensions=['toc', 'tables', 'fenced_code', 'attr_list'],
|
||||
output_format='html5',
|
||||
)
|
||||
|
||||
|
||||
@legal_bp.route('/<page>')
|
||||
def legal_page(page):
|
||||
"""Render one of the 6 legal pages by slug."""
|
||||
if page not in VALID_PAGES:
|
||||
abort(404)
|
||||
return render_template(
|
||||
'legal/_layout.html',
|
||||
title=PAGE_TITLES[page],
|
||||
description=PAGE_DESCRIPTIONS[page],
|
||||
content=_render_markdown(page),
|
||||
page=page,
|
||||
legal_version=LEGAL_VERSION,
|
||||
)
|
||||
|
||||
|
||||
@legal_bp.route('/')
|
||||
def legal_index():
|
||||
"""Index page listing all 6 legal pages."""
|
||||
pages = [
|
||||
{'slug': slug, 'title': PAGE_TITLES[slug], 'description': PAGE_DESCRIPTIONS[slug]}
|
||||
for slug in VALID_PAGES
|
||||
]
|
||||
return render_template(
|
||||
'legal/index.html',
|
||||
title="Documents légaux DictIA",
|
||||
description="Index des documents légaux DictIA — conditions, confidentialité, cookies, remboursement, accessibilité, mentions.",
|
||||
pages=pages,
|
||||
legal_version=LEGAL_VERSION,
|
||||
)
|
||||
Reference in New Issue
Block a user