[ka6] fix connecteur niobec: frontal ADP intermittent PAR CID (4e cas, garde-fou retry borné répliqué) + correction d'un angle mort de culture — FORCE_CITY publiait l'offre talc de Timmins (ON) comme Saint-Honoré QC → bascule LANG en_US, found=0 = reflet exact de la source
Stale (2 échecs 404) : vert found=1 jusqu'à 21:24 EDT le 30/10 puis « default backend - 404 » nginx sur la liste à 23:45 et 02:15 — fenêtre nocturne ADP multi-tenants (nemaska_lithium, osgoode_properties, strathmore, uv_assurance, canadian_royalties touchés 23:45→03:23) qui a dégénéré pour CE cid en frontal intermittent (sonde 03:5x : liste ET détail 404 pendant que nemaska/abritek/ strathmore répondent 200 la même minute ; 1 essai sur 6 aboutit). Même panne que bento_sushi/cookit/mitsubishi_hc_capital du 2026-10-26 (fiche adp-frontal-intermittent-par-cid) : garde-fou _get_json répliqué à l'identique (30 essais, pause 2 s, timeout 15 s, 404/502/503/504/timeout/ non-JSON), inerte hors panne. Sync rejoué : vert found=1 en 1,9 s. 2e découverte pendant la vérification bi-culture (fiche dayforce-partition- culture appliquée à ADP) : le cid 099e24b7 est le board corporatif MAGRIS (magrispm.com/careers y pointe en en_US), pas un board Niobec mono-site. La culture fr_CA ne liste qu'1 réquisition sur 20 ET en omet les requisitionLocations ; l'unique offre fr_CA (9204575399835_1 « Process Engineer/Metallurgist », circuits de TALC) est localisée « Timmins, ON » en en_US — publiée à tort comme Saint-Honoré QC via FORCE_CITY depuis la vague D. Board en_US vérifié live : 20 offres, 19/19 avec locations, toutes ON/CO/MT/TX/VT, zéro lieu QC. Correctif : LANG='en_US' (culture sur-ensemble, le filtre Québec tranche sur le vrai lieu), FORCE_CITY retiré. Syncs rejoués 3× : ok=1 found=0 (1er passage 10,7 s = retries flaky au travail), offre Timmins retirée au 2e passage (garde-fou 2-miss ; DRIFT_MIN_BASE=8 > médiane 1.0, retraits non suspendus). found=0 est désormais la VÉRITÉ de la source — profil « ok=1 found=0 médiane ≤1 » : si niobec est re-signalé stale avec le board en_US sans lieu QC, rien à faire, il reverdira à la prochaine embauche QC de Magris/Niobec. Fiches niobec.md/ats-adp.md/INDEX.md régénérées (1132 autres restaurées, hors périmètre). 108 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>
4 changed files +132 −84
modified
docs/connecteurs/INDEX.md
+21 −21
@@ -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-10-31 03:41 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-10-31 04:03 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-10-31 03:41 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-31 04:03 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 **27 plateformes ATS** + **3 portails agrégateurs** + le canal de **dépôt direct** — **25448 offres actives** (23018 directes, 2430 portails ; 101 masquées comme doublons inter-sources, soit 25347 visibles). 1135 fiches. | |
| 17 | +**1103 employeurs directs** connectés via **27 plateformes ATS** + **3 portails agrégateurs** + le canal de **dépôt direct** — **25369 offres actives** (22939 directes, 2430 portails ; 101 masquées comme doublons inter-sources, soit 25268 visibles). 1135 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 | 7470 | 47 % | 88 % | | |
| 26 | −| [`smartrecruiters`](ats-smartrecruiters.md) | 171 | 2909 | 16 % | 99 % | | |
| 25 | +| [`workday`](ats-workday.md) | 232 | 7446 | 47 % | 88 % | | |
| 26 | +| [`smartrecruiters`](ats-smartrecruiters.md) | 171 | 2903 | 16 % | 99 % | | |
| 27 | 27 | | [`workable`](ats-workable.md) | 71 | 1974 | 17 % | 100 % | |
| 28 | −| [`dayforce`](ats-dayforce.md) | 129 | 1906 | 10 % | 100 % | | |
| 28 | +| [`dayforce`](ats-dayforce.md) | 129 | 1901 | 10 % | 100 % | | |
| 29 | 29 | | [`successfactors`](ats-successfactors.md) | 12 | 1656 | 19 % | 99 % | |
| 30 | 30 | | [`njoyn`](ats-njoyn.md) | 11 | 1345 | 70 % | 87 % | |
| 31 | −| [`workland`](ats-workland.md) | 1 | 1151 | 36 % | 100 % | | |
| 31 | +| [`workland`](ats-workland.md) | 1 | 1109 | 37 % | 100 % | | |
| 32 | 32 | | [`wpjobmanager`](ats-wpjobmanager.md) | 8 | 806 | 6 % | 100 % | |
| 33 | 33 | | [`greenhouse`](ats-greenhouse.md) | 132 | 792 | 19 % | 100 % | |
| 34 | 34 | | [`lever`](ats-lever.md) | 58 | 622 | 20 % | 95 % | |
@@ -40,7 +40,7 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser | ||
| 40 | 40 | | [`teamtailor`](ats-teamtailor.md) | 10 | 166 | 28 % | 96 % | |
| 41 | 41 | | [`zoho_recruit`](ats-zoho_recruit.md) | 16 | 146 | 14 % | 86 % | |
| 42 | 42 | | [`jazzhr`](ats-jazzhr.md) | 27 | 143 | 17 % | 91 % | |
| 43 | −| [`adp`](ats-adp.md) | 17 | 134 | 34 % | 91 % | | |
| 43 | +| [`adp`](ats-adp.md) | 17 | 132 | 33 % | 91 % | | |
| 44 | 44 | | [`taleo`](ats-taleo.md) | 5 | 105 | 0 % | 100 % | |
| 45 | 45 | | [`icims`](ats-icims.md) | 7 | 52 | 27 % | 98 % | |
| 46 | 46 | | [`ultipro`](ats-ultipro.md) | 4 | 48 | 50 % | 100 % | |
@@ -63,7 +63,7 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser | ||
| 63 | 63 | |
| 64 | 64 | | Employeur | ATS | Actives | Salaire | GPS | Dernier sync OK | |
| 65 | 65 | |---|---|---|---|---|---| |
| 66 | −| [Réseau Atlas Workland (~80 employeurs QC : CSS, cégeps, Santé Québec, STQ, UQTR…)](atlas_workland.md) | [`workland`](ats-workland.md) | 1151 | 36 % | 100 % | ✅ | | |
| 66 | +| [Réseau Atlas Workland (~80 employeurs QC : CSS, cégeps, Santé Québec, STQ, UQTR…)](atlas_workland.md) | [`workland`](ats-workland.md) | 1109 | 37 % | 100 % | ✅ | | |
| 67 | 67 | | [Couche-Tard / Circle K](circlek.md) | [`workday`](ats-workday.md) | 987 | 70 % | 68 % | ✅ | |
| 68 | 68 | | [Solution SFT](solution_sft.md) | [`workable`](ats-workable.md) | 940 | 24 % | 99 % | ✅ | |
| 69 | 69 | | [Bombardier](bombardier.md) | [`successfactors`](ats-successfactors.md) | 899 | 1 % | 100 % | ✅ | |
@@ -96,7 +96,6 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser | ||
| 96 | 96 | | [TJX Canada (Winners, HomeSense, Marshalls)](tjx.md) | [`workday`](ats-workday.md) | 114 | 98 % | 100 % | ❌ | |
| 97 | 97 | | [Cascades](cascades.md) | [`successfactors`](ats-successfactors.md) | 112 | 83 % | 100 % | ✅ | |
| 98 | 98 | | [Vidéotron](videotron.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 108 | 6 % | 100 % | ✅ | |
| 99 | −| [BMO Groupe financier](bmo.md) | [`workday`](ats-workday.md) | 104 | 82 % | 75 % | ✅ | | |
| 100 | 99 | | [CISSS de Chaudière-Appalaches](cisss_chaudiere_appalaches.md) | [`wpjobmanager`](ats-wpjobmanager.md) | 103 | 2 % | 100 % | ✅ | |
| 101 | 100 | | [Groupe Helios](groupehelios.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 103 | 3 % | 100 % | ✅ | |
| 102 | 101 | | [Dentalcorp](dentalcorp.md) | [`workday`](ats-workday.md) | 102 | 16 % | 100 % | ✅ | |
@@ -104,6 +103,7 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser | ||
| 104 | 103 | | [Sépaq](sepaq.md) | [`taleo_tbe`](ats-taleo_tbe.md) | 99 | 55 % | 8 % | ✅ | |
| 105 | 104 | | [CISSS de Lanaudière](cisss_lanaudiere.md) | [`wpjobmanager`](ats-wpjobmanager.md) | 98 | 10 % | 100 % | ✅ | |
| 106 | 105 | | [Genetec](genetec_inc.md) | [`workable`](ats-workable.md) | 97 | 0 % | 100 % | ✅ | |
| 106 | +| [BMO Groupe financier](bmo.md) | [`workday`](ats-workday.md) | 96 | 80 % | 74 % | ✅ | | |
| 107 | 107 | | [HIKINEX](recruiting.md) | [`breezy`](ats-breezy.md) | 91 | 0 % | 100 % | ✅ | |
| 108 | 108 | | [Artelia Canada](artelia.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 90 | 0 % | 100 % | ✅ | |
| 109 | 109 | | [iA Groupe financier](ia_groupe.md) | [`workday`](ats-workday.md) | 90 | 100 % | 98 % | ✅ | |
@@ -119,10 +119,10 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser | ||
| 119 | 119 | | [CISSS de l'Outaouais](cisss_outaouais.md) | [`wpjobmanager`](ats-wpjobmanager.md) | 74 | 26 % | 100 % | ✅ | |
| 120 | 120 | | [Norda Stelo](nordastelo.md) | [`teamtailor`](ats-teamtailor.md) | 72 | 0 % | 97 % | ✅ | |
| 121 | 121 | | [Manuvie](manulife.md) | [`workday`](ats-workday.md) | 70 | 91 % | 46 % | ✅ | |
| 122 | −| [BPA (Experts-conseils)](bpa.md) | [`dayforce`](ats-dayforce.md) | 68 | 0 % | 100 % | ✅ | | |
| 123 | 122 | | [Dexterra](dexterra.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 68 | 0 % | 100 % | ✅ | |
| 124 | 123 | | [EMCO](emcocorporation.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 68 | 40 % | 100 % | ✅ | |
| 125 | 124 | | [Gray Collection (Groupe Antonopoulos)](graycollection.md) | [`dayforce`](ats-dayforce.md) | 66 | 0 % | 100 % | ✅ | |
| 125 | +| [BPA (Experts-conseils)](bpa.md) | [`dayforce`](ats-dayforce.md) | 64 | 0 % | 100 % | ✅ | | |
| 126 | 126 | | [Kiewit (Ganotec)](kiewit_ganotec.md) | [`successfactors`](ats-successfactors.md) | 62 | 0 % | 100 % | ✅ | |
| 127 | 127 | | [Lifeworks](lifeworks.md) | [`workday`](ats-workday.md) | 61 | 28 % | 87 % | ✅ | |
| 128 | 128 | | [McKesson Canada](mckesson.md) | [`workday`](ats-workday.md) | 60 | 82 % | 87 % | ✅ | |
@@ -135,15 +135,15 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser | ||
| 135 | 135 | | [Galderma](galderma.md) | [`workday`](ats-workday.md) | 54 | 0 % | 100 % | ✅ | |
| 136 | 136 | | [Techo-Bloc](techo_bloc.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 54 | 41 % | 100 % | ✅ | |
| 137 | 137 | | [Gevernova](gevernova.md) | [`workday`](ats-workday.md) | 53 | 21 % | 98 % | ✅ | |
| 138 | −| [Beneva](beneva.md) | [`workday`](ats-workday.md) | 52 | 4 % | 100 % | ✅ | | |
| 139 | 138 | | [CHU de Québec — Université Laval](chu_quebec.md) | [`wpjobmanager`](ats-wpjobmanager.md) | 52 | 4 % | 100 % | ✅ | |
| 140 | 139 | | [Intelcom (Dragonfly)](intelcomgroup.md) | [`workday`](ats-workday.md) | 52 | 0 % | 100 % | ✅ | |
| 141 | 140 | | [Kruger](kruger.md) | [`taleo_tbe`](ats-taleo_tbe.md) | 52 | 10 % | 100 % | ✅ | |
| 142 | 141 | | [Lightspeed Commerce](lightspeedhq.md) | [`ashby`](ats-ashby.md) | 52 | 4 % | 100 % | ✅ | |
| 143 | 142 | | [PwC Canada](pwc.md) | [`workday`](ats-workday.md) | 52 | 100 % | 75 % | ❌ | |
| 144 | 143 | | [Squarepoint Capital](squarepointcapital.md) | [`greenhouse`](ats-greenhouse.md) | 52 | 38 % | 100 % | ✅ | |
| 145 | −| [Agropur](agropur.md) | [`workday`](ats-workday.md) | 50 | 98 % | 98 % | ✅ | | |
| 144 | +| [Agropur](agropur.md) | [`workday`](ats-workday.md) | 49 | 98 % | 98 % | ✅ | | |
| 146 | 145 | | [Agnico Eagle Mines](agnico_eagle.md) | [`taleo`](ats-taleo.md) | 48 | 0 % | 100 % | ✅ | |
| 146 | +| [Beneva](beneva.md) | [`workday`](ats-workday.md) | 48 | 4 % | 100 % | ✅ | | |
| 147 | 147 | | [SOGECLAIR](sogeclair.md) | [`workable`](ats-workable.md) | 48 | 2 % | 100 % | ✅ | |
| 148 | 148 | | [Cogeco](cogeco.md) | [`workday`](ats-workday.md) | 47 | 19 % | 45 % | ✅ | |
| 149 | 149 | | [Laura Canada](lauracanada.md) | [`dayforce`](ats-dayforce.md) | 47 | 0 % | 100 % | ✅ | |
@@ -185,7 +185,6 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser | ||
| 185 | 185 | | [KABS](kabs.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 34 | 0 % | 100 % | ✅ | |
| 186 | 186 | | [QSL](qsl.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 34 | 32 % | 100 % | ✅ | |
| 187 | 187 | | [Autodesk](autodesk.md) | [`eightfold`](ats-eightfold.md) | 33 | 88 % | 100 % | ✅ | |
| 188 | −| [Best Buy Canada](bestbuycanada.md) | [`workday`](ats-workday.md) | 33 | 0 % | 39 % | ✅ | | |
| 189 | 188 | | [AccorHotel](accorhotel.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 32 | 59 % | 100 % | ✅ | |
| 190 | 189 | | [Advanceauto](advanceauto.md) | [`workday`](ats-workday.md) | 32 | 0 % | 38 % | ✅ | |
| 191 | 190 | | [Industries Lassonde](lassonde.md) | [`custom`](ats-custom.md) | 32 | 34 % | 91 % | ✅ | |
@@ -226,6 +225,7 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser | ||
| 226 | 225 | | [AppDirect](appdirect.md) | [`greenhouse`](ats-greenhouse.md) | 24 | 25 % | 100 % | ✅ | |
| 227 | 226 | | [Baseten](baseten.md) | [`ashby`](ats-ashby.md) | 24 | 100 % | 0 % | ✅ | |
| 228 | 227 | | [Behaviour Interactif](bhvr.md) | [`lever`](ats-lever.md) | 24 | 0 % | 100 % | ✅ | |
| 228 | +| [Best Buy Canada](bestbuycanada.md) | [`workday`](ats-workday.md) | 24 | 0 % | 38 % | ✅ | | |
| 229 | 229 | | [Directive](directive.md) | [`ashby`](ats-ashby.md) | 24 | 21 % | 0 % | ✅ | |
| 230 | 230 | | [Exportation et développement Canada (EDC)](export_development_canada.md) | [`workable`](ats-workable.md) | 24 | 96 % | 100 % | ✅ | |
| 231 | 231 | | [FedEx Express Canada](fedex.md) | [`workday`](ats-workday.md) | 24 | 100 % | 88 % | ✅ | |
@@ -260,7 +260,6 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser | ||
| 260 | 260 | | [Produits Labelink](labelink.md) | [`bamboohr`](ats-bamboohr.md) | 21 | 0 % | 100 % | ✅ | |
| 261 | 261 | | [Préparateur de commandes](sysco.md) | [`workday`](ats-workday.md) | 21 | 24 % | 86 % | ❌ | |
| 262 | 262 | | [Sales Associate III](tapestry.md) | [`workday`](ats-workday.md) | 21 | 100 % | 100 % | ✅ | |
| 263 | −| [Alcoa Canada](alcoa.md) | [`workday`](ats-workday.md) | 20 | 15 % | 45 % | ✅ | | |
| 264 | 263 | | [Fund Accountant / Comptable de Fonds](sagardholdings.md) | [`workday`](ats-workday.md) | 20 | 15 % | 95 % | ✅ | |
| 265 | 264 | | [Keywords Studios](keywords_intl1.md) | [`workable`](ats-workable.md) | 20 | 95 % | 100 % | ✅ | |
| 266 | 265 | | [Logm](logm.md) | [`dayforce`](ats-dayforce.md) | 20 | 75 % | 100 % | ✅ | |
@@ -274,6 +273,7 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser | ||
| 274 | 273 | | [Ville de Gatineau](ville_gatineau.md) | [`njoyn`](ats-njoyn.md) | 20 | 100 % | 0 % | ✅ | |
| 275 | 274 | | [VinFast Canada](vinfastcanada.md) | [`dayforce`](ats-dayforce.md) | 20 | 25 % | 100 % | ✅ | |
| 276 | 275 | | [Vosker](vosker.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 20 | 0 % | 100 % | ✅ | |
| 276 | +| [Alcoa Canada](alcoa.md) | [`workday`](ats-workday.md) | 19 | 16 % | 47 % | ✅ | | |
| 277 | 277 | | [Groupe Nordik (Nordik Spa-Nature)](groupe_nordik.md) | [`adp`](ats-adp.md) | 19 | 26 % | 100 % | ✅ | |
| 278 | 278 | | [Groupeguilbault](groupeguilbault.md) | [`workday`](ats-workday.md) | 19 | 0 % | 100 % | ✅ | |
| 279 | 279 | | [H&M](hmgroup.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 19 | 0 % | 100 % | ✅ | |
@@ -284,7 +284,6 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser | ||
| 284 | 284 | | [Uniboard](uniboard.md) | [`adp`](ats-adp.md) | 19 | 32 % | 63 % | ✅ | |
| 285 | 285 | | [Victoria Park Medispa](vicpark.md) | [`bamboohr`](ats-bamboohr.md) | 19 | 0 % | 100 % | ✅ | |
| 286 | 286 | | [Xsolla](xsolla.md) | [`lever`](ats-lever.md) | 19 | 100 % | 95 % | ✅ | |
| 287 | −| [AbbVie](abbvie.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 18 | 0 % | 100 % | ✅ | | |
| 288 | 287 | | [ALS Global](alsglobal.md) | [`workday`](ats-workday.md) | 18 | 6 % | 94 % | ✅ | |
| 289 | 288 | | [Bell Textron Canada](bell_textron.md) | [`taleo`](ats-taleo.md) | 18 | 0 % | 100 % | ✅ | |
| 290 | 289 | | [CONTRÔLEUR](novatech.md) | [`dayforce`](ats-dayforce.md) | 18 | 39 % | 100 % | ✅ | |
@@ -366,12 +365,13 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser | ||
| 366 | 365 | | [TransPerfect](transperfect.md) | [`recruitee`](ats-recruitee.md) | 13 | 0 % | 100 % | ✅ | |
| 367 | 366 | | [Triotech](triotech.md) | [`bamboohr`](ats-bamboohr.md) | 13 | 0 % | 100 % | ✅ | |
| 368 | 367 | | [Work From Home Customer Service Representative](usasurveyjob.md) | [`lever`](ats-lever.md) | 13 | 15 % | 100 % | ✅ | |
| 368 | +| [AbbVie](abbvie.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 12 | 0 % | 100 % | ✅ | | |
| 369 | 369 | | [Aritzia](aritzia.md) | [`workday`](ats-workday.md) | 12 | 58 % | 100 % | ✅ | |
| 370 | 370 | | [Artiste technique sénior·e UI / Senior UI Tech Artist](x2k.md) | [`greenhouse`](ats-greenhouse.md) | 12 | 8 % | 100 % | ✅ | |
| 371 | 371 | | [Avantage Plus](avantageplus.md) | [`recruitee`](ats-recruitee.md) | 12 | 17 % | 100 % | ✅ | |
| 372 | 372 | | [Aylo](aylo.md) | [`greenhouse`](ats-greenhouse.md) | 12 | 0 % | 100 % | ✅ | |
| 373 | 373 | | [Aylo](aylofr.md) | [`greenhouse`](ats-greenhouse.md) | 12 | 0 % | 100 % | ✅ | |
| 374 | −| [Bayshore HealthCare](bayshore.md) | [`taleo`](ats-taleo.md) | 12 | 0 % | 100 % | ❌ | | |
| 374 | +| [Bayshore HealthCare](bayshore.md) | [`taleo`](ats-taleo.md) | 12 | 0 % | 100 % | ✅ | | |
| 375 | 375 | | [Brasseries Sleeman (Unibroue)](sleeman.md) | [`workday`](ats-workday.md) | 12 | 8 % | 92 % | ❌ | |
| 376 | 376 | | [Epic Games](epicgames.md) | [`greenhouse`](ats-greenhouse.md) | 12 | 0 % | 100 % | ✅ | |
| 377 | 377 | | [Evolving Web](evolving_web.md) | [`workable`](ats-workable.md) | 12 | 0 % | 100 % | ✅ | |
@@ -508,7 +508,6 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser | ||
| 508 | 508 | | [Sweat Pants Agency](sweat_pants_agency.md) | [`workable`](ats-workable.md) | 8 | 25 % | 100 % | ✅ | |
| 509 | 509 | | [Vendeur 3ème Clé (Thirdy Key)](fossil.md) | [`dayforce`](ats-dayforce.md) | 8 | 0 % | 100 % | ✅ | |
| 510 | 510 | | [WestGroupe](westgroupe.md) | [`jazzhr`](ats-jazzhr.md) | 8 | 0 % | 100 % | ✅ | |
| 511 | −| [Abritek](abritek.md) | [`adp`](ats-adp.md) | 7 | 100 % | 100 % | ✅ | | |
| 512 | 511 | | [Allegion](allegion.md) | [`workday`](ats-workday.md) | 7 | 57 % | 86 % | ✅ | |
| 513 | 512 | | [Alveole](alveole.md) | [`greenhouse`](ats-greenhouse.md) | 7 | 100 % | 100 % | ✅ | |
| 514 | 513 | | [Artefact North America](artefactnoram.md) | [`greenhouse`](ats-greenhouse.md) | 7 | 57 % | 100 % | ✅ | |
@@ -547,9 +546,9 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser | ||
| 547 | 546 | | [Trigyn Technologies](trigyntechnologies1.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 7 | 0 % | 100 % | ✅ | |
| 548 | 547 | | [Turner & Townsend](turnertownsend.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 7 | 29 % | 100 % | ✅ | |
| 549 | 548 | | [Valtech](valtech.md) | [`greenhouse`](ats-greenhouse.md) | 7 | 14 % | 100 % | ✅ | |
| 549 | +| [Abritek](abritek.md) | [`adp`](ats-adp.md) | 6 | 100 % | 100 % | ✅ | | |
| 550 | 550 | | [Accedian Networks](accediannetworks.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 6 | 0 % | 100 % | ✅ | |
| 551 | 551 | | [AJ Walter Aviation](ajwalter.md) | [`recruitee`](ats-recruitee.md) | 6 | 0 % | 100 % | ✅ | |
| 552 | −| [Aliaxis](aliaxis.md) | [`workday`](ats-workday.md) | 6 | 50 % | 83 % | ✅ | | |
| 553 | 552 | | [Also Recrutement - Carrière](alsorecrutement.md) | [`zoho_recruit`](ats-zoho_recruit.md) | 6 | 17 % | 50 % | ✅ | |
| 554 | 553 | | [Altitude Aerospace](altitudeaerospace.md) | [`jazzhr`](ats-jazzhr.md) | 6 | 0 % | 100 % | ✅ | |
| 555 | 554 | | [Bain Magique](bainmagique.md) | [`greenhouse`](ats-greenhouse.md) | 6 | 67 % | 100 % | ✅ | |
@@ -594,6 +593,7 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser | ||
| 594 | 593 | | [Adèle Express](adeleexpressfr.md) | [`recruitee`](ats-recruitee.md) | 5 | 60 % | 100 % | ✅ | |
| 595 | 594 | | [Agile DSS](agiledss.md) | [`recruitee`](ats-recruitee.md) | 5 | 0 % | 100 % | ✅ | |
| 596 | 595 | | [Aleanza Recrutement Durable](aleanzarecrutementdurable.md) | [`teamtailor`](ats-teamtailor.md) | 5 | 40 % | 100 % | ✅ | |
| 596 | +| [Aliaxis](aliaxis.md) | [`workday`](ats-workday.md) | 5 | 40 % | 80 % | ✅ | | |
| 597 | 597 | | [Alo Yoga](aloyoga.md) | [`greenhouse`](ats-greenhouse.md) | 5 | 40 % | 60 % | ✅ | |
| 598 | 598 | | [Alphanumeric Systems](alphanumeric_systems.md) | [`breezy`](ats-breezy.md) | 5 | 100 % | 100 % | ✅ | |
| 599 | 599 | | [Altitude Sports](altitude_sports.md) | [`zoho_recruit`](ats-zoho_recruit.md) | 5 | 20 % | 100 % | ✅ | |
@@ -790,7 +790,6 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser | ||
| 790 | 790 | | [Adaptive Financial Consulting](adaptivefinancialconsulting.md) | [`greenhouse`](ats-greenhouse.md) | 2 | 0 % | 100 % | ✅ | |
| 791 | 791 | | [Administrateur Immobilier](gwlra.md) | [`dayforce`](ats-dayforce.md) | 2 | 0 % | 100 % | ✅ | |
| 792 | 792 | | [ADVENS](advens.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 2 | 0 % | 100 % | ✅ | |
| 793 | −| [Air Canada Rouge](acadierouge.md) | [`dayforce`](ats-dayforce.md) | 2 | 50 % | 100 % | ✅ | | |
| 794 | 793 | | [Amgen](amgen.md) | [`workday`](ats-workday.md) | 2 | 0 % | 100 % | ✅ | |
| 795 | 794 | | [AON3D](aon3d.md) | [`greenhouse`](ats-greenhouse.md) | 2 | 0 % | 100 % | ✅ | |
| 796 | 795 | | [AON3D](aon3d_fr.md) | [`greenhouse`](ats-greenhouse.md) | 2 | 0 % | 100 % | ✅ | |
@@ -885,6 +884,7 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser | ||
| 885 | 884 | | [AG Globe Services](agglobeservices.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 1 | 0 % | 100 % | ✅ | |
| 886 | 885 | | [Agapyo](agapyo.md) | [`greenhouse`](ats-greenhouse.md) | 1 | 0 % | 100 % | ✅ | |
| 887 | 886 | | [Agence](agence_carrieres.md) | [`breezy`](ats-breezy.md) | 1 | 100 % | 100 % | ✅ | |
| 887 | +| [Air Canada Rouge](acadierouge.md) | [`dayforce`](ats-dayforce.md) | 1 | 100 % | 100 % | ✅ | | |
| 888 | 888 | | [Air Traffic Control (ATC)](navcanada.md) | [`workday`](ats-workday.md) | 1 | 0 % | 100 % | ✅ | |
| 889 | 889 | | [Alan Canada](alan.md) | [`ashby`](ats-ashby.md) | 1 | 0 % | 100 % | ✅ | |
| 890 | 890 | | [Aliments Ouimet-Cordon Bleu inc.](cordonbleu.md) | [`bamboohr`](ats-bamboohr.md) | 1 | 100 % | 100 % | ✅ | |
@@ -972,7 +972,6 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser | ||
| 972 | 972 | | [Nemaska Lithium](nemaska_lithium.md) | [`adp`](ats-adp.md) | 1 | 0 % | 100 % | ✅ | |
| 973 | 973 | | [Next Generation Inc](next_generation_inc.md) | [`breezy`](ats-breezy.md) | 1 | 100 % | 100 % | ✅ | |
| 974 | 974 | | [Nexxus Foods](nexxusfoods.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 1 | 0 % | 100 % | ✅ | |
| 975 | −| [Niobec (Magris Performance Materials)](niobec.md) | [`adp`](ats-adp.md) | 1 | 100 % | 100 % | ❌ | | |
| 976 | 975 | | [No Saint](no_saint.md) | [`ashby`](ats-ashby.md) | 1 | 0 % | 100 % | ✅ | |
| 977 | 976 | | [Novartis](novartis.md) | [`workday`](ats-workday.md) | 1 | 0 % | 100 % | ❌ | |
| 978 | 977 | | [Nucor Rebar Fabrication (Harris Rebar)](harrisrebar.md) | [`dayforce`](ats-dayforce.md) | 1 | 0 % | 100 % | ✅ | |
@@ -1113,6 +1112,7 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser | ||
| 1113 | 1112 | | [NATIONAL](national.md) | [`greenhouse`](ats-greenhouse.md) | 0 | — | — | ✅ | |
| 1114 | 1113 | | [New Era Technology](neweratech.md) | [`greenhouse`](ats-greenhouse.md) | 0 | — | — | ✅ | |
| 1115 | 1114 | | [NielsenIQ](nielseniq.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 0 | — | — | ✅ | |
| 1115 | +| [Niobec (Magris Performance Materials)](niobec.md) | [`adp`](ats-adp.md) | 0 | — | — | ✅ | | |
| 1116 | 1116 | | [Novisto Fr](novistofr.md) | [`greenhouse`](ats-greenhouse.md) | 0 | — | — | ✅ | |
| 1117 | 1117 | | [Ocado Group](ocadogroup.md) | [`greenhouse`](ats-greenhouse.md) | 0 | — | — | ✅ | |
| 1118 | 1118 | | [Ogilvy Canada](ogilvycanada.md) | [`greenhouse`](ats-greenhouse.md) | 0 | — | — | ✅ | |
modified
docs/connecteurs/ats-adp.md
+19 −19
@@ -5,14 +5,14 @@ Auteur : Simon-Pierre Boucher | ||
| 5 | 5 | Contact : contact@spboucher.ai |
| 6 | 6 | Fichier : docs/connecteurs/ats-adp.md |
| 7 | 7 | Rôle : Fiche plateforme ATS adp — mécanique partagée + tableau des 17 tenants |
| 8 | −Généré : 2026-10-26 17:48 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-10-31 04:03 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 `adp` |
| 14 | 14 | |
| 15 | −**17 employeurs connectés** via cette plateforme — **134 offres actives**. Module partagé : `jobka/connectors/adp.py` ; un employeur = une sous-classe d'environ 10 lignes. | |
| 15 | +**17 employeurs connectés** via cette plateforme — **132 offres actives**. Module partagé : `jobka/connectors/adp.py` ; un employeur = une sous-classe d'environ 10 lignes. | |
| 16 | 16 | |
| 17 | 17 | ## Description & mécanique |
| 18 | 18 | |
@@ -40,23 +40,23 @@ Généré : 2026-10-26 17:48 EDT par scripts/gen_connector_docs.py — NE PAS | ||
| 40 | 40 | |
| 41 | 41 | | Employeur | Actives | Salaire | GPS | Mode | Dernier sync | OK | |
| 42 | 42 | |---|---|---|---|---|---|---| |
| 43 | −| [Groupe Nordik (Nordik Spa-Nature)](groupe_nordik.md) | 19 | 21 % | 100 % | 0 % | 2026-10-26 17:28 | ✅ | | |
| 44 | −| [Uniboard](uniboard.md) | 19 | 32 % | 63 % | 0 % | 2026-10-26 15:44 | ✅ | | |
| 45 | −| [UV Assurance](uv_assurance.md) | 13 | 0 % | 100 % | 0 % | 2026-10-26 15:45 | ✅ | | |
| 46 | −| [Strathmore](strathmore.md) | 12 | 42 % | 100 % | 8 % | 2026-10-26 15:39 | ✅ | | |
| 47 | −| [Quincaillerie Richelieu](richelieu.md) | 12 | 0 % | 100 % | 0 % | 2026-10-26 15:33 | ✅ | | |
| 48 | −| [Cook It](cookit.md) | 11 | 64 % | 100 % | 0 % | 2026-10-26 17:13 | ✅ | | |
| 49 | −| [Canadian Royalties](canadian_royalties.md) | 10 | 40 % | 100 % | 0 % | 2026-10-26 17:01 | ✅ | | |
| 50 | −| [H2O Innovation](h2o_innovation.md) | 9 | 11 % | 100 % | 0 % | 2026-10-26 17:35 | ✅ | | |
| 51 | −| [Bento Sushi](bento_sushi.md) | 8 | 88 % | 100 % | 0 % | 2026-10-26 16:59 | ✅ | | |
| 52 | −| [MSI Gestion immobilière](msi_gestion.md) | 6 | 100 % | 100 % | 50 % | 2026-10-26 15:25 | ✅ | | |
| 53 | −| [Cultures Gen V](cultures_genv.md) | 5 | 20 % | 100 % | 0 % | 2026-10-26 17:13 | ✅ | | |
| 54 | −| [Abritek](abritek.md) | 5 | 100 % | 100 % | 0 % | 2026-10-26 16:51 | ✅ | | |
| 55 | −| [Mitsubishi HC Capital Canada](mitsubishi_hc_capital.md) | 1 | 0 % | 100 % | 0 % | 2026-10-26 17:47 | ✅ | | |
| 56 | −| [Osgoode Properties](osgoode_properties.md) | 1 | 100 % | 100 % | 0 % | 2026-10-26 15:28 | ✅ | | |
| 57 | −| [Niobec (Magris Performance Materials)](niobec.md) | 1 | 100 % | 100 % | 0 % | 2026-10-26 15:26 | ✅ | | |
| 58 | −| [Nemaska Lithium](nemaska_lithium.md) | 1 | 0 % | 100 % | 0 % | 2026-10-26 15:26 | ✅ | | |
| 59 | −| [Triple Boris](triple_boris.md) | 1 | 0 % | 100 % | 0 % | 2026-10-26 15:43 | ✅ | | |
| 43 | +| [Groupe Nordik (Nordik Spa-Nature)](groupe_nordik.md) | 19 | 26 % | 100 % | 0 % | 2026-10-31 01:39 | ✅ | | |
| 44 | +| [Uniboard](uniboard.md) | 19 | 32 % | 63 % | 0 % | 2026-10-31 03:19 | ✅ | | |
| 45 | +| [Quincaillerie Richelieu](richelieu.md) | 17 | 0 % | 71 % | 0 % | 2026-10-31 02:38 | ✅ | | |
| 46 | +| [UV Assurance](uv_assurance.md) | 14 | 0 % | 100 % | 0 % | 2026-10-31 03:23 | ❌ | | |
| 47 | +| [Cook It](cookit.md) | 10 | 60 % | 100 % | 0 % | 2026-10-31 01:26 | ✅ | | |
| 48 | +| [H2O Innovation](h2o_innovation.md) | 9 | 0 % | 100 % | 0 % | 2026-10-31 01:47 | ✅ | | |
| 49 | +| [Strathmore](strathmore.md) | 9 | 44 % | 100 % | 0 % | 2026-10-31 03:00 | ✅ | | |
| 50 | +| [Bento Sushi](bento_sushi.md) | 8 | 88 % | 100 % | 0 % | 2026-10-31 03:56 | ✅ | | |
| 51 | +| [MSI Gestion immobilière](msi_gestion.md) | 6 | 100 % | 100 % | 50 % | 2026-10-31 02:12 | ✅ | | |
| 52 | +| [Canadian Royalties](canadian_royalties.md) | 6 | 33 % | 100 % | 0 % | 2026-10-31 01:18 | ❌ | | |
| 53 | +| [Abritek](abritek.md) | 6 | 100 % | 100 % | 0 % | 2026-10-31 03:43 | ✅ | | |
| 54 | +| [Cultures Gen V](cultures_genv.md) | 5 | 20 % | 100 % | 0 % | 2026-10-31 01:27 | ✅ | | |
| 55 | +| [Mitsubishi HC Capital Canada](mitsubishi_hc_capital.md) | 1 | 0 % | 100 % | 0 % | 2026-10-31 02:08 | ✅ | | |
| 56 | +| [Osgoode Properties](osgoode_properties.md) | 1 | 100 % | 100 % | 0 % | 2026-10-31 02:24 | ❌ | | |
| 57 | +| [Nemaska Lithium](nemaska_lithium.md) | 1 | 0 % | 100 % | 0 % | 2026-10-31 02:15 | ✅ | | |
| 58 | +| [Triple Boris](triple_boris.md) | 1 | 0 % | 100 % | 0 % | 2026-10-31 03:15 | ✅ | | |
| 59 | +| [Niobec (Magris Performance Materials)](niobec.md) | 0 | — | — | — | 2026-10-31 04:03 | ✅ | | |
| 60 | 60 | |
| 61 | 61 | ## Licence / conformité |
| 62 | 62 | |
modified
docs/connecteurs/niobec.md
+12 −39
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher | ||
| 5 | 5 | Contact : contact@spboucher.ai |
| 6 | 6 | Fichier : docs/connecteurs/niobec.md |
| 7 | 7 | Rôle : Fiche connecteur — Niobec (Magris Performance Materials) (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-31 04:03 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | 9 | relancer le script pour régénérer. |
| 10 | 10 | ============================================================================= |
| 11 | 11 | --> |
@@ -32,40 +32,13 @@ Généré : 2026-10-14 18:40 EDT par scripts/gen_connector_docs.py — NE PAS | ||
| 32 | 32 | | `CCID` | `19000101_000001` | |
| 33 | 33 | | `CID` | `099e24b7-1868-4283-a5d0-994ec5a80995` | |
| 34 | 34 | | `EMPLOYER` | `Niobec (Magris Performance Materials)` | |
| 35 | −| `FORCE_CITY` | `Saint-Honoré` | | |
| 36 | −| `LANG` | `fr_CA` | | |
| 35 | +| `LANG` | `en_US` | | |
| 37 | 36 | - **Throttle** : 1.0 s entre requêtes. |
| 38 | 37 | - **Filtre Québec** : seuls les postes localisés au Québec sont conservés (facette serveur quand l'ATS en offre une, sinon `is_quebec_location` côté client). |
| 39 | 38 | |
| 40 | 39 | ## Champs → schéma |
| 41 | 40 | |
| 42 | −Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-10-14 18:40 EDT). | |
| 43 | − | |
| 44 | −| Champ (`jobs.*`) | Rôle | Complétude | | |
| 45 | −|---|---|---| | |
| 46 | −| `title` — Titre | titre du poste | 100 % | | |
| 47 | −| `employer` — Employeur | nom de l'entreprise | 100 % | | |
| 48 | −| `url` — URL | lien direct vers l'offre originale | 100 % | | |
| 49 | −| `description` — Description | texte complet (HTML nettoyé) | 100 % | | |
| 50 | −| `city` — Ville | municipalité normalisée | 100 % | | |
| 51 | −| `region` — Région | région administrative | 100 % | | |
| 52 | −| `address` — Adresse | adresse du lieu de travail | 0 % | | |
| 53 | −| `postal_code` — Code postal | code postal si publié | 0 % | | |
| 54 | −| `work_mode` — Mode | presentiel / hybride / teletravail | 0 % | | |
| 55 | −| `employment_type` — Type | temps_plein / temps_partiel / … | 100 % | | |
| 56 | −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 100 % | | |
| 57 | −| `salary_label` — Libellé salaire | texte salarial original | 0 % | | |
| 58 | −| `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % | | |
| 59 | −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % | | |
| 60 | −| `date_posted` — Date de parution | ISO 8601 | 100 % | | |
| 61 | −| `date_deadline` — Date limite | date limite pour postuler | 0 % | | |
| 62 | −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 100 % | | |
| 63 | −| `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % | | |
| 64 | −| `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % | | |
| 65 | −| `apply_url` — Candidature | lien de candidature directe | 0 % | | |
| 66 | −| `gps` — GPS | lat/lng (géocodage sans invention) | 100 % | | |
| 67 | − | |
| 68 | −Exemple réel : *Process Engineer/Metallurgist* — Saint-Honoré · ∅ · parue le 2025-10-23. | |
| 41 | +*Aucune offre active en base pour cette source.* | |
| 69 | 42 | |
| 70 | 43 | ## Fréquence & budgets |
| 71 | 44 | |
@@ -80,15 +53,15 @@ Exemple réel : *Process Engineer/Metallurgist* — Saint-Honoré · ∅ · paru | ||
| 80 | 53 | |
| 81 | 54 | ## Volumétrie & complétude live |
| 82 | 55 | |
| 83 | −*(mesuré le 2026-10-14 18:40 EDT dans `data/jobka.db`)* | |
| 56 | +*(mesuré le 2026-10-31 04:03 EDT dans `data/jobka.db`)* | |
| 84 | 57 | |
| 85 | −- **Offres en base** : 1 (dont **1 actives**, 0 masquées comme doublons `dup_of`) | |
| 86 | −- **Salaire** : 1/1 actives (100 %) | |
| 87 | −- **GPS** : 1/1 actives (100 %) | |
| 88 | −- **Mode** : 0/1 actives (0 %) | |
| 89 | −- **Parution** : 1/1 actives (100 %) | |
| 90 | −- **Dernier sync** : 2026-10-14 15:45 — trouvées 1, +0, ~0, -0 | |
| 91 | −- **Syncs enregistrés** (`sync_log`) : 469 | |
| 58 | +- **Offres en base** : 1 (dont **0 actives**, 0 masquées comme doublons `dup_of`) | |
| 59 | +- **Salaire** : 0/0 actives (—) | |
| 60 | +- **GPS** : 0/0 actives (—) | |
| 61 | +- **Mode** : 0/0 actives (—) | |
| 62 | +- **Parution** : 0/0 actives (—) | |
| 63 | +- **Dernier sync** : 2026-10-31 04:03 — trouvées 0, +0, ~0, -0 | |
| 64 | +- **Syncs enregistrés** (`sync_log`) : 616 | |
| 92 | 65 | |
| 93 | 66 | ## Erreurs & dépannage |
| 94 | 67 | |
@@ -96,7 +69,7 @@ Erreurs relevées dans `sync_log` : | ||
| 96 | 69 | |
| 97 | 70 | | Erreur | Occurrences | Dernière fois | |
| 98 | 71 | |---|---|---| |
| 99 | −| 404 Client Error: Not Found for url: https://workforcenow.adp.com/mascsr/default/careercen… | 1 | 2026-10-10 02:00 | | |
| 72 | +| 404 Client Error: Not Found for url: https://workforcenow.adp.com/mascsr/default/careercen… | 3 | 2026-10-31 02:15 | | |
| 100 | 73 | | Expecting value: line 1 column 1 (char 0) | 2 | 2026-08-29 22:52 | |
| 101 | 74 | | ('Connection aborted.', ConnectionResetError(54, 'Connection reset by peer')) | 1 | 2026-08-29 02:25 | |
| 102 | 75 | |
modified
jobka/connectors/niobec.py
+80 −5
@@ -3,10 +3,11 @@ | ||
| 3 | 3 | # Auteur : Simon-Pierre Boucher |
| 4 | 4 | # Contact : contact@spboucher.ai |
| 5 | 5 | # Fichier : jobka/connectors/niobec.py |
| 6 | −# Rôle : Connecteur Niobec (Magris Performance Materials) — mine de niobium, | |
| 7 | −# Saint-Honoré (Saguenay) — ADP WFN + repli « détail seulement » | |
| 8 | −# quand l'API liste échoue (maintenances nocturnes ADP) | |
| 9 | −# Créé : 2026-08-25 Modifié : 2026-08-30 | |
| 6 | +# Rôle : Connecteur Niobec (Magris Performance Materials) — mine de niobium | |
| 7 | +# à Saint-Honoré (Saguenay), board ADP WFN corporatif Magris | |
| 8 | +# multi-sites filtré Québec + repli « détail seulement » quand | |
| 9 | +# l'API liste échoue (maintenances nocturnes ADP) | |
| 10 | +# Créé : 2026-08-25 Modifié : 2026-10-31 | |
| 10 | 11 | # ============================================================================= |
| 11 | 12 | """Niobec (Magris Performance Materials) — ADP Workforce Now, avec repli. |
| 12 | 13 | |
@@ -30,9 +31,49 @@ sorry.adp.com), l'erreur d'origine est propagée pour que le sync reste un | ||
| 30 | 31 | échec (inventaire préservé). Limite assumée : le repli ne découvre pas les |
| 31 | 32 | NOUVELLES offres — le chemin liste normal reprend seul au cycle suivant la |
| 32 | 33 | fin de la maintenance. |
| 34 | + | |
| 35 | +Chronologie (mission ka6 2026-10-31) : 4e tenant ADP de l'app touché par le | |
| 36 | +frontal intermittent PAR CID (même panne que bento_sushi 64f53c8f, cookit | |
| 37 | +7873198d et mitsubishi_hc_capital du 2026-10-26 — pool backend malade côté | |
| 38 | +ADP, « default backend - 404 » nginx de 150 octets). Vert found=1 en continu | |
| 39 | +jusqu'à 21:24 EDT le 30/10, puis 404 franc sur la liste à 23:45 et 02:15 ; | |
| 40 | +le repli « détail seulement » ci-dessus laisse volontairement passer les | |
| 41 | +4xx, d'où le stale. Sonde live 03:5x : liste ET détail 404 pour CE cid | |
| 42 | +pendant que nemaska_lithium/abritek/strathmore répondent 200 à la même | |
| 43 | +minute ; sur 6 essais, 1 seul a abouti (200 JSON, jobRequisitions non vide | |
| 44 | +avec un NOUVEL itemID 9207369420912_2) — intermittence ~1/6, pas une panne | |
| 45 | +totale. La page carrières officielle www.magrispm.com/careers référence | |
| 46 | +toujours ce cid : tenant vivant, aucune migration. Garde-fou répliqué des | |
| 47 | +trois frères : `_get_json` retente jusqu'à 30 fois (pause 2 s) sur | |
| 48 | +404/502/503/504/timeout/non-JSON, timeout abaissé 30→15 s pour borner les | |
| 49 | +connexions qui pendent. Dormant dès que le frontal est sain (1er essai OK = | |
| 50 | +zéro surcoût) ; un sync vert ne coûte qu'UN appel liste (détails en cache | |
| 51 | +BD). NE PAS retirer ce garde-fou si un futur scan le croise : il est inerte | |
| 52 | +hors panne. | |
| 53 | + | |
| 54 | +Même mission, 2e découverte — FORCE_CITY était FAUX pour ce tenant : le cid | |
| 55 | +099e24b7 n'est PAS un board Niobec mono-site mais le board corporatif | |
| 56 | +MAGRIS (www.magrispm.com/careers y pointe en lang=en_US ; niobec.com | |
| 57 | +redirige vers magrispm.com/niobec). La culture fr_CA est un angle mort | |
| 58 | +double : elle ne liste qu'1 réquisition sur 20 ET en omet les | |
| 59 | +requisitionLocations — l'unique offre fr_CA (9204575399835_1 « Process | |
| 60 | +Engineer/Metallurgist », circuits de broyage/flottation de TALC = usine de | |
| 61 | +Timmins) est localisée « Timmins, ON » dans la culture en_US, et était | |
| 62 | +publiée à tort comme Saint-Honoré QC via FORCE_CITY. Vérifié live | |
| 63 | +2026-10-31 : board en_US = 20 offres, 19/19 avec locations, toutes | |
| 64 | +ON/CO/MT/TX/VT, ZÉRO lieu QC. Correctif : LANG='en_US' (culture | |
| 65 | +sur-ensemble, locations fiables, le filtre Québec de la plateforme tranche | |
| 66 | +sur le vrai lieu) et FORCE_CITY retiré (sur un board corporatif | |
| 67 | +multi-sites, forcer une ville invente une donnée). found=0 est désormais le | |
| 68 | +reflet EXACT de la source — profil « ok=1 found=0 médiane ≤1 » (fiche | |
| 69 | +stale-volume-zero-faux-positif) : si niobec est re-signalé stale avec le | |
| 70 | +board en_US sans lieu QC, RIEN À FAIRE, il reverdira seul à la prochaine | |
| 71 | +embauche québécoise de Magris/Niobec. | |
| 33 | 72 | """ |
| 34 | 73 | from __future__ import annotations |
| 35 | 74 | |
| 75 | +import time | |
| 76 | + | |
| 36 | 77 | import requests |
| 37 | 78 | |
| 38 | 79 | from ..schema import JobPosting, clean_html |
@@ -44,7 +85,41 @@ class NiobecConnector(ADPWorkforceNowConnector): | ||
| 44 | 85 | EMPLOYER = "Niobec (Magris Performance Materials)" |
| 45 | 86 | CID = "099e24b7-1868-4283-a5d0-994ec5a80995" |
| 46 | 87 | CCID = "19000101_000001" |
| 47 | − FORCE_CITY = "Saint-Honoré" # mine mono-site Saint-Honoré (Saguenay) : l'API n'expose aucune localisation | |
| 88 | + # Board corporatif Magris multi-sites (QC/ON/CO/MT/TX/VT) : la culture | |
| 89 | + # fr_CA masque 19 réquisitions sur 20 ET leurs locations — en_US est le | |
| 90 | + # sur-ensemble fiable. PAS de FORCE_CITY : forcer Saint-Honoré publiait | |
| 91 | + # l'offre talc de Timmins (ON) comme québécoise (voir docstring). | |
| 92 | + LANG = "en_US" | |
| 93 | + | |
| 94 | + # Frontal ADP intermittent pour CE tenant (2026-10-31) : mêmes bornes que | |
| 95 | + # bento_sushi/cookit/mitsubishi_hc_capital — les 404 échouent vite (<1 s), | |
| 96 | + # le timeout court borne les connexions qui pendent, et un sync vert ne | |
| 97 | + # coûte qu'UN appel liste (détails en cache BD). | |
| 98 | + timeout = 15 | |
| 99 | + _FLAKY_TRIES = 30 | |
| 100 | + _FLAKY_PAUSE = 2.0 | |
| 101 | + | |
| 102 | + def _get_json(self, url: str, params: dict) -> dict: | |
| 103 | + last: Exception | None = None | |
| 104 | + for attempt in range(self._FLAKY_TRIES): | |
| 105 | + if attempt: | |
| 106 | + time.sleep(self._FLAKY_PAUSE) | |
| 107 | + try: | |
| 108 | + return super()._get_json(url, params) | |
| 109 | + except requests.HTTPError as exc: | |
| 110 | + status = getattr(exc.response, "status_code", None) | |
| 111 | + if status not in (404, 502, 503, 504): | |
| 112 | + raise | |
| 113 | + last = exc | |
| 114 | + except (requests.Timeout, requests.ConnectionError) as exc: | |
| 115 | + last = exc | |
| 116 | + except RuntimeError as exc: | |
| 117 | + # « ADP non-JSON après 3 essais » de la classe de base : | |
| 118 | + # même frontal malade, même traitement. | |
| 119 | + if not str(exc).startswith("ADP non-JSON"): | |
| 120 | + raise | |
| 121 | + last = exc | |
| 122 | + raise last | |
| 48 | 123 | |
| 49 | 124 | def fetch(self) -> list[JobPosting]: |
| 50 | 125 | try: |
| 51 | 126 | |