Python 51.6%
TypeScript 46.7%
CSS 1.7%
1# QC26 — Québec 2026. Comprendre. Prévoir. Suivre.23Plateforme indépendante de données, d'analyse et de prévision consacrée à l'élection générale québécoise du **5 octobre 2026** — https://www.qc26.ca45QC26 n'appuie aucun parti. Aucune donnée sans provenance, aucune projection sans incertitude, aucune position politique sans source, aucun résultat live inventé.67## Architecture89```10engine/ Python 3.12 · FastAPI · SQLAlchemy (SQLite, portable PostgreSQL) · numpy/scipy11 qc26/config.py paramètres (élection, modèle, connecteurs) — préfixe QC26_12 qc26/parties.py registre des partis (couleurs, correspondances DGEQ)13 qc26/regions.py classification des 127 circonscriptions par région14 qc26/db.py schéma complet (provenance, versions, audit)15 qc26/ingest/official.py Élections Québec : circonscriptions 2026, géométrie, électeurs, partis/chefs, candidatures,16 résultats 2018-2022, transposition 2022 → carte 2026 (sections de vote)17 qc26/ingest/polls_bootstrap.py amorçage de l'historique des sondages depuis 2022 (index tiers, remplacé par les PDF)18 qc26/connectors/polls/ pipeline documentaire : URL → SHA-256 → archive → texte/tableaux → extraction LLM → validation19 qc26/connectors/parties/ documents officiels des partis : découverte (Firecrawl), versionnement, propositions (page + citation), diff20 qc26/model/ agrégation (poids, effets maison, Kalman), circonscriptions (swing proportionnel), Monte Carlo, runs versionnés21 qc26/compass/ 48 énoncés · positions dérivées des propositions officielles · appariement22 qc26/live/ flux officiel du soir du vote (validation/quarantaine, événements, SSE), simulation 2022, nowcast23 qc26/api/ API publique (/api/*) + backoffice (/api/admin/*, Bearer)24 qc26/scheduler.py veille sondages (15 min), documents (2 h), DGEQ (4 h), recalcul quotidien, flux live (60 s)25web/ Next.js 16 · React 19 · Tailwind v4 · SVG maison (graphiques, carte d3-geo)26 src/lib/parties.ts registre web (logos officiels dans public/parties/*/ + source.json)27 src/components/ design system (ui, party, charts, map, shell, live, compass…)28 src/app/ pages : accueil, prévision, sondages(+inspector), carte, circonscriptions, boussole, partis, enjeux,29 documents, méthodologie/changelog, live, model-vs-reality, replay, statut, admin30deploy/qc26.manifest.json manifeste maclustr-dispatch (M1M32:~/dispatch/apps/qc26.json)31```3233## Démarrage local3435```bash36cd engine && uv venv --python 3.12 .venv && uv pip install --python .venv/bin/python -e ".[dev]"37cp .env.example .env # QC26_ANTHROPIC_API_KEY, QC26_FIRECRAWL_API_KEY, QC26_ADMIN_TOKEN38.venv/bin/python -m uvicorn qc26.main:app --port 8201 # bootstrap automatique si la base est vide39cd ../web && pnpm install && QC26_ENGINE_URL=http://127.0.0.1:8201 pnpm dev40```4142Le premier démarrage sur base vide télécharge les données officielles, amorce l'historique des sondages et publie un premier run. La vérification des documents originaux (PDF) et l'analyse des documents des partis se font ensuite par le planificateur (ou `POST /api/admin/polls/verify`, `POST /api/admin/documents/sync`).4344## Faits structurants4546- **127 circonscriptions, majorité à 64** (carte 2026 : Bellefeuille et Marie-Lacoste-Gérin-Lajoie ajoutées). Le seuil est dérivé de la liste officielle, jamais codé.47- La transposition 2022 → 2026 par sections de vote reproduit exactement les chiffres publiés lors de la refonte (CAQ 93 · PLQ 20 · QS 11 · PQ 3).48- Chez Élections Québec, « PCQ » désigne le Parti communiste ; le Parti conservateur est « PCOQ » (géré dans `parties.py`).4950## Production5152Déployé par `mld` (passerelle M1M32) : `mld stage <dir> qc26` → `mld deploy qc26`. Deux processus PM2 (`qc26-engine` :8201, `qc26-web` :8200) + `qc26-ngrok` (www.qc26.ca → 8200). Le web réécrit `/api/*` vers le moteur.535455## Modèle 2.0 (2026-09-07) — au-delà des sondages5657Quatre familles de signaux indépendants, archivés avec leur provenance et publiés séparément (`/signaux`, `summary.components`) : marchés de prédiction Polymarket (repondération des simulations, poids 30 %), fondamentaux (satisfaction du gouvernement → prior sur le parti sortant, poids décroissant vers 0 le jour du vote), momentum borné (prime au chef, attention Wikipédia, ton de presse classé par LLM), élections partielles depuis 2022 (excès de swing local). La vue « sondages seuls » reste publiée. Refonte visuelle « Editorial Data Intelligence » : thème clair/sombre, Fraunces + Inter + JetBrains Mono, gaufre des 127 sièges, tendance interactive.58