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 frontend/aujourdhui.html · clear filter

  1. Mon, Aug 31, 2026 1

    1. v3.2.0 — Phase D population, soir d'élection, scénarios URL, fiches enrichies, favicon/og
      …
      - PHASE D : feature store démographique depuis le classeur OFFICIEL Élections
        Québec (Recensement 2021 × 127 circonscriptions 2026, codes stables, source
        parfaite — aucune interpolation) : population, 65+, langue à la maison,
        universitaire, locataires, immigrants, revenu 100k+, autochtones,
        appartements, minorités visibles + z-scores + SIMILARITÉ top-10 (validée :
        Gouin≈Mercier/SMSJ, Westmount≈NDG/MRO, Ungava profil nordique).
        API /api/demographics/{nom}; démographie + semblables intégrés aux fiches
      - MODÈLE DU SOIR D'ÉLECTION (modeling/election_night.py, dormant) : prior =
        forecast final; décomposition hiérarchique des résidus rapportés (national
        ~N(0,σ_ind²) → régional → local, pondérés par dépouillement propre — garde
        anti-biais des premiers bureaux); resimulation à variances réduites; calling
        conservateur (P≥99,5 % ET ≥40 % dépouillé). /api/election-night +
        POST /api/admin/election-night. Test synthétique : décalage national +3 pp
        retrouvé, zéro invention à décalage nul
      - LABO DE SCÉNARIOS partageables par URL (?s=base64) : encodage/décodage
        complet, bouton copier, presets appliqués aux contrôles, étiquetage strict
        « conditionnel — pas le forecast officiel »
      - FICHES ENRICHIES : sensibilité au swing (marge attendue, chemin de bascule
        minimal, stabilité vs IC) + démographie officielle
      - FAVICON (SVG+PNG 64/180/512, fleur QC Signal) + OG:IMAGE 1200×630 (hémicycle)
        + balises og/twitter sur les 11 pages
      - COMPAS-PROGRAMMES.md : mandat complet du compas électoral IA inscrit à la
        feuille de route (règles de neutralité/preuve, ordre d'exécution, actifs
        réutilisables) — prochaine grande phase
      - 37/37 tests (slug, bornes démographiques, soir d'élection)
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 23 days ago · 1 file +15
  2. Sun, Aug 30, 2026 4

    1. QC Signal (refonte frontend complète) + distribution prédictive du prochain sondage
      …
      Frontend — design system « QC Signal » (sous-agent, 11 pages × 4 viewports,
      zéro erreur JS, zéro débordement, light+dark dédiés) :
      - Tokens complets (palettes, radius 8-24, spacing 4/8, ombres discrètes),
        échelle typo (metric-xl 64px, tabular-nums partout), navbar + fleur SVG,
        FORECAST STRIP sticky sur toutes les pages (P(1er) publiée + Δ veille)
      - Accueil recomposé : verdict éditorial → MAIN OUTCOME (métrique héroïque,
        intervalles VISUELS 24 ───●─── 86) → HÉMICYCLE SVG 127 sièges (marqueur
        majorité 64, hover IC) → OUTCOME BAR (majorité/minoritaire/autre) →
        cartes partis compactes data-first (sparklines, deltas neutres jamais
        vert/rouge) → mouvement + pivots
      - /aujourdhui briefing éditorial, /carte 75/25, tables sticky-header,
        composants deltaHTML/rangeHTML/emptyState/hemicycleSVG, skeletons
      - docs/DESIGN_SYSTEM.md + docs/UI_AUDIT.md (18 dettes retirées)
      
      Backend :
      - national/next_poll.py (§46-48) : P(prochain sondage | modèle) publiée à
        chaque run + SURPRISE de chaque nouveau sondage (z par parti, densité
        prédictive, verdict bruit/à surveiller/mouvement-ou-aberrant) mesurée
        contre la prédiction STOCKÉE du run précédent (jamais rétro-ajustée)
      - data/replay_report.json committé (LOEO 6 élections)
      - 33/33 tests
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 25 days ago · 1 file +64 −52
    2. Pouls social continu — actor Apify maison qc-social-pulse + sources ouvertes
      …
      - Actor Apify maison (compte gorgeous_thistle, id aI5AYtFfeDn3KAanf) : Instagram
        (comptes officiels vérifiés : coalition_avenir_quebec, partiquebecois, psppqc,
        liberalquebec, quebecsolidaire, ericduhaimequebec, frechette_christine),
        Facebook/TikTok best-effort, YouTube recherche + COMMENTAIRES PUBLICS (innertube)
        — proxy résidentiel CA, retries rotation IP, source dans apify/qc-social-pulse/
      - ingest/social_pulse.py : + Reddit r/Quebec (index Google/Serper), Mastodon,
        Lemmy.ca; stance dirigée + entité de contexte; pondération engagement
        1+ln(1+votes); anti-bruit (dédup URL+texte intra-lot et DB, longueur min,
        plafonds); indice enthousiasme par parti (Indicator); anomalies → événements
      - Table social_posts; API /api/social; section « Pouls social » (intelligence)
        + ligne au point du jour; pipeline à chaque cycle; poids NUL dans le forecast
      - Test réel : 185 posts (74 commentaires YouTube, 40 Mastodon, 71 Lemmy),
        enthousiasme CAQ 261/PCQ 206/PLQ 132 eng/post
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 25 days ago · 1 file +10
    3. Frontend v3 « sharp » + ingestion de sondages parfaite (v2.1.1)
      …
      Frontend :
      - Refonte style.css : header compact blur, drawer hamburger mobile (verrou, backdrop,
        Escape), safe-areas, anti-zoom iOS 16px, cartes dégradées + hover lift, focus rings,
        skeleton shimmer, clamp typographique, prefers-reduced-motion
      - Charts : thème Inter, grille recessive, tooltips arrondis/blur, légendes cercle,
        dégradés sous courbe (areaGrad), traits lumineux (lineGlow), pastilles endLabel,
        barres à coins arrondis, ResizeObserver
      - Palette des partis validée (dataviz : CVD ΔE≥20, contraste ≥3:1, 2 surfaces)
      
      Sondages (« ça doit être parfait ») :
      - Parseur Wikipédia par SECTION (« Opinion polls »/« Campaign period » acceptées,
        ventilations langue/région et projections exclues) — plus de seuil de 20 rangées :
        la table de campagne entre dès sa 1re rangée
      - Mode de collecte par maison (design effects réels), vraie plage de terrain,
        indécis parsés
      - Upsert par (maison, fin de terrain) : n/MoE/chiffres révisés mis à jour, jamais
        dupliqués; purge des doublons hérités
      - Boucle de garantie radar→base (statut intégré/en attente), pipeline 3 h en campagne
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 25 days ago · 1 file +3 −2
    4. v2.1.0 — signaux web avancés + « Le point du jour »
      …
      - Attention Wikipédia (pageviews partis+chefs, API Wikimedia) : parts 7 j/28 j,
        z-scores; détecteur de turbulence → variance de campagne ×≤1,45 (jamais la moyenne)
        [Smith & Gustafson POQ 2017]
      - Sondage synthétique LLM « silicon sampling » : 96 strates région×âge×genre×langue
        poststratifiées, ancré dans les manchettes réelles — EXPÉRIMENTAL, poids nul
        [arXiv:2411.01582; critique McKown-Dawson 2025]
      - Page quotidienne /aujourdhui : forecast daté, Δ vs veille, journal 24 h (sondages
        intégrés + radar), attention web avec sparklines, synthétique vs forecast
      - API : /api/today, /api/attention, /api/synthetic; admin POST /synthetic (amorçage)
      - forecast(drift_multiplier) : turbulence élargit l'incertitude seulement
      - 24 tests verts
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 25 days ago · 1 file +251