- 459commits
- 1branches
- 0releases
- 77.8 MBon disk
- maindefault branch
- 4 days agolast push
-
Tue, Aug 25, 2026 3
-
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>
-
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>
-
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>
-
-
Mon, Aug 24, 2026 5
-
Sun, Aug 23, 2026 9
-
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>
-
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>
-
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
-
SEO : villes groupées par slug (variantes de casse fusionnées, libellé majoritaire)
…
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
SEO : pages programmatiques /villes + /ville/{slug} rendues en HTML (pattern lou-ka)
…
- jobka/seo.py : slugify, cache slug→ville, SSR /villes et /ville/{slug} (contenu dans #root, ItemList + BreadcrumbList), API /api/seo/villes et /api/seo/ville/{slug}, sitemap-villes.xml, liens internes accueil/fiche vers les nouvelles pages - frontend : pages React VillesPage/VillePage, routes, lien pied de page Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> -
scripts: éclaireur Serper + support Dayforce dans probe_ats (campagne connecteurs du 2026-08-22)
…
Outils laissés non commités par la session précédente : serper_scout.py (requêtes site:<ATS> × termes québécois → slugs candidats JSONL) et probe_ats.py étendu à 10 ATS (ajout dayforce). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
connecteurs: retrait de projevia (Laval… en France)
…
Le tenant Recruitee « projevia » est une entreprise française (Laval, Pays de la Loire, country_code FR — offres « Chauffeur SPL ») ajoutée par erreur : le filtre Québec la vidait à juste titre (0 offre publiée, source marquée brisée par la supervision). Données associées purgées. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
taleo_tbe: secours og:title (retrait du JSON-LD par la plateforme) + fenêtre syncs_since_h
…
- Taleo TBE a retiré le JSON-LD JobPosting de requisition.jsp : les offres sans cache de détail étaient toutes différées par le filtre Québec → kruger publiait 0 offre depuis des jours (72 items RSS). Secours : lieu extrait du og:title (« … – Ville, RÉGION, PAYS »). Kruger retrouve 54 offres QC ; sepaq/hec/exo tenaient encore grâce à leurs caches. - base.detail() : ne met plus en cache les payloads vides ({} cadenassé par clé stable = connecteur gelé) ; 89 caches vides purgés de la base. - /api/stats : paramètre optionnel syncs_since_h pour la supervision api-ka (fenêtre complète du sync_log au lieu des 20 dernières entrées). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
-
Sat, Aug 22, 2026 7
-
page Publier : formulaire de dépôt au style sharp du groupe (étiquettes mono uppercase, champs bordure encre + focus accent décalé, grille 2 colonnes → 1 sous 700 px, couleur d'erreur --danger)
…
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
apparence : classes métier alignées sur la signature « éditorial sharp » Groupe KA
…
- job-card/sheet/tile/table : bordures encre 1,5 px + ombres décalées (--shadow-off-*), hover translate signature, tuiles avec liseré accent. - badges → chips du groupe (mono 10,5 px, uppercase, pilule bordée) ; salaire (vert bordé) et « offre directe » (accent) conservent leur sens. - filtres du héros : champs sharp (bordure encre, focus 3px 3px 0 accent, case « Salaire affiché » cochée = fond accent-soft). - héros : kicker signature « Pages carrières · Zéro intermédiaire » + surligné d'accent incliné (.hl) sur « à la source ». - pagination et titres de section en font-display 700 ; identité propre à l'emploi conservée (header encre, accent cyan, transparence salariale). - Vérifié Playwright : accueil desktop/mobile + fiche (localhost:8096), build Vite OK, pm2 job-ka-web redémarré, www.job-ka.com 200. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
Vague B — 110 nouvelles sources (26 Dayforce nouvelle famille + 84 sur familles existantes)
…
- Nouvelle famille Dayforce HCM (jobs.dayforcehcm.com, API JSON du frontal Next.js, csrf anonyme + recherche paginée, détail PayClass/PayType avec cache et budget) : 26 employeurs dont Groupe Maurice, Groupe CH, La Vie en Rose, Eidos-Montréal, Air Canada Rouge, Port de Québec, Soprema, BPA… - Ajouts sur familles existantes : Workday +17 (Simons, Cineplex, TJX, FedEx, Abbott…), Greenhouse +17 (Coveo, KRAFTON, Lyft, AutoTrader…), SmartRecruiters +13, Workable +11, Breezy +8, Recruitee +7, Lever +6, Ashby +5. - sources.json : 244 → 354 sources ; docs/connecteurs régénérées (376 fiches). - docs/CONFORMITE.md : bases d'accès vérifiées 2026-08-22, 20+ sources écartées avec raisons (agences, agrégateurs, babillards vides, faux positifs français). - Sync validé : 110/110 sources OK, 2 102 offres ajoutées (total BD 25 280). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
SEO : SSR léger (accueil, fiches JobPosting, pages statiques), robots.txt et sitemaps
…
- jobka/seo.py : pattern Lou-Ka — head unique (title, description, canonical, hreflang fr-ca, og:locale fr_CA, twitter) + contenu HTML dans #root que React remplace au montage - accueil : title avec le nombre d'offres, JSON-LD WebSite/Organization, h1 + listes de liens (villes, dernières offres) - fiche emploi : JSON-LD JobPosting (baseSalary CAD, jobLocation QC/CA, employmentType, validThrough, TELECOMMUTE) + BreadcrumbList ; 404 inconnue, 410 retirée, noindex quarantaine, canonical vers l'offre maîtresse (doublons) - robots.txt (Disallow /api/) + sitemap index + sitemap-pages + sitemap-emplois-N chunkés (10 000 URL, lastmod) - web.py : include_router(seo) avant le rattrape-tout SPA - index.html : lang fr-CA Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
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>
-
-
Wed, Aug 19, 2026 15
-
Famille Workland réécrite sur l'API JSON publique du frontal Atlas (jobs-prod published-external + default-profiles) : descriptions complètes fr/en, lieux géocodés, dates, mode de travail — 2 requêtes par cycle pour TOUT le réseau. Nouveau connecteur réseau atlas_workland (~80 employeurs QC : CSS scolaires, cégeps, CIUSSS Ouest-de-l'Île, Santé Québec Côte-Nord, ICM, STQ, UQTR, INRS… ; 1 238 offres QC). Connecteur cssdm retiré (couvert par le réseau), fixture remplacée par atlas_workland (sous-ensemble rejouable). Corrige la limite « workland description 0 % ».
…
Dans le même train : famille Njoyn paginée (rejeu du formulaire public Inp_ItemsPerPage/pn — Santé Montréal passe de 50 offres lues à 762 —, habillage tableau 5 colonnes titre/catégorie/ville/pays, filtre Québec optionnel, budget détail par classe, POST via Scrapfly pour les babillards Radware) ; famille UltiPro : hôte paramétrable (recruiting.ultipro.ca) ; lassonde réparé (l'ADP WFN ne sert plus que les postes américains — connecteur réécrit sur le site maison lassonde.com/fr/emplois, 31 offres QC).
-
docs/connecteurs : régénération post-enrichissement phase 2 (nouveaux champs langue/logo/candidature, complétudes à jour après le cycle complet du 2026-08-19)
…
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
API + frontend phase 2 : quarantaine qualité exclue des points d'accès publics (param quarantined=1 pour supervision), facettes régions administratives et langues, filtres region/language (liste + carte), stats.quarantined ; fiche offre enrichie (logo employeur, langue, région, avantages, bouton candidature directe apply_url, titre d'affichage normalisé) + filtres région/langue sur l'accueil ; scripts backfill_phase2 (réparations + peuplement) et mesure_baseline (avant/après audit)
…
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
tokens.css : overflow-x clip aussi sur html (quirk WebKit iOS — le clip sur body seul laisse défiler le viewport)
…
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
Stats v2 : dashboard ultra complet + 5 rapports PDF (module commun ka-ui v2)
…
- jobka/kapdf.py + frontend/src/ka/stats/{kacharts.tsx,SPEC.md} : canoniques v2 - statsdash.py : 10 KPI (sparklines actives/nouvelles/retraits), 4 jauges de complétude (salaire, mode, géoloc, catégorie), série des retraits, multi-courbes top secteurs (date de publication affichée), barres empilées ajouts par source (sync_log), 3 distributions (salaires annuels, taux horaires, âge des offres), heatmap horaire 7x24 des observations, tableaux secteurs + sources & connecteurs, 11 records ; deltas seulement si la période précédente est couverte (rien d'inventé) - /api/stats/report : 5 modes (complet/synthese/tendances/repartitions/ donnees), mode inconnu -> complet, filename(..., mode) - Stats.tsx : sections v2 dans l'ordre du SPEC (jauges, StatSummary, MultiLineChart, StackedBarChart, Histogram, HourHeatmap, PdfButton 5 modes) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> -
Correctifs front-end mobile : menu hamburger, carte calee sur la vraie hauteur du header, viewport-fit=cover, socle mobile ka-ui
…
- App.tsx : menu mobile hamburger sous 700px (bouton 44x44 aria-expanded, panneau deroulant sous le header, backdrop fixe HORS du header, verrou de scroll body + cleanup, fermeture route/Escape/backdrop) ; ResizeObserver sur header.site qui pose --header-h sur <html> - styles.css : .map-wrap = calc(100vh/100dvh - var(--header-h,58px)) (fini le saut de barre navigateur et le 58px faux sur header 2 lignes) ; styles .menu-btn/.mobile-menu/.mm-backdrop avec var(--z-modal)/var(--z-overlay) ; header.site a var(--z-header) ; champs filtres a 16px sous 700px (anti-zoom iOS) ; extension tactile ::after -8px sur a.logo - index.html : meta viewport avec viewport-fit=cover (safe-area iOS) - src/ka/tokens.css : section SOCLE MOBILE OBLIGATOIRE (z-index unifies, --vh100 dvh, verrous de scroll, filet anti-zoom 16px, extension tactile gk-badge) - public/ka-agent.js : agent corrige (safe-area, textarea 16px, plein ecran <=640px + verrou scroll) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
Tue, Aug 18, 2026 1
-
docs/connecteurs : snapshot post-cycle complet (220 sources, 42 min)
…
Régénération des fiches sur l état stable après le premier cycle horaire complet à 220 sources (12:46-13:28) : 8 862 offres actives. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-