SPB Git forge

spb/resto-ka

Public

Resto·Ka — tous les restaurants du Québec, menus complets et prix réels (famille ·Ka)

52commits 1branches 0releases
11.6 MBsize
maindefault branch
19 days agolast push
Python 69.3% TypeScript 16.7% CSS 7.9% JavaScript 4.7% HTML 1.4%

History of restoka/connectors/osm.py · clear filter

  1. Sun, Aug 23, 2026 1

    1. osm: miroirs Overpass fiabilisés + réessais multi-rondes
      …
      Incident du 2026-08-22 : les 4 miroirs sont tombés en même temps (kumi 500,
      overpass-api.de injoignable, private.coffee 502, osm.jp certificat TLS
      invalide) et le run hebdo a fini à 0 POI (retraits suspendus par le garde-fou).
      
      - osm.jp retiré (hostname mismatch permanent), maps.mail.ru ajouté (instance
        planète complète, seul miroir opérationnel pendant l incident)
      - 3 rondes de réessai sur l ensemble des miroirs (attente 0/90/300 s) avant
        d abandonner un type d établissement
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 1 mo ago · 1 file +43 −25
  2. Tue, Aug 18, 2026 2

    1. Vague 2 : inspections MAPAQ, horaires structurés, contact site-resto, Yelp, fix Overpass 406
      …
      - MAPAQ (Données Québec, CC-BY 4.0) : module restoka/inspections.py — import
        des 2 994 condamnations (listecondamnation.csv) dans la table liée
        inspections, croisement CONSERVATEUR avec les restaurants (nom+lieu avec
        CP ou civique exigé ; adresse+nom hors tokens de ville — jamais la mauvaise
        succursale d une chaîne, jamais deux voisins d un centre commercial) :
        288 condamnations croisées sur 204 restos. details.mapaq + endpoint
        GET /api/restaurants/{uid}/inspections + compteurs /api/stats.
      - Horaires : restoka/hours.py — parseur opening_hours OSM (plages de jours,
        double service, off, 24/7, PH ignoré ; l exotique reste en brut) + JSON-LD
        schema.org. Câblé dans le connecteur OSM et backfillé : 2 656/2 939 tags
        bruts structurés par jour (90,4 %).
      - site-resto : extraction téléphone (tel:/JSON-LD/regex, E.164, garde
        anti-annuaire de chaîne), horaires JSON-LD et lien de réservation
        (OpenTable, Libro, Resto Loco…) -> COALESCE conservateur sur la fiche OSM
        (db.enrich_contact) + details.reservation_url (pending_enrichment).
      - Yelp Fusion : connecteur d enrichissement complet (rating, review_count,
        price, categories, phone -> details.yelp ; croisement par téléphone puis
        /businesses/matches, GPS <300 m si ambigu, budget 450 req/run). Livré en
        SkipSource « clé requise » (YELP_API_KEY absente) — nouveau patron
        SkipSource dans base.py + .env.example.
      - Overpass 406 : overpass-api.de refuse les UA déguisés en navigateur mais
        accepte un UA de bot honnête — UA dédié OVERPASS_UA (vérifié live, 200).
      - Colonne restaurants.details (migration auto, jamais touchée par
        sync_source), registre data/sources.json à 6 sources, /api/stats expose
        inspections/inspections_matched/restaurants_with_inspections.
      - Tests : 64 au vert (51 existants + 13 nouveaux : hours, inspections,
        extraction contact).
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 1 mo ago · 1 file +15 −1
    2. Fiabilité sync + enrichissement UEAT/OSM
      …
      - Garde anti-fausses-fermetures : garde bootstrap (found < 60 % du max
        historique => retraits suspendus, active dès le 2e run), signal de run
        partiel remonté du connecteur au pipeline (sync_source(partial=...)).
      - OSM : run marqué partiel si un type échoue sur tous les miroirs ;
        réponses Overpass tronquées (remark timeout) et miroirs sans données
        (0 élément) traités comme des échecs ; overpass.osm.ch retiré (extrait
        suisse => 0 POI pour le Québec) ; +2 miroirs planet.
      - OSM : brand => chain, branch suffixé au nom, wheelchair/payment:*/
        capacity => services, diet:*=limited accepté, ~45 cuisines OSM
        supplémentaires mappées (belgian, turkish, cantonese, peruvian...).
      - UEAT : phoneNumber + address.latitude/longitude captés a la source
        (GPS de première partie, COALESCE côté base) ; 20 GUID découverts par
        site-resto promus dans data/sources.json (50 intégrations).
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 1 mo ago · 1 file +86 −4
  3. Mon, Aug 17, 2026 1

    1. v2 — le plus grand agrégateur de restos du Québec : découverte OSM + 10 bannières UEAT
      …
      - Connecteur de découverte OpenStreetMap (Overpass, ODbL, attribution) :
        13 531 établissements nommés (restos, fast-foods, cafés, bars, crèmeries,
        boulangeries) → 14 055 fiches actives, 17/17 régions couvertes.
      - +10 intégrations UEAT (Boustan 65, Ben & Florentine 54, NO.900 32,
        Sushi Taxi 30, Cochon Dingue, Salvatoré, Belle Province, Madisons, Freddy)
        → 29 intégrations, 738 restos avec menu complet, 79 159 plats avec prix.
      - Déduplication chaîne↔découverte (suffixe de succursale retranché, OSM
        toujours derrière la fiche à menu) : 215 doublons masqués.
      - Régions : repli par ancres géographiques couvrant les 17 régions.
      - UI : filtre « Avec menu complet / Fiche seulement », tri « Menus d'abord »
        par défaut, tuile restos avec menu, attribution OSM au pied de page.
      - 45 tests (fixtures Overpass + UEAT réelles hors ligne).
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 1 mo ago · 1 file +180