SPB Git

spb/job-ka

Public
page 1
  1. Thu, Aug 27, 2026 8

  2. Wed, Aug 26, 2026 10

    1. Simon-Pierre Boucher · 1 file +1 −1
    2. Simon-Pierre Boucher · 1 file +8 −2
    3. Simon-Pierre Boucher · 1 file +7 −2
  3. Tue, Aug 25, 2026 12

    1. Refonte visuelle majeure du front-end : design editorial premium
      …
      - Hero : halo cyan, pastille « marche en direct », recherche centrale
        (barre blanche a ombre decalee cyan) + chiffres live (offres,
        employeurs, % salaire affiche)
      - Filtres : rail de selecteurs discrets sur desktop (pilules, etat
        actif encre/cyan), panneau bas coulissant sur mobile, puces de
        filtres actifs retirables + « Tout effacer »
      - Offres : fini les cartes bordees — rangees editoriales a filets
        fins, titre Space Grotesk, salaire en exergue cyan a droite avec
        equivalent annuel, metadonnees calmes en mono, barre d'accent au
        survol ; favoris alignes sur la meme structure
      - Fiche : mise en page ouverte (plus de grosse boite), metriques en
        blocs a filet superieur, CTA « Postuler » en accent
      - Tableau employeurs allege (filets fins), pagination sobre en mono,
        menu mobile avec entree en cascade, prefers-reduced-motion respecte
      - Bulle KA Agent masquee quand un panneau plein ecran est ouvert
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 6 files +768 −245
    2. 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é. Ajout d'un
      .mm-close position:fixed en haut à droite du panneau et burger masqué à
      l'ouverture.
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 2 files +22 −1
    3. 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 — le menu est visible peu importe
      la position de scroll. Liens numérotés font-display, rang du header (marque +
      burger→✕) maintenu au-dessus du panneau.
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +26 −15
    4. Phase 3 — enrichissement des 1050+ connecteurs (exigences, séniorité) + refonte du display des offres avec métriques claires
      …
      Backend (enrichissement central via finalize() -> tous les connecteurs) :
      - normalize.py : extract_requirements() (années d'expérience, scolarité,
        langues exigées, FR/EN, bornes de plausibilité), parse_seniority()
        (stage/junior/intermédiaire/senior/direction : titre, libellés ATS,
        années d'expérience), en-têtes d'avantages élargis
      - schema.py : champ seniority + branchement des extracteurs (setdefault,
        jamais d'écrasement des valeurs ATS)
      - db.py : colonne seniority (migration auto) dans insert/update
      - web.py : filtre + facette séniorité, salary_context (médiane/quartiles
        de la catégorie + écart % de l'offre, cache 10 min), employer_jobs,
        median_salary_year dans /api/stats
      - scripts/backfill_enrich.py : backfill exécuté — 23 680 offres scannées,
        16 606 exigences ajoutées (26 % -> 77 %), 10 966 séniorités (0 -> 46 %)
      - tests/test_enrich.py : 27 nouveaux tests (101 au total, tous verts)
      
      Frontend (display + métriques claires) :
      - JobCard : badge Nouveau (≤3 j), salaire avec équivalent annuel, badges
        séniorité/exigences/bilingue, pied fraîcheur · avantages · plateforme
      - Fiche : panneau « En un coup d'œil » (salaire vs marché avec barre
        interquartile P25-P75, expérience, scolarité, langues, fraîcheur, date
        limite), volume d'offres de l'employeur, historique du salaire affiché
      - Accueil : filtre séniorité ; api.ts : types + helpers (compactMoney,
        yearlyEquiv, daysSince)
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 11 files +819 −37
    5. Vague E — 3 nouvelles familles ATS (JazzHR, Teamtailor, Zoho Recruit) + 60 connecteurs, ~547 offres QC
      …
      - Nouvelles classes de plateforme : jazzhr.py (liste /apply/ + JSON-LD),
        teamtailor.py (sitemap + JSON-LD), zoho_recruit.py (flux RSS public) —
        filtre QC au détail avec report si budget épuisé (doctrine taleo_tbe/adp).
      - serper_scout.py : 5 nouveaux motifs (jazzhr, teamtailor, zohorecruit,
        talentnest, njoyn avec CLID/CL/hôte) + CLID dans le dédoublonnage.
      - 60 connecteurs : 31 JazzHR (Optel 13, Playground 21, Ultium CAM,
        Altitude Aérospatiale, FortNine, XTL 21, Valnet 22…), 17 Zoho Recruit
        (Mallette Saguenay 26, DRB 22, dentago 20, Carnaval de Québec, FÉRIQUE,
        Altitude Sports, Excavations Lafontaine…), 9 Teamtailor (Norda Stelo 50,
        Workin Group 34, Humanise 13, CAM Mécanique, Synertek…), 3 Njoyn
        (IR-CUSM 37, RTL 17, Groupe Master 17).
      - njoyn.py : correctif _keep — certains habillages mettent la date dans la
        colonne pays (Groupe Master 0 -> 17) ; n'exclure que les pays reconnus.
      - sources.json : 1 108 sources, 23 familles ATS ; docs/connecteurs
        régénérées (1 133 fiches) ; rapport docs/prospection-vagueE.md
        (écartés motivés + reliquats vague F : TalentNest, ENPQ/APCHQ, CUSM).
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1,200 files +13,772 −4,752
    6. Vague D implémentée — 75 nouveaux connecteurs (968 -> 1044 employeurs), ~768 offres QC
      …
      - 55 connecteurs générés depuis feeds-vagueD.json (gen_connectors), tous
        synchronisés sans échec (333 offres). Sandvik re-pointé sur le babillard
        public sandvik-jobs.
      - 20 connecteurs manuels sur familles existantes (435 offres) : ADP ×12
        (Nordik, Uniboard, Richelieu, UV Assurance, Strathmore, H2O, Cook It,
        Canadian Royalties, Niobec, Nemaska, Abritek, Triple Boris), Alstom
        SuccessFactors (227 offres, La Pocatière/MTL), Kiewit-Ganotec (50),
        Groupe Bellemare Njoyn (27), Ville de Mirabel, Sel Windsor, Global Excel,
        Graymont TBE, IAMGOLD Taleo.
      - Correctifs de familles : adp.py FORCE_CITY (mono-sites QC sans
        requisitionLocation) ; taleo_tbe.py secours og:title variante
        « - Canada - QC - Ville » (Graymont 0 -> 4) ; successfactors.py slug
        « -queb » final + garde-fou is_quebec_location contre les faux « QC »
        (quality control, 3 offres US interceptées ; Kiewit 3 -> 50).
      - 9 pistes écartées avec raison (babillards US/vides, iCIMS SPA) —
        détail dans docs/prospection-vagueD.md.
      - sources.json : 1 048 sources ; docs/connecteurs régénérées (1 070 fiches).
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1,151 files +37,534 −21,599
    7. Prospection vague D — 55 nouveaux flux ATS confirmés + 34 pistes autres ATS
      …
      Scout Serper (1 920 requêtes, 96 termes inédits : 61 villes/régions + 35 métiers)
      et découverte sectorielle (910 employeurs QC visités par detect_ats) :
      - data/feeds-vagueD.json : 55 flux confirmés ≥1 offre QC (workday 27,
        smartrecruiters 14, dayforce 6, bamboohr 3, greenhouse 2, ashby/lever/workable 1)
        — dont Loblaw/Provigo, Best Buy Canada, AMF, Chanel, Carrier, Equisoft,
        Groupe Meloche, Téléfilm, Le Massif, Scandinave Spa
      - data/detected-other-ats.jsonl : +34 pistes sur familles existantes
        (adp 17, ukg 5, successfactors 4, taleo 3, njoyn 3, icims 2) — filon minier
        Abitibi/Nord (IAMGOLD, Hecla, Wesdome, Nemaska, Niobec…), Alstom La Pocatière,
        Richelieu, Logistec, villes de Mirabel/Terrebonne
      - rapport complet : docs/prospection-vagueD.md (méthode, tables, suites)
      Prochaine étape sur validation : gen_connectors.py data/feeds-vagueD.json
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 3 files +870
  4. Mon, Aug 24, 2026 5

    1. Simon-Pierre Boucher · 1 file +11
    2. Simon-Pierre Boucher · 1 file +103 −30
    3. Simon-Pierre Boucher · 3 files +90 −264
  5. Sun, Aug 23, 2026 5

    1. Vague C — +620 connecteurs employeurs directs (350 -> 968)
      …
      Campagne de découverte massive en 3 angles : éclaireur Serper élargi
      (60 termes x 10 ATS x 3 pages), reprise des 266 flux confirmés le 22-08
      jamais intégrés, et sondage par nom de 182 grands employeurs QC sur 10 ATS.
      Fusion/nettoyage (scripts/merge_confirmed.py : dédoublonnage multi-vagues,
      filtre des faux positifs Québec hors province, nettoyage des noms issus des
      titres Google, exclusion des babillards de démo) puis secteurs attribués par
      lots (scripts/classify_sectors.py).
      
      - Workday +148, SmartRecruiters +118, Dayforce +96, Greenhouse +93,
        Breezy +50, Workable +40, Lever +32, Ashby +25, Recruitee +12, BambooHR +3
      - SuccessFactors +4 vérifiés main : TELUS, Énergir, VIA Rail, Canada Vie
      - prises notables : Thales, Fiera Capital, Fednav, Wolseley, Cominar, Ludia,
        Granit Design, Vortex Structures Aquatiques, Warner Bros. Discovery
      - 973 sources au registre ; docs/connecteurs régénérées (995 fiches) ;
        docs/CONFORMITE.md : section Vague C + écartés (Air Canada -> Phenom, TÉLUQ,
        Valero, faux QC)
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1,621 files +94,809 −2,405
    2. Favoris unifies « Mon univers Ka » (hub KA ID) : coeur sur cartes et fiche, page /favoris
      …
      - jobka/hubfav.py : client du magasin central de favoris du hub Groupe KA
        (HMAC signe, toggle synchrone, lecture cachee 30 s, zero stockage local)
      - jobka/web.py : GET /api/favorites + POST /api/favorites/toggle (session
        KA ID requise, 401 sinon) ; route SPA /favoris
      - jobka/auth.py : parametre next (chemin local, transporte dans le state
        signe) pour revenir a la page courante apres la connexion KA ID
      - frontend : favorites.tsx (FavProvider + FavButton), coeur sur JobCard et
        la fiche /emploi/:uid, page /favoris + liens nav et prefooter, CSS fav-btn
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 9 files +427 −15
    3. Simon-Pierre Boucher · 1 file +1 −1
    4. stats v3 : rapports PDF personnalisés (catalogue, rendu au choix, ReportBuilder)
      …
      - kapdf.py v3 partagé (catalog, mode personnalise, heatmap calendrier)
      - web.py : GET /api/stats/catalog + POST /api/stats/report/custom
      - kacharts.tsx : composant ReportBuilder intégré à PdfButton (modal,
        ordre, rendus, modèles localStorage) — SPEC.md §3bis
      Simon-Pierre Boucher · 4 files +715 −11
    5. SEO : villes groupées par slug (variantes de casse fusionnées, libellé majoritaire)
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +51 −43
Menu

Theme