SPB Git forge

spb/qc-election

Public
20commits 1branches 0releases
4.9 MBsize
maindefault branch
20 days agolast push
Python 66.6% HTML 24.8% CSS 4.9% JavaScript 3.6%
5.4 KB · 52 lines markdown
Rendered Raw Blame History
1<!-- QC Élection Forecast — Plateforme de prévision électorale du Québec 2026 -->2<!-- Auteur : Simon-Pierre Boucher -->3<!-- Contact : contact@spboucher.ai -->4<!-- https://www.qc-election.com -->56# DATA SOURCE AUDIT — QC Élection Forecast v3 « 127 »78Inventaire réel des sources (ADDENDUM §42). Hiérarchie : TIER 1 officiel >9TIER 2 maisons de sondage > TIER 3 grands médias > TIER 4 plateformes sociales >10TIER 5 agrégateurs. Quand une source de tier supérieur contredit une source de11tier inférieur, la source supérieure a raison (ex. DGEQ > Wikipédia).1213| Source | Tier | Type | URL | Données | Fréquence | Historique | Collecteur | Statut |14|---|---|---|---|---|---|---|---|---|15| Élections Québec (DGEQ) | 1 | officiel | electionsquebec.qc.ca · donnees.electionsquebec.qc.ca | carte 2026 (GeoJSON 127), candidatures + sortants, partis autorisés + chefs, électeurs/circ. (si publié), résultats soir du vote | chaque cycle (carte/candidatures) · hebdo (partis/chefs) | résultats 2018-2022 | `ingest/dgeq.py`, `ingest/elections_quebec.py` | ✅ actif |16| Wikipédia EN (sondages) | 5 | agrégateur | en.wikipedia.org/wiki/2026_Quebec_general_election | sondages 2022→2026 (sections « Opinion polls »/« Campaign period », ventilations exclues), retraits, résultats 2022/2018 par circ. | chaque cycle (3 h campagne / 6 h) | 2022 complet | `ingest/wikipedia.py` | ✅ actif |17| Wikimedia pageviews | 5 | attention | wikimedia.org/api/rest_v1 | pageviews quotidiens partis+chef·fe·s (fr.wiki), base 180 j | chaque cycle | 180 j glissants | `ingest/wiki_attention.py` | ✅ actif |18| Léger (baromètre) | 2 | sondeur | leger360.com (via veille) | % satisfaits du gouvernement → prior de fondamentaux | mensuel (détection auto) | reconstitution 1998-2022 dans `fundamentals.py` | `ingest/firecrawl_watch.py` | ✅ actif (40 % capté 2026-08-11) |19| Presse QC (RSS) | 3 | média | Radio-Canada, Le Devoir, La Presse | manchettes politiques → stance/sentiment | chaque cycle | depuis 2026-08 | `ingest/news_rss.py` | ✅ actif |20| Presse élargie (Firecrawl search) | 3 | média | api.firecrawl.dev | articles hors RSS (JdM/JdQ, TVA, régionaux via index), radar de NOUVEAUX sondages | chaque cycle | — | `ingest/firecrawl_watch.py` | ✅ actif |21| Polymarket (Gamma) | 5 | marché | gamma-api.polymarket.com | P(plus de sièges) implicite, volume | 15 min (cache) | — | `ingest/markets.py` | ✅ actif (ensemble 88/12) |22| Actor Apify qc-social-pulse | 4 | social | api.apify.com (actor aI5AYtFfeDn3KAanf, compte gorgeous_thistle) | IG/FB/TikTok comptes officiels (OWNED, engagement seulement) + YouTube recherche & COMMENTAIRES PUBLICS (discussion) | chaque cycle | journalisé `apify_runs` | `ingest/social_pulse.py` + `apify/qc-social-pulse/` | ✅ actif |23| Reddit r/Quebec | 4 | social | via index Google (Serper) | titres + extraits réels (discussion publique) | chaque cycle | — | `ingest/social_pulse.py` | ✅ actif (accès direct/RSS/proxy/BrightData tous murés — testés 2026-08-30) |24| Mastodon | 4 | social | mastodon.social, mstdn.ca (tags publics) | posts #quebec/#polqc/#assnat | chaque cycle | — | `ingest/social_pulse.py` | ✅ actif |25| Lemmy.ca | 4 | social | lemmy.ca/api/v3 | posts politiques QC | chaque cycle | — | `ingest/social_pulse.py` | ✅ actif |26| Bluesky | 4 | social | public.api.bsky.app | recherche de posts | — | — | — | ❌ 403 même en résidentiel (testé 2026-08-30) — candidat actor avec session |27| X/Twitter | 4 | social | syndication | — | — | — | actor best-effort | ⚠️ endpoints publics morts; nécessite actor avec session (à évaluer) |28| Google Trends | 5 | attention | — | — | — | — | — | ⏳ non branché (pytrends instable; l'attention Wikipédia couvre le besoin) |29| Statistique Canada (Recensement 2021) | 1 | population | www12.statcan.gc.ca | âge, langue, revenu, locataires, scolarité, densité par AD | statique + estimations | 2021 | ⏳ Phase D | ⏳ planifié — voir POPULATION_FEATURES.md |30| ISQ | 1 | population/éco | statistique.quebec.ca | estimations démographiques récentes, séries QC | — | — | ⏳ Phase D | ⏳ planifié |31| Assemblée nationale | 1 | officiel | assnat.qc.ca | ministres, fonctions, biographies | — | — | ⏳ Phase E (candidate features) | ⏳ planifié |3233## Registres (config/, versionnés git)34- `backend/config/social_seeds.json` — comptes des partis/chef·fe·s avec provenance35  (`official_site` = vérifié, `search` = pending_review) + date de vérification.36  Découverte/promotion automatique hebdomadaire (`ingest/social_account_discovery.py`)37  + alertes `dérive-chef`/`compte-social`.38- `backend/config/social_queries.json` — requêtes sociales versionnées (partis,39  chefs, enjeux, tags).40- `SOCIAL_ACCOUNT_REGISTRY.csv` — export plat du registre (généré).4142## Règles appliquées431. Aucun compte inventé — provenance + date pour chaque handle (§ addendum).442. OWNED (contenu des partis) ≠ EARNED (discussion citoyenne) : les comptes45   officiels n'alimentent QUE l'indice d'engagement; seuls les contenus citoyens46   (commentaires YouTube, Reddit, Mastodon, Lemmy) entrent dans le sentiment47   (`social_posts.content_class`).483. « 20 000 posts » ≠ « 20 000 personnes » — les libellés publics parlent de49   publications/comptes observés, jamais d'électeurs.504. Un échec d'acteur/de source n'empêche jamais la publication du forecast51   (isolation par étape + `apify_runs` + data-health).52