Groupe Altus (altusgroup)
Employeur direct · Plateforme ATS : workday · Statut registre : actif · Connecteur : jobka/connectors/altusgroup.py
Description
- Site : Groupe Altus
- Page carrières : https://altusgroup.wd3.myworkdayjobs.com/AltusGroup
- Secteurs : Immobilier
- Région : Montréal
- Offres marquées « Offre directe » dans l'app (badge) : la candidature se fait chez l'employeur, jamais via un intermédiaire.
Accès
- Mécanique : voir la fiche plateforme
ats-workday.md— API JSON publique du site carrières, backendrequestsdirect (Scrapfly seulement si indiqué sur la fiche plateforme). - Identifiants du tenant (attributs du connecteur) :
| Attribut | Valeur |
|---|---|
EMPLOYER |
Groupe Altus |
HOST |
wd3 |
SITE |
AltusGroup |
TENANT |
altusgroup |
- Throttle : 0.7 s entre requêtes.
- Filtre Québec : seuls les postes localisés au Québec sont conservés (facette serveur quand l'ATS en offre une, sinon
is_quebec_locationcôté client).
Champs → schéma
Aucune offre active en base pour cette source.
Fréquence & budgets
- Cadence : resynchronisation horaire (PM2
job-ka-sync=run.py watch 60), suivie du géocodage en lot puis de la déduplication inter-sources. - Throttle : 0.7 s minimum entre deux requêtes vers la source (
request_delay). - Budgets / plafonds (variables d'environnement) :
| Variable | Défaut |
|---|---|
JOBKA_WORKDAY_DETAIL_LIMIT |
300 |
- Cache BD des pages détail (
detail_cache) : le détail d'une offre n'est re-téléchargé que si sa ligne de liste change.
Volumétrie & complétude live
(mesuré le 2026-09-21 18:06 EDT dans data/jobka.db)
- Offres en base : 1 (dont 0 actives, 0 masquées comme doublons
dup_of) - Salaire : 0/0 actives (—)
- GPS : 0/0 actives (—)
- Mode : 0/0 actives (—)
- Parution : 0/0 actives (—)
- Dernier sync : 2026-09-21 16:37 — trouvées 0, +0, ~0, -0
- Syncs enregistrés (
sync_log) : 288
Erreurs & dépannage
Erreurs relevées dans sync_log :
| Erreur | Occurrences | Dernière fois |
|---|---|---|
| Workday non-JSON après 3 essais (HTTP 200, text/html) : Expecting value: line 1 column 1 (… | 3 | 2026-09-19 02:43 |
| HTTPSConnectionPool(host='altusgroup.wd3.myworkdayjobs.com', port=443): Max retries exceed… | 1 | 2026-09-18 12:51 |
| Expecting value: line 1 column 1 (char 0) | 8 | 2026-08-29 03:16 |
- Rejouer un sync isolé :
.venv/bin/python run.py sync altusgrouppuis inspectersync_log:sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='altusgroup' ORDER BY ts DESC LIMIT 5;" - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant
active=0.
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 Groupe Altus » 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/altusgroup.py :
f0929972026-09-19 [ka6] fix connecteur altusgroup: faux positif de supervision récurrent (0 offre QC toujours légitime) + échec nocturne transitoire de maintenance Workday — aucun défaut du connecteur, ajout du secteur manquant dans sources.json — le statut stale vient de la définition de succès de la supervision : le tenant Workday altusgroup.wd3 n'a AUCUNE offre QC depuis la dépublication fin août de l'unique offre montréalaise « Cost Consultant/Conseiller(ère) en analyse de coûts » R0013818 (active=0 depuis le 2026-08-26), donc les syncs horaires rendent ok=1 found=0 (médiane 0.0) et sont comptés comme non-succès depuis 565 h — même profil que quadreal ef41976, cpab e498c30, drop_genie 8a53793, et déjà diagnostiqué sur CE connecteur les 2026-08-26, 2026-09-12 et 2026-09-18. Le seul échec réel (sync de 02:43 cette nuit : « Workday non-JSON après 3 essais, HTTP 200 text/html ») est la fenêtre de maintenance nocturne Workday ~03 h EDT documentée dans workday.py (retry+backoff déjà en place), non reproduite au matin. Le connecteur est INTACT et re-vérifié live sous un angle NOUVEAU (l'angle mort multi-lieux type quadreal) : 42 offres sur 3 pages, zéro occurrence de quebec/montréal/laval/gatineau/sherbrooke/rougemont dans le JSON complet des listes, recherche serveur searchText Quebec/Montréal → total 0, et les 8 offres « N Locations » (jusqu'à 21 lieux) vérifiées UNE À UNE au détail cxs : 41 localisations cumulées, toutes US/UK (Texas, New York, Illinois, London, Manchester…), aucune canadienne hors Ontario/Alberta déjà exclues. Correction au passage du dernier artefact vague D dans data/sources.json : sectors [] → [Immobilier] (Altus Group = intelligence en immobilier commercial ; secteur déjà au vocabulaire, 29 sources ; la fiche affichait « Secteurs : n/d »). Docstring du connecteur mise à jour (re-vérif 2026-09-19, multi-lieux couverts). Sync isolé rejoué : found=0 en 3,9 s, ok=1 — 0 reste le volume légitime tant qu'Altus ne republie pas au Québec ; les offres reviendront d'elles-mêmes si republiées (filtre client is_quebec_location + repli facette serveur opérationnels). 106 tests pytest verts. pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.2fc9e632026-09-18 [ka6] fix connecteur altusgroup: faux positif de supervision (0 offre QC légitime — Altus n'a plus de poste au Québec) + échec DNS transitoire ponctuel — aucun défaut du connecteur, correction d'un artefact sources.json (url vide) — le statut stale vient de la définition de succès de la supervision : le tenant Workday altusgroup.wd3 (site AltusGroup) n'a AUCUNE offre QC depuis le retrait de l'unique offre montréalaise fin août (R0013818, déjà constaté le 2026-08-26), donc chaque sync horaire rend ok=1 found=0 (médiane 0.0) et est compté comme non-succès depuis le 2026-08-26 (551 h). Le connecteur est INTACT et re-vérifié live : l'API cxs répond 200 avec 42 offres (Toronto, Calgary, Ottawa, US, UK, Paris, Sydney, Singapour, Inde…) — recherche serveur « Quebec »/« Montréal » = 0 résultat, zéro occurrence de quebec/montréal/laval/gatineau/sherbrooke dans le JSON complet des 3 pages (l'aveuglement type stateindustrial est exclu ; le hook _external_id posé le 2026-09-12 reste correct). L'unique sync en échec (18/09 12:51) est une NameResolutionError DNS transitoire sur altusgroup.wd3.myworkdayjobs.com, non reproduite (API OK en live). Même profil que altom_transport ea13137, earthrated f7b1c35, canadasmotorcycle 175b215, jsheldllc bdc5d09, psacunion 4d8080b : tenant à volume QC nul/faible compté non-succès par la supervision. Correction au passage de l'artefact du générateur vague D : url vide dans data/sources.json → https://www.altusgroup.com (vérifié 200, titre « Altus Group - Data-Powered CRE Technology & Analytics » ; la fiche affichait « Site : Groupe Altus »). Le nom d'employeur « Groupe Altus » est correct. Docstring du connecteur mise à jour (42 offres, re-vérif 2026-09-18). Sync isolé rejoué : found=0 en 4,0 s, ok=1 — 0 est le volume légitime tant qu'Altus ne republie pas au Québec ; les offres reviendront d'elles-mêmes si republiées. 106 tests pytest verts. pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.4e9be242026-09-12 [ka6] fix connecteur altusgroup: external_id régional → ID de réquisition (hook _external_id dans la plateforme workday, défaut inchangé) — le tenant altusgroup.wd3 préfixe bulletFields par la région quand il y en a une (['Ontario','R0013639'] vs ['R0013942'] seul), si bien que bullets[0] devenait l'external_id : l'offre QC historique était en base sous external_id='Quebec', et le sync du 2026-08-26 trouvait 2 offres pour 1 seule stockée (collision d'ID entre postes d'une même région). L'extraction est désormais isolée dans un hook _external_id() de WorkdayConnector (comportement par défaut strictement identique pour les autres tenants) et surchargée dans altusgroup.py : premier bullet au format réquisition R+chiffres, sinon suffixe du chemin. Vérifié live : 36 postes scannés → 36 IDs uniques au format R00xxxxx, 0 poste non conforme. Volume 0 légitime AUJOURD'HUI : 7 postes Canada, tous Toronto — aucune offre QC depuis la dépublication de l'offre montréalaise le 2026-08-26 (médiane historique 0.0). Le statut stale vient de là (la supervision date le dernier succès au dernier sync found>0, 2026-08-26 14:19) ; l'unique échec récent (2026-09-12 03:04, « Workday non-JSON HTTP 200 text/html ») est la fenêtre de maintenance hebdomadaire Workday du vendredi/samedi nuit (28 occurrences multi-sources cette nuit, mêmes plages 02h30–03h15 les 2026-08-29 et 2026-09-05), transitoire et déjà retryée. Sync isolé rejoué : found=0 en 2,4 s, statut ok. 101 tests pytest verts. pm2 restart job-ka-sync OK, site 200.856863d2026-08-25 Vague D implémentée — 75 nouveaux connecteurs (968 -> 1044 employeurs), ~768 offres QC