HTML 82.1%
Python 14.6%
TypeScript 1.9%
CSS 1%
JavaScript 0.5%
1# =============================================================================2# Job·Ka — Groupe KA3# Auteur : Simon-Pierre Boucher4# Contact : contact@spboucher.ai5# Fichier : jobka/connectors/altusgroup.py6# Rôle : Connecteur Groupe Altus — workday (tenant altusgroup.wd3, site AltusGroup)7# [généré par scripts/gen_connectors.py, flux vérifié le 2026-08-25 ;8# re-vérifié le 2026-09-19 : API OK, 42 offres, 0 au Québec (les 89# offres multi-lieux vérifiées au détail : US/UK) — volume 0 légitime]10# Créé : 2026-08-25 Modifié : 2026-09-1911# =============================================================================12import re1314from .workday import WorkdayConnector151617class AltusgroupConnector(WorkdayConnector):18 source_id = 'altusgroup'19 EMPLOYER = 'Groupe Altus'20 TENANT = 'altusgroup'21 HOST = 'wd3'22 SITE = 'AltusGroup'2324 # Ce tenant préfixe bulletFields par la région quand il y en a une :25 # ["Ontario", "R0013639"] ou ["R0013942"] seul. bullets[0] donnait donc26 # « Quebec » comme external_id (collision entre postes d'une même région,27 # constatée le 2026-08-26 : 2 offres trouvées, 1 seule en base). On prend28 # le bullet au format réquisition (R + chiffres), sinon le suffixe du29 # chemin (qui peut porter un suffixe de variante, ex. R0013801-1).30 _REQ_ID = re.compile(r'^R\d+(?:-\d+)?$')3132 def _external_id(self, item: dict, path: str) -> str:33 for b in item.get('bulletFields') or []:34 if self._REQ_ID.match(str(b).strip()):35 return str(b).strip()36 return path.rsplit('_', 1)[-1]37