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%

page 1

  1. Sun, Sep 13, 2026 2

  2. Thu, Sep 10, 2026 1

  3. Mon, Sep 7, 2026 1

    1. feat(fiche): refonte premium mobile-first de la fiche véhicule (2026-09-07)
      …
      Même socle que les fiches Lou-Ka v3 / Immo-Ka v3 (frontend/src/fiche/,
      préfixe ak-, tokens --ak-*, fond papier, cartes blanches bord 1 px, orange
      brûlé réservé aux CTA/prix/score ; masthead encre conservé en version
      compacte) : héro (concessionnaire · ville, prix + ancien prix barré +
      capsule marché, titre, résumé année · km · transmission · carburant ·
      carrosserie, galerie à balayage + Lightbox existante, actions favoris /
      partage / Carfax / Voir l'annonce) ; KA Score en anneau + barres par
      composante (poids réels de l'API) ; « En bref » déterministe (marché,
      kilométrage vs âge, baisse de prix, même NIV ailleurs, rappels TC,
      fraîcheur, Carfax) ; navigation sticky ; « Prix et marché » (KPI, jauge de
      percentile, nuage prix/km, PDSF d'origine, historique du prix demandé,
      méthodologie) ; « Le véhicule » (grille icône/valeur dont consommation,
      rangées NIV/stock/couleurs, description tronquée, équipements 12 + Voir les
      N, fiche constructeur vPIC en accordéon) ; Rappels Transports Canada ; Le
      même véhicule ailleurs ; Où le voir (OSM) ; Similaires ; Dossier de
      l'annonce ; Sources et méthodologie. CTA sticky après le héro, aside desktop
      sticky (score en miniature, constats), « Demander à Ka » via le widget KA
      Agent. Masthead compact sur /vehicule/ (favoris + partage via
      fiche/current.ts, ticker et badge masqués). Cartes véhicule de la grille :
      surface blanche, bord 1 px, ombre légère au survol. Icons.tsx (pictos
      partagés) ajouté. Aucun order CSS ; pas de scrollIntoView à l'ouverture.
      Scripts QA : preview.mjs, check-order.mjs, shots.mjs, interactions.mjs.
      
      Validé sur M4M64b : tsc + vite build, check-order OK sur 2 fiches,
      interactions OK, captures 6 largeurs ; dist basculé, aucun changement API.
      Simon-Pierre Boucher committed 19 days ago · 21 files +2,432 −461
  4. Fri, Aug 28, 2026 2

    1. Simon-Pierre Boucher committed 28 days ago · 11 files +38 −9
  5. Thu, Aug 27, 2026 2

    1. Simon-Pierre Boucher committed 29 days ago · 1 file +1 −1
  6. Wed, Aug 26, 2026 5

    1. Simon-Pierre Boucher committed 1 mo ago · 1 file +8 −2
    2. Simon-Pierre Boucher committed 1 mo ago · 2 files +116 −3
    3. Simon-Pierre Boucher committed 1 mo ago · 1 file +7 −2
    4. fix(ka-id v2): import Request manquant dans autoka/web.py (422 sur /api/vehicles)
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 1 mo ago · 1 file +1 −1
  7. Tue, Aug 25, 2026 11

    1. KA Tabbar : sync canonique ka-ui (prop onClick sur les onglets-liens)
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 1 mo ago · 1 file +9 −1
    2. Barre de navigation mobile commune Groupe KA (KA Tabbar v1)
      …
      Pilule flottante fixe en bas (standard ka-ui/nav) : Découvrir · Recherche ·
      Favoris · Profil, accent orange signature, safe-area iOS, micro-interactions.
      Recherche = focus du champ de l accueil ; Favoris = hub univers KA.
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 1 mo ago · 3 files +349
    3. Nav v2 correctif : le ✕ de fermeture vit DANS le panneau (fixe, toujours visible)
      …
      Le ✕ était le burger du header ; si le header n'est pas épinglé (bas de page),
      il défilait hors écran alors que le panneau fixed restait affiché — impossible
      de fermer sans Escape. Ajout d'un .mm-close position:fixed en haut à droite du
      panneau et burger masqué à l'ouverture (une seule commande de fermeture).
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 1 mo ago · 2 files +13 −2
    4. Nav mobile v2 : le dropdown 480px devient un panneau plein écran fixed
      …
      Standard KA 2026-08-25 : .mobile-menu passe de position:absolute top:100%
      (max-height 480px) à position:fixed inset:0 — menu visible peu importe la
      position de scroll. Rang du header (marque + burger→✕) maintenu au-dessus du
      panneau, verrou de scroll CSS pur via html:has(.mobile-menu.open).
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 1 mo ago · 1 file +13 −9
    5. feat: fiche véhicule v2 — analyse marché, KA Score, fiche VIN (NHTSA), lightbox
      …
      Enrichissement des données servies pour chaque annonce, toutes sources
      confondues, plutôt que connecteur par connecteur :
      - vindecode.py : fiche constructeur décodée du NIV via l'API vPIC (NHTSA),
        gratuite, cache SQLite, libellés/valeurs traduits en français
      - endpoint détail : analyse du marché (médiane, quartiles, percentile,
        badge de prix, nuage de comparables), KA Score composite (prix, km/âge,
        qualité de fiche, fraîcheur), historique de prix élargi à 30 points
      
      Page détail refondue (Vehicle.tsx) :
      - badge « Bon prix / Prix du marché / … » sous le prix, avec écart à la médiane
      - lightbox plein écran (clavier, gestes tactiles, compteur, préchargement)
      - analyse du marché : barre de positionnement + nuage prix/km SVG
      - « Le même véhicule ailleurs » : autres offres du même NIV (dédup) avec écarts
      - fiche constructeur (22 champs usine), rappels Transports Canada repliables
        (endpoint existant enfin affiché), courbe d'historique de prix, carte OSM
      - vérifié Playwright (frontend/scripts/check-vehicle.mjs) : desktop + mobile,
        ordre DOM = ordre visuel, aucun order: CSS, zéro erreur JS
      
      Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 1 mo ago · 9 files +876 −9
  8. Mon, Aug 24, 2026 5

    1. Simon-Pierre Boucher committed 1 mo ago · 1 file +10
    2. Simon-Pierre Boucher committed 1 mo ago · 1 file +89 −19
    3. Simon-Pierre Boucher committed 1 mo ago · 1 file +83 −15
    4. Simon-Pierre Boucher committed 1 mo ago · 8 files +161 −2
    5. Simon-Pierre Boucher committed 1 mo ago · 3 files +86 −145
  9. Sun, Aug 23, 2026 4

    1. Simon-Pierre Boucher committed 1 mo ago · 5 files +1,117 −20
    2. [ka4] connecteur autousagee : portail AMVOQ AutoUsagee.ca — +11 924 annonces (367 marchands, 157 villes)
      …
      Nouveau connecteur PORTAIL pour la place de marché officielle de l'AMVOQ
      (autousagee.ca) : des centaines de petits marchands indépendants du Québec
      dont la plupart n'ont aucun site connectable.
      
      - Liste : GET /recherche?type_id=1&page=N (15 cartes/page, ~800 pages, aucun
        jeton requis) — prix, titre FR, année, sous-modèle, km, marchand, ville,
        photo 1024px : annonce complète dès la liste.
      - Détail (plafonné AUTOKA_MAX_DETAILS=500/sync + cache BD clé statique v1) :
        VIN, transmission, traction, moteur/cylindres, carrosserie, portières,
        couleurs, no d'unité, PDSF, consommation, description, galerie complète,
        site du marchand ; fallback bloc Contact@Once (JSON year/make/model/VIN).
      - Rate-limit IP du portail (429 après ~150 requêtes) : absorbé par la chaîne
        de résilience commune (escalade Oxylabs résidentiel -cc-CA), délai 1 s.
      - type_id=1 seulement (voiture-camion-vus) ; VR/loisirs/lourd exclus.
      - Recouvrement marchands déjà connectés (Okaze, theme_central…) : dédup VIN
        inter-sources, 251 doublons masqués côté autousagee.
      
      Test réel : sync complet 11 924 annonces en 29 min — prix 99,9 %, km 100 %,
      ville 100 %, photos 89 % ; 4 annonces vérifiées à la main contre le site
      (prix, km, VIN, ville, transmission conformes ; no de série JDM ≠ VIN rejeté).
      Docs régénérées (gen_connector_docs) : autousagee.md + INDEX (59 357 actives).
      
      Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 1 mo ago · 35 files +763 −310
    3. Simon-Pierre Boucher committed 1 mo ago · 1 file +2
    4. stats : fenetre de sync parametrable ?syncs_since_h pour la supervision api-ka
      …
      GET /api/stats?syncs_since_h=<heures> retourne toutes les entrees de
      sync_log de la fenetre (ts >= now - h*3600, DESC, max 4000) au lieu des
      20 dernieres — corrige les faux "stale" du moniteur central : avec 142
      sources en rotation, LIMIT 20 ne montrait qu une fraction du cycle.
      Si la fenetre contient moins de 20 entrees, fallback aux 20 dernieres.
      Sans parametre : comportement inchange.
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 1 mo ago · 1 file +14 −3
  10. Sat, Aug 22, 2026 5

    1. tri par défaut : arrivages récents (first_seen DESC) au lieu du prix croissant
      …
      Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 1 mo ago · 2 files +5 −5
    2. Simon-Pierre Boucher committed 1 mo ago · 2 files +11 −16
    3. Simon-Pierre Boucher committed 1 mo ago · 1 file +1 −1
    4. connecteurs: chaine de fetch anti-bot resiliente (Oxylabs->Scrapfly->Bright Data)
      …
      Auto-escalade de BaseConnector.get() sur blocage (403/429/503/challenge CF)
      ou coupure reseau, via connectors/_resilient.py. Cles lues de l env avec repli
      sur ~/.claude/.env (accepte SCRAPFLY_KEY et SCRAPFLY_API_KEY). Reponse
      compatible requests.Response; coupe-circuit par hote. Aucun connecteur modifie.
      
      Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 1 mo ago · 2 files +386
  11. Wed, Aug 19, 2026 2

    1. Simon-Pierre Boucher committed 1 mo ago · 1 file +4 −1