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%

History of backend/app/ingest/pollster_reports.py · clear filter

  1. Mon, Aug 31, 2026 3

    1. Wikipédia FR = seconde source d'agrégation (sondages de campagne plus frais)
      …
      - parse_polls_2026_fr : « Liste de sondages sur les élections générales
        québécoises de 2026 » (fr.wikipedia) — colonnes CAQ/PLQ/QS/PQ/PCQ/Autres,
        dates françaises, sondeur/commanditaire, échantillon, ME; union dédupliquée
        avec la page EN par (maison, fin de terrain) dans refresh_all
      - Résout le retard EN pendant la campagne : Pallas 29 août (CAQ 24, PLQ 22,
        QS 9, PQ 29, PCQ 16, n=1108) et Synopsis corrigé au 27 août entrent
        AUTOMATIQUEMENT au prochain cycle
      - Garde-fous : rangées-bannières d'événements (dates/cellules fusionnées)
        exclues; extraction d'articles scopée par PHRASE avec garde RÉGIONALE
        (un sondage « grande région de Québec » ne devient jamais national);
        qc125/338 restent détection seulement; date de terrain estimée ÉTIQUETÉE
      - Hebdo automatique : replay + ablation régénérés par le scheduler
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 24 days ago · 1 file +48 −12
    2. Boucle radar → article → extraction → recoupement (sondages de presse automatiques)
      …
      - extract_from_radar : les articles de presse détectés (poll-radar) sont
        scrapés, toplines extraites (partis/dates/n, dates presse sans année,
        « conservateurs » nu) → FILE DE RÉVISION (excluded=True, jamais silencieux)
      - cross_validate_pending : AUTO-VALIDATION seulement par RECOUPEMENT de 2
        sources indépendantes (mêmes chiffres ±1,5 pp, même terrain ±2 j, ≥4 partis)
        — double provenance consignée, décision journalisée (PipelineLog)
      - La presse publie 24-48 h avant Wikipédia : les sondages de campagne entrent
        désormais automatiquement, avec garde-fous
      - Automatisation complète : replay + ablation régénérés chaque semaine dans le
        scheduler (plus aucun rapport manuel)
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 24 days ago · 1 file +117 −5
    3. Directive maître — baselines de replay, Course à 64, connecteurs primaires
      …
      - Replay : baselines « dernier sondage » et « moyenne 14 j » scorées à chaque
        horizon et agrégées (modèle 3,71 bat dernier-sondage 3,84; moyenne-14j 3,49
        gagne l'EAM ponctuelle — consigné honnêtement dans STATISTICAL_DEBT comme
        recherche ouverte : la valeur du modèle est la DISTRIBUTION, les baselines
        n'ont ni intervalles ni probabilités)
      - Course à 64 (/api/battlegrounds.paths_to_64 + section /circonscriptions) :
        pour chaque parti, échelle des sièges du plus sûr au plus décisif, 64e siège
        de la majorité surligné (PQ : Maskinongé 43 %, marge 0,9 pp), marge attendue
        = swing minimal de bascule, onglets par parti
      - Connecteurs PRIMAIRES des 7 firmes (ingest/pollster_reports.py) : veille des
        pages de publications (Firecrawl), archivage des rapports (data/raw/reports),
        extraction PAR RÈGLES avec niveau de confiance, FILE DE RÉVISION (Poll
        excluded=True « révision requise » — jamais d'entrée silencieuse),
        réconciliation Wikipédia, statut de source consigné (Pallas/Synopsis murées
        = connecteurs désactivés de fait). Test live Léger : 5 rapports archivés,
        0 création sous le seuil de confiance — comportement voulu
      - Tests invariants (§qualité) : 127 sièges/simulation, P(victoire) somme à 1,
        probabilités [0,1], extraction primaire (35/35 verts)
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 24 days ago · 1 file +236