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%
10.2 KB · 159 lines html
Raw Blame History
1<!DOCTYPE html>2<!-- GABARIT COMMUN — page /doc des sites du Groupe KA (2026-08-24).3     À adapter par site : remplacer resto-ka (id, ex. lou-ka), Resto·Ka (ex. Lou·Ka),4     Tous les restaurants du Québec — menus complets et prix réels, comparables et cherchables dans les 17 régions., #f08c00 (couleur accent du site, ex. #b7f000), les sections5     et les étapes (captures dans ./img/). Page auto-suffisante (aucun JS requis). -->6<html lang="fr">7<head>8<meta charset="utf-8">9<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">10<title>Documentation — Resto·Ka</title>11<meta name="description" content="Comment fonctionne Resto·Ka : guide pas à pas, données, architecture.">12<style>13  :root{ --ink:#101014; --paper:#faf9f6; --accent:#f08c00; --muted:#6b6b70; --line:#e6e4de; }14  *{box-sizing:border-box} html,body{margin:0;padding:0;background:var(--paper);color:var(--ink);15    font:16px/1.65 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;-webkit-text-size-adjust:100%}16  .container{max-width:960px;margin:0 auto;padding:0 20px}17  header.doc{background:var(--ink);color:var(--paper);padding:20px 0}18  header.doc .container{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}19  header.doc a{color:var(--paper);text-decoration:none}20  .wordmark{font-weight:800;font-size:20px;letter-spacing:.02em}21  .wordmark .ka{color:var(--accent)}22  .btn-pdf{display:inline-block;background:var(--accent);color:var(--ink);font-weight:700;23    padding:10px 18px;border-radius:999px;text-decoration:none;font-size:15px}24  .hero{padding:48px 0 8px}25  .hero h1{font-size:clamp(28px,5vw,44px);line-height:1.1;margin:0 0 12px}26  .hero h1 mark{background:var(--accent);color:var(--ink);padding:2px 8px}27  .hero p.lead{font-size:18px;color:var(--muted);max-width:640px}28  .kicker{font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);29    border-left:3px solid var(--accent);padding-left:10px;margin:40px 0 8px;font-weight:700}30  section{padding:8px 0 16px}31  h2{font-size:26px;margin:6px 0 12px}32  .step{display:grid;grid-template-columns:56px 1fr;gap:16px;margin:26px 0;align-items:start}33  .step .num{width:44px;height:44px;border-radius:50%;background:var(--ink);color:var(--accent);34    display:flex;align-items:center;justify-content:center;font-weight:800;font-size:18px}35  .step h3{margin:6px 0 6px;font-size:19px}36  .step p{margin:0 0 12px;color:#3a3a40}37  .shot{border:1px solid var(--line);border-radius:12px;overflow:hidden;box-shadow:0 8px 30px rgba(16,16,20,.08)}38  .shot img{display:block;width:100%;height:auto}39  .cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px;margin:16px 0}40  .card{border:1px solid var(--line);border-radius:12px;padding:16px;background:#fff}41  .card b{display:block;margin-bottom:6px}42  table{border-collapse:collapse;width:100%;font-size:15px}43  th,td{border:1px solid var(--line);padding:8px 10px;text-align:left;vertical-align:top}44  th{background:var(--ink);color:var(--paper)}45  footer.doc{margin-top:56px;background:var(--ink);color:var(--paper);padding:28px 0;font-size:14px}46  footer.doc a{color:var(--accent);text-decoration:none}47  @media print{48    header.doc .btn-pdf{display:none}49    .shot{box-shadow:none;break-inside:avoid}50    .step{break-inside:avoid}51    a{color:inherit;text-decoration:none}52  }53  @media(max-width:640px){ .step{grid-template-columns:40px 1fr} .step .num{width:34px;height:34px;font-size:15px} }54</style>55</head>56<body>57<header class="doc">58  <div class="container">59    <a class="wordmark" href="/">Resto<span class="ka">·Ka</span></a>60    <nav style="display:flex;gap:14px;align-items:center">61      <a href="/">← Retour au site</a>62      <a class="btn-pdf" href="./resto-ka-documentation.pdf" download>Télécharger le PDF</a>63    </nav>64  </div>65</header>6667<div class="container">68  <div class="hero">69    <p class="kicker">Documentation · mise à jour 2026-08-24</p>70    <h1>Comment fonctionne <mark>Resto·Ka</mark></h1>71    <p class="lead">Tous les restaurants du Québec — menus complets et prix réels, comparables et cherchables dans les 17 régions.</p>72  </div>7374  <section>75    <p class="kicker">Vue d'ensemble</p>76    <h2>À quoi sert le site</h2>77    <p><b>Resto·Ka</b> (<a href="https://www.resto-ka.com">www.resto-ka.com</a>) est l'agrégateur exhaustif des restaurants78    du Québec : chaque resto, chaque plat, chaque prix — dans les 17 régions administratives, au même endroit, comparable et79    cherchable <b>par resto ou par plat</b>. Les prix sont des <b>prix takeout réels, non majorés</b>, captés sur la plateforme de80    commande des restos eux-mêmes (pas sur les apps de livraison, majorées de 25-30 %). Pour quiconque veut répondre à81    « qu'est-ce que je mange, où, et combien ça coûte ? » sans ouvrir quinze applis.</p>82    <div class="cards">83      <div class="card"><b>14 091 restaurants</b>Découverte OpenStreetMap dans les 17 régions ; 99 % géolocalisés.</div>84      <div class="card"><b>79 159 plats avec prix</b>738 restos avec menu complet, 98 % des items avec photo.</div>85      <div class="card"><b>Prix réels, non majorés</b>Prix takeout captés chez les restos (connecteur UEAT, 29 intégrations de chaînes), jamais sur les apps de livraison.</div>86      <div class="card"><b>Historique des prix</b>Chaque changement de prix d'un item est journalisé (item_price_log).</div>87    </div>88  </section>8990  <section>91    <p class="kicker">Guide pas à pas</p>92    <h2>Utiliser le site en 4 étapes</h2>93    <div class="step">94      <div class="num">1</div>95      <div>96        <h3>Cherchez un resto ou un plat depuis l'accueil</h3>97        <p>La recherche couvre les 14 091 restos et les 79 159 plats. La recherche par plat est groupée par marque — la poutine d'une chaîne n'est pas répétée 76 fois. Filtrez par cuisine, type d'établissement ou gamme de prix.</p>98        <div class="shot"><img src="./img/etape1.png" alt="Étape 1 — Cherchez un resto ou un plat depuis l'accueil"></div>99      </div>100    </div>101    <div class="step">102      <div class="num">2</div>103      <div>104        <h3>Parcourez les restos d'une ville</h3>105        <p>Les pages villes (ex. /ville/quebec) listent les établissements avec leur plat médian, leurs cuisines et le badge « UEAT (commande en ligne) » quand le menu complet avec prix réels est disponible.</p>106        <div class="shot"><img src="./img/etape2.png" alt="Étape 2 — Parcourez les restos d'une ville"></div>107      </div>108    </div>109    <div class="step">110      <div class="num">3</div>111      <div>112        <h3>Ouvrez la fiche d'un restaurant</h3>113        <p>Le menu complet par section, chaque plat avec sa photo, son prix et son contexte (salle / emporter / livraison), les options et formats avec leurs suppléments (« Mini +3,70 $ »), les coordonnées et la carte. Un prix n'est jamais présenté sans son contexte.</p>114        <div class="shot"><img src="./img/etape3.png" alt="Étape 3 — Ouvrez la fiche d'un restaurant"></div>115      </div>116    </div>117    <div class="step">118      <div class="num">4</div>119      <div>120        <h3>Comparez le marché sur /stats</h3>121        <p>Le tableau de bord : volumes par région et cuisine, prix médians, chaînes suivies — et des rapports PDF téléchargeables (catalogue + constructeur de rapport).</p>122        <div class="shot"><img src="./img/etape4.png" alt="Étape 4 — Comparez le marché sur /stats"></div>123      </div>124    </div>125  </section>126127  <section>128    <p class="kicker">Sous le capot</p>129    <h2>D'où viennent les données</h2>130    <p>Pipeline (patron Lou·Ka) : <b>connecteurs → normalisation → déduplication → SQLite → API/frontend</b>.131    La découverte passe par OpenStreetMap (API Overpass) : 13 500+ établissements nommés dans les 17 régions. Les menus et prix132    réels viennent du <b>connecteur UEAT templatisé</b> (API GraphQL) qui couvre 29 intégrations de chaînes (Sushi Shop, Valentine,133    Normandin, Thaïzone, Chez Ashton…), complété par des connecteurs directs / Firecrawl / Scrapfly. Une boucle hebdomadaire134    (<code>resto-ka-sync</code>) resynchronise tout ; un menu sans contexte de prix est rejeté à l'ingestion, un menu salle n'est jamais135    écrasé par un menu livraison, et une alerte de dérive suspend les retraits si une source chute anormalement. Géocodage à 99 %136    (Nominatim + Adresses Québec). Le registre public <a href="/sources">/sources</a> documente chaque source.</p>137  </section>138139  <section>140    <p class="kicker">Questions fréquentes</p>141    <h2>FAQ</h2>142    <div class="card" style="margin:10px 0"><b>Pourquoi les prix diffèrent-ils des apps de livraison ?</b><p style="margin:6px 0 0">Les apps de livraison majorent les prix de 25-30 %. Resto·Ka capte les prix takeout réels sur la plateforme de commande des restos eux-mêmes.</p></div>143    <div class="card" style="margin:10px 0"><b>Puis-je commander via Resto·Ka ?</b><p style="margin:6px 0 0">Non. Resto·Ka est un index : chaque fiche renvoie vers le site ou la plateforme de commande du resto. Groupe KA n'est partie à aucune transaction.</p></div>144    <div class="card" style="margin:10px 0"><b>Pourquoi certains restos n'ont-ils pas de menu ?</b><p style="margin:6px 0 0">Les 14 091 restos viennent de la découverte OpenStreetMap ; le menu complet avec prix n'est disponible que lorsque le resto a une source de menu connectable (738 restos, 24 chaînes suivies à ce jour).</p></div>145    <div class="card" style="margin:10px 0"><b>Les succursales d'une chaîne sont-elles fusionnées ?</b><p style="margin:6px 0 0">Jamais : la déduplication inter-sources préserve chaque succursale, chacune avec son menu et ses prix propres.</p></div>146    <div class="card" style="margin:10px 0"><b>À quelle fréquence les menus sont-ils rafraîchis ?</b><p style="margin:6px 0 0">La boucle de synchronisation est hebdomadaire ; chaque changement de prix est archivé dans l'historique de l'item.</p></div>147  </section>148</div>149150<footer class="doc">151  <div class="container">152    <p><b>Resto·Ka</b> — un service <a href="https://www.groupe-ka.com">Groupe KA</a>.153    Écosystème : les 13 plateformes sont liées au pied de chaque site.</p>154    <p>© 2026 Groupe KA — Simon-Pierre Boucher · <a href="mailto:contact@spboucher.ai">contact@spboucher.ai</a></p>155  </div>156</footer>157</body>158</html>159