[ka6] connecteur uniboard: stale = faux positif, blip de maintenance nocturne ADP WFN — rien à réparer. Syncs verts found=19 en continu jusqu'au 2026-10-22 21:36 EDT, puis UN SEUL échec à 00:47 « 404 Not Found » sur l'endpoint job-requisitions de workforcenow.adp.com. Même fenêtre SYSTÉMIQUE 00:35→01:54 EDT du 2026-10-23 que triple_boris (c2d1ee6c) : 6 tenants ADP touchés (richelieu, strathmore, triple_boris, uniboard, uv_assurance, abritek), même mécanique que les maintenances ADP des 28-30 août (c7d9ece) mais signature 404 franc ; le retry de adp.py ne couvre volontairement que le 200 non-JSON — un 404 échoue net et le connecteur repart seul à la rotation suivante. Endpoint re-vérifié live 200 JSON via curl à 03:37 EDT, sync isolé rejoué : ok=1 found=19 (= médiane 19.0) en 24,3 s, 19 offres QC actives en base (Laval/Val-d'Or/Mont-Laurier). Aucun code de fetch modifié, docstring chronologie seulement ; fiches uniboard.md/ats-adp.md/INDEX.md régénérées (1131 autres fiches restaurées, hors périmètre). 108 tests verts, pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
4 changed files +36 −22
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-23 03:23 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | 8 | +Généré : 2026-10-23 03:37 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | ||
| 9 | relancer le script pour régénérer. | 9 | relancer le script pour régénérer. | ||
| 10 | ============================================================================= | 10 | ============================================================================= | ||
| 11 | --> | 11 | --> | ||
| 12 | 12 | ||||
| 13 | # Job·Ka — Connecteurs (index) | 13 | # Job·Ka — Connecteurs (index) | ||
| 14 | 14 | ||||
| 15 | −> Index généré le 2026-10-23 03:23 EDT par `scripts/gen_connector_docs.py` (rejouable). Croise `data/sources.json`, l'introspection de `jobka/connectors/*.py` et la base live `data/jobka.db`. | 15 | +> Index généré le 2026-10-23 03:37 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** — **26037 offres actives** (23171 directes, 2866 portails ; 161 masquées comme doublons inter-sources, soit 25876 visibles). 1134 fiches. | 17 | +**1104 employeurs directs** connectés via **25 plateformes ATS** + **3 portails agrégateurs** + le canal de **dépôt direct** — **26013 offres actives** (23147 directes, 2866 portails ; 161 masquées comme doublons inter-sources, soit 25852 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,13 +22,13 @@ 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 | 7534 | 47 % | 87 % | | 25 | +| [`workday`](ats-workday.md) | 232 | 7531 | 48 % | 87 % | | ||
| 26 | | [`smartrecruiters`](ats-smartrecruiters.md) | 172 | 2918 | 16 % | 99 % | | 26 | | [`smartrecruiters`](ats-smartrecruiters.md) | 172 | 2918 | 16 % | 99 % | | ||
| 27 | | [`workable`](ats-workable.md) | 71 | 1999 | 18 % | 100 % | | 27 | | [`workable`](ats-workable.md) | 71 | 1999 | 18 % | 100 % | | ||
| 28 | | [`dayforce`](ats-dayforce.md) | 129 | 1925 | 9 % | 100 % | | 28 | | [`dayforce`](ats-dayforce.md) | 129 | 1925 | 9 % | 100 % | | ||
| 29 | | [`successfactors`](ats-successfactors.md) | 12 | 1693 | 17 % | 99 % | | 29 | | [`successfactors`](ats-successfactors.md) | 12 | 1693 | 17 % | 99 % | | ||
| 30 | | [`njoyn`](ats-njoyn.md) | 11 | 1255 | 70 % | 87 % | | 30 | | [`njoyn`](ats-njoyn.md) | 11 | 1255 | 70 % | 87 % | | ||
| 31 | −| [`workland`](ats-workland.md) | 1 | 1205 | 35 % | 100 % | | 31 | +| [`workland`](ats-workland.md) | 1 | 1184 | 36 % | 100 % | | ||
| 32 | | [`greenhouse`](ats-greenhouse.md) | 132 | 818 | 18 % | 100 % | | 32 | | [`greenhouse`](ats-greenhouse.md) | 132 | 818 | 18 % | 100 % | | ||
| 33 | | [`wpjobmanager`](ats-wpjobmanager.md) | 8 | 800 | 6 % | 100 % | | 33 | | [`wpjobmanager`](ats-wpjobmanager.md) | 8 | 800 | 6 % | 100 % | | ||
| 34 | | [`lever`](ats-lever.md) | 58 | 610 | 21 % | 96 % | | 34 | | [`lever`](ats-lever.md) | 58 | 610 | 21 % | 96 % | | ||
@@ -61,7 +61,7 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser | |||||
| 61 | 61 | ||||
| 62 | | Employeur | ATS | Actives | Salaire | GPS | Dernier sync OK | | 62 | | Employeur | ATS | Actives | Salaire | GPS | Dernier sync OK | | ||
| 63 | |---|---|---|---|---|---| | 63 | |---|---|---|---|---|---| | ||
| 64 | −| [Réseau Atlas Workland (~80 employeurs QC : CSS, cégeps, Santé Québec, STQ, UQTR…)](atlas_workland.md) | [`workland`](ats-workland.md) | 1205 | 35 % | 100 % | ✅ | | 64 | +| [Réseau Atlas Workland (~80 employeurs QC : CSS, cégeps, Santé Québec, STQ, UQTR…)](atlas_workland.md) | [`workland`](ats-workland.md) | 1184 | 36 % | 100 % | ✅ | | ||
| 65 | | [Couche-Tard / Circle K](circlek.md) | [`workday`](ats-workday.md) | 994 | 69 % | 69 % | ✅ | | 65 | | [Couche-Tard / Circle K](circlek.md) | [`workday`](ats-workday.md) | 994 | 69 % | 69 % | ✅ | | ||
| 66 | | [Solution SFT](solution_sft.md) | [`workable`](ats-workable.md) | 956 | 25 % | 100 % | ✅ | | 66 | | [Solution SFT](solution_sft.md) | [`workable`](ats-workable.md) | 956 | 25 % | 100 % | ✅ | | ||
| 67 | | [Bombardier](bombardier.md) | [`successfactors`](ats-successfactors.md) | 953 | 1 % | 100 % | ✅ | | 67 | | [Bombardier](bombardier.md) | [`successfactors`](ats-successfactors.md) | 953 | 1 % | 100 % | ✅ | | ||
@@ -251,7 +251,6 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser | |||||
| 251 | | [Soprema](soprema.md) | [`dayforce`](ats-dayforce.md) | 22 | 23 % | 100 % | ✅ | | 251 | | [Soprema](soprema.md) | [`dayforce`](ats-dayforce.md) | 22 | 23 % | 100 % | ✅ | | ||
| 252 | | [Spectrum Health Care](spectrumhealthcare.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 22 | 95 % | 100 % | ✅ | | 252 | | [Spectrum Health Care](spectrumhealthcare.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 22 | 95 % | 100 % | ✅ | | ||
| 253 | | [Stellajones](stellajones.md) | [`dayforce`](ats-dayforce.md) | 22 | 27 % | 100 % | ✅ | | 253 | | [Stellajones](stellajones.md) | [`dayforce`](ats-dayforce.md) | 22 | 27 % | 100 % | ✅ | | ||
| 254 | −| [Alcoa Canada](alcoa.md) | [`workday`](ats-workday.md) | 21 | 14 % | 38 % | ✅ | | ||||
| 255 | | [ATIA Ltd](atialtd.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 21 | 38 % | 100 % | ✅ | | 254 | | [ATIA Ltd](atialtd.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 21 | 38 % | 100 % | ✅ | | ||
| 256 | | [CIUSSS de l'Est-de-l'Île-de-Montréal](ciusss_est_montreal.md) | [`taleo`](ats-taleo.md) | 21 | 0 % | 100 % | ✅ | | 255 | | [CIUSSS de l'Est-de-l'Île-de-Montréal](ciusss_est_montreal.md) | [`taleo`](ats-taleo.md) | 21 | 0 % | 100 % | ✅ | | ||
| 257 | | [Premierparks](premierparks.md) | [`dayforce`](ats-dayforce.md) | 21 | 10 % | 100 % | ✅ | | 256 | | [Premierparks](premierparks.md) | [`dayforce`](ats-dayforce.md) | 21 | 10 % | 100 % | ✅ | | ||
@@ -268,6 +267,7 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser | |||||
| 268 | | [Sia](sia.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 20 | 0 % | 100 % | ✅ | | 267 | | [Sia](sia.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 20 | 0 % | 100 % | ✅ | | ||
| 269 | | [Ville de Gatineau](ville_gatineau.md) | [`njoyn`](ats-njoyn.md) | 20 | 100 % | 0 % | ✅ | | 268 | | [Ville de Gatineau](ville_gatineau.md) | [`njoyn`](ats-njoyn.md) | 20 | 100 % | 0 % | ✅ | | ||
| 270 | | [Xsolla](xsolla.md) | [`lever`](ats-lever.md) | 20 | 100 % | 95 % | ✅ | | 269 | | [Xsolla](xsolla.md) | [`lever`](ats-lever.md) | 20 | 100 % | 95 % | ✅ | | ||
| 270 | +| [Alcoa Canada](alcoa.md) | [`workday`](ats-workday.md) | 19 | 16 % | 37 % | ✅ | | ||||
| 271 | | [Groupe Nordik (Nordik Spa-Nature)](groupe_nordik.md) | [`adp`](ats-adp.md) | 19 | 26 % | 100 % | ✅ | | 271 | | [Groupe Nordik (Nordik Spa-Nature)](groupe_nordik.md) | [`adp`](ats-adp.md) | 19 | 26 % | 100 % | ✅ | | ||
| 272 | | [Groupeguilbault](groupeguilbault.md) | [`workday`](ats-workday.md) | 19 | 0 % | 100 % | ✅ | | 272 | | [Groupeguilbault](groupeguilbault.md) | [`workday`](ats-workday.md) | 19 | 0 % | 100 % | ✅ | | ||
| 273 | | [Immiland Canada Inc.](immiland_canada_inc.md) | [`lever`](ats-lever.md) | 19 | 16 % | 100 % | ✅ | | 273 | | [Immiland Canada Inc.](immiland_canada_inc.md) | [`lever`](ats-lever.md) | 19 | 16 % | 100 % | ✅ | | ||
@@ -278,7 +278,7 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser | |||||
| 278 | | [Sika Canada](sikaag.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 19 | 5 % | 100 % | ✅ | | 278 | | [Sika Canada](sikaag.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 19 | 5 % | 100 % | ✅ | | ||
| 279 | | [Systemex](systemex.md) | [`lever`](ats-lever.md) | 19 | 0 % | 100 % | ✅ | | 279 | | [Systemex](systemex.md) | [`lever`](ats-lever.md) | 19 | 0 % | 100 % | ✅ | | ||
| 280 | | [TSMG](tsmg.md) | [`lever`](ats-lever.md) | 19 | 0 % | 100 % | ✅ | | 280 | | [TSMG](tsmg.md) | [`lever`](ats-lever.md) | 19 | 0 % | 100 % | ✅ | | ||
| 281 | −| [Uniboard](uniboard.md) | [`adp`](ats-adp.md) | 19 | 32 % | 63 % | ❌ | | 281 | +| [Uniboard](uniboard.md) | [`adp`](ats-adp.md) | 19 | 32 % | 63 % | ✅ | | ||
| 282 | | [VinFast Canada](vinfastcanada.md) | [`dayforce`](ats-dayforce.md) | 19 | 26 % | 100 % | ✅ | | 282 | | [VinFast Canada](vinfastcanada.md) | [`dayforce`](ats-dayforce.md) | 19 | 26 % | 100 % | ✅ | | ||
| 283 | | [Vosker](vosker.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 19 | 0 % | 100 % | ✅ | | 283 | | [Vosker](vosker.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 19 | 0 % | 100 % | ✅ | | ||
| 284 | | [Bell Textron Canada](bell_textron.md) | [`taleo`](ats-taleo.md) | 18 | 0 % | 100 % | ✅ | | 284 | | [Bell Textron Canada](bell_textron.md) | [`taleo`](ats-taleo.md) | 18 | 0 % | 100 % | ✅ | | ||
@@ -595,7 +595,7 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser | |||||
| 595 | | [Weir Group](weir.md) | [`workday`](ats-workday.md) | 6 | 17 % | 67 % | ✅ | | 595 | | [Weir Group](weir.md) | [`workday`](ats-workday.md) | 6 | 17 % | 67 % | ✅ | | ||
| 596 | | [Yaksa](yaksa.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 6 | 0 % | 100 % | ✅ | | 596 | | [Yaksa](yaksa.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 6 | 0 % | 100 % | ✅ | | ||
| 597 | | [36Pix](pix36.md) | [`jazzhr`](ats-jazzhr.md) | 5 | 20 % | 100 % | ✅ | | 597 | | [36Pix](pix36.md) | [`jazzhr`](ats-jazzhr.md) | 5 | 20 % | 100 % | ✅ | | ||
| 598 | −| [Abritek](abritek.md) | [`adp`](ats-adp.md) | 5 | 100 % | 100 % | ❌ | | 598 | +| [Abritek](abritek.md) | [`adp`](ats-adp.md) | 5 | 100 % | 100 % | ✅ | | ||
| 599 | | [Adèle Express](adeleexpressfr.md) | [`recruitee`](ats-recruitee.md) | 5 | 60 % | 100 % | ✅ | | 599 | | [Adèle Express](adeleexpressfr.md) | [`recruitee`](ats-recruitee.md) | 5 | 60 % | 100 % | ✅ | | ||
| 600 | | [Agile DSS](agiledss.md) | [`recruitee`](ats-recruitee.md) | 5 | 0 % | 100 % | ✅ | | 600 | | [Agile DSS](agiledss.md) | [`recruitee`](ats-recruitee.md) | 5 | 0 % | 100 % | ✅ | | ||
| 601 | | [Aleanza Recrutement Durable](aleanzarecrutementdurable.md) | [`teamtailor`](ats-teamtailor.md) | 5 | 40 % | 100 % | ✅ | | 601 | | [Aleanza Recrutement Durable](aleanzarecrutementdurable.md) | [`teamtailor`](ats-teamtailor.md) | 5 | 40 % | 100 % | ✅ | | ||
@@ -795,7 +795,6 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser | |||||
| 795 | | [Averna](averna1.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 2 | 0 % | 100 % | ✅ | | 795 | | [Averna](averna1.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 2 | 0 % | 100 % | ✅ | | ||
| 796 | | [Bardel Entertainment](bardel_entertainment.md) | [`workable`](ats-workable.md) | 2 | 100 % | 100 % | ✅ | | 796 | | [Bardel Entertainment](bardel_entertainment.md) | [`workable`](ats-workable.md) | 2 | 100 % | 100 % | ✅ | | ||
| 797 | | [Bauer Hockey/ Cascade Maverik Lacrosse](bauerhockeycascademaveriklacrosse.md) | [`greenhouse`](ats-greenhouse.md) | 2 | 50 % | 100 % | ✅ | | 797 | | [Bauer Hockey/ Cascade Maverik Lacrosse](bauerhockeycascademaveriklacrosse.md) | [`greenhouse`](ats-greenhouse.md) | 2 | 50 % | 100 % | ✅ | | ||
| 798 | −| [BDC](bdc.md) | [`workday`](ats-workday.md) | 2 | 0 % | 100 % | ✅ | | ||||
| 799 | | [Billups](billups.md) | [`ashby`](ats-ashby.md) | 2 | 100 % | 100 % | ✅ | | 798 | | [Billups](billups.md) | [`ashby`](ats-ashby.md) | 2 | 100 % | 100 % | ✅ | | ||
| 800 | | [BIXI Montréal](biximontreal.md) | [`recruitee`](ats-recruitee.md) | 2 | 50 % | 100 % | ✅ | | 799 | | [BIXI Montréal](biximontreal.md) | [`recruitee`](ats-recruitee.md) | 2 | 50 % | 100 % | ✅ | | ||
| 801 | | [Bloom](makeitbloom.md) | [`jazzhr`](ats-jazzhr.md) | 2 | 0 % | 100 % | ✅ | | 800 | | [Bloom](makeitbloom.md) | [`jazzhr`](ats-jazzhr.md) | 2 | 0 % | 100 % | ✅ | | ||
@@ -903,6 +902,7 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser | |||||
| 903 | | [AVEQ](aveq.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 1 | 0 % | 100 % | ✅ | | 902 | | [AVEQ](aveq.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 1 | 0 % | 100 % | ✅ | | ||
| 904 | | [Banyan Capital Partners](bcp.md) | [`greenhouse`](ats-greenhouse.md) | 1 | 0 % | 100 % | ✅ | | 903 | | [Banyan Capital Partners](bcp.md) | [`greenhouse`](ats-greenhouse.md) | 1 | 0 % | 100 % | ✅ | | ||
| 905 | | [BCES Global](bces.md) | [`greenhouse`](ats-greenhouse.md) | 1 | 0 % | 100 % | ✅ | | 904 | | [BCES Global](bces.md) | [`greenhouse`](ats-greenhouse.md) | 1 | 0 % | 100 % | ✅ | | ||
| 905 | +| [BDC](bdc.md) | [`workday`](ats-workday.md) | 1 | 0 % | 100 % | ✅ | | ||||
| 906 | | [Berlin Packaging Canada Corporation](bpcanada.md) | [`greenhouse`](ats-greenhouse.md) | 1 | 0 % | 100 % | ✅ | | 906 | | [Berlin Packaging Canada Corporation](bpcanada.md) | [`greenhouse`](ats-greenhouse.md) | 1 | 0 % | 100 % | ✅ | | ||
| 907 | | [BLEUFEU (Festival d'été de Québec)](bleufeu.md) | [`dayforce`](ats-dayforce.md) | 1 | 0 % | 100 % | ✅ | | 907 | | [BLEUFEU (Festival d'été de Québec)](bleufeu.md) | [`dayforce`](ats-dayforce.md) | 1 | 0 % | 100 % | ✅ | | ||
| 908 | | [Bliinx](bliinx.md) | [`breezy`](ats-breezy.md) | 1 | 0 % | 100 % | ✅ | | 908 | | [Bliinx](bliinx.md) | [`breezy`](ats-breezy.md) | 1 | 0 % | 100 % | ✅ | | ||
modified
docs/connecteurs/ats-adp.md
+3 −3
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher | |||||
| 5 | Contact : contact@spboucher.ai | 5 | Contact : contact@spboucher.ai | ||
| 6 | Fichier : docs/connecteurs/ats-adp.md | 6 | Fichier : docs/connecteurs/ats-adp.md | ||
| 7 | Rôle : Fiche plateforme ATS adp — mécanique partagée + tableau des 17 tenants | 7 | Rôle : Fiche plateforme ATS adp — mécanique partagée + tableau des 17 tenants | ||
| 8 | −Généré : 2026-10-23 03:23 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | 8 | +Généré : 2026-10-23 03:37 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 | --> | ||
@@ -41,7 +41,7 @@ Généré : 2026-10-23 03:23 EDT par scripts/gen_connector_docs.py — NE PAS | |||||
| 41 | | Employeur | Actives | Salaire | GPS | Mode | Dernier sync | OK | | 41 | | Employeur | Actives | Salaire | GPS | Mode | Dernier sync | OK | | ||
| 42 | |---|---|---|---|---|---|---| | 42 | |---|---|---|---|---|---|---| | ||
| 43 | | [Groupe Nordik (Nordik Spa-Nature)](groupe_nordik.md) | 19 | 26 % | 100 % | 0 % | 2026-10-23 02:27 | ✅ | | 43 | | [Groupe Nordik (Nordik Spa-Nature)](groupe_nordik.md) | 19 | 26 % | 100 % | 0 % | 2026-10-23 02:27 | ✅ | | ||
| 44 | −| [Uniboard](uniboard.md) | 19 | 32 % | 63 % | 0 % | 2026-10-23 00:47 | ❌ | | 44 | +| [Uniboard](uniboard.md) | 19 | 32 % | 63 % | 0 % | 2026-10-23 03:37 | ✅ | | ||
| 45 | | [UV Assurance](uv_assurance.md) | 12 | 0 % | 100 % | 0 % | 2026-10-23 00:47 | ❌ | | 45 | | [UV Assurance](uv_assurance.md) | 12 | 0 % | 100 % | 0 % | 2026-10-23 00:47 | ❌ | | ||
| 46 | | [Strathmore](strathmore.md) | 11 | 45 % | 100 % | 9 % | 2026-10-23 03:15 | ✅ | | 46 | | [Strathmore](strathmore.md) | 11 | 45 % | 100 % | 9 % | 2026-10-23 03:15 | ✅ | | ||
| 47 | | [Quincaillerie Richelieu](richelieu.md) | 11 | 0 % | 100 % | 0 % | 2026-10-23 03:04 | ✅ | | 47 | | [Quincaillerie Richelieu](richelieu.md) | 11 | 0 % | 100 % | 0 % | 2026-10-23 03:04 | ✅ | | ||
@@ -51,7 +51,7 @@ Généré : 2026-10-23 03:23 EDT par scripts/gen_connector_docs.py — NE PAS | |||||
| 51 | | [Bento Sushi](bento_sushi.md) | 8 | 88 % | 100 % | 0 % | 2026-10-23 02:00 | ✅ | | 51 | | [Bento Sushi](bento_sushi.md) | 8 | 88 % | 100 % | 0 % | 2026-10-23 02:00 | ✅ | | ||
| 52 | | [MSI Gestion immobilière](msi_gestion.md) | 6 | 100 % | 100 % | 50 % | 2026-10-23 02:55 | ✅ | | 52 | | [MSI Gestion immobilière](msi_gestion.md) | 6 | 100 % | 100 % | 50 % | 2026-10-23 02:55 | ✅ | | ||
| 53 | | [Cultures Gen V](cultures_genv.md) | 5 | 20 % | 100 % | 0 % | 2026-10-23 02:15 | ✅ | | 53 | | [Cultures Gen V](cultures_genv.md) | 5 | 20 % | 100 % | 0 % | 2026-10-23 02:15 | ✅ | | ||
| 54 | −| [Abritek](abritek.md) | 5 | 100 % | 100 % | 0 % | 2026-10-23 01:53 | ❌ | | 54 | +| [Abritek](abritek.md) | 5 | 100 % | 100 % | 0 % | 2026-10-23 03:25 | ✅ | | ||
| 55 | | [Mitsubishi HC Capital Canada](mitsubishi_hc_capital.md) | 1 | 0 % | 100 % | 0 % | 2026-10-23 02:54 | ✅ | | 55 | | [Mitsubishi HC Capital Canada](mitsubishi_hc_capital.md) | 1 | 0 % | 100 % | 0 % | 2026-10-23 02:54 | ✅ | | ||
| 56 | | [Osgoode Properties](osgoode_properties.md) | 1 | 100 % | 100 % | 0 % | 2026-10-23 02:57 | ✅ | | 56 | | [Osgoode Properties](osgoode_properties.md) | 1 | 100 % | 100 % | 0 % | 2026-10-23 02:57 | ✅ | | ||
| 57 | | [Niobec (Magris Performance Materials)](niobec.md) | 1 | 100 % | 100 % | 0 % | 2026-10-23 02:56 | ✅ | | 57 | | [Niobec (Magris Performance Materials)](niobec.md) | 1 | 100 % | 100 % | 0 % | 2026-10-23 02:56 | ✅ | | ||
modified
docs/connecteurs/uniboard.md
+9 −8
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher | |||||
| 5 | Contact : contact@spboucher.ai | 5 | Contact : contact@spboucher.ai | ||
| 6 | Fichier : docs/connecteurs/uniboard.md | 6 | Fichier : docs/connecteurs/uniboard.md | ||
| 7 | Rôle : Fiche connecteur — Uniboard (employeur direct, ATS adp) | 7 | Rôle : Fiche connecteur — Uniboard (employeur direct, ATS adp) | ||
| 8 | −Généré : 2026-10-14 18:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | 8 | +Généré : 2026-10-23 03:37 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | ||
| 9 | relancer le script pour régénérer. | 9 | relancer le script pour régénérer. | ||
| 10 | ============================================================================= | 10 | ============================================================================= | ||
| 11 | --> | 11 | --> | ||
@@ -38,7 +38,7 @@ Généré : 2026-10-14 18:40 EDT par scripts/gen_connector_docs.py — NE PAS | |||||
| 38 | 38 | ||||
| 39 | ## Champs → schéma | 39 | ## Champs → schéma | ||
| 40 | 40 | ||||
| 41 | −Complétude mesurée sur les **19 offres actives** de la source (base live, 2026-10-14 18:40 EDT). | 41 | +Complétude mesurée sur les **19 offres actives** de la source (base live, 2026-10-23 03:37 EDT). | ||
| 42 | 42 | ||||
| 43 | | Champ (`jobs.*`) | Rôle | Complétude | | 43 | | Champ (`jobs.*`) | Rôle | Complétude | | ||
| 44 | |---|---|---| | 44 | |---|---|---| | ||
@@ -51,7 +51,7 @@ Complétude mesurée sur les **19 offres actives** de la source (base live, 2026 | |||||
| 51 | | `address` — Adresse | adresse du lieu de travail | 0 % | | 51 | | `address` — Adresse | adresse du lieu de travail | 0 % | | ||
| 52 | | `postal_code` — Code postal | code postal si publié | 100 % | | 52 | | `postal_code` — Code postal | code postal si publié | 100 % | | ||
| 53 | | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % | | 53 | | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % | | ||
| 54 | −| `employment_type` — Type | temps_plein / temps_partiel / … | 84 % | | 54 | +| `employment_type` — Type | temps_plein / temps_partiel / … | 11 % | | ||
| 55 | | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 32 % | | 55 | | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 32 % | | ||
| 56 | | `salary_label` — Libellé salaire | texte salarial original | 32 % | | 56 | | `salary_label` — Libellé salaire | texte salarial original | 32 % | | ||
| 57 | | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % | | 57 | | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % | | ||
@@ -64,7 +64,7 @@ Complétude mesurée sur les **19 offres actives** de la source (base live, 2026 | |||||
| 64 | | `apply_url` — Candidature | lien de candidature directe | 0 % | | 64 | | `apply_url` — Candidature | lien de candidature directe | 0 % | | ||
| 65 | | `gps` — GPS | lat/lng (géocodage sans invention) | 63 % | | 65 | | `gps` — GPS | lat/lng (géocodage sans invention) | 63 % | | ||
| 66 | 66 | ||||
| 67 | −Exemple réel : *Électrotechnicien* — Val-d'Or · Salaire concurrentiel débutant à 42,51$ /heure · parue le 2026-10-02. | 67 | +Exemple réel : *Électrotechnicien* — Val-d'Or · Salaire concurrentiel débutant à 42,51$ /heure · parue le 2026-10-03. | ||
| 68 | 68 | ||||
| 69 | ## Fréquence & budgets | 69 | ## Fréquence & budgets | ||
| 70 | 70 | ||||
@@ -79,15 +79,15 @@ Exemple réel : *Électrotechnicien* — Val-d'Or · Salaire concurrentiel | |||||
| 79 | 79 | ||||
| 80 | ## Volumétrie & complétude live | 80 | ## Volumétrie & complétude live | ||
| 81 | 81 | ||||
| 82 | −*(mesuré le 2026-10-14 18:40 EDT dans `data/jobka.db`)* | 82 | +*(mesuré le 2026-10-23 03:37 EDT dans `data/jobka.db`)* | ||
| 83 | 83 | ||||
| 84 | −- **Offres en base** : 29 (dont **19 actives**, 0 masquées comme doublons `dup_of`) | 84 | +- **Offres en base** : 30 (dont **19 actives**, 0 masquées comme doublons `dup_of`) | ||
| 85 | - **Salaire** : 6/19 actives (32 %) | 85 | - **Salaire** : 6/19 actives (32 %) | ||
| 86 | - **GPS** : 12/19 actives (63 %) | 86 | - **GPS** : 12/19 actives (63 %) | ||
| 87 | - **Mode** : 0/19 actives (0 %) | 87 | - **Mode** : 0/19 actives (0 %) | ||
| 88 | - **Parution** : 19/19 actives (100 %) | 88 | - **Parution** : 19/19 actives (100 %) | ||
| 89 | −- **Dernier sync** : 2026-10-14 16:10 — trouvées 19, +0, ~0, -0 | 89 | +- **Dernier sync** : 2026-10-23 03:37 — trouvées 19, +0, ~19, -0 | ||
| 90 | −- **Syncs enregistrés** (`sync_log`) : 445 | 90 | +- **Syncs enregistrés** (`sync_log`) : 516 | ||
| 91 | 91 | ||||
| 92 | ## Erreurs & dépannage | 92 | ## Erreurs & dépannage | ||
| 93 | 93 | ||||
@@ -95,6 +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 | +| 404 Client Error: Not Found for url: https://workforcenow.adp.com/mascsr/default/careercen… | 1 | 2026-10-23 00:47 | | ||||
| 98 | | Expecting value: line 1 column 1 (char 0) | 2 | 2026-08-29 23:26 | | 99 | | Expecting value: line 1 column 1 (char 0) | 2 | 2026-08-29 23:26 | | ||
| 99 | 100 | ||||
| 100 | - Rejouer un sync isolé : `.venv/bin/python run.py sync uniboard` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='uniboard' ORDER BY ts DESC LIMIT 5;"` | 101 | - Rejouer un sync isolé : `.venv/bin/python run.py sync uniboard` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='uniboard' ORDER BY ts DESC LIMIT 5;"` | ||
modified
jobka/connectors/uniboard.py
+14 −1
@@ -4,7 +4,20 @@ | |||||
| 4 | # Contact : contact@spboucher.ai | 4 | # Contact : contact@spboucher.ai | ||
| 5 | # Fichier : jobka/connectors/jobka/connectors/uniboard.py | 5 | # Fichier : jobka/connectors/jobka/connectors/uniboard.py | ||
| 6 | # Rôle : Connecteur Uniboard — panneaux de bois, Laval/Val-d'Or/Mont-Laurier — ADP WFN | 6 | # Rôle : Connecteur Uniboard — panneaux de bois, Laval/Val-d'Or/Mont-Laurier — ADP WFN | ||
| 7 | −# Créé : 2026-08-25 Modifié : 2026-08-25 | 7 | +# Créé : 2026-08-25 Modifié : 2026-10-23 | ||
| 8 | +# ============================================================================= | ||||
| 9 | +# [ka6 2026-10-23] Signalé stale (found=0, médiane 19.0) : FAUX POSITIF — blip | ||||
| 10 | +# de maintenance nocturne ADP WFN. Chronologie (sync_log) : syncs verts | ||||
| 11 | +# found=19 en continu jusqu'au 2026-10-22 21:36 EDT, puis UN SEUL échec à | ||||
| 12 | +# 00:47 « 404 Not Found » sur l'endpoint job-requisitions de | ||||
| 13 | +# workforcenow.adp.com — fenêtre SYSTÉMIQUE 00:35→01:54 EDT touchant 6 | ||||
| 14 | +# tenants ADP (richelieu, strathmore, triple_boris, uniboard, uv_assurance, | ||||
| 15 | +# abritek), même mécanique que les maintenances ADP des 28-30 août (c7d9ece) | ||||
| 16 | +# mais signature 404 au lieu du 302 sorry.adp.com / 200 non-JSON ; le retry | ||||
| 17 | +# de adp.py ne couvre que le 200 non-JSON, un 404 franc échoue net — voulu, | ||||
| 18 | +# le connecteur repart seul à la rotation suivante. Endpoint re-vérifié live | ||||
| 19 | +# 200 JSON via curl à 03:37, sync isolé rejoué : ok=1 found=19 (= médiane) | ||||
| 20 | +# en 24,3 s, 19 offres actives en base. Rien à réparer dans le flux. | ||||
| 8 | # ============================================================================= | 21 | # ============================================================================= | ||
| 9 | from .adp import ADPWorkforceNowConnector | 22 | from .adp import ADPWorkforceNowConnector | ||
| 10 | 23 | ||||
| 11 | 24 | ||||