SPB Git forge

spb/sorti-ka

Public

Toutes les sorties et tous les événements du Québec, un seul endroit — 7 connecteurs, fiches SSR, design Groupe KA.

58commits 1branches 0releases
13.7 MBsize
maindefault branch
17 days agolast push
HTML 82.9% Python 15.2% TypeScript 0.9% JavaScript 0.7%

History of sortika/ingest.py · clear filter

  1. Wed, Aug 19, 2026 2

    1. Phase 3 — annuaire de salles : table venues (appris/OSM/Nominatim), matching par alias, plages de dates FR
      …
      - sortika/venues.py : annuaire de salles QC — auto-apprentissage des salles
        géocodées par les sources, extrait Overpass des lieux culturels (import par
        fichier si le nœud n atteint pas overpass-api.de, échec mémorisé 3 j),
        géocodage Nominatim des salles récurrentes (plafonné) ; matching nom
        normalisé + alias de segments + « Salle X » → « X » (ville obligatoire),
        match sans ville seulement si clé unique ≥ 8 car. — jamais de GPS inventé
      - scripts/build_venues.py : amorçage one-shot de l annuaire
      - ingest.py : venues.run à chaque cycle (après le géocodeur)
      - normalize.py : parse_date_range_fr (« Du 4 juin au 22 août 2026 »…)
      - GPS des « à venir » : 64,9 % → 76,4 % (+3 264 fiches localisées)
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 1 mo ago · 1 file +10 −1
    2. Phase 2 — noyau : archivage des passés, statut, end_time, quarantaine, séances, villes MAMH
      …
      - Règle d ARCHIVAGE temporel : un événement terminé passe active=0 à chaque
        cycle (jamais supprimé) ; un passé archivé n est plus réactivé par un sync
        « unchanged » (backfill immédiat : 3 745 passés actifs → 0).
      - Colonnes additives events.end_time (HH:MM), events.status
        (cancelled/postponed/soldout, NULL = prévu) et events.quarantine
        (raison, NULL = publiable) + migration auto à la connexion.
      - dedup_key inclut désormais l HEURE de début : même titre/ville/jour à des
        heures différentes = séances distinctes (661 groupes → 259 ; les 11 séances
        d un même parcours redeviennent visibles). Deux fiches sans heure fusionnent
        toujours ; une fiche avec heure ne fusionne qu à heure égale (règle consignée
        dans schema.py).
      - Quarantaine qualité : date passée aberrante (< 2000), début à plus de 2 ans,
        ville hors Québec — non publiée, comptée (/api/stats), réintégrable à chaque
        sync dès que la donnée redevient saine. L heure 00:00 est affichée « heure
        non confirmée » ; l image 404 n est pas vérifiée (coût réseau), le frontend
        retire les images cassées.
      - Alerte « source qui meurt en silence » : événements FUTURS par source à
        chaque cycle (data/future_counts.json) — alerte si 0 futur ou chute > 80 %
        (le cas Laval : 41 runs verts, max(date)=2025-12-09).
      - Géocodage par ADRESSE CIVIQUE prioritaire (Nominatim, même cache, 1 req/s) :
        Brossard 0,7 % → 94 % de GPS, Longueuil 0 % → 75 %.
      - Villes normalisées au Répertoire MAMH (data/villes_canon.json, généré de
        MUN.csv + ARR.csv) : « Montreal » 375, « Quebec » 166, 75 graphies, 804
        événements backfillés — facettes ville unifiées.
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 1 mo ago · 1 file +19 −1
  2. Tue, Aug 18, 2026 1

    1. Enrichissement des connecteurs + géocodage des salles
      …
      - geocode.py (nouveau) : géocodeur Nominatim des salles — cache disque
        data/geocode_cache.json, throttle 1,1 s, UA SortiKaBot identifié, plafond
        SORTIKA_GEOCODE_MAX=120 req/cycle, garde-fous bbox Québec + ville dans la
        display_name, repli sur segment de nom composé ; branché dans ingest.run()
      - lepointdevente : enrichissement incrémental par fiches /billets/<id>
        (cache, LPDV_DETAIL_MAX=150/sync, re-visite 7 j, throttle 0,8 s) —
        description og:description (boilerplate filtré), heure précise (cache),
        tarifs réels via /plugins/rates/<id> → price_min/price_label/is_free
      - sitq : contacts Tourinsoft (TelephonePrincipals/Courriels) → description
        « Renseignements : … » (le flux ne publie ni Descriptions* ni tarifs)
      - montreal : venue = emplacement (si vrai nom de lieu — aujourdhui la ville
        ny publie que le mode En salle/À lextérieur/En ligne) ou titre_adresse ;
        address complétée par adresse_secondaire
      - evenko : champ free sondé null sur 100 % des hits — détection gratuité
        par étiquettes explicites event_tag/promotional_tag en complément
      - sources.json : registre des champs extraits à jour
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 1 mo ago · 1 file +9 −1
  3. Mon, Aug 17, 2026 1

    1. Sorti·Ka v1 — agrégateur de sorties & événements du Québec
      …
      8 connecteurs actifs (Le point de vente, SIT Québec, Ville de Montréal,
      evenko, La Vitrine, Atuvu, Sherbrooke, Laval), 15 231 événements actifs
      dans les 17 régions, fiches SSR /evenement/{uid} avec JSON-LD, dédup
      inter-sources, enrichissement d'images og:image, design system Groupe KA
      « éditorial sharp », 19 tests sur fixtures réelles.
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 1 mo ago · 1 file +67