[ka6] fix connecteur bly: angle mort de culture récupéré (found 6→7) + panne shard Dayforce 2026-10-14 déjà résolue + double artefact vague C corrigé (Field Mechanic → Boart Longyear)
Panne: namespace supplémentaire de la panne partielle de shard Dayforce du 2026-10-14, DÉJÀ RÉSOLUE côté Dayforce à l'intervention (syncs verts found=6 jusqu'à 17:58, 500 à 17:33 puis 503 soutenu sur /api/geo/bly/jobposting/search de 18:14 à 22:05, échec franc ok=0 jamais de faux 0, 6 offres QC actives préservées; le scheduler repasse vert seul à 22:17 found=6 = médiane 6.0). Pas de migration: careers.boartlongyear.com (frontend custom, l'ancien /careers/ est 404) fait postuler via jobs.dayforcehcm.com/en-CA/bly/CANDIDATEPORTAL = même tenant/board. VRAI angle mort de culture corrigé: fr-CA ne voit que les offres traduites (7 dont 6 QC), en-CA liste les 63 offres du board dont « Foreur Long-Trou/Dynamiteur » Val-d'Or (id 1000) publiée en ANGLAIS SEULEMENT et pourtant listée sur le site carrières officiel — invisible en fr-CA. Fix pattern peaktech/challenger/fnfmb: CULTURES=(fr-CA,en-CA), fusion par external_id priorité fr-CA → sync réel found=7, added=1, updated=6. DOUBLE artefact vague C corrigé (classe gevgroupltd 8ff81d0): EMPLOYER/name = titre de poste « Field Mechanic » → Boart Longyear (bly = ticker ASX; principal fournisseur mondial de services de forage minier, base QC à Val-d'Or; nom lu dans les descriptions FR des offres; bly.py + sources.json), url vide → boartlongyear.com; propagation faite aux 7 lignes actives via content_hash. Docstring enrichie, fiches bly.md/ats-dayforce.md/INDEX.md régénérées. Non-régression dayforce via bleufeu found=1. 107 tests verts, pm2 restart OK, site local+public 200. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
5 changed files +106 −65
modified
data/sources.json
+2 −2
@@ -6468,8 +6468,8 @@ | |||||
| 6468 | }, | 6468 | }, | ||
| 6469 | { | 6469 | { | ||
| 6470 | "id": "bly", | 6470 | "id": "bly", | ||
| 6471 | − "name": "Field Mechanic", | 6471 | + "name": "Boart Longyear", | ||
| 6472 | − "url": "", | 6472 | + "url": "https://www.boartlongyear.com", | ||
| 6473 | "careers_url": "https://jobs.dayforcehcm.com/fr-CA/bly/CANDIDATEPORTAL", | 6473 | "careers_url": "https://jobs.dayforcehcm.com/fr-CA/bly/CANDIDATEPORTAL", | ||
| 6474 | "sectors": [ | 6474 | "sectors": [ | ||
| 6475 | "Automobile" | 6475 | "Automobile" | ||
modified
docs/connecteurs/INDEX.md
+10 −10
@@ -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-14 22:25 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | 8 | +Généré : 2026-10-14 22:45 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-14 22: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`. | 15 | +> Index généré le 2026-10-14 22:45 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** — **26073 offres actives** (23313 directes, 2760 portails ; 113 masquées comme doublons inter-sources, soit 25960 visibles). 1134 fiches. | 17 | +**1104 employeurs directs** connectés via **25 plateformes ATS** + **3 portails agrégateurs** + le canal de **dépôt direct** — **26077 offres actives** (23317 directes, 2760 portails ; 113 masquées comme doublons inter-sources, soit 25964 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,10 +22,10 @@ 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 | 7731 | 44 % | 88 % | | 25 | +| [`workday`](ats-workday.md) | 232 | 7732 | 44 % | 87 % | | ||
| 26 | | [`smartrecruiters`](ats-smartrecruiters.md) | 172 | 3014 | 17 % | 99 % | | 26 | | [`smartrecruiters`](ats-smartrecruiters.md) | 172 | 3014 | 17 % | 99 % | | ||
| 27 | +| [`dayforce`](ats-dayforce.md) | 129 | 1913 | 9 % | 100 % | | ||||
| 27 | | [`workable`](ats-workable.md) | 71 | 1912 | 18 % | 100 % | | 28 | | [`workable`](ats-workable.md) | 71 | 1912 | 18 % | 100 % | | ||
| 28 | −| [`dayforce`](ats-dayforce.md) | 129 | 1912 | 9 % | 100 % | | ||||
| 29 | | [`successfactors`](ats-successfactors.md) | 12 | 1769 | 21 % | 99 % | | 29 | | [`successfactors`](ats-successfactors.md) | 12 | 1769 | 21 % | 99 % | | ||
| 30 | | [`njoyn`](ats-njoyn.md) | 11 | 1279 | 70 % | 87 % | | 30 | | [`njoyn`](ats-njoyn.md) | 11 | 1279 | 70 % | 87 % | | ||
| 31 | | [`workland`](ats-workland.md) | 1 | 1092 | 37 % | 100 % | | 31 | | [`workland`](ats-workland.md) | 1 | 1092 | 37 % | 100 % | | ||
@@ -35,7 +35,7 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser | |||||
| 35 | | [`breezy`](ats-breezy.md) | 71 | 403 | 37 % | 95 % | | 35 | | [`breezy`](ats-breezy.md) | 71 | 403 | 37 % | 95 % | | ||
| 36 | | [`bamboohr`](ats-bamboohr.md) | 37 | 290 | 9 % | 100 % | | 36 | | [`bamboohr`](ats-bamboohr.md) | 37 | 290 | 9 % | 100 % | | ||
| 37 | | [`recruitee`](ats-recruitee.md) | 30 | 280 | 19 % | 97 % | | 37 | | [`recruitee`](ats-recruitee.md) | 30 | 280 | 19 % | 97 % | | ||
| 38 | −| [`ashby`](ats-ashby.md) | 41 | 278 | 49 % | 57 % | | 38 | +| [`ashby`](ats-ashby.md) | 41 | 280 | 49 % | 56 % | | ||
| 39 | | [`taleo_tbe`](ats-taleo_tbe.md) | 7 | 201 | 24 % | 60 % | | 39 | | [`taleo_tbe`](ats-taleo_tbe.md) | 7 | 201 | 24 % | 60 % | | ||
| 40 | | [`zoho_recruit`](ats-zoho_recruit.md) | 17 | 161 | 13 % | 88 % | | 40 | | [`zoho_recruit`](ats-zoho_recruit.md) | 17 | 161 | 13 % | 88 % | | ||
| 41 | | [`jazzhr`](ats-jazzhr.md) | 28 | 154 | 14 % | 92 % | | 41 | | [`jazzhr`](ats-jazzhr.md) | 28 | 154 | 14 % | 92 % | | ||
@@ -84,7 +84,7 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser | |||||
| 84 | | [CISSS de Laval](cisss_laval.md) | [`wpjobmanager`](ats-wpjobmanager.md) | 178 | 2 % | 100 % | ✅ | | 84 | | [CISSS de Laval](cisss_laval.md) | [`wpjobmanager`](ats-wpjobmanager.md) | 178 | 2 % | 100 % | ✅ | | ||
| 85 | | [Sodexo Canada](sodexocanadaltd.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 171 | 82 % | 99 % | ✅ | | 85 | | [Sodexo Canada](sodexocanadaltd.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 171 | 82 % | 99 % | ✅ | | ||
| 86 | | [Le Groupe Maurice](groupemaurice.md) | [`dayforce`](ats-dayforce.md) | 153 | 0 % | 100 % | ✅ | | 86 | | [Le Groupe Maurice](groupemaurice.md) | [`dayforce`](ats-dayforce.md) | 153 | 0 % | 100 % | ✅ | | ||
| 87 | −| [Consignaction (AQRCB)](consignaction.md) | [`workday`](ats-workday.md) | 149 | 87 % | 100 % | ✅ | | 87 | +| [Consignaction (AQRCB)](consignaction.md) | [`workday`](ats-workday.md) | 150 | 87 % | 99 % | ✅ | | ||
| 88 | | [CISSS de l'Abitibi-Témiscamingue](cisss_abitibi.md) | [`wpjobmanager`](ats-wpjobmanager.md) | 143 | 0 % | 100 % | ✅ | | 88 | | [CISSS de l'Abitibi-Témiscamingue](cisss_abitibi.md) | [`wpjobmanager`](ats-wpjobmanager.md) | 143 | 0 % | 100 % | ✅ | | ||
| 89 | | [La Vie en Rose](lavieenrose.md) | [`dayforce`](ats-dayforce.md) | 143 | 3 % | 100 % | ✅ | | 89 | | [La Vie en Rose](lavieenrose.md) | [`dayforce`](ats-dayforce.md) | 143 | 3 % | 100 % | ✅ | | ||
| 90 | | [Vetstrategy](vetstrategy.md) | [`dayforce`](ats-dayforce.md) | 140 | 4 % | 100 % | ✅ | | 90 | | [Vetstrategy](vetstrategy.md) | [`dayforce`](ats-dayforce.md) | 140 | 4 % | 100 % | ✅ | | ||
@@ -514,6 +514,7 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser | |||||
| 514 | | [Alta Équipements de Manutention](altg.md) | [`dayforce`](ats-dayforce.md) | 7 | 14 % | 100 % | ✅ | | 514 | | [Alta Équipements de Manutention](altg.md) | [`dayforce`](ats-dayforce.md) | 7 | 14 % | 100 % | ✅ | | ||
| 515 | | [Artefact North America](artefactnoram.md) | [`greenhouse`](ats-greenhouse.md) | 7 | 57 % | 100 % | ✅ | | 515 | | [Artefact North America](artefactnoram.md) | [`greenhouse`](ats-greenhouse.md) | 7 | 57 % | 100 % | ✅ | | ||
| 516 | | [Big Bang](bigbang.md) | [`bamboohr`](ats-bamboohr.md) | 7 | 29 % | 100 % | ✅ | | 516 | | [Big Bang](bigbang.md) | [`bamboohr`](ats-bamboohr.md) | 7 | 29 % | 100 % | ✅ | | ||
| 517 | +| [Boart Longyear](bly.md) | [`dayforce`](ats-dayforce.md) | 7 | 100 % | 100 % | ✅ | | ||||
| 517 | | [CAM Mécanique](cammecanique.md) | [`teamtailor`](ats-teamtailor.md) | 7 | 0 % | 100 % | ✅ | | 518 | | [CAM Mécanique](cammecanique.md) | [`teamtailor`](ats-teamtailor.md) | 7 | 0 % | 100 % | ✅ | | ||
| 518 | | [Cerence](cerence.md) | [`workday`](ats-workday.md) | 7 | 71 % | 29 % | ✅ | | 519 | | [Cerence](cerence.md) | [`workday`](ats-workday.md) | 7 | 71 % | 29 % | ✅ | | ||
| 519 | | [Cfibfcei](cfibfcei.md) | [`dayforce`](ats-dayforce.md) | 7 | 0 % | 100 % | ✅ | | 520 | | [Cfibfcei](cfibfcei.md) | [`dayforce`](ats-dayforce.md) | 7 | 0 % | 100 % | ✅ | | ||
@@ -553,7 +554,7 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser | |||||
| 553 | | [Aviya Aerospace Systems](aviyatech.md) | [`lever`](ats-lever.md) | 6 | 0 % | 100 % | ✅ | | 554 | | [Aviya Aerospace Systems](aviyatech.md) | [`lever`](ats-lever.md) | 6 | 0 % | 100 % | ✅ | | ||
| 554 | | [Avocat·e de litige / Litigation Associate](clydeco.md) | [`workday`](ats-workday.md) | 6 | 0 % | 100 % | ✅ | | 555 | | [Avocat·e de litige / Litigation Associate](clydeco.md) | [`workday`](ats-workday.md) | 6 | 0 % | 100 % | ✅ | | ||
| 555 | | [Bilingual (French/English) Sales Broker (RIBO Licensed)](ogc.md) | [`dayforce`](ats-dayforce.md) | 6 | 50 % | 100 % | ✅ | | 556 | | [Bilingual (French/English) Sales Broker (RIBO Licensed)](ogc.md) | [`dayforce`](ats-dayforce.md) | 6 | 50 % | 100 % | ✅ | | ||
| 556 | −| [Board](deltastar.md) | [`dayforce`](ats-dayforce.md) | 6 | 33 % | 100 % | ❌ | | 557 | +| [Board](deltastar.md) | [`dayforce`](ats-dayforce.md) | 6 | 33 % | 100 % | ✅ | | ||
| 557 | | [Challenger Motor Freight Inc.](challenger.md) | [`dayforce`](ats-dayforce.md) | 6 | 67 % | 100 % | ✅ | | 558 | | [Challenger Motor Freight Inc.](challenger.md) | [`dayforce`](ats-dayforce.md) | 6 | 67 % | 100 % | ✅ | | ||
| 558 | | [Chanel](cc.md) | [`workday`](ats-workday.md) | 6 | 17 % | 100 % | ✅ | | 559 | | [Chanel](cc.md) | [`workday`](ats-workday.md) | 6 | 17 % | 100 % | ✅ | | ||
| 559 | | [Chef de secteur](gsknch.md) | [`workday`](ats-workday.md) | 6 | 0 % | 100 % | ✅ | | 560 | | [Chef de secteur](gsknch.md) | [`workday`](ats-workday.md) | 6 | 0 % | 100 % | ✅ | | ||
@@ -563,7 +564,6 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser | |||||
| 563 | | [Dxctechnology](dxctechnology.md) | [`workday`](ats-workday.md) | 6 | 0 % | 33 % | ✅ | | 564 | | [Dxctechnology](dxctechnology.md) | [`workday`](ats-workday.md) | 6 | 0 % | 33 % | ✅ | | ||
| 564 | | [EQ Bank](eqbank.md) | [`lever`](ats-lever.md) | 6 | 67 % | 50 % | ✅ | | 565 | | [EQ Bank](eqbank.md) | [`lever`](ats-lever.md) | 6 | 67 % | 50 % | ✅ | | ||
| 565 | | [Fastco Canada](fastcocanada.md) | [`dayforce`](ats-dayforce.md) | 6 | 0 % | 100 % | ✅ | | 566 | | [Fastco Canada](fastcocanada.md) | [`dayforce`](ats-dayforce.md) | 6 | 0 % | 100 % | ✅ | | ||
| 566 | −| [Field Mechanic](bly.md) | [`dayforce`](ats-dayforce.md) | 6 | 100 % | 100 % | ✅ | | ||||
| 567 | | [GAME DESIGN AND VIDEO GAME LEVEL](lci.md) | [`dayforce`](ats-dayforce.md) | 6 | 0 % | 100 % | ✅ | | 567 | | [GAME DESIGN AND VIDEO GAME LEVEL](lci.md) | [`dayforce`](ats-dayforce.md) | 6 | 0 % | 100 % | ✅ | | ||
| 568 | | [GoMaterials](gomaterials.md) | [`lever`](ats-lever.md) | 6 | 0 % | 100 % | ✅ | | 568 | | [GoMaterials](gomaterials.md) | [`lever`](ats-lever.md) | 6 | 0 % | 100 % | ✅ | | ||
| 569 | | [Groupe Beaudry](groupebeaudry.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 6 | 50 % | 100 % | ✅ | | 569 | | [Groupe Beaudry](groupebeaudry.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 6 | 50 % | 100 % | ✅ | | ||
@@ -811,6 +811,7 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser | |||||
| 811 | | [Conseil de gestion financière des Premières Nations (FNFMB)](fnfmb.md) | [`dayforce`](ats-dayforce.md) | 2 | 0 % | 100 % | ✅ | | 811 | | [Conseil de gestion financière des Premières Nations (FNFMB)](fnfmb.md) | [`dayforce`](ats-dayforce.md) | 2 | 0 % | 100 % | ✅ | | ||
| 812 | | [Conseil régional de l'environnement - Région de la Capitale Nationale](conseilrgionaldelenvironnement_rgiondelacapitalenationale.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 2 | 0 % | 100 % | ✅ | | 812 | | [Conseil régional de l'environnement - Région de la Capitale Nationale](conseilrgionaldelenvironnement_rgiondelacapitalenationale.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 2 | 0 % | 100 % | ✅ | | ||
| 813 | | [CWP Energy](mcgillstlaurent.md) | [`jazzhr`](ats-jazzhr.md) | 2 | 0 % | 100 % | ✅ | | 813 | | [CWP Energy](mcgillstlaurent.md) | [`jazzhr`](ats-jazzhr.md) | 2 | 0 % | 100 % | ✅ | | ||
| 814 | +| [Delos Data](delos_data.md) | [`ashby`](ats-ashby.md) | 2 | 100 % | 0 % | ✅ | | ||||
| 814 | | [Dentons](dentons.md) | [`successfactors`](ats-successfactors.md) | 2 | 100 % | 100 % | ✅ | | 815 | | [Dentons](dentons.md) | [`successfactors`](ats-successfactors.md) | 2 | 100 % | 100 % | ✅ | | ||
| 815 | | [Devoted Studios](devoted_studios_1.md) | [`workable`](ats-workable.md) | 2 | 0 % | 100 % | ✅ | | 816 | | [Devoted Studios](devoted_studios_1.md) | [`workable`](ats-workable.md) | 2 | 0 % | 100 % | ✅ | | ||
| 816 | | [DONTNOD](dontnod.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 2 | 0 % | 100 % | ✅ | | 817 | | [DONTNOD](dontnod.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 2 | 0 % | 100 % | ✅ | | ||
@@ -1078,7 +1079,6 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser | |||||
| 1078 | | [CSC Generation](cscgeneration_2.md) | [`lever`](ats-lever.md) | 0 | — | — | ✅ | | 1079 | | [CSC Generation](cscgeneration_2.md) | [`lever`](ats-lever.md) | 0 | — | — | ✅ | | ||
| 1079 | | [CSN Collision](csncollision.md) | [`workable`](ats-workable.md) | 0 | — | — | ✅ | | 1080 | | [CSN Collision](csncollision.md) | [`workable`](ats-workable.md) | 0 | — | — | ✅ | | ||
| 1080 | | [Culligan Quench](quenchwater.md) | [`lever`](ats-lever.md) | 0 | — | — | ✅ | | 1081 | | [Culligan Quench](quenchwater.md) | [`lever`](ats-lever.md) | 0 | — | — | ✅ | | ||
| 1081 | −| [Delos Data](delos_data.md) | [`ashby`](ats-ashby.md) | 0 | — | — | ✅ | | ||||
| 1082 | | [Dentons](dentons_europe.md) | [`workable`](ats-workable.md) | 0 | — | — | ✅ | | 1082 | | [Dentons](dentons_europe.md) | [`workable`](ats-workable.md) | 0 | — | — | ✅ | | ||
| 1083 | | [DropGenie](drop_genie.md) | [`breezy`](ats-breezy.md) | 0 | — | — | ✅ | | 1083 | | [DropGenie](drop_genie.md) | [`breezy`](ats-breezy.md) | 0 | — | — | ✅ | | ||
| 1084 | | [Earth Rated](earthrated.md) | [`greenhouse`](ats-greenhouse.md) | 0 | — | — | ✅ | | 1084 | | [Earth Rated](earthrated.md) | [`greenhouse`](ats-greenhouse.md) | 0 | — | — | ✅ | | ||
modified
docs/connecteurs/ats-dayforce.md
+31 −31
@@ -5,14 +5,14 @@ Auteur : Simon-Pierre Boucher | |||||
| 5 | Contact : contact@spboucher.ai | 5 | Contact : contact@spboucher.ai | ||
| 6 | Fichier : docs/connecteurs/ats-dayforce.md | 6 | Fichier : docs/connecteurs/ats-dayforce.md | ||
| 7 | Rôle : Fiche plateforme ATS dayforce — mécanique partagée + tableau des 129 tenants | 7 | Rôle : Fiche plateforme ATS dayforce — mécanique partagée + tableau des 129 tenants | ||
| 8 | −Généré : 2026-10-14 22:25 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | 8 | +Généré : 2026-10-14 22:45 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 | # Plateforme ATS `dayforce` | 13 | # Plateforme ATS `dayforce` | ||
| 14 | 14 | ||||
| 15 | −**129 employeurs connectés** via cette plateforme — **1912 offres actives**. Module partagé : `jobka/connectors/dayforce.py` ; un employeur = une sous-classe d'environ 10 lignes. | 15 | +**129 employeurs connectés** via cette plateforme — **1913 offres actives**. Module partagé : `jobka/connectors/dayforce.py` ; un employeur = une sous-classe d'environ 10 lignes. | ||
| 16 | 16 | ||||
| 17 | ## Description & mécanique | 17 | ## Description & mécanique | ||
| 18 | 18 | ||||
@@ -54,12 +54,12 @@ Généré : 2026-10-14 22:25 EDT par scripts/gen_connector_docs.py — NE PAS | |||||
| 54 | | [Le Groupe Maurice](groupemaurice.md) | 153 | 0 % | 100 % | 0 % | 2026-10-14 18:39 | ✅ | | 54 | | [Le Groupe Maurice](groupemaurice.md) | 153 | 0 % | 100 % | 0 % | 2026-10-14 18:39 | ✅ | | ||
| 55 | | [La Vie en Rose](lavieenrose.md) | 143 | 3 % | 100 % | 0 % | 2026-10-14 19:35 | ✅ | | 55 | | [La Vie en Rose](lavieenrose.md) | 143 | 3 % | 100 % | 0 % | 2026-10-14 19:35 | ✅ | | ||
| 56 | | [Vetstrategy](vetstrategy.md) | 140 | 4 % | 100 % | 1 % | 2026-10-14 19:32 | ✅ | | 56 | | [Vetstrategy](vetstrategy.md) | 140 | 4 % | 100 % | 1 % | 2026-10-14 19:32 | ✅ | | ||
| 57 | −| [Bulkbarn](bulkbarn.md) | 75 | 0 % | 100 % | 0 % | 2026-10-14 22:18 | ✅ | | 57 | +| [Bulkbarn](bulkbarn.md) | 75 | 0 % | 100 % | 0 % | 2026-10-14 22:33 | ✅ | | ||
| 58 | −| [Automobileendirect](automobileendirect.md) | 60 | 0 % | 100 % | 0 % | 2026-10-14 22:15 | ✅ | | 58 | +| [Automobileendirect](automobileendirect.md) | 60 | 0 % | 100 % | 0 % | 2026-10-14 22:31 | ✅ | | ||
| 59 | | [Gdv](gdv.md) | 58 | 0 % | 100 % | 0 % | 2026-10-14 18:36 | ✅ | | 59 | | [Gdv](gdv.md) | 58 | 0 % | 100 % | 0 % | 2026-10-14 18:36 | ✅ | | ||
| 60 | | [Gray Collection (Groupe Antonopoulos)](graycollection.md) | 55 | 0 % | 100 % | 0 % | 2026-10-14 18:38 | ✅ | | 60 | | [Gray Collection (Groupe Antonopoulos)](graycollection.md) | 55 | 0 % | 100 % | 0 % | 2026-10-14 18:38 | ✅ | | ||
| 61 | | [Laura Canada](lauracanada.md) | 52 | 0 % | 100 % | 0 % | 2026-10-14 19:01 | ✅ | | 61 | | [Laura Canada](lauracanada.md) | 52 | 0 % | 100 % | 0 % | 2026-10-14 19:01 | ✅ | | ||
| 62 | −| [BPA (Experts-conseils)](bpa.md) | 49 | 0 % | 100 % | 0 % | 2026-10-14 22:18 | ✅ | | 62 | +| [BPA (Experts-conseils)](bpa.md) | 49 | 0 % | 100 % | 0 % | 2026-10-14 22:33 | ✅ | | ||
| 63 | | [Unoria](unoria.md) | 47 | 0 % | 100 % | 0 % | 2026-10-14 19:30 | ✅ | | 63 | | [Unoria](unoria.md) | 47 | 0 % | 100 % | 0 % | 2026-10-14 19:30 | ✅ | | ||
| 64 | | [Camions Excellence Peterbilt](excellencepeterbilt.md) | 45 | 31 % | 100 % | 0 % | 2026-10-14 18:34 | ✅ | | 64 | | [Camions Excellence Peterbilt](excellencepeterbilt.md) | 45 | 31 % | 100 % | 0 % | 2026-10-14 18:34 | ✅ | | ||
| 65 | | [Lesymcaquebec](lesymcaquebec.md) | 45 | 20 % | 100 % | 0 % | 2026-10-14 19:03 | ✅ | | 65 | | [Lesymcaquebec](lesymcaquebec.md) | 45 | 20 % | 100 % | 0 % | 2026-10-14 19:03 | ✅ | | ||
@@ -72,7 +72,7 @@ Généré : 2026-10-14 22:25 EDT par scripts/gen_connector_docs.py — NE PAS | |||||
| 72 | | [Lgs](lgs.md) | 29 | 0 % | 100 % | 31 % | 2026-10-14 19:03 | ✅ | | 72 | | [Lgs](lgs.md) | 29 | 0 % | 100 % | 31 % | 2026-10-14 19:03 | ✅ | | ||
| 73 | | [Soprema](soprema.md) | 27 | 30 % | 100 % | 0 % | 2026-10-14 19:22 | ✅ | | 73 | | [Soprema](soprema.md) | 27 | 30 % | 100 % | 0 % | 2026-10-14 19:22 | ✅ | | ||
| 74 | | [Stellajones](stellajones.md) | 25 | 24 % | 100 % | 0 % | 2026-10-14 19:24 | ✅ | | 74 | | [Stellajones](stellajones.md) | 25 | 24 % | 100 % | 0 % | 2026-10-14 19:24 | ✅ | | ||
| 75 | −| [Cmpams](cmpams.md) | 22 | 0 % | 100 % | 0 % | 2026-10-14 21:06 | ✅ | | 75 | +| [Cmpams](cmpams.md) | 22 | 0 % | 100 % | 0 % | 2026-10-14 22:42 | ✅ | | ||
| 76 | | [Groupe Mach](groupemach.md) | 20 | 10 % | 100 % | 0 % | 2026-10-14 18:39 | ✅ | | 76 | | [Groupe Mach](groupemach.md) | 20 | 10 % | 100 % | 0 % | 2026-10-14 18:39 | ✅ | | ||
| 77 | | [Logm](logm.md) | 20 | 80 % | 100 % | 30 % | 2026-10-14 19:03 | ✅ | | 77 | | [Logm](logm.md) | 20 | 80 % | 100 % | 30 % | 2026-10-14 19:03 | ✅ | | ||
| 78 | | [Premierparks](premierparks.md) | 19 | 11 % | 100 % | 0 % | 2026-10-14 19:13 | ✅ | | 78 | | [Premierparks](premierparks.md) | 19 | 11 % | 100 % | 0 % | 2026-10-14 19:13 | ✅ | | ||
@@ -83,7 +83,7 @@ Généré : 2026-10-14 22:25 EDT par scripts/gen_connector_docs.py — NE PAS | |||||
| 83 | | [United Services Group](unitedservices.md) | 15 | 0 % | 100 % | 0 % | 2026-10-14 19:30 | ✅ | | 83 | | [United Services Group](unitedservices.md) | 15 | 0 % | 100 % | 0 % | 2026-10-14 19:30 | ✅ | | ||
| 84 | | [Intervenant·e au suivi psychosocial](obm.md) | 15 | 13 % | 100 % | 0 % | 2026-10-14 19:11 | ✅ | | 84 | | [Intervenant·e au suivi psychosocial](obm.md) | 15 | 13 % | 100 % | 0 % | 2026-10-14 19:11 | ✅ | | ||
| 85 | | [CONTRÔLEUR](novatech.md) | 15 | 33 % | 100 % | 0 % | 2026-10-14 19:10 | ✅ | | 85 | | [CONTRÔLEUR](novatech.md) | 15 | 33 % | 100 % | 0 % | 2026-10-14 19:10 | ✅ | | ||
| 86 | −| [Boralex](boralex.md) | 14 | 0 % | 100 % | 0 % | 2026-10-14 22:17 | ✅ | | 86 | +| [Boralex](boralex.md) | 14 | 0 % | 100 % | 0 % | 2026-10-14 22:33 | ✅ | | ||
| 87 | | [Hygiéniste Industrielle](kdcone.md) | 14 | 0 % | 100 % | 0 % | 2026-10-14 19:52 | ❌ | | 87 | | [Hygiéniste Industrielle](kdcone.md) | 14 | 0 % | 100 % | 0 % | 2026-10-14 19:52 | ❌ | | ||
| 88 | | [Lapresse2018Inc](lapresse2018inc.md) | 14 | 0 % | 100 % | 0 % | 2026-10-14 19:01 | ✅ | | 88 | | [Lapresse2018Inc](lapresse2018inc.md) | 14 | 0 % | 100 % | 0 % | 2026-10-14 19:01 | ✅ | | ||
| 89 | | [Superior Propane](superiorplus.md) | 14 | 64 % | 100 % | 0 % | 2026-10-14 21:20 | ❌ | | 89 | | [Superior Propane](superiorplus.md) | 14 | 64 % | 100 % | 0 % | 2026-10-14 21:20 | ❌ | | ||
@@ -93,50 +93,50 @@ Généré : 2026-10-14 22:25 EDT par scripts/gen_connector_docs.py — NE PAS | |||||
| 93 | | [Erb](erb.md) | 13 | 54 % | 100 % | 0 % | 2026-10-14 18:33 | ✅ | | 93 | | [Erb](erb.md) | 13 | 54 % | 100 % | 0 % | 2026-10-14 18:33 | ✅ | | ||
| 94 | | [Avocat·e, Bureau de l'avocate générale](mthris.md) | 13 | 46 % | 100 % | 0 % | 2026-10-14 19:08 | ✅ | | 94 | | [Avocat·e, Bureau de l'avocate générale](mthris.md) | 13 | 46 % | 100 % | 0 % | 2026-10-14 19:08 | ✅ | | ||
| 95 | | [Valnet](valnetinc.md) | 13 | 0 % | 100 % | 77 % | 2026-10-14 21:40 | ❌ | | 95 | | [Valnet](valnetinc.md) | 13 | 0 % | 100 % | 77 % | 2026-10-14 21:40 | ❌ | | ||
| 96 | −| [Heavy Machinery Operator](dhilmarele.md) | 12 | 0 % | 100 % | 0 % | 2026-10-14 18:30 | ✅ | | 96 | +| [Heavy Machinery Operator](dhilmarele.md) | 12 | 0 % | 100 % | 0 % | 2026-10-14 22:45 | ✅ | | ||
| 97 | −| [Colabor](colabor.md) | 11 | 9 % | 100 % | 0 % | 2026-10-14 21:06 | ✅ | | 97 | +| [Colabor](colabor.md) | 11 | 9 % | 100 % | 0 % | 2026-10-14 22:42 | ✅ | | ||
| 98 | | [Chef.fe de service de quart, soir](lantic.md) | 11 | 45 % | 100 % | 0 % | 2026-10-14 19:01 | ✅ | | 98 | | [Chef.fe de service de quart, soir](lantic.md) | 11 | 45 % | 100 % | 0 % | 2026-10-14 19:01 | ✅ | | ||
| 99 | −| [CEP Forensique](cep.md) | 11 | 0 % | 100 % | 0 % | 2026-10-14 22:23 | ✅ | | 99 | +| [CEP Forensique](cep.md) | 11 | 0 % | 100 % | 0 % | 2026-10-14 22:38 | ✅ | | ||
| 100 | −| [Associé(e), entretien préventif](boardwalkreit.md) | 10 | 0 % | 100 % | 0 % | 2026-10-14 22:17 | ✅ | | 100 | +| [Associé(e), entretien préventif](boardwalkreit.md) | 10 | 0 % | 100 % | 0 % | 2026-10-14 22:32 | ✅ | | ||
| 101 | −| [Ccmhockey](ccmhockey.md) | 10 | 0 % | 100 % | 0 % | 2026-10-14 22:23 | ✅ | | 101 | +| [Ccmhockey](ccmhockey.md) | 10 | 0 % | 100 % | 0 % | 2026-10-14 22:38 | ✅ | | ||
| 102 | | [Groupe Scandinave (Scandinave Spa)](gscandinave.md) | 10 | 0 % | 100 % | 0 % | 2026-10-14 18:39 | ✅ | | 102 | | [Groupe Scandinave (Scandinave Spa)](gscandinave.md) | 10 | 0 % | 100 % | 0 % | 2026-10-14 18:39 | ✅ | | ||
| 103 | | [Eldoradogold](eldoradogold.md) | 9 | 0 % | 100 % | 0 % | 2026-10-14 18:32 | ✅ | | 103 | | [Eldoradogold](eldoradogold.md) | 9 | 0 % | 100 % | 0 % | 2026-10-14 18:32 | ✅ | | ||
| 104 | | [Porta](porta.md) | 9 | 11 % | 100 % | 0 % | 2026-10-14 19:12 | ✅ | | 104 | | [Porta](porta.md) | 9 | 11 % | 100 % | 0 % | 2026-10-14 19:12 | ✅ | | ||
| 105 | | [Vortex](vortex.md) | 9 | 0 % | 100 % | 0 % | 2026-10-14 19:33 | ✅ | | 105 | | [Vortex](vortex.md) | 9 | 0 % | 100 % | 0 % | 2026-10-14 19:33 | ✅ | | ||
| 106 | | [Administration portuaire de Québec](portquebec.md) | 8 | 0 % | 100 % | 0 % | 2026-10-14 19:13 | ✅ | | 106 | | [Administration portuaire de Québec](portquebec.md) | 8 | 0 % | 100 % | 0 % | 2026-10-14 19:13 | ✅ | | ||
| 107 | | [Eidos-Montréal](eidosmontreal.md) | 8 | 0 % | 100 % | 0 % | 2026-10-14 18:32 | ✅ | | 107 | | [Eidos-Montréal](eidosmontreal.md) | 8 | 0 % | 100 % | 0 % | 2026-10-14 18:32 | ✅ | | ||
| 108 | −| [Manœuvre générale](athos.md) | 8 | 50 % | 100 % | 0 % | 2026-10-14 22:14 | ✅ | | 108 | +| [Manœuvre générale](athos.md) | 8 | 50 % | 100 % | 0 % | 2026-10-14 22:29 | ✅ | | ||
| 109 | | [Quadra](quadra.md) | 8 | 100 % | 100 % | 75 % | 2026-10-14 19:16 | ✅ | | 109 | | [Quadra](quadra.md) | 8 | 100 % | 100 % | 75 % | 2026-10-14 19:16 | ✅ | | ||
| 110 | | [E-Commerce Shipping Associate](slg001.md) | 8 | 0 % | 100 % | 0 % | 2026-10-14 19:21 | ✅ | | 110 | | [E-Commerce Shipping Associate](slg001.md) | 8 | 0 % | 100 % | 0 % | 2026-10-14 19:21 | ✅ | | ||
| 111 | | [Nationex](nationex.md) | 7 | 0 % | 100 % | 14 % | 2026-10-14 19:08 | ✅ | | 111 | | [Nationex](nationex.md) | 7 | 0 % | 100 % | 14 % | 2026-10-14 19:08 | ✅ | | ||
| 112 | −| [Alta Équipements de Manutention](altg.md) | 7 | 14 % | 100 % | 0 % | 2026-10-14 22:25 | ✅ | | 112 | +| [Alta Équipements de Manutention](altg.md) | 7 | 14 % | 100 % | 0 % | 2026-10-14 22:29 | ✅ | | ||
| 113 | −| [Cfibfcei](cfibfcei.md) | 7 | 0 % | 100 % | 0 % | 2026-10-14 22:23 | ✅ | | 113 | +| [Cfibfcei](cfibfcei.md) | 7 | 0 % | 100 % | 0 % | 2026-10-14 22:38 | ✅ | | ||
| 114 | +| [Boart Longyear](bly.md) | 7 | 100 % | 100 % | 0 % | 2026-10-14 22:45 | ✅ | | ||||
| 114 | | [Sales Associate-Retail](roots.md) | 7 | 0 % | 100 % | 0 % | 2026-10-14 19:19 | ✅ | | 115 | | [Sales Associate-Retail](roots.md) | 7 | 0 % | 100 % | 0 % | 2026-10-14 19:19 | ✅ | | ||
| 115 | | [Fastco Canada](fastcocanada.md) | 6 | 0 % | 100 % | 0 % | 2026-10-14 18:34 | ✅ | | 116 | | [Fastco Canada](fastcocanada.md) | 6 | 0 % | 100 % | 0 % | 2026-10-14 18:34 | ✅ | | ||
| 116 | −| [Board](deltastar.md) | 6 | 33 % | 100 % | 0 % | 2026-10-14 18:29 | ❌ | | 117 | +| [Board](deltastar.md) | 6 | 33 % | 100 % | 0 % | 2026-10-14 22:43 | ✅ | | ||
| 117 | | [Groupemarcelle](groupemarcelle.md) | 6 | 0 % | 100 % | 0 % | 2026-10-14 18:39 | ✅ | | 118 | | [Groupemarcelle](groupemarcelle.md) | 6 | 0 % | 100 % | 0 % | 2026-10-14 18:39 | ✅ | | ||
| 118 | | [Josephribkoff](josephribkoff.md) | 6 | 0 % | 100 % | 0 % | 2026-10-14 19:00 | ✅ | | 119 | | [Josephribkoff](josephribkoff.md) | 6 | 0 % | 100 % | 0 % | 2026-10-14 19:00 | ✅ | | ||
| 119 | | [GAME DESIGN AND VIDEO GAME LEVEL](lci.md) | 6 | 0 % | 100 % | 0 % | 2026-10-14 19:02 | ✅ | | 120 | | [GAME DESIGN AND VIDEO GAME LEVEL](lci.md) | 6 | 0 % | 100 % | 0 % | 2026-10-14 19:02 | ✅ | | ||
| 120 | | [Liftow](liftow.md) | 6 | 0 % | 100 % | 0 % | 2026-10-14 19:03 | ✅ | | 121 | | [Liftow](liftow.md) | 6 | 0 % | 100 % | 0 % | 2026-10-14 19:03 | ✅ | | ||
| 121 | | [Bilingual (French/English) Sales Broker (RIBO Licensed)](ogc.md) | 6 | 50 % | 100 % | 0 % | 2026-10-14 19:11 | ✅ | | 122 | | [Bilingual (French/English) Sales Broker (RIBO Licensed)](ogc.md) | 6 | 50 % | 100 % | 0 % | 2026-10-14 19:11 | ✅ | | ||
| 122 | | [Terrapure](terrapure.md) | 6 | 17 % | 100 % | 0 % | 2026-10-14 19:28 | ✅ | | 123 | | [Terrapure](terrapure.md) | 6 | 17 % | 100 % | 0 % | 2026-10-14 19:28 | ✅ | | ||
| 123 | −| [Field Mechanic](bly.md) | 6 | 100 % | 100 % | 0 % | 2026-10-14 22:17 | ✅ | | ||||
| 124 | | [Vendeur 3ème Clé (Thirdy Key)](fossil.md) | 6 | 0 % | 100 % | 0 % | 2026-10-14 18:36 | ✅ | | 124 | | [Vendeur 3ème Clé (Thirdy Key)](fossil.md) | 6 | 0 % | 100 % | 0 % | 2026-10-14 18:36 | ✅ | | ||
| 125 | −| [Challenger Motor Freight Inc.](challenger.md) | 6 | 67 % | 100 % | 0 % | 2026-10-14 21:39 | ✅ | | 125 | +| [Challenger Motor Freight Inc.](challenger.md) | 6 | 67 % | 100 % | 0 % | 2026-10-14 22:40 | ✅ | | ||
| 126 | | [Ggi](ggi.md) | 5 | 0 % | 100 % | 0 % | 2026-10-14 18:37 | ✅ | | 126 | | [Ggi](ggi.md) | 5 | 0 % | 100 % | 0 % | 2026-10-14 18:37 | ✅ | | ||
| 127 | | [Architecte Salesforce Sommaire](jam.md) | 5 | 0 % | 100 % | 0 % | 2026-10-14 19:37 | ❌ | | 127 | | [Architecte Salesforce Sommaire](jam.md) | 5 | 0 % | 100 % | 0 % | 2026-10-14 19:37 | ❌ | | ||
| 128 | | [Consultant(e) en développement des affaires](omnitrans.md) | 5 | 40 % | 100 % | 0 % | 2026-10-14 19:11 | ✅ | | 128 | | [Consultant(e) en développement des affaires](omnitrans.md) | 5 | 40 % | 100 % | 0 % | 2026-10-14 19:11 | ✅ | | ||
| 129 | −| [FOREMAN ASSISTANT SHIPPING RECEIVING](benmor.md) | 5 | 20 % | 100 % | 80 % | 2026-10-14 22:17 | ✅ | | 129 | +| [FOREMAN ASSISTANT SHIPPING RECEIVING](benmor.md) | 5 | 20 % | 100 % | 80 % | 2026-10-14 22:32 | ✅ | | ||
| 130 | | [Realstar](realstar.md) | 4 | 0 % | 100 % | 50 % | 2026-10-14 19:16 | ✅ | | 130 | | [Realstar](realstar.md) | 4 | 0 % | 100 % | 50 % | 2026-10-14 19:16 | ✅ | | ||
| 131 | | [4Refuel](4refuel.md) | 4 | 25 % | 100 % | 0 % | 2026-10-14 19:38 | ✅ | | 131 | | [4Refuel](4refuel.md) | 4 | 25 % | 100 % | 0 % | 2026-10-14 19:38 | ✅ | | ||
| 132 | −| [Citronhygiene](citronhygiene.md) | 4 | 100 % | 100 % | 0 % | 2026-10-14 21:06 | ✅ | | 132 | +| [Citronhygiene](citronhygiene.md) | 4 | 100 % | 100 % | 0 % | 2026-10-14 22:42 | ✅ | | ||
| 133 | −| [Cominar](cominar.md) | 4 | 0 % | 100 % | 0 % | 2026-10-14 18:27 | ✅ | | 133 | +| [Cominar](cominar.md) | 4 | 0 % | 100 % | 0 % | 2026-10-14 22:43 | ✅ | | ||
| 134 | | [Groupenorbec](groupenorbec.md) | 4 | 0 % | 100 % | 0 % | 2026-10-14 18:39 | ✅ | | 134 | | [Groupenorbec](groupenorbec.md) | 4 | 0 % | 100 % | 0 % | 2026-10-14 18:39 | ✅ | | ||
| 135 | | [Flowcontrol](flowcontrol.md) | 4 | 0 % | 100 % | 0 % | 2026-10-14 18:41 | ❌ | | 135 | | [Flowcontrol](flowcontrol.md) | 4 | 0 % | 100 % | 0 % | 2026-10-14 18:41 | ❌ | | ||
| 136 | −| [Berger (tourbe horticole)](berger.md) | 4 | 0 % | 100 % | 0 % | 2026-10-14 22:17 | ✅ | | 136 | +| [Berger (tourbe horticole)](berger.md) | 4 | 0 % | 100 % | 0 % | 2026-10-14 22:32 | ✅ | | ||
| 137 | | [Téléfilm Canada](telefilmcanada.md) | 4 | 0 % | 100 % | 0 % | 2026-10-14 19:28 | ✅ | | 137 | | [Téléfilm Canada](telefilmcanada.md) | 4 | 0 % | 100 % | 0 % | 2026-10-14 19:28 | ✅ | | ||
| 138 | −| [Dare Foods](darefoods.md) | 3 | 100 % | 100 % | 0 % | 2026-10-14 18:28 | ✅ | | 138 | +| [Dare Foods](darefoods.md) | 3 | 100 % | 100 % | 0 % | 2026-10-14 22:43 | ✅ | | ||
| 139 | −| [Linehaul Nuit, Conducteur, classe 1](cardinalcouriers.md) | 3 | 67 % | 100 % | 33 % | 2026-10-14 22:19 | ✅ | | 139 | +| [Linehaul Nuit, Conducteur, classe 1](cardinalcouriers.md) | 3 | 67 % | 100 % | 33 % | 2026-10-14 22:34 | ✅ | | ||
| 140 | | [Agent(e) de location de communauté](iip.md) | 3 | 0 % | 100 % | 0 % | 2026-10-14 18:50 | ✅ | | 140 | | [Agent(e) de location de communauté](iip.md) | 3 | 0 % | 100 % | 0 % | 2026-10-14 18:50 | ✅ | | ||
| 141 | | [Maxicanada](maxicanada.md) | 3 | 100 % | 100 % | 0 % | 2026-10-14 19:04 | ✅ | | 141 | | [Maxicanada](maxicanada.md) | 3 | 100 % | 100 % | 0 % | 2026-10-14 19:04 | ✅ | | ||
| 142 | | [Designer graphique](mhca.md) | 3 | 0 % | 100 % | 0 % | 2026-10-14 19:06 | ✅ | | 142 | | [Designer graphique](mhca.md) | 3 | 0 % | 100 % | 0 % | 2026-10-14 19:06 | ✅ | | ||
@@ -145,9 +145,9 @@ Généré : 2026-10-14 22:25 EDT par scripts/gen_connector_docs.py — NE PAS | |||||
| 145 | | [Remco](remco.md) | 3 | 0 % | 100 % | 0 % | 2026-10-14 19:18 | ✅ | | 145 | | [Remco](remco.md) | 3 | 0 % | 100 % | 0 % | 2026-10-14 19:18 | ✅ | | ||
| 146 | | [Sobeys](sobeys.md) | 3 | 0 % | 100 % | 0 % | 2026-10-14 19:22 | ✅ | | 146 | | [Sobeys](sobeys.md) | 3 | 0 % | 100 % | 0 % | 2026-10-14 19:22 | ✅ | | ||
| 147 | | [Souffletmalt](souffletmalt.md) | 3 | 67 % | 100 % | 0 % | 2026-10-14 19:22 | ✅ | | 147 | | [Souffletmalt](souffletmalt.md) | 3 | 67 % | 100 % | 0 % | 2026-10-14 19:22 | ✅ | | ||
| 148 | −| [AstenJohnson](ajholdingsltd.md) | 3 | 100 % | 100 % | 0 % | 2026-10-14 22:13 | ✅ | | 148 | +| [AstenJohnson](ajholdingsltd.md) | 3 | 100 % | 100 % | 0 % | 2026-10-14 22:28 | ✅ | | ||
| 149 | −| [Bronswerk](bronswerk.md) | 3 | 0 % | 100 % | 0 % | 2026-10-14 22:18 | ✅ | | 149 | +| [Bronswerk](bronswerk.md) | 3 | 0 % | 100 % | 0 % | 2026-10-14 22:33 | ✅ | | ||
| 150 | −| [Air Canada Rouge](acadierouge.md) | 2 | 50 % | 100 % | 0 % | 2026-10-14 22:11 | ✅ | | 150 | +| [Air Canada Rouge](acadierouge.md) | 2 | 50 % | 100 % | 0 % | 2026-10-14 22:26 | ✅ | | ||
| 151 | | [East Penn Canada](eastpenn.md) | 2 | 0 % | 100 % | 0 % | 2026-10-14 18:32 | ✅ | | 151 | | [East Penn Canada](eastpenn.md) | 2 | 0 % | 100 % | 0 % | 2026-10-14 18:32 | ✅ | | ||
| 152 | | [Reflector Entertainment](reflector.md) | 2 | 0 % | 100 % | 0 % | 2026-10-14 19:17 | ✅ | | 152 | | [Reflector Entertainment](reflector.md) | 2 | 0 % | 100 % | 0 % | 2026-10-14 19:17 | ✅ | | ||
| 153 | | [StorageMart](storagemart.md) | 2 | 100 % | 100 % | 0 % | 2026-10-14 21:07 | ❌ | | 153 | | [StorageMart](storagemart.md) | 2 | 100 % | 100 % | 0 % | 2026-10-14 21:07 | ❌ | | ||
@@ -158,9 +158,9 @@ Généré : 2026-10-14 22:25 EDT par scripts/gen_connector_docs.py — NE PAS | |||||
| 158 | | [Accueil / Service client (Montréal)](tourismholdings.md) | 2 | 0 % | 100 % | 0 % | 2026-10-14 19:29 | ✅ | | 158 | | [Accueil / Service client (Montréal)](tourismholdings.md) | 2 | 0 % | 100 % | 0 % | 2026-10-14 19:29 | ✅ | | ||
| 159 | | [Wafna](wafna.md) | 2 | 0 % | 100 % | 0 % | 2026-10-14 19:34 | ❌ | | 159 | | [Wafna](wafna.md) | 2 | 0 % | 100 % | 0 % | 2026-10-14 19:34 | ❌ | | ||
| 160 | | [Westjet](westjet.md) | 2 | 0 % | 100 % | 0 % | 2026-10-14 19:36 | ✅ | | 160 | | [Westjet](westjet.md) | 2 | 0 % | 100 % | 0 % | 2026-10-14 19:36 | ✅ | | ||
| 161 | −| [BLEUFEU (Festival d'été de Québec)](bleufeu.md) | 1 | 0 % | 100 % | 0 % | 2026-10-14 22:25 | ✅ | | 161 | +| [BLEUFEU (Festival d'été de Québec)](bleufeu.md) | 1 | 0 % | 100 % | 0 % | 2026-10-14 22:45 | ✅ | | ||
| 162 | −| [Canderel](canderel.md) | 1 | 0 % | 100 % | 0 % | 2026-10-14 22:18 | ✅ | | 162 | +| [Canderel](canderel.md) | 1 | 0 % | 100 % | 0 % | 2026-10-14 22:34 | ✅ | | ||
| 163 | −| [Cooperrentsequip](cooperrentsequip.md) | 1 | 0 % | 100 % | 0 % | 2026-10-14 18:27 | ✅ | | 163 | +| [Cooperrentsequip](cooperrentsequip.md) | 1 | 0 % | 100 % | 0 % | 2026-10-14 22:43 | ✅ | | ||
| 164 | | [Enercare](enercare.md) | 1 | 0 % | 100 % | 0 % | 2026-10-14 18:33 | ✅ | | 164 | | [Enercare](enercare.md) | 1 | 0 % | 100 % | 0 % | 2026-10-14 18:33 | ✅ | | ||
| 165 | | [G3 Canada](g3canada.md) | 1 | 0 % | 100 % | 0 % | 2026-10-14 18:36 | ✅ | | 165 | | [G3 Canada](g3canada.md) | 1 | 0 % | 100 % | 0 % | 2026-10-14 18:36 | ✅ | | ||
| 166 | | [Gng](gng.md) | 1 | 0 % | 100 % | 0 % | 2026-10-14 18:38 | ✅ | | 166 | | [Gng](gng.md) | 1 | 0 % | 100 % | 0 % | 2026-10-14 18:38 | ✅ | | ||
@@ -175,7 +175,7 @@ Généré : 2026-10-14 22:25 EDT par scripts/gen_connector_docs.py — NE PAS | |||||
| 175 | | [Production Operator I (Montreal)](wikoff.md) | 1 | 0 % | 100 % | 0 % | 2026-10-14 19:38 | ❌ | | 175 | | [Production Operator I (Montreal)](wikoff.md) | 1 | 0 % | 100 % | 0 % | 2026-10-14 19:38 | ❌ | | ||
| 176 | | [Journalier de production](ecyclesolu.md) | 1 | 100 % | 100 % | 0 % | 2026-10-14 18:32 | ✅ | | 176 | | [Journalier de production](ecyclesolu.md) | 1 | 100 % | 100 % | 0 % | 2026-10-14 18:32 | ✅ | | ||
| 177 | | [Spectra Premium](spectrapremium.md) | 0 | — | — | — | 2026-10-14 19:22 | ✅ | | 177 | | [Spectra Premium](spectrapremium.md) | 0 | — | — | — | 2026-10-14 19:22 | ✅ | | ||
| 178 | −| [CPAB (Conseil canadien sur la reddition de comptes)](cpab.md) | 0 | — | — | — | 2026-10-14 18:28 | ✅ | | 178 | +| [CPAB (Conseil canadien sur la reddition de comptes)](cpab.md) | 0 | — | — | — | 2026-10-14 22:43 | ✅ | | ||
| 179 | | [Talent Acquisition Partner](euromoneyplc.md) | 0 | — | — | — | 2026-10-14 18:34 | ✅ | | 179 | | [Talent Acquisition Partner](euromoneyplc.md) | 0 | — | — | — | 2026-10-14 18:34 | ✅ | | ||
| 180 | | [Sofinafoods](sofinafoods.md) | 0 | — | — | — | 2026-10-14 19:22 | ✅ | | 180 | | [Sofinafoods](sofinafoods.md) | 0 | — | — | — | 2026-10-14 19:22 | ✅ | | ||
| 181 | | [State Industrial Products](stateindustrial.md) | 0 | — | — | — | 2026-10-14 19:24 | ❌ | | 181 | | [State Industrial Products](stateindustrial.md) | 0 | — | — | — | 2026-10-14 19:24 | ❌ | | ||
modified
docs/connecteurs/bly.md
+19 −19
@@ -4,19 +4,19 @@ Job·Ka — Groupe KA | |||||
| 4 | Auteur : Simon-Pierre Boucher | 4 | Auteur : Simon-Pierre Boucher | ||
| 5 | Contact : contact@spboucher.ai | 5 | Contact : contact@spboucher.ai | ||
| 6 | Fichier : docs/connecteurs/bly.md | 6 | Fichier : docs/connecteurs/bly.md | ||
| 7 | −Rôle : Fiche connecteur — Field Mechanic (employeur direct, ATS dayforce) | 7 | +Rôle : Fiche connecteur — Boart Longyear (employeur direct, ATS dayforce) | ||
| 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-14 22:45 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 | −# Field Mechanic (`bly`) | 13 | +# Boart Longyear (`bly`) | ||
| 14 | 14 | ||||
| 15 | **Employeur direct** · Plateforme ATS : [`dayforce`](ats-dayforce.md) · Statut registre : actif · Connecteur : `jobka/connectors/bly.py` | 15 | **Employeur direct** · Plateforme ATS : [`dayforce`](ats-dayforce.md) · Statut registre : actif · Connecteur : `jobka/connectors/bly.py` | ||
| 16 | 16 | ||||
| 17 | ## Description | 17 | ## Description | ||
| 18 | 18 | ||||
| 19 | −- **Site** : [Field Mechanic]() | 19 | +- **Site** : [Boart Longyear](https://www.boartlongyear.com) | ||
| 20 | - **Page carrières** : https://jobs.dayforcehcm.com/fr-CA/bly/CANDIDATEPORTAL | 20 | - **Page carrières** : https://jobs.dayforcehcm.com/fr-CA/bly/CANDIDATEPORTAL | ||
| 21 | - **Secteurs** : Automobile | 21 | - **Secteurs** : Automobile | ||
| 22 | - **Région** : Val D'Or | 22 | - **Région** : Val D'Or | ||
@@ -31,14 +31,14 @@ Généré : 2026-10-14 18:40 EDT par scripts/gen_connector_docs.py — NE PAS | |||||
| 31 | |---|---| | 31 | |---|---| | ||
| 32 | | `BOARD` | `CANDIDATEPORTAL` | | 32 | | `BOARD` | `CANDIDATEPORTAL` | | ||
| 33 | | `CULTURE` | `fr-CA` | | 33 | | `CULTURE` | `fr-CA` | | ||
| 34 | −| `EMPLOYER` | `Field Mechanic` | | 34 | +| `EMPLOYER` | `Boart Longyear` | | ||
| 35 | | `NS` | `bly` | | 35 | | `NS` | `bly` | | ||
| 36 | - **Throttle** : 0.8 s entre requêtes. | 36 | - **Throttle** : 0.8 s entre requêtes. | ||
| 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). | 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). | ||
| 38 | 38 | ||||
| 39 | ## Champs → schéma | 39 | ## Champs → schéma | ||
| 40 | 40 | ||||
| 41 | −Complétude mesurée sur les **6 offres actives** de la source (base live, 2026-10-14 18:40 EDT). | 41 | +Complétude mesurée sur les **7 offres actives** de la source (base live, 2026-10-14 22:45 EDT). | ||
| 42 | 42 | ||||
| 43 | | Champ (`jobs.*`) | Rôle | Complétude | | 43 | | Champ (`jobs.*`) | Rôle | Complétude | | ||
| 44 | |---|---|---| | 44 | |---|---|---| | ||
@@ -51,14 +51,14 @@ Complétude mesurée sur les **6 offres actives** de la source (base live, 2026- | |||||
| 51 | | `address` — Adresse | adresse du lieu de travail | 100 % | | 51 | | `address` — Adresse | adresse du lieu de travail | 100 % | | ||
| 52 | | `postal_code` — Code postal | code postal si publié | 0 % | | 52 | | `postal_code` — Code postal | code postal si publié | 0 % | | ||
| 53 | | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % | | 53 | | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % | | ||
| 54 | −| `employment_type` — Type | temps_plein / temps_partiel / … | 17 % | | 54 | +| `employment_type` — Type | temps_plein / temps_partiel / … | 14 % | | ||
| 55 | | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 100 % | | 55 | | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 100 % | | ||
| 56 | | `salary_label` — Libellé salaire | texte salarial original | 100 % | | 56 | | `salary_label` — Libellé salaire | texte salarial original | 100 % | | ||
| 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 | 17 % | | 60 | +| `date_deadline` — Date limite | date limite pour postuler | 14 % | | ||
| 61 | −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 50 % | | 61 | +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 43 % | | ||
| 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 % | | ||
@@ -79,15 +79,15 @@ Exemple réel : *Foreur au Diamant de Souterrain* — Val-d'Or · Salaire Horair | |||||
| 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-14 22:45 EDT dans `data/jobka.db`)* | ||
| 83 | 83 | ||||
| 84 | −- **Offres en base** : 6 (dont **6 actives**, 0 masquées comme doublons `dup_of`) | 84 | +- **Offres en base** : 7 (dont **7 actives**, 0 masquées comme doublons `dup_of`) | ||
| 85 | −- **Salaire** : 6/6 actives (100 %) | 85 | +- **Salaire** : 7/7 actives (100 %) | ||
| 86 | −- **GPS** : 6/6 actives (100 %) | 86 | +- **GPS** : 7/7 actives (100 %) | ||
| 87 | −- **Mode** : 0/6 actives (0 %) | 87 | +- **Mode** : 0/7 actives (0 %) | ||
| 88 | −- **Parution** : 6/6 actives (100 %) | 88 | +- **Parution** : 7/7 actives (100 %) | ||
| 89 | −- **Dernier sync** : 2026-10-14 18:14 — trouvées 0, +0, ~0, -0, **ÉCHEC : 503 Server Error: Service Unavailable for url: https://jobs.dayforcehcm.com/api/geo/bly/jo…** | 89 | +- **Dernier sync** : 2026-10-14 22:45 — trouvées 7, +1, ~6, -0 | ||
| 90 | −- **Syncs enregistrés** (`sync_log`) : 560 | 90 | +- **Syncs enregistrés** (`sync_log`) : 570 | ||
| 91 | 91 | ||||
| 92 | ## Erreurs & dépannage | 92 | ## Erreurs & dépannage | ||
| 93 | 93 | ||||
@@ -95,7 +95,7 @@ Erreurs relevées dans `sync_log` : | |||||
| 95 | 95 | ||||
| 96 | | Erreur | Occurrences | Dernière fois | | 96 | | Erreur | Occurrences | Dernière fois | | ||
| 97 | |---|---|---| | 97 | |---|---|---| | ||
| 98 | −| 503 Server Error: Service Unavailable for url: https://jobs.dayforcehcm.com/api/geo/bly/jo… | 1 | 2026-10-14 18:14 | | 98 | +| 503 Server Error: Service Unavailable for url: https://jobs.dayforcehcm.com/api/geo/bly/jo… | 7 | 2026-10-14 22:05 | | ||
| 99 | | 500 Server Error: Internal Server Error for url: https://jobs.dayforcehcm.com/api/geo/bly/… | 1 | 2026-10-14 17:33 | | 99 | | 500 Server Error: Internal Server Error for url: https://jobs.dayforcehcm.com/api/geo/bly/… | 1 | 2026-10-14 17:33 | | ||
| 100 | 100 | ||||
| 101 | - Rejouer un sync isolé : `.venv/bin/python run.py sync bly` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='bly' ORDER BY ts DESC LIMIT 5;"` | 101 | - Rejouer un sync isolé : `.venv/bin/python run.py sync bly` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='bly' ORDER BY ts DESC LIMIT 5;"` | ||
@@ -103,7 +103,7 @@ Erreurs relevées dans `sync_log` : | |||||
| 103 | 103 | ||||
| 104 | ## Licence / conformité | 104 | ## Licence / conformité | ||
| 105 | 105 | ||||
| 106 | −**Flux public du site carrières officiel de l'employeur** (API JSON de l'ATS ou HTML rendu serveur) — le même contenu que la page carrière affiche publiquement, prévu pour la diffusion des offres, sans authentification. Chaque offre conserve son URL originale et le bouton « Postuler chez Field Mechanic » renvoie chez l'employeur. Aucune donnée personnelle de candidat n'est collectée. User-Agent identifié `JobKaBot/1.0 (+https://www.job-ka.com; contact@spboucher.ai)` sur les accès directs ; requêtes throttlées et plafonnées par budgets. | 106 | +**Flux public du site carrières officiel de l'employeur** (API JSON de l'ATS ou HTML rendu serveur) — le même contenu que la page carrière affiche publiquement, prévu pour la diffusion des offres, sans authentification. Chaque offre conserve son URL originale et le bouton « Postuler chez Boart Longyear » renvoie chez l'employeur. Aucune donnée personnelle de candidat n'est collectée. User-Agent identifié `JobKaBot/1.0 (+https://www.job-ka.com; contact@spboucher.ai)` sur les accès directs ; requêtes throttlées et plafonnées par budgets. | ||
| 107 | 107 | ||||
| 108 | ## Historique | 108 | ## Historique | ||
| 109 | 109 | ||||
modified
jobka/connectors/bly.py
+44 −3
@@ -3,15 +3,56 @@ | |||||
| 3 | # Auteur : Simon-Pierre Boucher | 3 | # Auteur : Simon-Pierre Boucher | ||
| 4 | # Contact : contact@spboucher.ai | 4 | # Contact : contact@spboucher.ai | ||
| 5 | # Fichier : jobka/connectors/bly.py | 5 | # Fichier : jobka/connectors/bly.py | ||
| 6 | −# Rôle : Connecteur Field Mechanic — dayforce (ns='bly', board='CANDIDATEPORTAL') | 6 | +# Rôle : Connecteur Boart Longyear — dayforce (ns='bly', board='CANDIDATEPORTAL') | ||
| 7 | # [généré par scripts/gen_connectors.py, flux vérifié le 2026-08-23] | 7 | # [généré par scripts/gen_connectors.py, flux vérifié le 2026-08-23] | ||
| 8 | −# Créé : 2026-08-23 Modifié : 2026-08-23 | 8 | +# Créé : 2026-08-23 Modifié : 2026-10-14 | ||
| 9 | # ============================================================================= | 9 | # ============================================================================= | ||
| 10 | +"""Boart Longyear (boartlongyear.com) — board Dayforce `bly`. | ||||
| 11 | + | ||||
| 12 | +`bly` = ticker historique (ASX) de Boart Longyear, principal fournisseur | ||||
| 13 | +mondial de services de forage minier (forage au diamant de surface et | ||||
| 14 | +souterrain) ; base québécoise à Val-d'Or, offres de foreurs/assistants | ||||
| 15 | +foreurs, mécaniciens d'engins lourds et commis d'entrepôt. Nom lu dans | ||||
| 16 | +les descriptions FR des offres (« Boart Longyear embauche actuellement | ||||
| 17 | +des foreurs… ») — l'EMPLOYER initial « Field Mechanic » était un titre | ||||
| 18 | +de poste (artefact vague C, classe gevgroupltd 8ff81d0), corrigé le | ||||
| 19 | +2026-10-14 avec l'url vide → boartlongyear.com. | ||||
| 20 | + | ||||
| 21 | +Chronologie 2026-10-14 (broken, 1re intervention) : rien à réparer côté | ||||
| 22 | +panne — namespace supplémentaire de la panne partielle de shard Dayforce | ||||
| 23 | +du 2026-10-14 (500 à 17:33 puis 503 soutenu sur | ||||
| 24 | +/api/geo/bly/jobposting/search de 18:14 à 22:05, échec franc ok=0 jamais | ||||
| 25 | +de faux 0, 6 offres QC actives préservées), DÉJÀ RÉSOLUE à l'intervention : | ||||
| 26 | +le scheduler est repassé vert seul à 22:17 (found=6 = médiane 6.0). Pas de | ||||
| 27 | +migration : careers.boartlongyear.com (frontend carrières custom, lien | ||||
| 28 | +depuis boartlongyear.com ; l'ancien chemin /careers/ est 404) fait | ||||
| 29 | +postuler via jobs.dayforcehcm.com/en-CA/bly/CANDIDATEPORTAL = même | ||||
| 30 | +tenant/board. | ||||
| 31 | + | ||||
| 32 | +PARTITION DE CULTURE avec angle mort réel (vérifiée le 2026-10-14) : | ||||
| 33 | +fr-CA ne voit que les offres traduites (maxCount=7 : 6 QC + 1 ON), alors | ||||
| 34 | +qu'en-CA liste les 63 offres du board dont « Foreur Long-Trou/Dynamiteur » | ||||
| 35 | +Val-d'Or (id 1000), publiée en ANGLAIS SEULEMENT et pourtant listée sur le | ||||
| 36 | +site carrières officiel — invisible en fr-CA. On interroge donc les deux | ||||
| 37 | +cultures et on fusionne par external_id, version fr-CA prioritaire (même | ||||
| 38 | +pattern que peaktech.py / challenger.py / fnfmb.py) : found 6 → 7. | ||||
| 39 | +""" | ||||
| 40 | +from ..schema import JobPosting | ||||
| 10 | from .dayforce import DayforceConnector | 41 | from .dayforce import DayforceConnector | ||
| 11 | 42 | ||||
| 12 | 43 | ||||
| 13 | class BlyConnector(DayforceConnector): | 44 | class BlyConnector(DayforceConnector): | ||
| 14 | source_id = 'bly' | 45 | source_id = 'bly' | ||
| 15 | − EMPLOYER = 'Field Mechanic' | 46 | + EMPLOYER = 'Boart Longyear' | ||
| 16 | NS = 'bly' | 47 | NS = 'bly' | ||
| 17 | BOARD = 'CANDIDATEPORTAL' | 48 | BOARD = 'CANDIDATEPORTAL' | ||
| 49 | + | ||||
| 50 | + CULTURES = ("fr-CA", "en-CA") | ||||
| 51 | + | ||||
| 52 | + def fetch(self) -> list[JobPosting]: | ||||
| 53 | + merged: dict[str, JobPosting] = {} | ||||
| 54 | + for culture in self.CULTURES: | ||||
| 55 | + self.CULTURE = culture | ||||
| 56 | + for job in super().fetch(): | ||||
| 57 | + merged.setdefault(job.external_id, job) | ||||
| 58 | + return list(merged.values()) | ||||
| 18 | 59 | ||||