SPB Git

spb/job-ka

Public

[ka6] fix connecteur mackenzie: angle mort mono-portail iCIMS — le tenant publie sur DEUX portails par langue (careersfr-/careersen-mackenzieinvestments), le connecteur ne scannait que le FR, vide depuis cette nuit — fusion des deux portails, version FR prioritaire (pattern fnfmb) — le statut stale vient de la définition de succès de la supervision (syncs ok=1 found=0 après dépublication des 2 offres QC du portail FR, re-vérifiée live : détails 410 « L'emploi requis n'a pas été trouvé », liste FR = vraie page « aucun emploi trouvé », 200/22 Ko), MAIS contrairement aux 19 cas précédents du pattern ce n'était PAS un simple faux positif : la page carrières officielle EN (mackenzieinvestments.com/en/careers, 403 direct, lue via Scrapfly) pointe vers careersen-mackenzieinvestments.icims.com — portail jumeau JAMAIS scanné, 16 offres vivantes dont 1 QC (6009 « Summer Intern 2027 - Inside Sales - Montreal Office », JSON-LD Montreal,QC, parue 2026-09-10) invisible du connecteur mono-portail. La page FR officielle (/fr/careers) pointe toujours vers careersfr- : les deux portails sont légitimes et actuels, migration d'ATS exclue ; même espace d'IDs (5416-6020), chaque offre n'apparaît que sur le(s) portail(s) de publication — même classe d'angle mort que la partition par culture Dayforce (fnfmb 2026-08-31, challenger 28ff173). Fix minimal dans mackenzie.py : SUBS=(careersfr-, careersen-), fetch() itère les deux sous-domaines via super().fetch() et fusionne par external_id (setdefault, FR gagne) — icims.py intact, les 3 autres connecteurs iCIMS (capreit, mccarthy_tetrault, globalexcel, edf_renouvelables, omni_hotels_*) non touchés. Sync isolé rejoué ×2 : found=1 stable (added=1 puis 0), ok=1, 24,1 s puis 2,8 s (cache détail) — 1 > médiane 0.0, fiche complète (titre, Montréal, description, date_posted 2026-09-10), URL live 200. Fiches docs/connecteurs/ mackenzie.md + ats-icims.md + INDEX.md régénérées via scripts/gen_connector_docs.py (les 1130 autres fiches, dont seuls les instantanés horodatés changeaient, restaurées — hors périmètre). 106 tests pytest verts. pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Simon-Pierre Boucher committed (Sep 26, 2026) parent 3944a46 Browse files

4 changed files +93 −46

