Files
la-voix-du-peuple/docs/WIKI.md
T
pironantoine f72a64f23e Update documentation with new features and improved usability
Update several documentation files (.toml, .md) to reflect new features such as a QR code flyer page, share/PDF export buttons, and dependency updates, including version increments to v1.1.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: 923ae0e3-a363-4db8-b04a-e8baca2a1330
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: 88b9da52-be77-4c86-854b-f097a8c7ae86
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/8af7d2ec-2cc3-4ece-8af3-9f071488d072/923ae0e3-a363-4db8-b04a-e8baca2a1330/Z3YUti7
Replit-Helium-Checkpoint-Created: true
2026-04-04 10:27:58 +00:00

109 lines
3.9 KiB
Markdown

# La Voix du Peuple — Page wiki
**Type** : Plateforme civique numérique
**Stack** : Python / Flask · React / Vite · PostgreSQL · Mistral AI
**Hébergement** : Replit (dev) / Auto-hébergeable (RockyLinux, Debian)
**Dépôt** : `voix-du-peuple` (Gitea)
**Statut** : Actif — avril 2026
**Version doc** : 1.1
---
## Qu'est-ce que c'est ?
Un outil permettant à des citoyens de soumettre des propositions politiques en texte libre. Ces propositions sont :
- **filtrées** automatiquement par une IA selon les textes internationaux des droits humains (DUDH, PIDCP, CEDH…)
- **synthétisées** en un résumé structuré par thèmes, destiné à des élus ou décideurs
- **affichées** en temps réel sur la page principale
- **exportables** : copie horodatée dans le presse-papier, PDF mise en page, ou flyer A4 avec QR code pour diffusion physique
L'objectif est de fournir aux représentants politiques un document clair et utilisable issu des préoccupations citoyennes, sans intermédiaire.
---
## Fonctionnement en 6 points
1. Un citoyen saisit une proposition sur la page principale
2. L'IA (Mistral Small) vérifie que le contenu respecte les droits fondamentaux
3. Si la contribution est acceptée, elle s'ajoute à la base et déclenche une re-synthèse
4. L'IA (Mistral Large) relit toutes les contributions et produit un résumé thématique
5. Le résumé s'affiche en temps réel à droite de l'écran
6. Le résumé peut être partagé (texte horodaté), exporté en PDF, ou diffusé via un flyer QR imprimable
---
## Pages de l'application
| URL | Contenu |
|-----|---------|
| `/` | Formulaire de soumission + contributions récentes + synthèse (avec boutons Partager / PDF) |
| `/about` | Description du projet et fondements juridiques |
| `/transparence` | Fonctionnement de l'IA, données collectées, limites |
| `/flyer` | Flyer A4 imprimable avec QR code configurable pour diffusion physique |
---
## Fonctionnalités d'export et de diffusion
### Partager la synthèse
Bouton dans l'en-tête de la colonne de synthèse. Sur mobile : partage natif (WhatsApp, mail…). Sur bureau : copie dans le presse-papier avec date et heure.
### Exporter en PDF
Bouton "PDF" dans la même zone. Ouvre une fenêtre avec le résumé mis en page (tricolore, titre, date, texte, pied de page) pour impression ou export PDF depuis le navigateur.
### Flyer QR imprimable
Page `/flyer` : flyer format A4 avec grand QR code. L'URL encodée est modifiable :
- Via le champ texte en haut de la page (sans recharger)
- Via le paramètre URL `/flyer?url=https://monsite.fr`
- En modifiant la constante `DEFAULT_QR_URL` dans `src/pages/flyer.tsx`
---
## Stack technique
| Couche | Technologie |
|--------|-------------|
| Frontend | React 18 + TypeScript + Vite 7 + Tailwind CSS |
| Backend | Python 3.11 + Flask 3 + Gunicorn |
| Base de données | PostgreSQL |
| IA | Mistral AI (API OpenAI-compatible) |
| Modération | `mistral-small-latest` |
| Synthèse | `mistral-large-latest` |
| QR code | `qrcode.react` |
| Police | Bahnschrift (titres), Inter (corps) |
---
## Variables d'environnement clés
```
DATABASE_URL — URL PostgreSQL
MISTRAL_API_KEY — Clé API Mistral
SESSION_SECRET — Secret Flask
FILTER_MODEL — Modèle de modération (optionnel)
SYNTHESIS_MODEL — Modèle de synthèse (optionnel)
```
---
## Données collectées
- Texte de la contribution
- Pseudonyme (facultatif, choisi par l'utilisateur)
- Horodatage
- Résultat du filtre IA (accepté / refusé + motif)
**Non collecté** : adresse IP, compte utilisateur, cookies de suivi.
**Export / partage** : entièrement côté client, rien n'est envoyé au serveur lors d'un partage ou d'un export PDF.
---
## Liens
- Tutoriel Gitea → [`docs/GITEA_TUTO.md`](./GITEA_TUTO.md)
- Architecture technique → [`docs/DAT.md`](./DAT.md)
- Exploitation → [`docs/DEX.md`](./DEX.md)
- Fonctionnement technique (in-app) → `/transparence`