Plateforme ATS workland
1 employeurs connectés via cette plateforme — 1092 offres actives. Module partagé : jobka/connectors/workland.py ; un employeur = une sous-classe d'environ 10 lignes.
Description & mécanique
Plateforme Workland (atlas.workland.com).
Réécriture 2026-08-19 : l'ancienne version grattait les pages carrières des employeurs (liens atlas rendus serveur) et n'avait AUCUNE description (la SPA Atlas n'expose rien côté serveur). L'API publique du frontal fait tout en deux requêtes :
- offres : POST https://jobs-prod.workland.com/api/v1/job/published-external body {"load_with": ["locations"], "account_ids": [...]?} -> liste complète (traductions fr/en avec description HTML entière, lieux géocodés avec ville/région/lat-lng, dates de publication et d'expiration, mode de travail) ;
- noms : POST https://user-accounts-prod.workland.com/api/v1/accounts/ default-profiles body {"account_ids": [...]} -> nom et slug d'employeur par compte.
Sans filtre
account_ids, l'API renvoie tout le réseau Atlas (~1 600 offres, dont ~1 240 au Québec : CSS scolaires, cégeps, CIUSSS/CISSS, STQ, UQTR…) — c'est ce que fait le connecteur réseauatlas_workland. Une sous-classe peut cibler un employeur précis via ACCOUNT_IDS ou SLUG.
Accès
- Endpoint (
_JOBS_API) :https://jobs-prod.workland.com/api/v1/job/published-external - Endpoint (
_PROFILES_API) :https://user-accounts-prod.workland.com/api/v1/accounts/default-profiles - Endpoint (
_BY_SLUG_API) :https://user-accounts-prod.workland.com/api/v1/accounts/profiles/by-slug/{slug} - Pagination : flux unique (une requête liste)
- Backend : GET/POST direct
requests(throttlé, User-AgentJobKaBot/1.0identifié) - Auth : aucune — API/pages publiques du site carrières.
- Throttle : 1.0 s entre requêtes.
Tenants connectés
| Employeur | Actives | Salaire | GPS | Mode | Dernier sync | OK |
|---|---|---|---|---|---|---|
| Réseau Atlas Workland (~80 employeurs QC : CSS, cégeps, Santé Québec, STQ, UQTR…) | 1092 | 37 % | 100 % | 84 % | 2026-10-14 18:11 | ✅ |
Licence / conformité
Flux public du site carrières officiel de l'employeur (API JSON de l'ATS ou HTML rendu serveur) — le même contenu que la page carrière affiche publiquement, prévu pour la diffusion des offres, sans authentification. Chaque offre conserve son URL originale et le bouton « Postuler chez l'employeur » renvoie chez l'employeur. Aucune donnée personnelle de candidat n'est collectée. User-Agent identifié JobKaBot/1.0 (+https://www.job-ka.com; contact@spboucher.ai) sur les accès directs ; requêtes throttlées et plafonnées par budgets.
Historique
Mission connecteurs du 2026-08-18 — passage de 135 à 217 employeurs directs connectés, de 9 à 17 plateformes ATS, ajout de 3 portails agrégateurs et du canal de dépôt direct :
fd4bfc8qualité lieux : rejet des villes hors Québec, bâtiments McGill → Montréal ;5a66f48+59 employeurs (sondage massif d'ATS + détection de pages carrières) ;4917d578 nouveaux ATS (Taleo, Njoyn, UltiPro, iCIMS, SuccessFactors, ADP WFN, Digital Recruiters, Workland) + 23 employeurs publics/parapublics ;f6e7571portails Guichet-Emplois, Jobillico, Espresso-Jobs — l'offre directe gagne toujours la canonique (dédup) ;744cbfcbadge « Offre directe », stats directes/portails, dépôt direct employeurs ;1604ff9reprise sur coupure WAF Guichet-Emplois (retry + acquis partiel).
Commits touchant jobka/connectors/workland.py :
67fa63b32026-10-09 [ka6] fix connecteur atlas_workland: timeout 30 s trop court pour l'API réseau Workland (~55 Mo) — read timeout ponctuel ×3 relances = faux « volume 0 » transitoire, timeout porté à 90 s sur la plateforme workland. Le connecteur réseau (médiane 1158, ~80 employeurs publics/parapublics QC) était déjà auto-rétabli à 13:01 EDT (found=1163) quand la mission a démarré : l'échec unique de 10:16 (ReadTimeout 30 s sur jobs-prod.workland.com/api/v1/job/published-external, 3 tentatives de _ka_resilient_post expirées) + le trou de cadence du cycle complet des 1100+ sources ont suffi à franchir le seuil stale de 4 h. Cause racine durable : published-external renvoie TOUT le réseau en UNE réponse de ~55 Mo qui prend déjà 16 s quand le serveur va bien — à 30 s de read timeout, toute lenteur serveur fait échouer les 3 relances (3e occurrence du même timeout : 2026-08-22, 2026-09-18, 2026-10-09, ~1 toutes les 2-3 semaines). Correctif minimal : timeout = 90 sur WorklandConnector (workland.py), précédent exact dans le repo = ia_groupe.py (CXS lent, timeouts observés à 30 s). Docstrings workland.py + atlas_workland.py enrichies (chronologie + volumétrie de la réponse). Sync isolé rejoué ×2 : found=1166 stable (médiane 1158), ok=1, ~19 s. 107 tests pytest verts. Fiches docs/connecteurs/ atlas_workland.md + ats-workland.md + INDEX.md régénérées via scripts/gen_connector_docs.py (les 1131 autres fiches, dont seuls les instantanés horodatés changeaient, restaurées — hors périmètre). pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.86b0d0b42026-08-19 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 % ».4917d5752026-08-18 8 nouveaux ATS (Taleo, Njoyn, UltiPro, iCIMS, SuccessFactors, ADP WFN, Digital Recruiters, Workland) + 23 employeurs publics/parapublics et grands employeurs QC