# ============================================================================= # Job·Ka — Groupe KA # Auteur : Simon-Pierre Boucher # Contact : contact@spboucher.ai # Fichier : jobka/connectors/altusgroup.py # Rôle : Connecteur Groupe Altus — workday (tenant altusgroup.wd3, site AltusGroup) # [généré par scripts/gen_connectors.py, flux vérifié le 2026-08-25 ; # re-vérifié le 2026-09-19 : API OK, 42 offres, 0 au Québec (les 8 # offres multi-lieux vérifiées au détail : US/UK) — volume 0 légitime] # Créé : 2026-08-25 Modifié : 2026-09-19 # ============================================================================= import re from .workday import WorkdayConnector class AltusgroupConnector(WorkdayConnector): source_id = 'altusgroup' EMPLOYER = 'Groupe Altus' TENANT = 'altusgroup' HOST = 'wd3' SITE = 'AltusGroup' # Ce tenant préfixe bulletFields par la région quand il y en a une : # ["Ontario", "R0013639"] ou ["R0013942"] seul. bullets[0] donnait donc # « Quebec » comme external_id (collision entre postes d'une même région, # constatée le 2026-08-26 : 2 offres trouvées, 1 seule en base). On prend # le bullet au format réquisition (R + chiffres), sinon le suffixe du # chemin (qui peut porter un suffixe de variante, ex. R0013801-1). _REQ_ID = re.compile(r'^R\d+(?:-\d+)?$') def _external_id(self, item: dict, path: str) -> str: for b in item.get('bulletFields') or []: if self._REQ_ID.match(str(b).strip()): return str(b).strip() return path.rsplit('_', 1)[-1]