docs: README ultra détaillé + visite guidée en 10 captures
11 changed files +38 −9
modified
README.md
+38 −9
@@ -38,13 +38,40 @@ | ||
| 38 | 38 | |
| 39 | 39 | **Auto-Ka** est un agrégateur indépendant de véhicules usagés couvrant la province de Québec. Chercher une auto usagée, c'est normalement ouvrir des dizaines de sites de concessionnaires — chacun avec sa navigation, ses filtres, son format. Auto-Ka retourne le problème : un **connecteur dédié par commerce** visite chaque site **à la source** (aucune plateforme d'annonces revendue), **normalise** chaque véhicule vers un schéma unique et **détecte les changements en continu**. |
| 40 | 40 | |
| 41 | −Les sites de concessionnaires n'offrent pas de webhooks ; Auto-Ka en reproduit l'équivalent : synchronisation périodique + hash de contenu → **arrivages**, **baisses de prix** et **ventes** détectés automatiquement. Un véhicule qui disparaît du site source est marqué vendu — et sa page renvoie alors un vrai `410 Gone` aux moteurs de recherche. Au 2026-08-24, le parc compte **48 388 véhicules** provenant de **138 concessionnaires** (**129 sources actives**, sur un registre de **143 sources**) répartis dans les **18 régions** du Québec, avec **16 969 rappels** de sécurité croisés et **10 158 doublons VIN** masqués. | |
| 41 | +Les sites de concessionnaires n'offrent pas de webhooks ; Auto-Ka en reproduit l'équivalent : synchronisation périodique + hash de contenu → **arrivages**, **baisses de prix** et **ventes** détectés automatiquement. Un véhicule qui disparaît du site source est marqué vendu — et sa page renvoie alors un vrai `410 Gone` aux moteurs de recherche. Au 2026-08-28, le parc compte **46 687 véhicules** (dont **624 motos** et **28 scooters**) provenant de **138 concessionnaires** (**129 sources livrant actuellement**, sur un registre de **143 sources**) répartis dans les **18 régions** du Québec — prix moyen ≈ 30 001 $, ≈ 89 626 km, année moyenne ≈ 2020 — avec **16 969 rappels** de sécurité croisés et **12 445 doublons VIN** masqués. | |
| 42 | 42 | |
| 43 | 43 | ## Visite guidée |
| 44 | 44 | |
| 45 | −*Captures du 2026-08-25 — DA v3 « magazine automobile » (mobile 390×844 · desktop 1440×900).* | |
| 45 | +*Le tour du site en production en **10 captures** — 2026-08-28, [www.auto-ka.com](https://www.auto-ka.com) (desktop, DA v3 « magazine automobile »).* | |
| 46 | 46 | |
| 47 | −### Mobile | |
| 47 | +<table> | |
| 48 | + <tr> | |
| 49 | + <td align="center"><a href="https://www.auto-ka.com/"><img src="docs/screenshots/01-accueil.jpg" width="420" alt="Accueil"></a><br><sub><b>1 · Accueil</b> — masthead encre, hero éditorial, recherche unifiée sur tout le parc (46 687 véhicules) et filtres pupitre</sub></td> | |
| 50 | + <td align="center"><a href="https://www.auto-ka.com/motos"><img src="docs/screenshots/02-motos.jpg" width="420" alt="Motos"></a><br><sub><b>2 · Motos</b> — verticale dédiée (<code>kind=moto</code>, 624 motos) : mêmes filtres, mêmes fiches, onglet propre</sub></td> | |
| 51 | + </tr> | |
| 52 | + <tr> | |
| 53 | + <td align="center"><a href="https://www.auto-ka.com/scooters"><img src="docs/screenshots/03-scooters.jpg" width="420" alt="Scooters"></a><br><sub><b>3 · Scooters</b> — troisième verticale du moteur (<code>kind=scooter</code>), alimentée par les 13 concessionnaires moto</sub></td> | |
| 54 | + <td align="center"><a href="https://www.auto-ka.com/stats"><img src="docs/screenshots/04-stats.jpg" width="420" alt="Statistiques"></a><br><sub><b>4 · Statistiques</b> — tableau de bord du marché de l'occasion : gros chiffres tabulaires, distributions de prix, répartitions par région/marque/carrosserie, rapports PDF</sub></td> | |
| 55 | + </tr> | |
| 56 | + <tr> | |
| 57 | + <td align="center"><a href="https://www.auto-ka.com/sources"><img src="docs/screenshots/05-sources.jpg" width="420" alt="Sources"></a><br><sub><b>5 · Sources</b> — le registre en toute transparence : 143 sources, fraîcheur de synchronisation et volume par concessionnaire/portail</sub></td> | |
| 58 | + <td align="center"><a href="https://www.auto-ka.com/contact"><img src="docs/screenshots/06-contact.jpg" width="420" alt="Contact"></a><br><sub><b>6 · Contact</b> — page contact commune Groupe KA (retraits de sources, signalements, partenariats)</sub></td> | |
| 59 | + </tr> | |
| 60 | + <tr> | |
| 61 | + <td align="center"><a href="https://www.auto-ka.com/usagees/acura"><img src="docs/screenshots/07-usagees-acura.jpg" width="420" alt="Page marque Acura"></a><br><sub><b>7 · Page marque</b> (<code>/usagees/acura</code>) — SEO programmatique : une page SSR par marque, title/meta uniques, JSON-LD, inventaire filtré</sub></td> | |
| 62 | + <td align="center"><a href="https://www.auto-ka.com/region/abitibi-temiscamingue"><img src="docs/screenshots/08-region-abitibi-temiscamingue.jpg" width="420" alt="Page région Abitibi-Témiscamingue"></a><br><sub><b>8 · Page région</b> (<code>/region/abitibi-temiscamingue</code>) — l'inventaire d'une des 18 régions administratives du Québec</sub></td> | |
| 63 | + </tr> | |
| 64 | + <tr> | |
| 65 | + <td align="center"><a href="https://www.auto-ka.com/ville/acton-vale"><img src="docs/screenshots/09-ville-acton-vale.jpg" width="420" alt="Page ville Acton Vale"></a><br><sub><b>9 · Page ville</b> (<code>/ville/acton-vale</code>) — maillage local : chaque ville desservie a sa page (géolocalisation <code>data/villes_gps.json</code>)</sub></td> | |
| 66 | + <td align="center"><a href="https://www.auto-ka.com/carrosserie/berline"><img src="docs/screenshots/10-carrosserie-berline.jpg" width="420" alt="Page carrosserie berline"></a><br><sub><b>10 · Page carrosserie</b> (<code>/carrosserie/berline</code>) — navigation par type de carrosserie normalisé (berline, VUS, camionnette…)</sub></td> | |
| 67 | + </tr> | |
| 68 | +</table> | |
| 69 | + | |
| 70 | +### Parcours mobile & desktop (DA v3, 2026-08-25) | |
| 71 | + | |
| 72 | +*Mobile 390×844 · desktop 1440×900.* | |
| 73 | + | |
| 74 | +#### Mobile | |
| 48 | 75 | |
| 49 | 76 | <table> |
| 50 | 77 | <tr> |
@@ -54,7 +81,7 @@ Les sites de concessionnaires n'offrent pas de webhooks ; Auto-Ka en reproduit l | ||
| 54 | 81 | </tr> |
| 55 | 82 | </table> |
| 56 | 83 | |
| 57 | −### Desktop | |
| 84 | +#### Desktop | |
| 58 | 85 | |
| 59 | 86 | <table> |
| 60 | 87 | <tr> |
@@ -86,7 +113,7 @@ Les sites de concessionnaires n'offrent pas de webhooks ; Auto-Ka en reproduit l | ||
| 86 | 113 | - **Fiches véhicule complètes** — galerie photos, caractéristiques standardisées, **VIN**, équipements, **historique de prix**, véhicules similaires toutes sources confondues, et lien direct vers l'annonce originale du concessionnaire, toujours. |
| 87 | 114 | - **Trois verticales, un moteur** — le champ `kind` (`auto` / `moto` / `scooter`) traverse tout le pipeline ; motos et scooters ont leurs onglets dédiés. |
| 88 | 115 | - **Suivi des baisses de prix** — le diff engine (upsert par hash de contenu) détecte nouveau / modifié / vendu, avec délai de grâce et détection de dérive. |
| 89 | −- **Rappels de sécurité** — croisement avec les rappels constructeurs (`autoka/recalls.py`), 16 969 rappels référencés (au 2026-08-24). | |
| 116 | +- **Rappels de sécurité** — croisement avec les rappels constructeurs (`autoka/recalls.py`), 16 969 rappels référencés (au 2026-08-28). | |
| 90 | 117 | - **Déduplication par VIN** — les annonces multi-sites d'un même véhicule sont détectées et masquées (`autoka/dedup.py`). |
| 91 | 118 | - **Statistiques du marché en direct** — tuiles de synthèse, distributions de prix, répartitions par région / marque / carrosserie, et **rapports PDF personnalisés** (stats v3 : catalogue, rendu au choix, ReportBuilder — `autoka/pdfgen.py`, `kapdf.py`). |
| 92 | 119 | - **SEO programmatique massif** — rendu serveur complet (`autoka/seo.py`) : title/meta uniques, canonical, Open Graph, hreflang `fr-CA`, JSON-LD `Car`/`Motorcycle` + `Offer` + `BreadcrumbList`, pages programmatiques (`/usagees/{marque}`, `/region/…`, `/ville/…`, `/carrosserie/…`, `/motos/…`), sitemaps dynamiques avec `lastmod` réels, vendu → 410, inconnu → 404. |
@@ -167,11 +194,11 @@ S'y ajoutent les routes SSR SEO (`/vehicule/{uid}/{slug}`, `/usagees/{marque}[/{ | ||
| 167 | 194 | |
| 168 | 195 | ### Connecteurs et sources |
| 169 | 196 | |
| 170 | −**31 modules** dans `autoka/connectors/` (+ socle `base.py` / `_resilient.py`) couvrent le registre `data/sources.json` : **143 sources** au 2026-08-24 — **142 actives**, 1 en pause (`albioccasion`, rate-limit 429, connecteur prêt) — soit **138 concessionnaires** géolocalisés et **129 sources** livrant actuellement des véhicules. Un module = soit un commerce, soit une **famille de plateforme** dont chaque concessionnaire est une sous-classe (~6 lignes). | |
| 197 | +**31 modules** dans `autoka/connectors/` (+ socle `base.py` / `_resilient.py`) couvrent le registre `data/sources.json` : **143 sources** au 2026-08-28 — **142 actives**, 1 en pause (`albioccasion`, rate-limit 429, connecteur prêt) — soit **138 concessionnaires** géolocalisés et **129 sources** livrant actuellement des véhicules. Un module = soit un commerce, soit une **famille de plateforme** dont chaque concessionnaire est une sous-classe (~6 lignes). | |
| 171 | 198 | |
| 172 | 199 | | Type | Modules (nombre de sources couvertes) | |
| 173 | 200 | |---|---| |
| 174 | −| Familles multi-concessionnaires | `d2c_dealers` (D2C Media, **66**), `sm360_dealers` (SM360, **15**), `moto_dealers` (motos/scooters, **13**), `central_dealers` (AMVOQ theme_central, **9**), `gatsby_dealers` (EvalAuto/autoroot, **6**), `vvu_dealers` (**4**), `magnetis_dealers` (SyncAuto, **4**), `convertus_fc` (Convertus, **3**) | | |
| 201 | +| Familles multi-concessionnaires | `d2c_dealers` (D2C Media, **65**), `sm360_dealers` (SM360, **15**), `moto_dealers` (motos/scooters, **13**), `central_dealers` (AMVOQ theme_central, **9**), `gatsby_dealers` (EvalAuto/autoroot, **6**), `magnetis_dealers` (SyncAuto, **5**), `vvu_dealers` (**4**), `convertus_fc` (Convertus, **3**) | | |
| 175 | 202 | | Regroupements & bannières (1 source chacun) | `autousagee` (AMVOQ/AutoUsagée), `hgregoire`, `automobileendirect`, `leprixdugros`, `megacentre`, `clubautozone` | |
| 176 | 203 | | Portails & inventaires (1 source chacun) | `autotrader`, `cargurus`, `kijiji`, `otogo`, `okaze`, `classeauto`, `ototr` | |
| 177 | 204 | | Commerces individuels (1 source chacun) | `desmeules`, `dupontford`, `stefoychrysler`, `montjolichrysler`, `albioccasion`, `occasionbeaucage`, `occasioncharlevoix`, `jlkauto`, `yannicklaberge`, `autodurocher` | |
@@ -183,7 +210,7 @@ Infrastructure commune : `base.py` (classe `BaseConnector`, normalisation, polit | ||
| 183 | 210 | 1. Chaque annonce normalisée reçoit un **hash de contenu** ; l'upsert dans SQLite classe le véhicule **nouveau / modifié / inchangé**. |
| 184 | 211 | 2. Tout changement de prix est **journalisé** → l'historique de prix affiché sur la fiche. |
| 185 | 212 | 3. Une annonce absente du site source est marquée **vendue** après un **délai de grâce** (tolère les ratés de crawl), avec **détection de dérive** pour éviter les faux positifs quand une source change de structure ; sa page publique renvoie alors `410 Gone`. |
| 186 | −4. La **déduplication par VIN** (`autoka/dedup.py`) détecte le même véhicule annoncé sur plusieurs sites et masque les doublons (**10 158** masqués au 2026-08-24) — le VIN sert aussi au croisement des **rappels** (`autoka/recalls.py`). | |
| 213 | +4. La **déduplication par VIN** (`autoka/dedup.py`) détecte le même véhicule annoncé sur plusieurs sites et masque les doublons (**12 445** masqués au 2026-08-28) — le VIN sert aussi au croisement des **rappels** (`autoka/recalls.py`). | |
| 187 | 214 | |
| 188 | 215 | ## Données & conformité |
| 189 | 216 | |
@@ -202,7 +229,7 @@ Infrastructure commune : `base.py` (classe `BaseConnector`, normalisation, polit | ||
| 202 | 229 | | `autoka/` | Backend Python : schéma, normalisation, ingestion, db, web, seo, auth KA ID, favoris, stats, PDF, rappels, dédup + `connectors/` | |
| 203 | 230 | | `frontend/` | SPA React 18 + Vite + TypeScript (build servi par FastAPI) — inclut la page `/doc` (`frontend/public/doc/`) | |
| 204 | 231 | | `data/` | `autoka.db` (SQLite), `sources.json` (registre des 143 sources), `villes_gps.json` | |
| 205 | −| `docs/` | Captures d'écran + documentation générée des connecteurs | | |
| 232 | +| `docs/` | Visite guidée (`screenshots/` — 10 captures 2026-08-28 + parcours mobile/desktop), archives (`archive/`) et documentation générée des connecteurs (`connecteurs/`) | | |
| 206 | 233 | | `scripts/` | Outillage (`gen_connector_docs.py`) | |
| 207 | 234 | |
| 208 | 235 | ## Documentation |
@@ -222,6 +249,8 @@ Infrastructure commune : `base.py` (classe `BaseConnector`, normalisation, polit | ||
| 222 | 249 | | 2026-08-23 | `19b54a5` | Connecteur AutoUsagee.ca (portail AMVOQ) : **+11 924 annonces** (367 marchands, 157 villes) | |
| 223 | 250 | | 2026-08-23 | `dab7d55` | Stats v3 : **rapports PDF personnalisés** (catalogue, ReportBuilder) | |
| 224 | 251 | | 2026-08-24 | `c1f8843` | Page documentation `/doc` (guide + captures) + PDF téléchargeable | |
| 252 | +| 2026-08-26 | `4243c4b`→`b32324e` | **KA ID v2** : recommandations personnalisées (modèle collaboratif ALS, pilules « Sauvegarder cette recherche » / « Pas pour moi ») | | |
| 253 | +| 2026-08-27 | `4937c46` | Gardien ka4 : migration du connecteur `groupepaquin` D2C Media → SyncAuto (`magnetis_dealers`) après refonte du site source | | |
| 225 | 254 | |
| 226 | 255 | ## Développement (remote-first) |
| 227 | 256 | |
added
docs/screenshots/01-accueil.jpg
+0 −0
Binary file not shown.
added
docs/screenshots/02-motos.jpg
+0 −0
Binary file not shown.
added
docs/screenshots/03-scooters.jpg
+0 −0
Binary file not shown.
added
docs/screenshots/04-stats.jpg
+0 −0
Binary file not shown.
added
docs/screenshots/05-sources.jpg
+0 −0
Binary file not shown.
added
docs/screenshots/06-contact.jpg
+0 −0
Binary file not shown.
added
docs/screenshots/07-usagees-acura.jpg
+0 −0
Binary file not shown.
added
docs/screenshots/08-region-abitibi-temiscamingue.jpg
+0 −0
Binary file not shown.
added
docs/screenshots/09-ville-acton-vale.jpg
+0 −0
Binary file not shown.
added
docs/screenshots/10-carrosserie-berline.jpg
+0 −0
Binary file not shown.