SPB Git

spb/job-ka

Public

[ka6] fix connecteur bento_sushi: le tenant ADP WFN a cessé d'exposer requisitionLocations (liste+détail, toutes langues) entre 23:35 et 02:00 EDT le 2026-10-23 — le filtre Québec rejetait les 8 offres pourtant toujours publiées (mêmes itemID, frères ADP sains: uniboard 12/12 avec locations → pas systémique). Correctif scoped au connecteur: les réquisitions sans location passent le filtre et la qualification Québec + ville/code postal sont extraites de l'adresse complète que l'employeur publie dans chaque description (« Emplacement Loblaws : 1840 Bd Monseigneur-Langlois, Salaberry-de-Valleyfield, QC J6S 5R1 »), marqueur QC explicite ou code postal G/H/J exclusif au Québec exigé — rien d'inventé, une offre sans marqueur QC est écartée, et le chemin normal reprend tel quel si ADP ré-expose les locations (fallback dormant). Canonicalisation « St Bruno de Montarville » → Saint-Bruno-de-Montarville via region_for_city/canonical_city. Sync isolé rejoué: ok=1 found=8 (= médiane 8.0), 8 offres QC actives avec ville/région/GPS et codes postaux gagnés (avant 0%). 108 tests verts, pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200. Fiches bento_sushi.md/ats-adp.md/INDEX.md régénérées (1131 autres fiches restaurées, hors périmètre).

Simon-Pierre Boucher committed (Oct 23, 2026) parent 19490bc Browse files

4 changed files +130 −47

