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/seo.py · clear filter

  1. Sun, Aug 23, 2026 2

    1. favoris ♥ « Mon univers Ka » (KA ID) : hub groupe-ka.com magasin central
      …
      - sortika/hubfav.py : client HMAC du hub (patron food-ka) — toggle synchrone,
        lecture avec cache mémoire 30 s invalidé au toggle, aucun stockage local
      - API : GET /api/favorites + POST /api/favorites/toggle (session KA ID, 401
        sinon ; 403 compte non relié ; 502 hub injoignable)
      - frontend : cœur ♥ sur les cartes et la fiche (non connecté -> connexion
        KA ID), page /favoris + entrée de nav, toggle optimiste avec rétablissement
      - SSR : route /favoris (noindex, hors sitemaps)
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 1 mo ago · 1 file +22
    2. SEO : pages programmatiques régions + catégories rendues en HTML
      …
      - sortika/seo.py : /regions, /region/{slug}, /categories, /categorie/{cat}
        (SSR complet : ItemList + BreadcrumbList, 100 fiches liées par page),
        liens régions/catégories dans l'accueil SSR, sitemap-pages enrichi
      - frontend/index.html : routeur SPA étendu — /region/{slug} et
        /categorie/{cat} ouvrent la recherche filtrée correspondante (kaSlug
        miroir du slugify serveur)
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 1 mo ago · 1 file +220 −4
  2. Sat, Aug 22, 2026 1

  3. Wed, Aug 19, 2026 2

    1. Phase 3 — registre (34 sources), conformité et crédits
      …
      - data/sources.json : 9 nouvelles sources actives avec fiche d évaluation
        datée (accès constaté, volume mesuré, robots.txt lu, effort) + 5 écartements
        consignés avec raison (mauricie JS, laurentides/gaspesie WAF, tuxedo en
        panne, clubs pros doublons)
      - docs/CONFORMITE.md : tableau licences/robots.txt/crédits/fréquences de
        TOUTES les sources + données transversales (MAMH, OSM/ODbL, Nominatim)
      - frontend + seo.py : étiquettes SRC_LABELS des 9 nouvelles sources (+ 3
        anciennes manquantes) ; pied de page d attribution enrichi, dont
        « lieux : © contributeurs OpenStreetMap (ODbL) » exigé par l annuaire
      - docs/connecteurs : fiches régénérées (34 sources, INDEX)
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 1 mo ago · 1 file +9
    2. Phase 2 — affichage & API : bandeaux statut, heures de fin, quarantaine, santé par source
      …
      - Frontend : badge Annulé/Reporté/Complet sur les cartes, bandeau de statut
        sur la fiche, plage horaire « 19 h 30 – 21 h 30 » quand end_time est connue,
        heure 00:00 affichée « heure non confirmée » (jamais un minuit menteur).
      - SEO/SSR : eventStatus schema.org (EventCancelled/EventPostponed), offers
        availability SoldOut, endDate horodatée (endDate + end_time + fuseau),
        bandeau statut dans le HTML SSR ; sitemaps sans les événements en
        quarantaine.
      - API : /api/events, /api/stats et le tableau de bord excluent la
        quarantaine ; /api/stats expose « quarantined » ; /api/sources expose
        upcoming_events par source + future_alerts (canal de supervision — une
        source verte sans futur est morte en silence).
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 1 mo ago · 1 file +23 −4
  4. Tue, Aug 18, 2026 1

    1. Vague 2 d'enrichissement : heure précise, artistes, 3 nouveaux connecteurs
      …
      - Colonnes additives events.start_time (HH:MM locale QC) et events.artists
        (JSON) + migration auto à la connexion ; Event.finalize normalise l'heure
        (parse_time) et déduplique les artistes.
      - Heure captée partout où la source la publie : lepointdevente (cartes de
        liste « 17 août 2026, 20h00 » + fiches), evenko (show_time epoch →
        America/Montreal, respect hide_show_time), Laval et Sherbrooke (flux UTC →
        date+heure locales, minuit local = toute la journée), Montréal (JSON-LD des
        fiches pendant l'enrichissement og:image, cache rétro-compatible), atuvu.
      - Artistes : headliners evenko (explicite), lineup Bandsintown, attractions
        Ticketmaster, et extraction conservatrice des titres lpdv (patrons sûrs
        « Artiste - Salle » / « X en concert/rodage », liste de mots interdits).
      - Nouveau connecteur Ville de Brossard (API REST WordPress city-event +
        bannière/JSON-LD des fiches, cache incrémental) — 251 événements.
      - Nouveau connecteur Bandsintown (dates QC des artistes connus de la base,
        rotation 100 artistes/sync, app_id js_www.sorti-ka.com testé accepté) —
        108 concerts géolocalisés avec heure.
      - Nouveau connecteur Ticketmaster Discovery API, complet mais « prêt — clé
        requise » (TICKETMASTER_API_KEY absent de .env ; skip propre + .env.example).
      - Gatineau, Trois-Rivières, Lévis, Terrebonne : étudiées et documentées
        « abandonnée » dans sources.json (aucun flux exploitable, vérifié 2026-08-18).
      - Dédup à l'affichage : rang prix > GPS > image > description ; /api/stats
        expose « sources » (10 actives) pour le hub groupe-ka ; SSR : heure dans le
        JSON-LD (offset québécois) + performer ; frontend : heure sur les cartes et
        fiches, « À l'affiche », libellés des nouvelles sources.
      - Tests : 22 → 32 (parse_time, utc_to_local, artistes, migration, TM/BIT/
        Brossard sur structures réelles).
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 1 mo ago · 1 file +25 −1
  5. Mon, Aug 17, 2026 4

    1. Page /stats : tableau de bord analytique + rapport PDF Groupe-KA
      …
      - sortika/stats.py : GET /api/stats/dashboard (contrat ka-stats SPEC.md) —
        KPI réels avec deltas, séries ajouts/jour et en-cours/jour, donut
        catégories top 8, gratuits vs payants, sources, régions, heatmap
        calendrier 26 semaines, top villes/lieux/gros jours, records ;
        cache mémoire 5 min par période
      - sortika/kapdf.py (moteur PDF commun fpdf2) + GET /api/stats/report
        (complet | synthese), wordmark Sorti·Ka, accent #d6336c, filename
        kapdf.filename("sorti-ka", period)
      - frontend : vue /stats vanilla JS + SVG (kit kacharts reproduit) —
        KPI auto-fit, chips de période + plage personnalisée, courbes avec
        infobulle et légende cliquable, barres, anneau, heatmap, tableaux
        triables/recherche/pagination 25, records, boutons PDF ; lien Stats
        dans la nav ; mobile 360/768/1440 sans débordement
      - SEO : SSR /stats (title/canonical/og) + sitemap-pages
      - requirements : fpdf2
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 1 mo ago · 1 file +33 −1
    2. Assets Groupe KA (og.png, favicon.svg, apple-touch-icon) + correction du débordement à 768 px
      …
      - ka-assets/ → frontend/ (servi à la racine par StaticFiles) : og.png
        (1200×630), favicon.svg, apple-touch-icon.png.
      - index.html : liens icônes + og:image/og:image:width/height +
        twitter:card summary_large_image + twitter:image.
      - seo.py : OG_IMAGE_TAGS par défaut (contact, événements sans image),
        retombée twitter pour les événements avec image ; _render retire les
        balises statiques pour éviter les doublons.
      - header : header-inner passait en pile seulement à ≤760 px alors que la
        ligne exige ~882 px — flex-wrap autorisé à toute largeur (cause racine
        du débordement horizontal de +114 px à 768 px).
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 1 mo ago · 1 file +16 −2
    3. Harmonisation ka-ui — accent framboise, badge Groupe KA, KaFooter, page /contact
      …
      - tokens.css (ka-ui vendoré, src/ka/) chargé en premier ; le CSS local ne
        garde que le bloc accent framboise (--accent #d6336c + alias --lime) et
        le CSS métier — socle dédupliqué, couleurs en dur pointées vers les tokens
      - Header : badge « Un service Groupe KA » (→ groupe-ka.com) à côté du logo,
        lien Contact, empilement propre sous 760 px (badge visible sur mobile)
      - Footer : remplacé par le footer commun KaFooter (siteId sorti-ka) —
        3 courriels + rôles, avertissement agrégateur, 15 sites, liens légaux du
        hub + attribution des données conservée
      - Page /contact : vue SPA (contenu ecosystem.json) + route SSR seo.py
        (title/canonical/og + contenu robots) + entrée sitemap-pages.xml
      - KA ID : lien « Créer un compte » → groupe-ka.com/connexion à côté du
        bouton « Se connecter avec KA »
      - SEO : title « Sorti-Ka — Un service Groupe KA »
      - Responsive/tactile : overflow-x clip (tokens), nav/chips/liens ≥ 44 px,
        chips 44 px sur pointeur tactile
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 1 mo ago · 1 file +34 −1
    4. 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 +200