P3 — RGPD :
- Table `consents` + `POST /api/consent` (art. 7.1 — preuve du consentement)
- Dialogue de consentement explicite avant la première contribution (art. 9.2.a)
- Pages `/mentions-legales` et `/politique-confidentialite`
- `docs/RGPD.md` — registre des traitements, bases légales, sous-traitants
- `getVisitorId()` exporté depuis l'API client React
P4 — Transparence éditoriale :
- Page `/contributions-brutes` avec pagination et export JSON/CSV
- `GET /api/contributions`, `GET /api/contributions/export/{json,csv}`
- `GET /api/stats/public` — stats publiques sans données de rejet
- Label de transparence IA sur la colonne de synthèse
- Compteurs (acceptées / soumises) dans le bandeau d'intro
- `docs/PROMPTS_IA.md` — prompts intégraux publiés + analyse des biais
- Pied de page avec liens légaux et transparence
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
9.5 KiB
Conformité RGPD — La Voix du Peuple
Document de référence RGPD. Version 1.0 — mai 2026.
Responsable de traitement : billisdead (Antoine Piron) — piron.antoine@gmail.com
1. Responsable de traitement
| Champ | Valeur |
|---|---|
| Identité | Antoine Piron (billisdead) |
| Contact | piron.antoine@gmail.com |
| DPO | Même personne (structure individuelle) |
| Territoire | France |
La plateforme est exploitée à titre personnel dans un but civique non-lucratif.
2. Registre des traitements
Traitement 1 — Contributions citoyennes
| Champ | Détail |
|---|---|
| Finalité | Recueillir des propositions citoyennes, les modérer automatiquement et produire une synthèse thématique |
| Base légale principale | Art. 6.1.e RGPD — exécution d'une mission d'intérêt public (participation démocratique) |
| Base légale données sensibles | Art. 9.2.a RGPD — consentement explicite de la personne concernée (les opinions politiques sont des données sensibles au sens de l'art. 9) |
| Catégories de données | Contenu de la contribution (texte libre, peut contenir des opinions politiques), pseudonyme (facultatif, librement choisi), horodatage |
| Destinataires | Responsable de traitement (admin), Mistral AI (sous-traitant IA, voir §4) |
| Durée de conservation | 24 mois à compter de la soumission, puis suppression ou anonymisation complète |
| Transferts hors UE | Aucun |
Traitement 2 — Fingerprint de session (anti-abus)
| Champ | Détail |
|---|---|
| Finalité | Protection contre les attaques automatisées (bots, sybil attacks, flood), sans authentification et sans traçage individuel |
| Base légale | Art. 6.1.f RGPD — intérêt légitime du responsable de traitement (sécurité technique de la plateforme) |
| Nature de la donnée | Hash SHA-256 (tronqué à 32 caractères hexadécimaux) d'un identifiant généré à partir des caractéristiques du navigateur (FingerprintJS). Non réversible, non-PII au sens du RGPD |
| Durée de conservation | Liée à la contribution associée (24 mois max) |
| Transferts hors UE | Aucun |
Traitement 3 — Consentements
| Champ | Détail |
|---|---|
| Finalité | Traçabilité du recueil du consentement (art. 7.1 RGPD — charge de la preuve) |
| Base légale | Art. 6.1.c RGPD — obligation légale (conservation de la preuve de consentement) |
| Catégories de données | Hash fingerprint (voir §2.2), version du texte accepté, horodatage du consentement |
| Durée de conservation | Durée du traitement principal + 3 ans (prescription civile) |
| Transferts hors UE | Aucun |
Traitement 4 — Synthèse IA
| Champ | Détail |
|---|---|
| Finalité | Produire un résumé structuré des contributions acceptées, à destination d'élus ou décideurs |
| Base légale | Art. 6.1.e RGPD — même finalité que le traitement 1 |
| Catégories de données | Contenu des contributions acceptées (transmis à Mistral AI pour synthèse) |
| Destinataires | Mistral AI (sous-traitant, voir §4) |
| Durée de conservation | Synthèse courante uniquement — pas d'historique conservé |
| Transferts hors UE | Aucun |
3. Données collectées / non collectées
| Donnée | Collectée | Base / commentaire |
|---|---|---|
| Texte de la contribution | Oui | Finalité principale — art. 6.1.e + 9.2.a |
| Pseudonyme | Oui (optionnel) | Librement choisi, pas de vérification |
| Horodatage | Oui | Nécessaire à la traçabilité |
| Résultat de modération | Oui (admin uniquement) | Traçabilité des décisions automatisées |
| Hash fingerprint navigateur | Oui | Art. 6.1.f — sécurité, non-PII |
| Consentement (version + date) | Oui | Art. 6.1.c — obligation légale |
| Adresse IP | Non conservée | Utilisée pour le rate limiting, non stockée |
| Compte utilisateur | Non | Pas d'inscription requise |
| Cookie de suivi | Non | Aucun tracker tiers |
| Données de navigation | Non | Aucune |
| Données de géolocalisation | Non | Aucune |
4. Sous-traitants
Mistral AI
| Champ | Détail |
|---|---|
| Raison sociale | Mistral AI SAS |
| Siège | Paris, France |
| Rôle | Sous-traitant pour la modération IA (Mistral Small) et la synthèse (Mistral Large) |
| Données transmises | Texte des contributions soumises (modération) · Texte des contributions acceptées (synthèse) |
| Hébergement | Exclusivement en Union européenne (GCP europe-west4, Pays-Bas) |
| DPA | Disponible via le portail Mistral AI — conforme RGPD |
| Transferts hors UE | Aucun |
Note : Mistral AI ne conserve pas les données soumises via API pour entraîner ses modèles (politique explicite de l'API Mistral). À vérifier et documenter lors de la signature du DPA.
Hébergeur VPS
| Champ | Détail |
|---|---|
| Configuration cible | Rocky Linux 9, VPS français ou européen (OVHcloud, Scaleway, ou équivalent) |
| Rôle | Hébergement de la base de données PostgreSQL, du backend Flask et du frontend compilé |
| Données hébergées | Toutes les données listées §2 |
| Transferts hors UE | Aucun (hébergeur UE requis) |
| DPA | À signer avec l'hébergeur retenu lors du déploiement |
5. Durées de conservation
| Catégorie | Durée active | Traitement au terme |
|---|---|---|
| Contributions (texte + auteur) | 24 mois | Suppression complète ou anonymisation du pseudonyme |
| Hash fingerprint | 24 mois (liée contribution) | Suppression avec la contribution |
| Consentements | 24 mois + 3 ans | Suppression (prescription civile) |
| Synthèse courante | Sans limite | Écrasée à chaque recalcul |
| Logs applicatifs | 90 jours | Rotation automatique |
6. Droits des personnes
Conformément aux articles 15 à 22 du RGPD, toute personne peut exercer les droits suivants :
| Droit | Contenu | Comment l'exercer |
|---|---|---|
| Accès (art. 15) | Obtenir copie des données vous concernant | Email à piron.antoine@gmail.com |
| Rectification (art. 16) | Corriger des données inexactes | Email à piron.antoine@gmail.com |
| Effacement (art. 17) | "Droit à l'oubli" — suppression de vos contributions | Email à piron.antoine@gmail.com avec la date approximative de la contribution |
| Opposition (art. 21) | S'opposer au traitement basé sur l'intérêt légitime (fingerprint) | Email à piron.antoine@gmail.com |
| Portabilité (art. 20) | Obtenir vos données dans un format structuré | Email à piron.antoine@gmail.com |
| Retrait du consentement (art. 7.3) | Retirer votre consentement à tout moment | Email à piron.antoine@gmail.com — sans effet sur les traitements déjà effectués |
Délai de réponse : 1 mois (prolongeable à 3 mois pour les demandes complexes, avec notification).
Réclamation CNIL : En cas de non-réponse ou de litige, vous pouvez adresser une réclamation à la CNIL (www.cnil.fr/fr/plaintes).
7. Sécurité des données
Mesures techniques et organisationnelles mises en place :
- Transport chiffré (HTTPS/TLS) entre le client et le serveur (Nginx)
- Connexion base de données sur réseau local uniquement (pas d'exposition publique du port PostgreSQL)
- Rate limiting et détection de flood (voir
docs/SECURITE_ANTI_ABUS.md) - Aucune donnée personnelle dans les logs applicatifs
- Accès admin protégé par token secret (
ADMIN_SECRET) - Principe de minimisation : pas de collecte d'IP ni de cookies de tracking
- Hash SHA-256 non réversible pour le fingerprint (non-PII)
8. Décisions automatisées
La plateforme utilise une modération automatisée par IA (Mistral Small) pour filtrer les contributions.
Information prévue à l'art. 22 RGPD : si votre contribution est rejetée, le motif et la référence légale précise vous sont communiqués. Vous pouvez reformuler et resoumettre.
Il n'existe pas de mécanisme de contestation formel de la décision de modération dans la version actuelle. En cas de déploiement institutionnel, un mécanisme de recours humain est recommandé.
9. Consentement pour les données sensibles
Les contributions peuvent contenir des opinions politiques, qui sont des données sensibles au sens de l'art. 9 RGPD. Leur traitement requiert un consentement explicite de la personne concernée.
Mécanisme de recueil : avant la première contribution, un bandeau de consentement explicite est présenté. Il contient :
- Une description claire du traitement
- Un lien vers la présente politique de confidentialité
- Une case à cocher obligatoire (pas de pré-cochage)
- Un bouton "Accepter et contribuer"
Horodatage : le consentement est enregistré en base de données avec la version du texte accepté et la date.
Retrait : le consentement peut être retiré à tout moment par email. Les contributions déjà publiées restent dans la base mais peuvent être supprimées sur demande (droit à l'effacement).
10. Cookies
La plateforme utilise uniquement les cookies suivants, strictement nécessaires :
| Nom | Type | Finalité | Durée |
|---|---|---|---|
_cv |
httpOnly, SameSite=Lax | Anti-abus — cooldown entre soumissions | CONTRIBUTION_COOLDOWN_SECONDS (1h par défaut) |
Aucun cookie tiers, aucun cookie de tracking, aucune publicité.
Historique des versions
| Version | Date | Changements |
|---|---|---|
| 1.0 | Mai 2026 | Version initiale |