modified docs/connecteurs/INDEX.md +25 −25
@@ -5,16 +5,16 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/INDEX.md
7 7 Rôle : Index généré de la documentation des connecteurs (ATS, employeurs, portails, dépôt)
8 −Généré : 2026-09-26 05:54 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-26 06:34 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
12 12
13 13 # Job·Ka — Connecteurs (index)
14 14
15 −> Index généré le 2026-09-26 05:54 EDT par `scripts/gen_connector_docs.py` (rejouable). Croise `data/sources.json`, l'introspection de `jobka/connectors/*.py` et la base live `data/jobka.db`.
15 +> Index généré le 2026-09-26 06:34 EDT par `scripts/gen_connector_docs.py` (rejouable). Croise `data/sources.json`, l'introspection de `jobka/connectors/*.py` et la base live `data/jobka.db`.
16 16
17 −**1103 employeurs directs** connectés via **25 plateformes ATS** + **3 portails agrégateurs** + le canal de **dépôt direct** — **25816 offres actives** (22776 directes, 3040 portails ; 107 masquées comme doublons inter-sources, soit 25709 visibles). 1133 fiches.
17 +**1103 employeurs directs** connectés via **25 plateformes ATS** + **3 portails agrégateurs** + le canal de **dépôt direct** — **25845 offres actives** (22768 directes, 3077 portails ; 111 masquées comme doublons inter-sources, soit 25734 visibles). 1133 fiches.
18 18
19 19 Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conserve son URL originale ; la candidature se fait chez l'employeur (badge « Offre directe » sur les sources directes).
20 20
@@ -22,13 +22,13 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser
22 22
23 23 | Plateforme | Employeurs | Actives | Salaire | GPS |
24 24 |---|---|---|---|---|
25 −| [`workday`](ats-workday.md) | 232 | 7508 | 46 % | 87 % |
26 −| [`smartrecruiters`](ats-smartrecruiters.md) | 172 | 2982 | 17 % | 99 % |
25 +| [`workday`](ats-workday.md) | 232 | 7502 | 46 % | 87 % |
26 +| [`smartrecruiters`](ats-smartrecruiters.md) | 172 | 2981 | 17 % | 99 % |
27 27 | [`workable`](ats-workable.md) | 71 | 1827 | 19 % | 100 % |
28 28 | [`dayforce`](ats-dayforce.md) | 129 | 1784 | 9 % | 100 % |
29 29 | [`successfactors`](ats-successfactors.md) | 11 | 1532 | 14 % | 99 % |
30 30 | [`workland`](ats-workland.md) | 1 | 1250 | 36 % | 100 % |
31 −| [`njoyn`](ats-njoyn.md) | 11 | 1135 | 76 % | 85 % |
31 +| [`njoyn`](ats-njoyn.md) | 11 | 1134 | 76 % | 85 % |
32 32 | [`greenhouse`](ats-greenhouse.md) | 131 | 833 | 19 % | 100 % |
33 33 | [`wpjobmanager`](ats-wpjobmanager.md) | 8 | 788 | 7 % | 100 % |
34 34 | [`lever`](ats-lever.md) | 58 | 634 | 20 % | 96 % |
@@ -37,14 +37,14 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser
37 37 | [`recruitee`](ats-recruitee.md) | 30 | 282 | 18 % | 97 % |
38 38 | [`bamboohr`](ats-bamboohr.md) | 37 | 282 | 10 % | 100 % |
39 39 | [`taleo_tbe`](ats-taleo_tbe.md) | 7 | 207 | 25 % | 58 % |
40 −| [`zoho_recruit`](ats-zoho_recruit.md) | 17 | 172 | 14 % | 88 % |
40 +| [`zoho_recruit`](ats-zoho_recruit.md) | 17 | 171 | 14 % | 88 % |
41 41 | [`jazzhr`](ats-jazzhr.md) | 29 | 148 | 14 % | 93 % |
42 42 | [`adp`](ats-adp.md) | 17 | 138 | 41 % | 95 % |
43 43 | [`teamtailor`](ats-teamtailor.md) | 9 | 137 | 31 % | 93 % |
44 44 | [`taleo`](ats-taleo.md) | 5 | 126 | 0 % | 100 % |
45 45 | [`digitalrecruiters`](ats-digitalrecruiters.md) | 2 | 80 | 95 % | 56 % |
46 46 | [`ultipro`](ats-ultipro.md) | 4 | 69 | 55 % | 100 % |
47 −| [`icims`](ats-icims.md) | 7 | 57 | 39 % | 79 % |
47 +| [`icims`](ats-icims.md) | 7 | 58 | 40 % | 78 % |
48 48 | [`eightfold`](ats-eightfold.md) | 1 | 53 | 74 % | 100 % |
49 49 | [`custom`](ats-custom.md) | 1 | 36 | 33 % | 92 % |
50 50
@@ -52,7 +52,7 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser
52 52
53 53 | Source | Actives | Salaire | Dernier sync |
54 54 |---|---|---|---|
55 −| [Espresso-Jobs](espresso_jobs.md) | 301 | 14 % | 2026-09-26 03:34 |
55 +| [Espresso-Jobs](espresso_jobs.md) | 338 | 14 % | 2026-09-26 06:25 |
56 56 | [Guichet-Emplois (Canada)](guichet_emplois.md) | 502 | 100 % | 2026-09-26 03:57 |
57 57 | [Jobillico](jobillico.md) | 2237 | 40 % | 2026-09-26 04:14 |
58 58 | [Dépôt direct employeurs](depot-direct.md) | 0 (0 en modération) | — | au fil de l'eau |
@@ -63,7 +63,7 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser
63 63 |---|---|---|---|---|---|
64 64 | [Réseau Atlas Workland (~80 employeurs QC : CSS, cégeps, Santé Québec, STQ, UQTR…)](atlas_workland.md) | [`workland`](ats-workland.md) | 1250 | 36 % | 100 % | ✅ |
65 65 | [Walmart Canada](walmart.md) | [`workday`](ats-workday.md) | 1040 | 97 % | 90 % | ✅ |
66 −| [Couche-Tard / Circle K](circlek.md) | [`workday`](ats-workday.md) | 1017 | 65 % | 66 % | ❌ |
66 +| [Couche-Tard / Circle K](circlek.md) | [`workday`](ats-workday.md) | 1016 | 66 % | 66 % | ✅ |
67 67 | [Solution SFT](solution_sft.md) | [`workable`](ats-workable.md) | 825 | 27 % | 100 % | ✅ |
68 68 | [Santé Québec — Montréal](sante_montreal.md) | [`njoyn`](ats-njoyn.md) | 784 | 98 % | 98 % | ✅ |
69 69 | [Bombardier](bombardier.md) | [`successfactors`](ats-successfactors.md) | 745 | 0 % | 100 % | ✅ |
@@ -78,7 +78,7 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser
78 78 | [CIMA+](cima2.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 225 | 2 % | 100 % | ✅ |
79 79 | [Université McGill](mcgill.md) | [`workday`](ats-workday.md) | 223 | 69 % | 100 % | ✅ |
80 80 | [Groupe Banque TD](td.md) | [`workday`](ats-workday.md) | 193 | 95 % | 93 % | ✅ |
81 −| [CGI](cgi.md) | [`njoyn`](ats-njoyn.md) | 187 | 0 % | 96 % | ✅ |
81 +| [CGI](cgi.md) | [`njoyn`](ats-njoyn.md) | 186 | 0 % | 96 % | ✅ |
82 82 | [Consignaction (AQRCB)](consignaction.md) | [`workday`](ats-workday.md) | 175 | 85 % | 100 % | ✅ |
83 83 | [Airbus Canada](airbus.md) | [`workday`](ats-workday.md) | 169 | 5 % | 99 % | ✅ |
84 84 | [Sodexo Canada](sodexocanadaltd.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 165 | 84 % | 99 % | ✅ |
@@ -114,9 +114,9 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser
114 114 | [Agnico Eagle Mines](agnico_eagle.md) | [`taleo`](ats-taleo.md) | 80 | 0 % | 100 % | ✅ |
115 115 | [Intelcom (Dragonfly)](intelcomgroup.md) | [`workday`](ats-workday.md) | 80 | 0 % | 99 % | ✅ |
116 116 | [Promutuel Assurance](promutuel.md) | [`workday`](ats-workday.md) | 80 | 2 % | 100 % | ✅ |
117 −| [Banque CIBC](cibc.md) | [`workday`](ats-workday.md) | 76 | 0 % | 95 % | ❌ |
118 117 | [Bulkbarn](bulkbarn.md) | [`dayforce`](ats-dayforce.md) | 76 | 0 % | 100 % | ✅ |
119 118 | [CAE](cae.md) | [`workday`](ats-workday.md) | 74 | 24 % | 96 % | ✅ |
119 +| [Banque CIBC](cibc.md) | [`workday`](ats-workday.md) | 71 | 0 % | 94 % | ✅ |
120 120 | [EMCO](emcocorporation.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 69 | 41 % | 100 % | ✅ |
121 121 | [Lightspeed Commerce](lightspeedhq.md) | [`ashby`](ats-ashby.md) | 68 | 6 % | 100 % | ✅ |
122 122 | [Gevernova](gevernova.md) | [`workday`](ats-workday.md) | 66 | 29 % | 92 % | ✅ |
@@ -180,7 +180,7 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser
180 180 | [exo (transport métropolitain)](exo.md) | [`taleo_tbe`](ats-taleo_tbe.md) | 35 | 0 % | 94 % | ✅ |
181 181 | [Lgs](lgs.md) | [`dayforce`](ats-dayforce.md) | 35 | 0 % | 100 % | ✅ |
182 182 | [Behaviour Interactif](bhvr.md) | [`lever`](ats-lever.md) | 34 | 0 % | 100 % | ✅ |
183 −| [Firststudent](firststudent.md) | [`workday`](ats-workday.md) | 34 | 41 % | 97 % | ❌ |
183 +| [Firststudent](firststudent.md) | [`workday`](ats-workday.md) | 34 | 41 % | 97 % | ✅ |
184 184 | [Institut de recherche du CUSM](cusm_ir.md) | [`njoyn`](ats-njoyn.md) | 34 | 97 % | 0 % | ✅ |
185 185 | [Ms](ms.md) | [`workday`](ats-workday.md) | 34 | 0 % | 100 % | ✅ |
186 186 | [Sany](imperialdade.md) | [`dayforce`](ats-dayforce.md) | 34 | 0 % | 100 % | ✅ |
@@ -209,7 +209,7 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser
209 209 | [Distribution stox](distributionstox2.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 28 | 39 % | 100 % | ✅ |
210 210 | [Rollsroyce](rollsroyce.md) | [`workday`](ats-workday.md) | 28 | 0 % | 100 % | ✅ |
211 211 | [Spectrum Health Care](spectrumhealthcare.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 28 | 89 % | 100 % | ✅ |
212 −| [Associé des ventes](childrensplace.md) | [`workday`](ats-workday.md) | 27 | 0 % | 22 % | ❌ |
212 +| [Associé des ventes](childrensplace.md) | [`workday`](ats-workday.md) | 27 | 0 % | 22 % | ✅ |
213 213 | [Best Buy Canada](bestbuycanada.md) | [`workday`](ats-workday.md) | 27 | 0 % | 52 % | ✅ |
214 214 | [Directive](directive.md) | [`ashby`](ats-ashby.md) | 26 | 12 % | 0 % | ✅ |
215 215 | [Le Massif de Charlevoix](lemassif.md) | [`dayforce`](ats-dayforce.md) | 26 | 0 % | 100 % | ✅ |
@@ -234,7 +234,7 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser
234 234 | [Comptable prix de revient](exceldorfoods478.md) | [`dayforce`](ats-dayforce.md) | 24 | 25 % | 100 % | ✅ |
235 235 | [Domtar](domtar.md) | [`successfactors`](ats-successfactors.md) | 24 | 0 % | 100 % | ✅ |
236 236 | [DRB Distribution](drbdistribution.md) | [`zoho_recruit`](ats-zoho_recruit.md) | 24 | 0 % | 96 % | ✅ |
237 −| [FedEx Express Canada](fedex.md) | [`workday`](ats-workday.md) | 24 | 100 % | 88 % | ❌ |
237 +| [FedEx Express Canada](fedex.md) | [`workday`](ats-workday.md) | 24 | 100 % | 88 % | ✅ |
238 238 | [Playground](playground.md) | [`jazzhr`](ats-jazzhr.md) | 24 | 62 % | 67 % | ✅ |
239 239 | [Side (PTW)](sideinc.md) | [`workable`](ats-workable.md) | 24 | 0 % | 100 % | ✅ |
240 240 | [Unitytech](unitytech.md) | [`workday`](ats-workday.md) | 24 | 96 % | 83 % | ✅ |
@@ -270,7 +270,6 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser
270 270 | [Xsolla](xsolla.md) | [`lever`](ats-lever.md) | 20 | 100 % | 95 % | ✅ |
271 271 | [Cirque du Soleil](cirquedusoleil.md) | [`lever`](ats-lever.md) | 19 | 0 % | 89 % | ✅ |
272 272 | [CSS des Découvreurs](cssdd.md) | [`digitalrecruiters`](ats-digitalrecruiters.md) | 19 | 89 % | 100 % | ✅ |
273 −| [dentago](dentago.md) | [`zoho_recruit`](ats-zoho_recruit.md) | 19 | 5 % | 79 % | ✅ |
274 273 | [Groupe AGF](groupeagf.md) | [`dayforce`](ats-dayforce.md) | 19 | 32 % | 100 % | ✅ |
275 274 | [Immiland Canada Inc.](immiland_canada_inc.md) | [`lever`](ats-lever.md) | 19 | 16 % | 100 % | ✅ |
276 275 | [Préparateur de commandes](sysco.md) | [`workday`](ats-workday.md) | 19 | 5 % | 95 % | ✅ |
@@ -278,6 +277,7 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser
278 277 | [Teknion Roy & Breton](teknionroybreton.md) | [`recruitee`](ats-recruitee.md) | 19 | 58 % | 84 % | ✅ |
279 278 | [TSMG](tsmg.md) | [`lever`](ats-lever.md) | 19 | 0 % | 100 % | ✅ |
280 279 | [Uniboard](uniboard.md) | [`adp`](ats-adp.md) | 19 | 37 % | 63 % | ✅ |
280 +| [dentago](dentago.md) | [`zoho_recruit`](ats-zoho_recruit.md) | 18 | 6 % | 78 % | ✅ |
281 281 | [Groupeguilbault](groupeguilbault.md) | [`workday`](ats-workday.md) | 18 | 0 % | 100 % | ✅ |
282 282 | [Hubinternational](hubinternational.md) | [`workday`](ats-workday.md) | 18 | 17 % | 89 % | ✅ |
283 283 | [Lyft](lyft.md) | [`greenhouse`](ats-greenhouse.md) | 18 | 100 % | 100 % | ✅ |
@@ -477,7 +477,6 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser
477 477 | [3 Brasseurs Canada](trois_brasseurs.md) | [`breezy`](ats-breezy.md) | 8 | 62 % | 100 % | ✅ |
478 478 | [Abbott](abbott.md) | [`workday`](ats-workday.md) | 8 | 12 % | 100 % | ✅ |
479 479 | [Administration portuaire de Québec](portquebec.md) | [`dayforce`](ats-dayforce.md) | 8 | 0 % | 100 % | ✅ |
480 −| [AECOM](aecom2.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 8 | 0 % | 100 % | ✅ |
481 480 | [Agile DSS](agiledss.md) | [`recruitee`](ats-recruitee.md) | 8 | 0 % | 100 % | ✅ |
482 481 | [Associé (e) d'entrepôt](cardinalhealth.md) | [`workday`](ats-workday.md) | 8 | 75 % | 88 % | ✅ |
483 482 | [Big Bang](bigbang.md) | [`bamboohr`](ats-bamboohr.md) | 8 | 25 % | 100 % | ✅ |
@@ -500,6 +499,7 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser
500 499 | [Spiria](spiria.md) | [`lever`](ats-lever.md) | 8 | 50 % | 100 % | ✅ |
501 500 | [Sweat Pants Agency](sweat_pants_agency.md) | [`workable`](ats-workable.md) | 8 | 25 % | 100 % | ✅ |
502 501 | [WestGroupe](westgroupe.md) | [`jazzhr`](ats-jazzhr.md) | 8 | 0 % | 100 % | ✅ |
502 +| [AECOM](aecom2.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 7 | 0 % | 100 % | ✅ |
503 503 | [Alimentiv](alimentiv_2.md) | [`lever`](ats-lever.md) | 7 | 100 % | 14 % | ✅ |
504 504 | [Allegion](allegion.md) | [`workday`](ats-workday.md) | 7 | 57 % | 86 % | ✅ |
505 505 | [Alo Yoga](aloyoga.md) | [`greenhouse`](ats-greenhouse.md) | 7 | 0 % | 57 % | ✅ |
@@ -584,7 +584,7 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser
584 584 | [Board](deltastar.md) | [`dayforce`](ats-dayforce.md) | 5 | 0 % | 100 % | ✅ |
585 585 | [Broadsign](broadsign.md) | [`greenhouse`](ats-greenhouse.md) | 5 | 0 % | 100 % | ✅ |
586 586 | [Broadsign](broadsignfr.md) | [`greenhouse`](ats-greenhouse.md) | 5 | 0 % | 100 % | ✅ |
587 −| [Church & Dwight Canada](churchdwight.md) | [`workday`](ats-workday.md) | 5 | 0 % | 100 % | ❌ |
587 +| [Church & Dwight Canada](churchdwight.md) | [`workday`](ats-workday.md) | 5 | 0 % | 100 % | ✅ |
588 588 | [Citronhygiene](citronhygiene.md) | [`dayforce`](ats-dayforce.md) | 5 | 100 % | 100 % | ✅ |
589 589 | [Continental Group Sector ContiTech](continentalgroupsectorcontitech.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 5 | 20 % | 100 % | ✅ |
590 590 | [Cultures Gen V](cultures_genv.md) | [`adp`](ats-adp.md) | 5 | 20 % | 100 % | ✅ |
@@ -710,7 +710,7 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser
710 710 | [Ajholdingsltd](ajholdingsltd.md) | [`dayforce`](ats-dayforce.md) | 3 | 100 % | 100 % | ✅ |
711 711 | [Allucent](allucent.md) | [`workable`](ats-workable.md) | 3 | 0 % | 100 % | ✅ |
712 712 | [Amgen](amgen.md) | [`workday`](ats-workday.md) | 3 | 0 % | 100 % | ✅ |
713 −| [Associé(e) au service](ci.md) | [`workday`](ats-workday.md) | 3 | 0 % | 100 % | ❌ |
713 +| [Associé(e) au service](ci.md) | [`workday`](ats-workday.md) | 3 | 0 % | 100 % | ✅ |
714 714 | [BDC](bdc.md) | [`workday`](ats-workday.md) | 3 | 0 % | 100 % | ✅ |
715 715 | [Bdx](bdx.md) | [`workday`](ats-workday.md) | 3 | 33 % | 67 % | ✅ |
716 716 | [Bilingual (French/English) Sales Broker (RIBO Licensed)](ogc.md) | [`dayforce`](ats-dayforce.md) | 3 | 100 % | 100 % | ✅ |
@@ -718,12 +718,12 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser
718 718 | [Canadavisa](canadavisa.md) | [`ashby`](ats-ashby.md) | 3 | 33 % | 67 % | ✅ |
719 719 | [Carnaval de Québec Inc.](carnaval.md) | [`zoho_recruit`](ats-zoho_recruit.md) | 3 | 0 % | 100 % | ✅ |
720 720 | [Cdpqfiliales](cdpqfiliales.md) | [`workday`](ats-workday.md) | 3 | 0 % | 100 % | ✅ |
721 −| [Conagrabrands](conagrabrands.md) | [`workday`](ats-workday.md) | 3 | 100 % | 100 % | ❌ |
721 +| [Conagrabrands](conagrabrands.md) | [`workday`](ats-workday.md) | 3 | 100 % | 100 % | ✅ |
722 722 | [Continental Technology Solutions](continentaltechnologysolutions.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 3 | 0 % | 100 % | ✅ |
723 723 | [CTS Foods Brokers](cts_foods_brokers_inc.md) | [`workable`](ats-workable.md) | 3 | 33 % | 100 % | ✅ |
724 724 | [Cygnus Professionals Inc](cygnusprofessionalsinc2.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 3 | 0 % | 100 % | ✅ |
725 725 | [Damotech](damotech.md) | [`workable`](ats-workable.md) | 3 | 0 % | 100 % | ✅ |
726 −| [Danaher](danaher.md) | [`workday`](ats-workday.md) | 3 | 67 % | 67 % | ❌ |
726 +| [Danaher](danaher.md) | [`workday`](ats-workday.md) | 3 | 67 % | 67 % | ✅ |
727 727 | [Designer graphique](mhca.md) | [`dayforce`](ats-dayforce.md) | 3 | 0 % | 100 % | ✅ |
728 728 | [Dev](dev2.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 3 | 100 % | 100 % | ✅ |
729 729 | [E-Commerce Shipping Associate](slg001.md) | [`dayforce`](ats-dayforce.md) | 3 | 0 % | 100 % | ✅ |
@@ -800,7 +800,7 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser
800 800 | [AON3D](aon3d.md) | [`greenhouse`](ats-greenhouse.md) | 2 | 0 % | 100 % | ✅ |
801 801 | [AON3D](aon3d_fr.md) | [`greenhouse`](ats-greenhouse.md) | 2 | 0 % | 100 % | ✅ |
802 802 | [Arago](arago.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 2 | 0 % | 100 % | ✅ |
803 −| [Associé aux ventes/Retail Sales Associate](gapinc.md) | [`workday`](ats-workday.md) | 2 | 0 % | 50 % | ❌ |
803 +| [Associé aux ventes/Retail Sales Associate](gapinc.md) | [`workday`](ats-workday.md) | 2 | 0 % | 50 % | ✅ |
804 804 | [AtoB](atob.md) | [`ashby`](ats-ashby.md) | 2 | 50 % | 50 % | ✅ |
805 805 | [Averna](averna1.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 2 | 0 % | 100 % | ✅ |
806 806 | [Bardel Entertainment](bardel_entertainment.md) | [`workable`](ats-workable.md) | 2 | 100 % | 100 % | ✅ |
@@ -823,7 +823,7 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser
823 823 | [Dentons](dentons_europe.md) | [`workable`](ats-workable.md) | 2 | 50 % | 100 % | ✅ |
824 824 | [DONTNOD](dontnod.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 2 | 0 % | 100 % | ✅ |
825 825 | [DoorDash Quebec](doordashquebec.md) | [`greenhouse`](ats-greenhouse.md) | 2 | 0 % | 100 % | ✅ |
826 −| [Dxctechnology](dxctechnology.md) | [`workday`](ats-workday.md) | 2 | 0 % | 100 % | ❌ |
826 +| [Dxctechnology](dxctechnology.md) | [`workday`](ats-workday.md) | 2 | 0 % | 100 % | ✅ |
827 827 | [EC-Solutions](ecsolutions.md) | [`greenhouse`](ats-greenhouse.md) | 2 | 0 % | 100 % | ✅ |
828 828 | [Enbridge](enbridge.md) | [`workday`](ats-workday.md) | 2 | 0 % | 50 % | ✅ |
829 829 | [ePac Flexible Packaging](epacllc.md) | [`jazzhr`](ats-jazzhr.md) | 2 | 50 % | 100 % | ✅ |
@@ -934,7 +934,7 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser
934 934 | [CCA](cca1.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 1 | 0 % | 100 % | ✅ |
935 935 | [Centre multiethnique de Québec](centremultiethniquedequbec.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 1 | 100 % | 100 % | ✅ |
936 936 | [Charger Logistics](charger_logistics_inc.md) | [`workable`](ats-workable.md) | 1 | 0 % | 100 % | ✅ |
937 −| [Cineplex](cineplex.md) | [`workday`](ats-workday.md) | 1 | 0 % | 100 % | ❌ |
937 +| [Cineplex](cineplex.md) | [`workday`](ats-workday.md) | 1 | 0 % | 100 % | ✅ |
938 938 | [Club Assurance](clubassurance.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 1 | 100 % | 100 % | ✅ |
939 939 | [Club Monaco](clubmonaco.md) | [`greenhouse`](ats-greenhouse.md) | 1 | 0 % | 100 % | ✅ |
940 940 | [CM Labs](cmlabs.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 1 | 0 % | 100 % | ✅ |
@@ -1015,6 +1015,7 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser
1015 1015 | [Patterson Companies](pattersoncompanies.md) | [`workday`](ats-workday.md) | 1 | 0 % | 100 % | ✅ |
1016 1016 | [PeopleConnect Inc](peopleconnect_inc.md) | [`breezy`](ats-breezy.md) | 1 | 100 % | 100 % | ✅ |
1017 1017 | [Periodic Labs](periodic_labs.md) | [`ashby`](ats-ashby.md) | 1 | 100 % | 0 % | ✅ |
1018 +| [Placements Mackenzie (Power/IGM)](mackenzie.md) | [`icims`](ats-icims.md) | 1 | 100 % | 0 % | ✅ |
1018 1019 | [Poka FR](pokafr.md) | [`greenhouse`](ats-greenhouse.md) | 1 | 0 % | 100 % | ✅ |
1019 1020 | [Ponsera](ponsera.md) | [`greenhouse`](ats-greenhouse.md) | 1 | 100 % | 100 % | ✅ |
1020 1021 | [Poolcorp](poolcorp.md) | [`workday`](ats-workday.md) | 1 | 100 % | 100 % | ✅ |
@@ -1132,7 +1133,6 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser
1132 1133 | [Paythings](paythings_19f14e354a62.md) | [`breezy`](ats-breezy.md) | 0 | — | — | ✅ |
1133 1134 | [Pelmorex](pelmorex.md) | [`lever`](ats-lever.md) | 0 | — | — | ✅ |
1134 1135 | [PhyNet Dermatology LLC (External)](phynetdermatology.md) | [`greenhouse`](ats-greenhouse.md) | 0 | — | — | ✅ |
1135 −| [Placements Mackenzie (Power/IGM)](mackenzie.md) | [`icims`](ats-icims.md) | 0 | — | — | ✅ |
1136 1136 | [Poulet Rouge](pouletrouge.md) | [`bamboohr`](ats-bamboohr.md) | 0 | — | — | ✅ |
1137 1137 | [Projevia](projevia.md) | [`recruitee`](ats-recruitee.md) | 0 | — | — | n/d |
1138 1138 | [Qohash](qohash.md) | [`greenhouse`](ats-greenhouse.md) | 0 | — | — | ✅ |
modified docs/connecteurs/ats-icims.md +9 −9
@@ -5,14 +5,14 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/ats-icims.md
7 7 Rôle : Fiche plateforme ATS icims — mécanique partagée + tableau des 7 tenants
8 −Généré : 2026-09-24 04:02 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-26 06:34 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
12 12
13 13 # Plateforme ATS `icims`
14 14
15 −**7 employeurs connectés** via cette plateforme — **57 offres actives**. Module partagé : `jobka/connectors/icims.py` ; un employeur = une sous-classe d'environ 10 lignes.
15 +**7 employeurs connectés** via cette plateforme — **58 offres actives**. Module partagé : `jobka/connectors/icims.py` ; un employeur = une sous-classe d'environ 10 lignes.
16 16
17 17 ## Description & mécanique
18 18
@@ -39,13 +39,13 @@ Généré : 2026-09-24 04:02 EDT par scripts/gen_connector_docs.py — NE PAS
39 39
40 40 | Employeur | Actives | Salaire | GPS | Mode | Dernier sync | OK |
41 41 |---|---|---|---|---|---|---|
42 −| [McCarthy Tétrault](mccarthy_tetrault.md) | 17 | 0 % | 94 % | 12 % | 2026-09-24 02:13 | ✅ |
43 −| [Global Excel Management](globalexcel.md) | 13 | 46 % | 38 % | 0 % | 2026-09-24 01:51 | ✅ |
44 −| [EDF Renouvelables Canada](edf_renouvelables.md) | 9 | 89 % | 78 % | 67 % | 2026-09-24 01:46 | ✅ |
45 −| [CAPREIT](capreit.md) | 8 | 0 % | 100 % | 0 % | 2026-09-24 03:57 | ✅ |
46 −| [Omni Hôtel Mont-Royal](omni_hotels_gestion.md) | 5 | 80 % | 80 % | 0 % | 2026-09-24 04:02 | ✅ |
47 −| [Omni Hôtel Mont-Royal](omni_hotels_horaire.md) | 5 | 80 % | 80 % | 0 % | 2026-09-24 02:17 | ✅ |
48 −| [Placements Mackenzie (Power/IGM)](mackenzie.md) | 0 | — | — | — | 2026-09-24 02:12 | ✅ |
42 +| [McCarthy Tétrault](mccarthy_tetrault.md) | 17 | 0 % | 94 % | 12 % | 2026-09-26 04:20 | ✅ |
43 +| [Global Excel Management](globalexcel.md) | 12 | 42 % | 42 % | 0 % | 2026-09-26 06:28 | ✅ |
44 +| [EDF Renouvelables Canada](edf_renouvelables.md) | 10 | 90 % | 80 % | 60 % | 2026-09-26 06:23 | ✅ |
45 +| [CAPREIT](capreit.md) | 8 | 0 % | 100 % | 0 % | 2026-09-26 06:03 | ✅ |
46 +| [Omni Hôtel Mont-Royal](omni_hotels_gestion.md) | 5 | 80 % | 80 % | 0 % | 2026-09-26 04:30 | ✅ |
47 +| [Omni Hôtel Mont-Royal](omni_hotels_horaire.md) | 5 | 80 % | 80 % | 0 % | 2026-09-26 04:30 | ✅ |
48 +| [Placements Mackenzie (Power/IGM)](mackenzie.md) | 1 | 100 % | 0 % | 0 % | 2026-09-26 06:34 | ✅ |
49 49
50 50 ## Licence / conformité
51 51
modified docs/connecteurs/mackenzie.md +36 −10
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/mackenzie.md
7 7 Rôle : Fiche connecteur — Placements Mackenzie (Power/IGM) (employeur direct, ATS icims)
8 −Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-09-26 06:34 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -36,7 +36,33 @@ Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS
36 36
37 37 ## Champs → schéma
38 38
39 −*Aucune offre active en base pour cette source.*
39 +Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-09-26 06:34 EDT).
40 +
41 +| Champ (`jobs.*`) | Rôle | Complétude |
42 +|---|---|---|
43 +| `title` — Titre | titre du poste | 100 % |
44 +| `employer` — Employeur | nom de l'entreprise | 100 % |
45 +| `url` — URL | lien direct vers l'offre originale | 100 % |
46 +| `description` — Description | texte complet (HTML nettoyé) | 100 % |
47 +| `city` — Ville | municipalité normalisée | 100 % |
48 +| `region` — Région | région administrative | 100 % |
49 +| `address` — Adresse | adresse du lieu de travail | 100 % |
50 +| `postal_code` — Code postal | code postal si publié | 100 % |
51 +| `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
52 +| `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
53 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 100 % |
54 +| `salary_label` — Libellé salaire | texte salarial original | 100 % |
55 +| `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
56 +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % |
57 +| `date_posted` — Date de parution | ISO 8601 | 100 % |
58 +| `date_deadline` — Date limite | date limite pour postuler | 100 % |
59 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % |
60 +| `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
61 +| `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
62 +| `apply_url` — Candidature | lien de candidature directe | 0 % |
63 +| `gps` — GPS | lat/lng (géocodage sans invention) | 0 % |
64 +
65 +Exemple réel : *Summer Intern 2027 - Inside Sales - Montreal Office* — Montréal · The expected annual base salary range (prorated for the term) for this role is $49,000 - $… · parue le 2026-09-10.
40 66
41 67 ## Fréquence & budgets
42 68
@@ -51,15 +77,15 @@ Généré : 2026-09-21 18:06 EDT par scripts/gen_connector_docs.py — NE PAS
51 77
52 78 ## Volumétrie & complétude live
53 79
54 −*(mesuré le 2026-09-21 18:06 EDT dans `data/jobka.db`)*
80 +*(mesuré le 2026-09-26 06:34 EDT dans `data/jobka.db`)*
55 81
56 −- **Offres en base** : 5 (dont **0 actives**, 0 masquées comme doublons `dup_of`)
57 −- **Salaire** : 0/0 actives (—)
58 −- **GPS** : 0/0 actives (—)
59 −- **Mode** : 0/0 actives (—)
60 −- **Parution** : 0/0 actives (—)
61 −- **Dernier sync** : 2026-09-21 17:22 — trouvées 2, +0, ~0, -0
62 −- **Syncs enregistrés** (`sync_log`) : 311
82 +- **Offres en base** : 6 (dont **1 actives**, 0 masquées comme doublons `dup_of`)
83 +- **Salaire** : 1/1 actives (100 %)
84 +- **GPS** : 0/1 actives (0 %)
85 +- **Mode** : 0/1 actives (0 %)
86 +- **Parution** : 1/1 actives (100 %)
87 +- **Dernier sync** : 2026-09-26 06:34 — trouvées 1, +0, ~0, -0
88 +- **Syncs enregistrés** (`sync_log`) : 357
63 89
64 90 ## Erreurs & dépannage
65 91
modified jobka/connectors/mackenzie.py +23 −2
@@ -4,9 +4,10 @@
4 4 # Contact : contact@spboucher.ai
5 5 # Fichier : jobka/connectors/mackenzie.py
6 6 # Rôle : Connecteur Placements Mackenzie (groupe Power Corporation /
7 −# Financière IGM — bureau de Montréal) — iCIMS (portail FR)
8 −# Créé : 2026-08-19 Modifié : 2026-08-19
7 +# Financière IGM — bureau de Montréal) — iCIMS, portails FR + EN
8 +# Créé : 2026-08-19 Modifié : 2026-09-26
9 9 # =============================================================================
10 +from ..schema import JobPosting
10 11 from .icims import ICIMSConnector
11 12
12 13
@@ -14,3 +15,23 @@ class MackenzieConnector(ICIMSConnector):
14 15 source_id = "mackenzie"
15 16 EMPLOYER = "Placements Mackenzie"
16 17 SUB = "careersfr-mackenzieinvestments"
18 +
19 + # Le tenant iCIMS publie sur DEUX portails distincts par langue :
20 + # careersfr- (lié depuis mackenzieinvestments.com/fr/careers) et
21 + # careersen- (lié depuis /en/careers) — même espace d'IDs, mais chaque
22 + # offre n'apparaît que sur le(s) portail(s) où elle est publiée. Constat
23 + # 2026-09-26 : portail FR VIDE (vraie page « aucun emploi trouvé », les
24 + # 2 offres QC d'hier répondent 410) alors que le portail EN a 16 offres
25 + # dont 1 QC (6009 « Summer Intern 2027 - Inside Sales - Montreal Office »,
26 + # JSON-LD Montreal,QC) — invisible en mono-portail FR. On interroge donc
27 + # les deux portails et on fusionne par ID, version FR prioritaire
28 + # (même pattern que la fusion de cultures Dayforce, cf. fnfmb.py).
29 + SUBS = ("careersfr-mackenzieinvestments", "careersen-mackenzieinvestments")
30 +
31 + def fetch(self) -> list[JobPosting]:
32 + merged: dict[str, JobPosting] = {}
33 + for sub in self.SUBS:
34 + self.SUB = sub
35 + for job in super().fetch():
36 + merged.setdefault(job.external_id, job)
37 + return list(merged.values())
17 38
Menu

Theme