SPB Git forge

spb/auto-ka

Public
61commits 1branches 0releases
14.4 MBsize
maindefault branch
12 days agolast push
Python 61.6% TypeScript 20.9% CSS 11.4% JavaScript 5.1% HTML 1.1%

docs: README ultra détaillé + visite guidée en 10 captures

Simon-Pierre Boucher committed 28 days ago (Aug 29, 2026) parent 4937c46

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.