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:
2026-05-23 22:30:30 +02:00
parent 45edc1fa77
commit a7b7684e87
12 changed files with 1354 additions and 50 deletions
+8
View File
@@ -47,6 +47,14 @@ export function removeExtraHeader(key: string): void {
delete _extraHeaders[key];
}
/**
* Retourne l'identifiant de visite FingerprintJS actuellement enregistré.
* Utilisé pour transmettre l'identifiant lors d'appels fetch manuels (ex. enregistrement du consentement).
*/
export function getVisitorId(): string | null {
return _visitorId;
}
/**
* Set a base URL that is prepended to every relative request URL
* (i.e. paths that start with `/`).
+1
View File
@@ -4,6 +4,7 @@ export {
setBaseUrl,
setAuthTokenGetter,
setVisitorId,
getVisitorId,
addExtraHeader,
removeExtraHeader,
} from "./custom-fetch";