modified docs/connecteurs/INDEX.md +24 −24
@@ -5,16 +5,16 @@ Auteur : Simon-Pierre Boucher
5 Contact : contact@spboucher.ai 5 Contact : contact@spboucher.ai
6 Fichier : docs/connecteurs/INDEX.md 6 Fichier : docs/connecteurs/INDEX.md
7 Rôle : Index généré de la documentation des connecteurs (ATS, employeurs, portails, dépôt) 7 Rôle : Index généré de la documentation des connecteurs (ATS, employeurs, portails, dépôt)
8−Généré : 2026-10-23 03:52 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, 8+Généré : 2026-10-23 05:25 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 relancer le script pour régénérer. 9 relancer le script pour régénérer.
10 ============================================================================= 10 =============================================================================
11 --> 11 -->
12 12
13 # Job·Ka — Connecteurs (index) 13 # Job·Ka — Connecteurs (index)
14 14
15−> Index généré le 2026-10-23 03:52 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-10-23 05:25 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−**1104 employeurs directs** connectés via **25 plateformes ATS** + **3 portails agrégateurs** + le canal de **dépôt direct** — **25985 offres actives** (23119 directes, 2866 portails ; 161 masquées comme doublons inter-sources, soit 25824 visibles). 1134 fiches. 17+**1104 employeurs directs** connectés via **25 plateformes ATS** + **3 portails agrégateurs** + le canal de **dépôt direct** — **25937 offres actives** (23091 directes, 2846 portails ; 162 masquées comme doublons inter-sources, soit 25775 visibles). 1134 fiches.
18 18
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). 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,12 +22,12 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser
22 22
23 | Plateforme | Employeurs | Actives | Salaire | GPS | 23 | Plateforme | Employeurs | Actives | Salaire | GPS |
24 |---|---|---|---|---| 24 |---|---|---|---|---|
25−| [`workday`](ats-workday.md) | 232 | 7505 | 47 % | 87 % | 25+| [`workday`](ats-workday.md) | 232 | 7479 | 48 % | 87 % |
26 | [`smartrecruiters`](ats-smartrecruiters.md) | 172 | 2918 | 16 % | 99 % | 26 | [`smartrecruiters`](ats-smartrecruiters.md) | 172 | 2918 | 16 % | 99 % |
27 | [`workable`](ats-workable.md) | 71 | 1999 | 18 % | 100 % | 27 | [`workable`](ats-workable.md) | 71 | 1999 | 18 % | 100 % |
28−| [`dayforce`](ats-dayforce.md) | 129 | 1925 | 9 % | 100 % | 28+| [`dayforce`](ats-dayforce.md) | 129 | 1924 | 9 % | 100 % |
29−| [`successfactors`](ats-successfactors.md) | 12 | 1691 | 17 % | 99 % | 29+| [`successfactors`](ats-successfactors.md) | 12 | 1690 | 17 % | 99 % |
30−| [`njoyn`](ats-njoyn.md) | 11 | 1255 | 70 % | 87 % | 30+| [`njoyn`](ats-njoyn.md) | 11 | 1254 | 70 % | 87 % |
31 | [`workland`](ats-workland.md) | 1 | 1184 | 36 % | 100 % | 31 | [`workland`](ats-workland.md) | 1 | 1184 | 36 % | 100 % |
32 | [`greenhouse`](ats-greenhouse.md) | 132 | 818 | 18 % | 100 % | 32 | [`greenhouse`](ats-greenhouse.md) | 132 | 818 | 18 % | 100 % |
33 | [`wpjobmanager`](ats-wpjobmanager.md) | 8 | 800 | 6 % | 100 % | 33 | [`wpjobmanager`](ats-wpjobmanager.md) | 8 | 800 | 6 % | 100 % |
@@ -35,7 +35,7 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser
35 | [`breezy`](ats-breezy.md) | 71 | 426 | 38 % | 95 % | 35 | [`breezy`](ats-breezy.md) | 71 | 426 | 38 % | 95 % |
36 | [`recruitee`](ats-recruitee.md) | 30 | 286 | 20 % | 97 % | 36 | [`recruitee`](ats-recruitee.md) | 30 | 286 | 20 % | 97 % |
37 | [`bamboohr`](ats-bamboohr.md) | 37 | 286 | 8 % | 100 % | 37 | [`bamboohr`](ats-bamboohr.md) | 37 | 286 | 8 % | 100 % |
38−| [`ashby`](ats-ashby.md) | 41 | 283 | 53 % | 54 % | 38+| [`ashby`](ats-ashby.md) | 41 | 284 | 53 % | 54 % |
39 | [`taleo_tbe`](ats-taleo_tbe.md) | 7 | 206 | 29 % | 56 % | 39 | [`taleo_tbe`](ats-taleo_tbe.md) | 7 | 206 | 29 % | 56 % |
40 | [`zoho_recruit`](ats-zoho_recruit.md) | 17 | 158 | 15 % | 87 % | 40 | [`zoho_recruit`](ats-zoho_recruit.md) | 17 | 158 | 15 % | 87 % |
41 | [`teamtailor`](ats-teamtailor.md) | 10 | 156 | 29 % | 96 % | 41 | [`teamtailor`](ats-teamtailor.md) | 10 | 156 | 29 % | 96 % |
@@ -52,9 +52,9 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser
52 52
53 | Source | Actives | Salaire | Dernier sync | 53 | Source | Actives | Salaire | Dernier sync |
54 |---|---|---|---| 54 |---|---|---|---|
55−| [Espresso-Jobs](espresso_jobs.md) | 315 | 20 % | 2026-10-23 02:21 | 55+| [Espresso-Jobs](espresso_jobs.md) | 314 | 20 % | 2026-10-23 04:37 |
56−| [Guichet-Emplois (Canada)](guichet_emplois.md) | 558 | 99 % | 2026-10-23 02:34 | 56+| [Guichet-Emplois (Canada)](guichet_emplois.md) | 502 | 99 % | 2026-10-23 04:58 |
57−| [Jobillico](jobillico.md) | 1993 | 37 % | 2026-10-23 02:48 | 57+| [Jobillico](jobillico.md) | 2030 | 36 % | 2026-10-23 05:19 |
58 | [Dépôt direct employeurs](depot-direct.md) | 0 (0 en modération) | — | au fil de l'eau | 58 | [Dépôt direct employeurs](depot-direct.md) | 0 (0 en modération) | — | au fil de l'eau |
59 59
60 ## Employeurs directs (par volume d'offres actives) 60 ## Employeurs directs (par volume d'offres actives)
@@ -62,15 +62,15 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser
62 | Employeur | ATS | Actives | Salaire | GPS | Dernier sync OK | 62 | Employeur | ATS | Actives | Salaire | GPS | Dernier sync OK |
63 |---|---|---|---|---|---| 63 |---|---|---|---|---|---|
64 | [Réseau Atlas Workland (~80 employeurs QC : CSS, cégeps, Santé Québec, STQ, UQTR…)](atlas_workland.md) | [`workland`](ats-workland.md) | 1184 | 36 % | 100 % | ✅ | 64 | [Réseau Atlas Workland (~80 employeurs QC : CSS, cégeps, Santé Québec, STQ, UQTR…)](atlas_workland.md) | [`workland`](ats-workland.md) | 1184 | 36 % | 100 % | ✅ |
65−| [Couche-Tard / Circle K](circlek.md) | [`workday`](ats-workday.md) | 994 | 69 % | 69 % | ✅ | 65+| [Couche-Tard / Circle K](circlek.md) | [`workday`](ats-workday.md) | 993 | 69 % | 68 % | ✅ |
66 | [Solution SFT](solution_sft.md) | [`workable`](ats-workable.md) | 956 | 25 % | 100 % | ✅ | 66 | [Solution SFT](solution_sft.md) | [`workable`](ats-workable.md) | 956 | 25 % | 100 % | ✅ |
67 | [Bombardier](bombardier.md) | [`successfactors`](ats-successfactors.md) | 953 | 1 % | 100 % | ✅ | 67 | [Bombardier](bombardier.md) | [`successfactors`](ats-successfactors.md) | 953 | 1 % | 100 % | ✅ |
68 | [Walmart Canada](walmart.md) | [`workday`](ats-workday.md) | 927 | 98 % | 89 % | ✅ | 68 | [Walmart Canada](walmart.md) | [`workday`](ats-workday.md) | 927 | 98 % | 89 % | ✅ |
69 | [Santé Québec — Montréal](sante_montreal.md) | [`njoyn`](ats-njoyn.md) | 818 | 97 % | 98 % | ✅ | 69 | [Santé Québec — Montréal](sante_montreal.md) | [`njoyn`](ats-njoyn.md) | 818 | 97 % | 98 % | ✅ |
70 | [Université McGill](mcgill.md) | [`workday`](ats-workday.md) | 435 | 82 % | 100 % | ✅ | 70 | [Université McGill](mcgill.md) | [`workday`](ats-workday.md) | 435 | 82 % | 100 % | ✅ |
71 | [TEHORA](tehora.md) | [`workable`](ats-workable.md) | 419 | 0 % | 100 % | ✅ | 71 | [TEHORA](tehora.md) | [`workable`](ats-workable.md) | 419 | 0 % | 100 % | ✅ |
72−| [CGI](cgi.md) | [`njoyn`](ats-njoyn.md) | 290 | 0 % | 94 % | ✅ | 72+| [CGI](cgi.md) | [`njoyn`](ats-njoyn.md) | 289 | 0 % | 94 % | ✅ |
73−| [Mouvement Desjardins](desjardins.md) | [`workday`](ats-workday.md) | 287 | 1 % | 92 % | ✅ | 73+| [Mouvement Desjardins](desjardins.md) | [`workday`](ats-workday.md) | 274 | 1 % | 92 % | ✅ |
74 | [Slihrms](slihrms.md) | [`workday`](ats-workday.md) | 258 | 11 % | 93 % | ✅ | 74 | [Slihrms](slihrms.md) | [`workday`](ats-workday.md) | 258 | 11 % | 93 % | ✅ |
75 | [CIMA+](cima2.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 255 | 1 % | 100 % | ✅ | 75 | [CIMA+](cima2.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 255 | 1 % | 100 % | ✅ |
76 | [Go RH](gorh.md) | [`lever`](ats-lever.md) | 255 | 17 % | 98 % | ✅ | 76 | [Go RH](gorh.md) | [`lever`](ats-lever.md) | 255 | 17 % | 98 % | ✅ |
@@ -101,8 +101,8 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser
101 | [CISSS de Lanaudière](cisss_lanaudiere.md) | [`wpjobmanager`](ats-wpjobmanager.md) | 98 | 9 % | 100 % | ✅ | 101 | [CISSS de Lanaudière](cisss_lanaudiere.md) | [`wpjobmanager`](ats-wpjobmanager.md) | 98 | 9 % | 100 % | ✅ |
102 | [Genetec](genetec_inc.md) | [`workable`](ats-workable.md) | 97 | 0 % | 100 % | ✅ | 102 | [Genetec](genetec_inc.md) | [`workable`](ats-workable.md) | 97 | 0 % | 100 % | ✅ |
103 | [Sépaq](sepaq.md) | [`taleo_tbe`](ats-taleo_tbe.md) | 97 | 54 % | 9 % | ✅ | 103 | [Sépaq](sepaq.md) | [`taleo_tbe`](ats-taleo_tbe.md) | 97 | 54 % | 9 % | ✅ |
104−| [Intact Corporation financière](intactfc.md) | [`workday`](ats-workday.md) | 96 | 0 % | 81 % | ✅ |
105 | [BMO Groupe financier](bmo.md) | [`workday`](ats-workday.md) | 95 | 85 % | 79 % | ✅ | 104 | [BMO Groupe financier](bmo.md) | [`workday`](ats-workday.md) | 95 | 85 % | 79 % | ✅ |
105+| [Intact Corporation financière](intactfc.md) | [`workday`](ats-workday.md) | 95 | 0 % | 82 % | ✅ |
106 | [UAP Inc.](uapinc.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 90 | 43 % | 98 % | ✅ | 106 | [UAP Inc.](uapinc.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 90 | 43 % | 98 % | ✅ |
107 | [HIKINEX](recruiting.md) | [`breezy`](ats-breezy.md) | 89 | 0 % | 100 % | ✅ | 107 | [HIKINEX](recruiting.md) | [`breezy`](ats-breezy.md) | 89 | 0 % | 100 % | ✅ |
108 | [Renaud-Bray](renaud_bray.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 85 | 1 % | 100 % | ✅ | 108 | [Renaud-Bray](renaud_bray.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 85 | 1 % | 100 % | ✅ |
@@ -113,8 +113,8 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser
113 | [Gflenv](gflenv.md) | [`workday`](ats-workday.md) | 80 | 5 % | 85 % | ✅ | 113 | [Gflenv](gflenv.md) | [`workday`](ats-workday.md) | 80 | 5 % | 85 % | ✅ |
114 | [CAE](cae.md) | [`workday`](ats-workday.md) | 77 | 18 % | 95 % | ✅ | 114 | [CAE](cae.md) | [`workday`](ats-workday.md) | 77 | 18 % | 95 % | ✅ |
115 | [CISSS de l'Outaouais](cisss_outaouais.md) | [`wpjobmanager`](ats-wpjobmanager.md) | 77 | 29 % | 100 % | ✅ | 115 | [CISSS de l'Outaouais](cisss_outaouais.md) | [`wpjobmanager`](ats-wpjobmanager.md) | 77 | 29 % | 100 % | ✅ |
116−| [Gevernova](gevernova.md) | [`workday`](ats-workday.md) | 77 | 21 % | 96 % | ✅ | 116+| [Gevernova](gevernova.md) | [`workday`](ats-workday.md) | 73 | 22 % | 96 % | ✅ |
117−| [Banque CIBC](cibc.md) | [`workday`](ats-workday.md) | 74 | 0 % | 100 % | ✅ | 117+| [Banque CIBC](cibc.md) | [`workday`](ats-workday.md) | 72 | 0 % | 100 % | ✅ |
118 | [MaintainX](maintainx.md) | [`ashby`](ats-ashby.md) | 67 | 93 % | 73 % | ✅ | 118 | [MaintainX](maintainx.md) | [`ashby`](ats-ashby.md) | 67 | 93 % | 73 % | ✅ |
119 | [EMCO](emcocorporation.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 66 | 42 % | 100 % | ✅ | 119 | [EMCO](emcocorporation.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 66 | 42 % | 100 % | ✅ |
120 | [Norda Stelo](nordastelo.md) | [`teamtailor`](ats-teamtailor.md) | 65 | 0 % | 97 % | ✅ | 120 | [Norda Stelo](nordastelo.md) | [`teamtailor`](ats-teamtailor.md) | 65 | 0 % | 97 % | ✅ |
@@ -147,11 +147,11 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser
147 | [Firststudent](firststudent.md) | [`workday`](ats-workday.md) | 46 | 37 % | 96 % | ✅ | 147 | [Firststudent](firststudent.md) | [`workday`](ats-workday.md) | 46 | 37 % | 96 % | ✅ |
148 | [SOGECLAIR](sogeclair.md) | [`workable`](ats-workable.md) | 46 | 2 % | 100 % | ✅ | 148 | [SOGECLAIR](sogeclair.md) | [`workable`](ats-workable.md) | 46 | 2 % | 100 % | ✅ |
149 | [Techo-Bloc](techo_bloc.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 46 | 39 % | 100 % | ✅ | 149 | [Techo-Bloc](techo_bloc.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 46 | 39 % | 100 % | ✅ |
150−| [Hydro-Québec](hydroquebec.md) | [`successfactors`](ats-successfactors.md) | 45 | 18 % | 71 % | ✅ |
151 | [Laura Canada](lauracanada.md) | [`dayforce`](ats-dayforce.md) | 45 | 0 % | 100 % | ✅ | 150 | [Laura Canada](lauracanada.md) | [`dayforce`](ats-dayforce.md) | 45 | 0 % | 100 % | ✅ |
152 | [Saputo](saputo.md) | [`workday`](ats-workday.md) | 45 | 82 % | 100 % | ✅ | 151 | [Saputo](saputo.md) | [`workday`](ats-workday.md) | 45 | 82 % | 100 % | ✅ |
153 | [Unoria](unoria.md) | [`dayforce`](ats-dayforce.md) | 45 | 0 % | 100 % | ✅ | 152 | [Unoria](unoria.md) | [`dayforce`](ats-dayforce.md) | 45 | 0 % | 100 % | ✅ |
154 | [Alterra](alterra.md) | [`workday`](ats-workday.md) | 44 | 66 % | 100 % | ✅ | 153 | [Alterra](alterra.md) | [`workday`](ats-workday.md) | 44 | 66 % | 100 % | ✅ |
154+| [Hydro-Québec](hydroquebec.md) | [`successfactors`](ats-successfactors.md) | 44 | 18 % | 70 % | ✅ |
155 | [La Maison Simons](simons.md) | [`workday`](ats-workday.md) | 44 | 0 % | 89 % | ✅ | 155 | [La Maison Simons](simons.md) | [`workday`](ats-workday.md) | 44 | 0 % | 89 % | ✅ |
156 | [Levio](levio.md) | [`greenhouse`](ats-greenhouse.md) | 44 | 0 % | 100 % | ✅ | 156 | [Levio](levio.md) | [`greenhouse`](ats-greenhouse.md) | 44 | 0 % | 100 % | ✅ |
157 | [Bdo](bdo.md) | [`workday`](ats-workday.md) | 43 | 7 % | 70 % | ✅ | 157 | [Bdo](bdo.md) | [`workday`](ats-workday.md) | 43 | 7 % | 70 % | ✅ |
@@ -177,10 +177,10 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser
177 | [Rio Tinto](riotinto.md) | [`workday`](ats-workday.md) | 37 | 0 % | 97 % | ✅ | 177 | [Rio Tinto](riotinto.md) | [`workday`](ats-workday.md) | 37 | 0 % | 97 % | ✅ |
178 | [Coveo](coveofr.md) | [`greenhouse`](ats-greenhouse.md) | 36 | 0 % | 100 % | ✅ | 178 | [Coveo](coveofr.md) | [`greenhouse`](ats-greenhouse.md) | 36 | 0 % | 100 % | ✅ |
179 | [Domtar](domtar.md) | [`successfactors`](ats-successfactors.md) | 36 | 11 % | 100 % | ✅ | 179 | [Domtar](domtar.md) | [`successfactors`](ats-successfactors.md) | 36 | 11 % | 100 % | ✅ |
180−| [Imperial Brady Canada](imperialdade.md) | [`dayforce`](ats-dayforce.md) | 36 | 0 % | 100 % | ✅ |
181 | [KABS](kabs.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 36 | 0 % | 100 % | ✅ | 180 | [KABS](kabs.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 36 | 0 % | 100 % | ✅ |
182 | [QSL](qsl.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 36 | 25 % | 100 % | ✅ | 181 | [QSL](qsl.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 36 | 25 % | 100 % | ✅ |
183 | [Uhaul](uhaul.md) | [`workday`](ats-workday.md) | 36 | 0 % | 100 % | ✅ | 182 | [Uhaul](uhaul.md) | [`workday`](ats-workday.md) | 36 | 0 % | 100 % | ✅ |
183+| [Imperial Brady Canada](imperialdade.md) | [`dayforce`](ats-dayforce.md) | 35 | 0 % | 100 % | ✅ |
184 | [Montreal Export Package Handler (18:00-23:00)](hcmportal.md) | [`workday`](ats-workday.md) | 35 | 83 % | 100 % | ✅ | 184 | [Montreal Export Package Handler (18:00-23:00)](hcmportal.md) | [`workday`](ats-workday.md) | 35 | 83 % | 100 % | ✅ |
185 | [CDPQ — Caisse de dépôt et placement du Québec](cdpq.md) | [`workday`](ats-workday.md) | 34 | 0 % | 100 % | ✅ | 185 | [CDPQ — Caisse de dépôt et placement du Québec](cdpq.md) | [`workday`](ats-workday.md) | 34 | 0 % | 100 % | ✅ |
186 | [OPENLANE Canada](openlane.md) | [`workday`](ats-workday.md) | 34 | 24 % | 88 % | ✅ | 186 | [OPENLANE Canada](openlane.md) | [`workday`](ats-workday.md) | 34 | 24 % | 88 % | ✅ |
@@ -189,11 +189,11 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser
189 | [Rodeo FX](rodeofx.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 33 | 0 % | 94 % | ✅ | 189 | [Rodeo FX](rodeofx.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 33 | 0 % | 94 % | ✅ |
190 | [Abinbev](abinbev.md) | [`workday`](ats-workday.md) | 32 | 100 % | 100 % | ✅ | 190 | [Abinbev](abinbev.md) | [`workday`](ats-workday.md) | 32 | 100 % | 100 % | ✅ |
191 | [AppDirect](appdirect.md) | [`greenhouse`](ats-greenhouse.md) | 32 | 31 % | 100 % | ✅ | 191 | [AppDirect](appdirect.md) | [`greenhouse`](ats-greenhouse.md) | 32 | 31 % | 100 % | ✅ |
192−| [Cineplex](cineplex.md) | [`workday`](ats-workday.md) | 32 | 0 % | 53 % | ✅ |
193 | [Coveo](coveoen.md) | [`greenhouse`](ats-greenhouse.md) | 32 | 0 % | 100 % | ✅ | 192 | [Coveo](coveoen.md) | [`greenhouse`](ats-greenhouse.md) | 32 | 0 % | 100 % | ✅ |
194 | [EXFO](exfo.md) | [`workday`](ats-workday.md) | 32 | 0 % | 100 % | ✅ | 193 | [EXFO](exfo.md) | [`workday`](ats-workday.md) | 32 | 0 % | 100 % | ✅ |
195 | [Onepoint (nventive / Logient)](onepoint.md) | [`workday`](ats-workday.md) | 32 | 0 % | 100 % | ✅ | 194 | [Onepoint (nventive / Logient)](onepoint.md) | [`workday`](ats-workday.md) | 32 | 0 % | 100 % | ✅ |
196 | [AccorHotel](accorhotel.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 31 | 61 % | 100 % | ✅ | 195 | [AccorHotel](accorhotel.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 31 | 61 % | 100 % | ✅ |
196+| [Cineplex](cineplex.md) | [`workday`](ats-workday.md) | 31 | 0 % | 52 % | ✅ |
197 | [Le Massif de Charlevoix](lemassif.md) | [`dayforce`](ats-dayforce.md) | 31 | 0 % | 100 % | ✅ | 197 | [Le Massif de Charlevoix](lemassif.md) | [`dayforce`](ats-dayforce.md) | 31 | 0 % | 100 % | ✅ |
198 | [LG2](lg2.md) | [`recruitee`](ats-recruitee.md) | 31 | 3 % | 100 % | ✅ | 198 | [LG2](lg2.md) | [`recruitee`](ats-recruitee.md) | 31 | 3 % | 100 % | ✅ |
199 | [Tecsys](tecsys.md) | [`workable`](ats-workable.md) | 31 | 0 % | 100 % | ✅ | 199 | [Tecsys](tecsys.md) | [`workable`](ats-workable.md) | 31 | 0 % | 100 % | ✅ |
@@ -333,7 +333,6 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser
333 | [Comptable de projet / Project Accountant](ellisdon.md) | [`workday`](ats-workday.md) | 14 | 14 % | 93 % | ✅ | 333 | [Comptable de projet / Project Accountant](ellisdon.md) | [`workday`](ats-workday.md) | 14 | 14 % | 93 % | ✅ |
334 | [dentago](dentago.md) | [`zoho_recruit`](ats-zoho_recruit.md) | 14 | 7 % | 64 % | ✅ | 334 | [dentago](dentago.md) | [`zoho_recruit`](ats-zoho_recruit.md) | 14 | 7 % | 64 % | ✅ |
335 | [Défis RH](defisrh.md) | [`zoho_recruit`](ats-zoho_recruit.md) | 14 | 50 % | 100 % | ✅ | 335 | [Défis RH](defisrh.md) | [`zoho_recruit`](ats-zoho_recruit.md) | 14 | 50 % | 100 % | ✅ |
336−| [Fccfac](fccfac.md) | [`workday`](ats-workday.md) | 14 | 93 % | 50 % | ✅ |
337 | [GSK](gsk.md) | [`workday`](ats-workday.md) | 14 | 7 % | 100 % | ✅ | 336 | [GSK](gsk.md) | [`workday`](ats-workday.md) | 14 | 7 % | 100 % | ✅ |
338 | [Nutreco](nutreco.md) | [`workday`](ats-workday.md) | 14 | 7 % | 100 % | ✅ | 337 | [Nutreco](nutreco.md) | [`workday`](ats-workday.md) | 14 | 7 % | 100 % | ✅ |
339 | [OSEDEA](osedea.md) | [`lever`](ats-lever.md) | 14 | 0 % | 100 % | ✅ | 338 | [OSEDEA](osedea.md) | [`lever`](ats-lever.md) | 14 | 0 % | 100 % | ✅ |
@@ -350,6 +349,7 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser
350 | [Egon Zehnder](ezrecruiting.md) | [`workable`](ats-workable.md) | 13 | 8 % | 100 % | ✅ | 349 | [Egon Zehnder](ezrecruiting.md) | [`workable`](ats-workable.md) | 13 | 8 % | 100 % | ✅ |
351 | [Epic Games](epicgames.md) | [`greenhouse`](ats-greenhouse.md) | 13 | 0 % | 100 % | ✅ | 350 | [Epic Games](epicgames.md) | [`greenhouse`](ats-greenhouse.md) | 13 | 0 % | 100 % | ✅ |
352 | [Explorance](explorance.md) | [`bamboohr`](ats-bamboohr.md) | 13 | 0 % | 100 % | ✅ | 351 | [Explorance](explorance.md) | [`bamboohr`](ats-bamboohr.md) | 13 | 0 % | 100 % | ✅ |
352+| [Fccfac](fccfac.md) | [`workday`](ats-workday.md) | 13 | 92 % | 46 % | ✅ |
353 | [Gameloft](gameloft.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 13 | 0 % | 100 % | ✅ | 353 | [Gameloft](gameloft.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 13 | 0 % | 100 % | ✅ |
354 | [Groupe AGF](groupeagf.md) | [`dayforce`](ats-dayforce.md) | 13 | 38 % | 100 % | ✅ | 354 | [Groupe AGF](groupeagf.md) | [`dayforce`](ats-dayforce.md) | 13 | 38 % | 100 % | ✅ |
355 | [Intervenant·e au suivi psychosocial](obm.md) | [`dayforce`](ats-dayforce.md) | 13 | 15 % | 100 % | ✅ | 355 | [Intervenant·e au suivi psychosocial](obm.md) | [`dayforce`](ats-dayforce.md) | 13 | 15 % | 100 % | ✅ |
@@ -371,7 +371,6 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser
371 | [Avantage Plus](avantageplus.md) | [`recruitee`](ats-recruitee.md) | 12 | 17 % | 100 % | ✅ | 371 | [Avantage Plus](avantageplus.md) | [`recruitee`](ats-recruitee.md) | 12 | 17 % | 100 % | ✅ |
372 | [Botpress](botpress.md) | [`workable`](ats-workable.md) | 12 | 0 % | 100 % | ✅ | 372 | [Botpress](botpress.md) | [`workable`](ats-workable.md) | 12 | 0 % | 100 % | ✅ |
373 | [Brasseries Sleeman (Unibroue)](sleeman.md) | [`workday`](ats-workday.md) | 12 | 8 % | 92 % | ✅ | 373 | [Brasseries Sleeman (Unibroue)](sleeman.md) | [`workday`](ats-workday.md) | 12 | 8 % | 92 % | ✅ |
374−| [Cisco](cisco.md) | [`workday`](ats-workday.md) | 12 | 100 % | 33 % | ✅ |
375 | [Evolving Web](evolving_web.md) | [`workable`](ats-workable.md) | 12 | 0 % | 100 % | ✅ | 374 | [Evolving Web](evolving_web.md) | [`workable`](ats-workable.md) | 12 | 0 % | 100 % | ✅ |
376 | [Groupe Master](groupe_master.md) | [`njoyn`](ats-njoyn.md) | 12 | 75 % | 100 % | ✅ | 375 | [Groupe Master](groupe_master.md) | [`njoyn`](ats-njoyn.md) | 12 | 75 % | 100 % | ✅ |
377 | [Groupe Montoni](groupemontoni.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 12 | 0 % | 100 % | ✅ | 376 | [Groupe Montoni](groupemontoni.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 12 | 0 % | 100 % | ✅ |
@@ -389,6 +388,7 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser
389 | [AlayaCare](alayacare.md) | [`greenhouse`](ats-greenhouse.md) | 11 | 0 % | 100 % | ✅ | 388 | [AlayaCare](alayacare.md) | [`greenhouse`](ats-greenhouse.md) | 11 | 0 % | 100 % | ✅ |
390 | [Bayshore HealthCare](bayshore.md) | [`taleo`](ats-taleo.md) | 11 | 0 % | 100 % | ✅ | 389 | [Bayshore HealthCare](bayshore.md) | [`taleo`](ats-taleo.md) | 11 | 0 % | 100 % | ✅ |
391 | [CEP Forensique](cep.md) | [`dayforce`](ats-dayforce.md) | 11 | 0 % | 100 % | ✅ | 390 | [CEP Forensique](cep.md) | [`dayforce`](ats-dayforce.md) | 11 | 0 % | 100 % | ✅ |
391+| [Cisco](cisco.md) | [`workday`](ats-workday.md) | 11 | 100 % | 27 % | ✅ |
392 | [Colabor](colabor.md) | [`dayforce`](ats-dayforce.md) | 11 | 9 % | 100 % | ✅ | 392 | [Colabor](colabor.md) | [`dayforce`](ats-dayforce.md) | 11 | 9 % | 100 % | ✅ |
393 | [Cook It](cookit.md) | [`adp`](ats-adp.md) | 11 | 64 % | 100 % | ✅ | 393 | [Cook It](cookit.md) | [`adp`](ats-adp.md) | 11 | 64 % | 100 % | ✅ |
394 | [EOS Aircraft](eosaircraftinc.md) | [`bamboohr`](ats-bamboohr.md) | 11 | 0 % | 100 % | ✅ | 394 | [EOS Aircraft](eosaircraftinc.md) | [`bamboohr`](ats-bamboohr.md) | 11 | 0 % | 100 % | ✅ |
@@ -484,7 +484,6 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser
484 | [CAM Mécanique](cammecanique.md) | [`teamtailor`](ats-teamtailor.md) | 8 | 0 % | 100 % | ✅ | 484 | [CAM Mécanique](cammecanique.md) | [`teamtailor`](ats-teamtailor.md) | 8 | 0 % | 100 % | ✅ |
485 | [Canadian Helicopters](canadianhelicopters.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 8 | 0 % | 100 % | ✅ | 485 | [Canadian Helicopters](canadianhelicopters.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 8 | 0 % | 100 % | ✅ |
486 | [CF Montréal](cfmontreal.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 8 | 0 % | 75 % | ✅ | 486 | [CF Montréal](cfmontreal.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 8 | 0 % | 75 % | ✅ |
487−| [Chef de secteur](gsknch.md) | [`workday`](ats-workday.md) | 8 | 0 % | 100 % | ✅ |
488 | [Cloud Chamber Montréal](cloudchamberfr.md) | [`greenhouse`](ats-greenhouse.md) | 8 | 0 % | 100 % | ✅ | 487 | [Cloud Chamber Montréal](cloudchamberfr.md) | [`greenhouse`](ats-greenhouse.md) | 8 | 0 % | 100 % | ✅ |
489 | [Coordinateur, Achats Numériques](dentsuaegis.md) | [`workday`](ats-workday.md) | 8 | 88 % | 88 % | ✅ | 488 | [Coordinateur, Achats Numériques](dentsuaegis.md) | [`workday`](ats-workday.md) | 8 | 88 % | 88 % | ✅ |
490 | [DRW](drweng.md) | [`greenhouse`](ats-greenhouse.md) | 8 | 0 % | 100 % | ✅ | 489 | [DRW](drweng.md) | [`greenhouse`](ats-greenhouse.md) | 8 | 0 % | 100 % | ✅ |
@@ -561,6 +560,7 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser
561 | [Carnaval de Québec Inc.](carnaval.md) | [`zoho_recruit`](ats-zoho_recruit.md) | 6 | 0 % | 100 % | ✅ | 560 | [Carnaval de Québec Inc.](carnaval.md) | [`zoho_recruit`](ats-zoho_recruit.md) | 6 | 0 % | 100 % | ✅ |
562 | [Carrier](carrier.md) | [`workday`](ats-workday.md) | 6 | 83 % | 50 % | ✅ | 561 | [Carrier](carrier.md) | [`workday`](ats-workday.md) | 6 | 83 % | 50 % | ✅ |
563 | [Chef d'équipe Agile](aspentech.md) | [`workday`](ats-workday.md) | 6 | 0 % | 100 % | ✅ | 562 | [Chef d'équipe Agile](aspentech.md) | [`workday`](ats-workday.md) | 6 | 0 % | 100 % | ✅ |
563+| [Chef de secteur](gsknch.md) | [`workday`](ats-workday.md) | 6 | 0 % | 100 % | ✅ |
564 | [Church & Dwight Canada](churchdwight.md) | [`workday`](ats-workday.md) | 6 | 0 % | 100 % | ✅ | 564 | [Church & Dwight Canada](churchdwight.md) | [`workday`](ats-workday.md) | 6 | 0 % | 100 % | ✅ |
565 | [Clyde & Co](clydeco.md) | [`workday`](ats-workday.md) | 6 | 0 % | 100 % | ✅ | 565 | [Clyde & Co](clydeco.md) | [`workday`](ats-workday.md) | 6 | 0 % | 100 % | ✅ |
566 | [Conseil de gestion financière des Premières Nations (FNFMB)](fnfmb.md) | [`dayforce`](ats-dayforce.md) | 6 | 0 % | 100 % | ✅ | 566 | [Conseil de gestion financière des Premières Nations (FNFMB)](fnfmb.md) | [`dayforce`](ats-dayforce.md) | 6 | 0 % | 100 % | ✅ |
@@ -750,6 +750,7 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser
750 | [Haven Interactive Studios - English](havenenglish.md) | [`greenhouse`](ats-greenhouse.md) | 3 | 0 % | 100 % | ✅ | 750 | [Haven Interactive Studios - English](havenenglish.md) | [`greenhouse`](ats-greenhouse.md) | 3 | 0 % | 100 % | ✅ |
751 | [Homepage](quanteo.md) | [`recruitee`](ats-recruitee.md) | 3 | 67 % | 100 % | ✅ | 751 | [Homepage](quanteo.md) | [`recruitee`](ats-recruitee.md) | 3 | 67 % | 100 % | ✅ |
752 | [Hopper](hopper.md) | [`ashby`](ats-ashby.md) | 3 | 33 % | 67 % | ✅ | 752 | [Hopper](hopper.md) | [`ashby`](ats-ashby.md) | 3 | 33 % | 67 % | ✅ |
753+| [inBeat Agency](inbeat_agency.md) | [`ashby`](ats-ashby.md) | 3 | 0 % | 0 % | ✅ |
753 | [Intersand](intersand.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 3 | 0 % | 100 % | ✅ | 754 | [Intersand](intersand.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 3 | 0 % | 100 % | ✅ |
754 | [Keyrus](keyrus2.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 3 | 0 % | 100 % | ✅ | 755 | [Keyrus](keyrus2.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 3 | 0 % | 100 % | ✅ |
755 | [LE CAFÉ DES ARTISTES](lecafdesartistes.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 3 | 0 % | 100 % | ✅ | 756 | [LE CAFÉ DES ARTISTES](lecafdesartistes.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 3 | 0 % | 100 % | ✅ |
@@ -827,7 +828,6 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser
827 | [Groupe BC2](bc2.md) | [`bamboohr`](ats-bamboohr.md) | 2 | 0 % | 100 % | ✅ | 828 | [Groupe BC2](bc2.md) | [`bamboohr`](ats-bamboohr.md) | 2 | 0 % | 100 % | ✅ |
828 | [Groupe Unigesco](groupe_unigesco.md) | [`breezy`](ats-breezy.md) | 2 | 100 % | 100 % | ✅ | 829 | [Groupe Unigesco](groupe_unigesco.md) | [`breezy`](ats-breezy.md) | 2 | 100 % | 100 % | ✅ |
829 | [HP](hp.md) | [`workday`](ats-workday.md) | 2 | 100 % | 100 % | ✅ | 830 | [HP](hp.md) | [`workday`](ats-workday.md) | 2 | 100 % | 100 % | ✅ |
830−| [inBeat Agency](inbeat_agency.md) | [`ashby`](ats-ashby.md) | 2 | 0 % | 0 % | ✅ |
831 | [Jj](jj.md) | [`workday`](ats-workday.md) | 2 | 100 % | 50 % | ✅ | 831 | [Jj](jj.md) | [`workday`](ats-workday.md) | 2 | 100 % | 50 % | ✅ |
832 | [Kiongroup](kiongroup.md) | [`workday`](ats-workday.md) | 2 | 50 % | 50 % | ✅ | 832 | [Kiongroup](kiongroup.md) | [`workday`](ats-workday.md) | 2 | 50 % | 50 % | ✅ |
833 | [Kodify Media Group](kodify.md) | [`recruitee`](ats-recruitee.md) | 2 | 0 % | 100 % | ✅ | 833 | [Kodify Media Group](kodify.md) | [`recruitee`](ats-recruitee.md) | 2 | 0 % | 100 % | ✅ |
modified docs/connecteurs/ats-adp.md +8 −8
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 Contact : contact@spboucher.ai 5 Contact : contact@spboucher.ai
6 Fichier : docs/connecteurs/ats-adp.md 6 Fichier : docs/connecteurs/ats-adp.md
7 Rôle : Fiche plateforme ATS adp — mécanique partagée + tableau des 17 tenants 7 Rôle : Fiche plateforme ATS adp — mécanique partagée + tableau des 17 tenants
8−Généré : 2026-10-23 03:52 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, 8+Généré : 2026-10-23 05:25 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 relancer le script pour régénérer. 9 relancer le script pour régénérer.
10 ============================================================================= 10 =============================================================================
11 --> 11 -->
@@ -40,18 +40,18 @@ Généré : 2026-10-23 03:52 EDT par scripts/gen_connector_docs.py — NE PAS
40 40
41 | Employeur | Actives | Salaire | GPS | Mode | Dernier sync | OK | 41 | Employeur | Actives | Salaire | GPS | Mode | Dernier sync | OK |
42 |---|---|---|---|---|---|---| 42 |---|---|---|---|---|---|---|
43−| [Groupe Nordik (Nordik Spa-Nature)](groupe_nordik.md) | 19 | 26 % | 100 % | 0 % | 2026-10-23 02:27 | ✅ | 43+| [Groupe Nordik (Nordik Spa-Nature)](groupe_nordik.md) | 19 | 26 % | 100 % | 0 % | 2026-10-23 04:51 | ✅ |
44 | [Uniboard](uniboard.md) | 19 | 32 % | 63 % | 0 % | 2026-10-23 03:37 | ✅ | 44 | [Uniboard](uniboard.md) | 19 | 32 % | 63 % | 0 % | 2026-10-23 03:37 | ✅ |
45 | [UV Assurance](uv_assurance.md) | 12 | 0 % | 100 % | 0 % | 2026-10-23 03:52 | ✅ | 45 | [UV Assurance](uv_assurance.md) | 12 | 0 % | 100 % | 0 % | 2026-10-23 03:52 | ✅ |
46 | [Strathmore](strathmore.md) | 11 | 45 % | 100 % | 9 % | 2026-10-23 03:15 | ✅ | 46 | [Strathmore](strathmore.md) | 11 | 45 % | 100 % | 9 % | 2026-10-23 03:15 | ✅ |
47 | [Quincaillerie Richelieu](richelieu.md) | 11 | 0 % | 100 % | 0 % | 2026-10-23 03:04 | ✅ | 47 | [Quincaillerie Richelieu](richelieu.md) | 11 | 0 % | 100 % | 0 % | 2026-10-23 03:04 | ✅ |
48−| [Cook It](cookit.md) | 11 | 64 % | 100 % | 0 % | 2026-10-23 02:14 | ✅ | 48+| [Cook It](cookit.md) | 11 | 64 % | 100 % | 0 % | 2026-10-23 04:26 | ✅ |
49−| [Canadian Royalties](canadian_royalties.md) | 10 | 40 % | 100 % | 0 % | 2026-10-23 03:52 | ✅ | 49+| [Canadian Royalties](canadian_royalties.md) | 10 | 40 % | 100 % | 0 % | 2026-10-23 04:03 | ✅ |
50−| [H2O Innovation](h2o_innovation.md) | 10 | 10 % | 100 % | 0 % | 2026-10-23 02:35 | ✅ | 50+| [H2O Innovation](h2o_innovation.md) | 10 | 10 % | 100 % | 0 % | 2026-10-23 04:58 | ✅ |
51−| [Bento Sushi](bento_sushi.md) | 8 | 88 % | 100 % | 0 % | 2026-10-23 03:45 | ✅ | 51+| [Bento Sushi](bento_sushi.md) | 8 | 88 % | 100 % | 0 % | 2026-10-23 05:25 | ✅ |
52 | [MSI Gestion immobilière](msi_gestion.md) | 6 | 100 % | 100 % | 50 % | 2026-10-23 02:55 | ✅ | 52 | [MSI Gestion immobilière](msi_gestion.md) | 6 | 100 % | 100 % | 50 % | 2026-10-23 02:55 | ✅ |
53−| [Cultures Gen V](cultures_genv.md) | 5 | 20 % | 100 % | 0 % | 2026-10-23 02:15 | ✅ | 53+| [Cultures Gen V](cultures_genv.md) | 5 | 20 % | 100 % | 0 % | 2026-10-23 04:26 | ✅ |
54−| [Abritek](abritek.md) | 5 | 100 % | 100 % | 0 % | 2026-10-23 03:38 | ✅ | 54+| [Abritek](abritek.md) | 5 | 100 % | 100 % | 0 % | 2026-10-23 03:53 | ✅ |
55 | [Mitsubishi HC Capital Canada](mitsubishi_hc_capital.md) | 1 | 0 % | 100 % | 0 % | 2026-10-23 02:54 | ✅ | 55 | [Mitsubishi HC Capital Canada](mitsubishi_hc_capital.md) | 1 | 0 % | 100 % | 0 % | 2026-10-23 02:54 | ✅ |
56 | [Osgoode Properties](osgoode_properties.md) | 1 | 100 % | 100 % | 0 % | 2026-10-23 02:57 | ✅ | 56 | [Osgoode Properties](osgoode_properties.md) | 1 | 100 % | 100 % | 0 % | 2026-10-23 02:57 | ✅ |
57 | [Niobec (Magris Performance Materials)](niobec.md) | 1 | 100 % | 100 % | 0 % | 2026-10-23 02:56 | ✅ | 57 | [Niobec (Magris Performance Materials)](niobec.md) | 1 | 100 % | 100 % | 0 % | 2026-10-23 02:56 | ✅ |
modified docs/connecteurs/bento_sushi.md +14 −14
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 Contact : contact@spboucher.ai 5 Contact : contact@spboucher.ai
6 Fichier : docs/connecteurs/bento_sushi.md 6 Fichier : docs/connecteurs/bento_sushi.md
7 Rôle : Fiche connecteur — Bento Sushi (employeur direct, ATS adp) 7 Rôle : Fiche connecteur — Bento Sushi (employeur direct, ATS adp)
8−Généré : 2026-10-14 18:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, 8+Généré : 2026-10-23 05:25 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 relancer le script pour régénérer. 9 relancer le script pour régénérer.
10 ============================================================================= 10 =============================================================================
11 --> 11 -->
@@ -38,7 +38,7 @@ Généré : 2026-10-14 18:40 EDT par scripts/gen_connector_docs.py — NE PAS
38 38
39 ## Champs → schéma 39 ## Champs → schéma
40 40
41−Complétude mesurée sur les **10 offres actives** de la source (base live, 2026-10-14 18:40 EDT). 41+Complétude mesurée sur les **8 offres actives** de la source (base live, 2026-10-23 05:25 EDT).
42 42
43 | Champ (`jobs.*`) | Rôle | Complétude | 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 |---|---|---| 44 |---|---|---|
@@ -52,19 +52,19 @@ Complétude mesurée sur les **10 offres actives** de la source (base live, 2026
52 | `postal_code` — Code postal | code postal si publié | 100 % | 52 | `postal_code` — Code postal | code postal si publié | 100 % |
53 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % | 53 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
54 | `employment_type` — Type | temps_plein / temps_partiel / … | 100 % | 54 | `employment_type` — Type | temps_plein / temps_partiel / … | 100 % |
55−| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 90 % | 55+| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 88 % |
56−| `salary_label` — Libellé salaire | texte salarial original | 30 % | 56+| `salary_label` — Libellé salaire | texte salarial original | 12 % |
57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % | 57 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
58 | `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % | 58 | `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
59 | `date_posted` — Date de parution | ISO 8601 | 100 % | 59 | `date_posted` — Date de parution | ISO 8601 | 100 % |
60 | `date_deadline` — Date limite | date limite pour postuler | 0 % | 60 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
61−| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 10 % | 61+| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 12 % |
62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % | 62 | `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % |
63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % | 63 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
64 | `apply_url` — Candidature | lien de candidature directe | 0 % | 64 | `apply_url` — Candidature | lien de candidature directe | 0 % |
65 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % | 65 | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % |
66 66
67−Exemple réel : *Membres de l'équipe de service alimentaire* — Sherbrooke · Poste à temps partiel, entrée en fonction immédiate, à partir de 17,00 $/h · parue le 2026-09-22. 67+Exemple réel : *Membres de l'équipe de service alimentaire* — Salaberry-de-Valleyfield · Temps partiel commencent immédiatement à 17,50 $ /heure · parue le 2026-10-21.
68 68
69 ## Fréquence & budgets 69 ## Fréquence & budgets
70 70
@@ -79,15 +79,15 @@ Exemple réel : *Membres de l'équipe de service alimentaire* — Sherbrooke ·
79 79
80 ## Volumétrie & complétude live 80 ## Volumétrie & complétude live
81 81
82−*(mesuré le 2026-10-14 18:40 EDT dans `data/jobka.db`)* 82+*(mesuré le 2026-10-23 05:25 EDT dans `data/jobka.db`)*
83 83
84−- **Offres en base** : 15 (dont **10 actives**, 0 masquées comme doublons `dup_of`) 84+- **Offres en base** : 16 (dont **8 actives**, 0 masquées comme doublons `dup_of`)
85−- **Salaire** : 9/10 actives (90 %) 85+- **Salaire** : 7/8 actives (88 %)
86−- **GPS** : 10/10 actives (100 %) 86+- **GPS** : 8/8 actives (100 %)
87−- **Mode** : 0/10 actives (0 %) 87+- **Mode** : 0/8 actives (0 %)
88−- **Parution** : 10/10 actives (100 %) 88+- **Parution** : 8/8 actives (100 %)
89−- **Dernier sync** : 2026-10-14 18:13 — trouvées 10, +0, ~0, -0 89+- **Dernier sync** : 2026-10-23 05:25 — trouvées 8, +0, ~1, -0
90−- **Syncs enregistrés** (`sync_log`) : 640 90+- **Syncs enregistrés** (`sync_log`) : 761
91 91
92 ## Erreurs & dépannage 92 ## Erreurs & dépannage
93 93
modified jobka/connectors/bento_sushi.py +84 −1
@@ -5,13 +5,96 @@
5 # Fichier : jobka/connectors/bento_sushi.py 5 # Fichier : jobka/connectors/bento_sushi.py
6 # Rôle : Connecteur Bento Sushi (comptoirs et cuisines — postes QC) 6 # Rôle : Connecteur Bento Sushi (comptoirs et cuisines — postes QC)
7 # — ADP Workforce Now 7 # — ADP Workforce Now
8−# Créé : 2026-08-19 Modifié : 2026-08-19 8+# Créé : 2026-08-19 Modifié : 2026-10-23
9 # ============================================================================= 9 # =============================================================================
10+"""Bento Sushi — tenant ADP WFN d0dfb14c (babillard fr_CA = postes Québec).
11+
12+Chronologie (mission ka6 2026-10-23) : entre le sync vert de 23:35 EDT
13+(found=8) et celui de 02:00 EDT (found=0), le tenant a CESSÉ d'exposer
14+`requisitionLocations` dans l'API publique — liste ET détail, toutes
15+langues (fr_CA 8 offres, en_CA 25, zéro location partout), alors que les
16+tenants frères (uniboard 12/12…) restent normaux. Les 8 offres QC sont
17+toujours publiées (mêmes itemID) et l'employeur publie l'ADRESSE COMPLÈTE
18+du lieu dans chaque description (« Emplacement Loblaws : 1840 Bd
19+Monseigneur-Langlois, Salaberry-de-Valleyfield, QC J6S 5R1 | … »).
20+
21+Adaptation : quand une réquisition n'a aucune location (sinon le filtre
22+Québec de la plateforme rejetterait tout), on la garde puis on tranche sur
23+la description — province « QC » explicite ou code postal G/H/J (préfixes
24+exclusifs au Québec). Ville et code postal sont extraits de cette adresse
25+publiée par l'employeur : rien n'est inventé, et une offre sans marqueur
26+québécois dans sa description est écartée. Si ADP ré-expose les locations,
27+le chemin normal de la plateforme reprend tel quel (fallback dormant).
28+"""
29+from __future__ import annotations
30+
31+import re
32+
33+from ..normalize import canonical_city
34+from ..regions import region_for_city
35+from ..schema import JobPosting
10 from .adp import ADPWorkforceNowConnector 36 from .adp import ADPWorkforceNowConnector
11 37
38+# « …, Salaberry-de-Valleyfield, QC J6S 5R1 » — ville, province facultative,
39+# code postal QUÉBÉCOIS (G/H/J) obligatoire.
40+_RX_CITY_POSTAL = re.compile(
41+ r",\s*([A-ZÀ-ÿ][A-Za-zÀ-ÿ'’.\- ]{1,50}?)\s*,?\s*"
42+ r"(?:\(?(?:QC|Qu[ée]bec)\)?\s*,?\s*)?"
43+ r"([GHJ]\d[A-Z]\s?\d[A-Z]\d)\b")
44+# Repli : « …, Magog, QC » sans code postal.
45+_RX_CITY_QC = re.compile(
46+ r",\s*([A-ZÀ-ÿ][A-Za-zÀ-ÿ'’.\- ]{1,50}?)\s*,\s*(?:QC|Qu[ée]bec)\b")
47+
12 48
13 class BentoSushiConnector(ADPWorkforceNowConnector): 49 class BentoSushiConnector(ADPWorkforceNowConnector):
14 source_id = "bento_sushi" 50 source_id = "bento_sushi"
15 EMPLOYER = "Bento Sushi" 51 EMPLOYER = "Bento Sushi"
16 CID = "d0dfb14c-f365-4599-b39b-0fdccb3d1160" 52 CID = "d0dfb14c-f365-4599-b39b-0fdccb3d1160"
17 CCID = "19000101_000001" 53 CCID = "19000101_000001"
54+
55+ def _keep(self, locations: list[dict]) -> bool:
56+ # Sans location, impossible de trancher ici : on laisse passer et
57+ # fetch() tranchera sur l'adresse publiée dans la description.
58+ if not locations:
59+ return True
60+ return super()._keep(locations)
61+
62+ @staticmethod
63+ def _canon_city(city: str) -> str:
64+ # « St Bruno de Montarville » (adresse en abrégé, espaces) →
65+ # « Saint-Bruno-de-Montarville » : variante tentée seulement si la
66+ # forme extraite n'est pas une municipalité connue.
67+ if region_for_city(city):
68+ return city
69+ alt = re.sub(r"^Ste\b\.?", "Sainte",
70+ re.sub(r"^St\b\.?", "Saint", city)).replace(" ", "-")
71+ if region_for_city(alt):
72+ return canonical_city(alt)
73+ return city
74+
75+ @classmethod
76+ def _city_from_description(cls, text: str) -> tuple[str, str] | None:
77+ """(ville, code postal) depuis l'adresse publiée, sinon None."""
78+ m = _RX_CITY_POSTAL.search(text or "")
79+ if m:
80+ return cls._canon_city(m.group(1).strip()), m.group(2).strip()
81+ m = _RX_CITY_QC.search(text or "")
82+ if m:
83+ return cls._canon_city(m.group(1).strip()), ""
84+ return None
85+
86+ def fetch(self) -> list[JobPosting]:
87+ jobs = super().fetch()
88+ kept: list[JobPosting] = []
89+ for job in jobs:
90+ if job.city: # location ADP normale : intact
91+ kept.append(job)
92+ continue
93+ found = self._city_from_description(job.description)
94+ if not found: # pas de marqueur QC : écartée
95+ continue
96+ job.city, postal = found
97+ if postal and not job.postal_code:
98+ job.postal_code = postal
99+ kept.append(job)
100+ return kept
18 101
Menu

Theme