Conformité RGPD (P3) + transparence éditoriale (P4)
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>
This commit is contained in:
+201
@@ -0,0 +1,201 @@
|
||||
# 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 |
|
||||
Reference in New Issue
Block a user