Sites web des restos (menus maison) — connecteur site-resto
Fiche générée automatiquement par scripts/gen_connector_docs.py le 2026-08-18 06:06 — ne pas éditer à la main, régénérer.
État : actif · Palier (tier) : 3 · Backend : Firecrawl · Restos actifs : 86/86
Description de la source
Connecteur « sites web des restos » (Palier 3) — capte les MENUS MAISON des restaurants découverts par OSM qui publient un site web. Pipeline par site (budget par passage, incrémental via detail_cache) : 1. GET la page d'accueil (requests direct, UA RestoKaBot). 2. DÉTECTION DE PLATEFORME (CLAUDE.md §9 P3) : si le site embarque UEAT (order.ueat.io/integration/ ou *.order-online.ai), le GUID est consigné dans data/ueat-discovered.json — le connecteur UEAT (Palier 1, menu structuré parfait) le couvrira au prochain passage. Aucune fiche émise ici. 3. Sinon : trouver le lien « menu/carte », récupérer la page (Firecrawl en secours pour les sites JS, budget limité) ou le PDF du menu. 4. Structuration par Claude Haiku 4.5 (restoka/menullm.py) — sorties structurées JSON + validation STRICTE des prix. 5. Émettre une fiche site-resto clonée de la fiche OSM avec le menu ; la déduplication masque la fiche OSM derrière elle. Contexte de prix produit : DINE-IN (menu affiché par le resto lui-même — la référence idéale, §6.2). price_source: site-resto. Les fiches déjà captées sont RÉÉMISES depuis la base à chaque passage (délai de grâce) et re-crawlées après REFRESH_DAYS.
- Plateforme : sites-web · Site : https://www.resto-ka.com/sources
- Extraction (registre) : Crawl des sites web publiés par les restos découverts via OSM : détection de plateforme (UEAT → GUID consigné dans ueat-discovered.json), sinon page menu HTML (requests, Firecrawl en secours pour le JS) ou PDF → structuration par Claude Haiku 4.5 (sorties structurées JSON) → validation stricte des prix (≥5 plats avec prix, ≥40 % des items, 0,50–500 $). Budget de 250 sites/passage, re-crawl mensuel.
- Contexte de prix : dine-in
- Module :
restoka/connectors/siteresto.py—SiteRestoConnector
Accès
- Type d'accès : pages HTML (rendu serveur)
- Endpoint de base : https://{m.group(1
- URLs du module : https://{m.group(1
- Pagination : itération sur 11 racines (constante
_RESERVATION_DOMAINS) - Backend anti-bot / rendu : requests direct (session UA RestoKaBot, throttling poli) ; Firecrawl (HTML rendu, JavaScript exécuté)
- Politesse : 1.0 s entre requêtes, timeout 20 s, UA
RestoKaBot/1.0 (+https://www.resto-ka.com/bot) - Authentification : aucune — accès public/anonyme
Champs récupérés → schéma cible
Le connecteur alimente la table restaurants (et menus le cas échéant). Complétude mesurée en SQL sur les 86 fiches actives ; exemple tiré d'une ligne réelle de la BD.
Colonne restaurants |
Contenu | Renseignée (actives) | Exemple réel |
|---|---|---|---|
name |
Nom de l'établissement | 100 % | Chez Roger |
chain |
Chaîne / bannière | 5 % | — |
cuisines |
Cuisines (JSON, taxonomie §6.1) | 100 % | ["fruits-de-mer", "bbq-grillades", "cafe-dessert", "fast-food"] |
establishment_type |
Type d'établissement | 100 % | restaurant |
price_range |
Fourchette de prix | 100 % | $ |
address |
Adresse civique | 86 % | 2316 Rue Beaubien Est |
city |
Ville | 10 % | — |
region |
Région administrative | 100 % | Montréal |
postal_code |
Code postal | 45 % | — |
lat |
GPS (lat/lng) | 100 % | 45.5470572 |
phone |
Téléphone | 83 % | +1 514 593 4200 |
website |
Site web | 100 % | https://www.chezroger.ca/ |
hours |
Horaires structurés (JSON) | 50 % | {"osm": "Mo-Su 17:00-23:00", "mon": [["17:00", "23:00"]], "tue": [["17:00", "23:00"]], "w… |
services |
Services (JSON) | 100 % | ["salle"] |
dietary_options |
Options alimentaires (JSON) | 70 % | [] |
images |
Photos (JSON) | 0 % | — |
url |
URL de la fiche source | 100 % | https://www.chezroger.ca/restaurant/menus.html |
Menus : 86 menus rattachés (4667 items, 1 contexte(s) de prix, dernière capture 2026-08-18T07:17:34Z) — table menus (sections → items → options, prix CAD).
Fréquence & budget
- Cadence déclarée (registre) : hebdomadaire (batch incrémental), re-crawl mensuel
- Cadence observée (médiane sync_log) : ≈ 25 min
- Dernier passage OK : 2026-08-18 03:17 — 86 trouvées, +82 / ~3 / -0
Volumétrie & complétude
- Fiches en BD : 86 au total, 86 actives
- Première ingestion : 2026-08-18 · Dernière observation : 2026-08-18
- Complétude clé (actives) : GPS 100 % · adresse 86 % · cuisines 100 % · horaires 50 % · site web 100 %
- Runs journalisés (60 derniers) : 3, dont 0 en erreur
Erreurs connues & dépannage
Aucune erreur dans les 60 derniers runs journalisés.
Rejouer la source seule : python3 run.py sync site-resto · vérifier sync_log (SELECT * FROM sync_log WHERE source='site-resto' ORDER BY ts DESC LIMIT 5;).
Licence, attribution & conditions
- Cadre d'accès (registre,
acces_legal) : Sites publics de première partie (le menu affiché par le resto lui-même — la voie la plus légitime, CLAUDE.md §15). UA identifiable RestoKaBot, 1 req/s, aucun contournement. - Scraping / API : User-Agent identifiable
RestoKaBot/1.0 (+https://www.resto-ka.com/bot; contact@spboucher.ai), throttling poli, aucun contournement d'accès ; les fiches pointent vers la source d'origine. - Retrait sur demande : contact@spboucher.ai.
Historique
- 2026-08-18 — premières fiches de la source ingérées dans la BD.
- 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par
scripts/gen_connector_docs.py).