# Plateforme ATS `taleo` **5 employeurs connectés** via cette plateforme — **122 offres actives**. Module partagé : `jobka/connectors/taleo.py` ; un employeur = une sous-classe d'environ 10 lignes. ## Description & mécanique > Plateforme Oracle Taleo Enterprise. > > Les sections carrières Taleo exposent une API REST publique (celle que le > frontal jobsearch.ftl consomme lui-même) : > - amorce : GET https://.taleo.net/careersection/
/jobsearch.ftl > (cookies de session + numéro de portail « portal=NNN » dans le HTML) > - liste : POST https://.taleo.net/careersection/rest/jobboard/searchjobs > ?lang=fr&portal= body JSON {pageNo, sorting…} > -> {requisitionList:[{jobId, contestNo, column:[...], > locationsColumns:[i]}], pagingData:{totalCount, pageSize}} > - détail : la page jobdetail.ftl?job= (description HTML rendue > côté serveur) — visitée avec cache BD et budget. > > Le contenu des colonnes dépend de la configuration du portail : on repère la > colonne des lieux via `locationsColumns` et on suppose la première colonne > comme titre (constaté sur tous les portails testés). ## Accès - **Pagination** : flux unique (une requête liste) - **Backend** : GET/POST direct `requests` (throttlé, User-Agent `JobKaBot/1.0` identifié) - **Auth** : aucune — API/pages publiques du site carrières. - **Throttle** : 1.0 s entre requêtes. - **Budgets (env)** : `JOBKA_TALEO_DETAIL_LIMIT` (défaut `120`) ## Tenants connectés | Employeur | Actives | Salaire | GPS | Mode | Dernier sync | OK | |---|---|---|---|---|---|---| | [Agnico Eagle Mines](agnico_eagle.md) | 70 | 0 % | 100 % | 0 % | 2026-09-21 16:35 | ✅ | | [CIUSSS de l'Est-de-l'Île-de-Montréal](ciusss_est_montreal.md) | 23 | 0 % | 100 % | 0 % | 2026-09-21 16:50 | ✅ | | [Bell Textron Canada](bell_textron.md) | 18 | 0 % | 100 % | 0 % | 2026-09-21 16:39 | ✅ | | [Bayshore HealthCare](bayshore.md) | 9 | 0 % | 100 % | 0 % | 2026-09-21 16:38 | ✅ | | [IAMGOLD](iamgold.md) | 2 | 0 % | 100 % | 0 % | 2026-09-21 17:12 | ✅ | ## 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 : - `fd4bfc8` qualité 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) ; - `4917d57` 8 nouveaux ATS (Taleo, Njoyn, UltiPro, iCIMS, SuccessFactors, ADP WFN, Digital Recruiters, Workland) + 23 employeurs publics/parapublics ; - `f6e7571` portails Guichet-Emplois, Jobillico, Espresso-Jobs — l'offre directe gagne toujours la canonique (dédup) ; - `744cbfc` badge « Offre directe », stats directes/portails, dépôt direct employeurs ; - `1604ff9` reprise sur coupure WAF Guichet-Emplois (retry + acquis partiel). Commits touchant `jobka/connectors/taleo.py` : - `e45adfd` 2026-09-09 [ka6] fix connecteur bayshore: retry sur réponse searchjobs non-JSON dans la plateforme taleo — le frontal a renvoyé une page HTML statut 200 au lieu du JSON (« Expecting value: line 2 column 1 », constaté 2026-09-09 06h29 sur bayshore, reparti seul), cas couvert par aucun retry existant (ni 5xx ni anti-bot); nouveau _search_page, 3 essais backoff 10-20 s avec ré-amorçage de session, échec explicite avec extrait du corps après 3 essais; sync rejoué: 11 offres (médiane 11.0) - `14546e9` 2026-09-09 [ka6] fix connecteur bell_textron: retry avec backoff sur 5xx transitoire dans la plateforme taleo — un 500 isolé de l'API searchjobs (constaté 2026-09-08 23h29 sur textron, reparti seul) faisait échouer tout le sync car raise_for_status dans base.get/post n'a aucun retry; nouveau _req couvrant amorce/liste/détail, 3 essais backoff 10-20-30 s, les 4xx restent des échecs immédiats (même correctif que workday b5b4be3); sync rejoué: 16 offres (médiane 16.0) - `49067dd` 2026-08-19 Connecteurs phase 2 — correctifs et enrichissement champ par champ. Correctifs : villes SuccessFactors à trait d'union (préfixe municipal MAMH sur le slug, bogue « St »/« Pointe »), colonne date Taleo = date LIMITE chez agnico_eagle (+ garde-fou date future). Enrichissement : SmartRecruiters experienceLevel/function/industry/language/refNumber (lignes de liste, zéro requête), BambooHR locationType→work_mode, Breezy is_remote/logo_url/streetAddress, JSON-LD logo/industry/educationRequirements/skills (portails+icims+DR), Ashby applyUrl + composantes Bonus/Equity/Commission, Lever applyUrl + blocs opening/additional + allLocations, Workable application_url + function/industry, Recruitee careers_apply_url + description FR (translations) + expérience/scolarité + heures/sem, Greenhouse language + requisition_id, Workday externalUrl→apply_url + work_mode via facette Remote Type + clé cache v2, Guichet-Emplois avantages structurés + langue de travail, njoyn apply_url en colonne ; secours cache périmé quand le budget détail est épuisé (plus de fiches vidées) - `4917d57` 2026-08-18 8 nouveaux ATS (Taleo, Njoyn, UltiPro, iCIMS, SuccessFactors, ADP WFN, Digital Recruiters, Workland) + 23 employeurs publics/parapublics et grands employeurs QC