SPB Git

spb/job-ka

Public

Revert "[ka6] connecteur cusm_ir: stale = faux positif, maintenance planifiée Njoyn en cours — rien à réparer. Même fenêtre systémique que cgi (ecb31c08, récidive du 2026-09-05→07, vendredi soir → dimanche ~21h EDT) : cusm_ir vert found=24 (médiane 24.0) jusqu'à 18:09 EDT le 2026-10-23, puis « maintenance planifiée (redirection maintenance.njoyn.com) » à 20:36 et 22:59, comme les 11 tenants Njoyn de l'app. Vérification live 23:32 EDT : cusm.njoyn.com (racine et joblisting CL3/clid=55242) 302 → maintenance.njoyn.com/.../platform-maintenance.html (page officielle). Le garde-fou _MAINT_RE fonctionne comme prévu : sync avorté proprement, 24 offres actives conservées en base (0 retrait). Sync isolé rejoué : abort explicite en 3,0 s avec le message maintenance. Le tenant reverdira seul à sa rotation horaire au retour du service (~dimanche 21h). Aucun code de fetch modifié, docstring chronologie seulement ; fiches cusm_ir.md/ats-njoyn.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."

This reverts commit d6a7c87fe893f07b006771896ee8e382e0d9c979.
Simon-Pierre Boucher committed (Oct 24, 2026) parent 3b1c39d Browse files

4 changed files +25 −36

modified docs/connecteurs/INDEX.md +2 −2
@@ -5,14 +5,14 @@ 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-23 23:33 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-10-23 23:18 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-23 23:33 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 23:18 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 17 **1104 employeurs directs** connectés via **25 plateformes ATS** + **3 portails agrégateurs** + le canal de **dépôt direct** — **25410 offres actives** (23310 directes, 2100 portails ; 134 masquées comme doublons inter-sources, soit 25276 visibles). 1134 fiches.
18 18
modified docs/connecteurs/ats-njoyn.md +3 −3
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/ats-njoyn.md
7 7 Rôle : Fiche plateforme ATS njoyn — mécanique partagée + tableau des 11 tenants
8 −Généré : 2026-10-23 23:33 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-10-23 23:18 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -46,7 +46,7 @@ Généré : 2026-10-23 23:33 EDT par scripts/gen_connector_docs.py — NE PAS
46 46 | [Santé Québec — Montréal](sante_montreal.md) | 856 | 97 % | 98 % | 1 % | 2026-10-23 21:25 | ❌ |
47 47 | [CGI](cgi.md) | 289 | 0 % | 94 % | 0 % | 2026-10-23 23:17 | ❌ |
48 48 | [Groupe Bellemare](groupe_bellemare.md) | 29 | 0 % | 0 % | 0 % | 2026-10-23 23:11 | ❌ |
49 −| [Institut de recherche du CUSM](cusm_ir.md) | 24 | 96 % | 0 % | 0 % | 2026-10-23 23:32 | ❌ |
49 +| [Institut de recherche du CUSM](cusm_ir.md) | 24 | 96 % | 0 % | 0 % | 2026-10-23 22:59 | ❌ |
50 50 | [Ville de Gatineau](ville_gatineau.md) | 20 | 100 % | 0 % | 0 % | 2026-10-23 21:36 | ❌ |
51 51 | [Réseau de transport de la Capitale](rtc_quebec.md) | 19 | 0 % | 0 % | 0 % | 2026-10-23 21:25 | ❌ |
52 52 | [Réseau de transport de Longueuil (RTL)](rtl.md) | 16 | 38 % | 0 % | 0 % | 2026-10-23 21:25 | ❌ |
@@ -73,7 +73,6 @@ Certains domaines de cette plateforme sont servis derrière un gestionnaire anti
73 73
74 74 Commits touchant `jobka/connectors/njoyn.py` :
75 75
76 −- `ecb31c08` 2026-10-23 [ka6] connecteur cgi: stale = faux positif, maintenance planifiée Njoyn en cours — rien à réparer. Récidive de la fenêtre de maintenance plateforme du 2026-09-05→07, même signature : les 11 tenants Njoyn de l'app (cgi médiane 289, rtc_quebec, rtl, cusm_ir, groupe_master, groupe_bellemare, sante_montreal, stl_laval, ville_gatineau/terrebonne/mirabel) verts jusqu'à 19:10 EDT le 2026-10-23 (cgi found=289 à 18:03) puis TOUS en « maintenance planifiée (redirection maintenance.njoyn.com) » à partir de 20:31 — vendredi soir, pattern historique vendredi → dimanche ~21h. Vérification live 23:16 EDT : cgi.njoyn.com, rtc.njoyn.com, clients.njoyn.com et njoyn.com lui-même 302 → maintenance.njoyn.com/.../platform-maintenance.html (page officielle). Le garde-fou _MAINT_RE de septembre fonctionne exactement comme prévu : sync avorté proprement, offres conservées (289 actives cgi en base, 0 retrait). Sync isolé rejoué : abort explicite en 4,6 s avec le message maintenance. Les tenants reverdiront seuls à leur rotation horaire au retour du service (~dimanche 21h). Aucun code de fetch modifié, docstring chronologie seulement ; fiches cgi.md/ats-njoyn.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.
77 76 - `7938ca61` 2026-09-13 [ka6] fix connecteur groupe_bellemare: faux positif de supervision (micro-panne réseau vers api.scrapfly.io) — durcissement du retry de _fetch_listing aux erreurs réseau (njoyn.py) — le statut stale vient d'un unique échec à 04:28 (ConnectTimeout 180 s vers l'API Scrapfly elle-même, seul échec de tout le cycle app : 1105 connecteurs ok), alors que tous les syncs précédents étaient stables à found=34 = médiane exacte ; Scrapfly répond en 0,3 s au moment du diagnostic et le sync rejoué donne found=34 en 8,4 s — connecteur INTACT. Vraie faiblesse corrigée : le retry durci du 2026-09-09 (3 essais, ré-amorçage de session) ne couvrait que les réponses vides/anti-bot ; une requests.ConnectTimeout levée par base.scrapfly() traversait la boucle et avortait le sync au premier essai. _fetch_listing attrape désormais requests.RequestException — même traitement qu'une page vide (nouvelle session Scrapfly = nouveau proxy, backoff 10-20 s), ré-élévation après 3 échecs. Test unitaire ajouté (retry après 2 ConnectTimeout simulés + ré-élévation après 3). Sync rejoué post-patch : found=34, ok. 102 tests pytest verts. pm2 restart job-ka-sync OK, site 200.
78 77 - `2e4a54ee` 2026-09-09 [ka6] fix connecteur groupe_bellemare: retry avec ré-amorçage de session Scrapfly dans la plateforme njoyn — échec transitoire du 2026-09-09 12h26 (Scrapfly a renvoyé 0 octet aux 2 essais, bellemare et groupe_master tombés ensemble, repartis seuls au sync suivant) ; le retry unique de _fetch_listing rejouait la MÊME session Scrapfly (proxy collant + cookies), donc le même proxy défaillant ; désormais 3 essais, backoff 10-20 s, session Scrapfly ré-amorcée entre les essais (nouveau proxy) ; syncs rejoués : bellemare 31 offres (médiane 31.0), groupe_master 15 (médiane 14.0)
79 78 - `d4ab4914` 2026-09-09 [ka6] fix connecteur sante_montreal: Radware étendu au domaine personnalisé post-maintenance Njoyn — bascule Scrapfly + sessions Scrapfly pour la pagination
@@ -83,3 +82,4 @@ Commits touchant `jobka/connectors/njoyn.py` :
83 82 - `3843ced5` 2026-09-04 Revert "[ka6] connecteur cusm_ir: diagnostic du mur Radware hCaptcha host-wide *.njoyn.com (2026-09-02) — non contournable (Scrapfly/BrightData/Oxylabs/Chromium réel tous bloqués), erreur explicite via _radware_hint, offres en base préservées"
84 83 - `c8f84a32` 2026-09-04 [ka6] connecteur cusm_ir: diagnostic du mur Radware hCaptcha host-wide *.njoyn.com (2026-09-02) — non contournable (Scrapfly/BrightData/Oxylabs/Chromium réel tous bloqués), erreur explicite via _radware_hint, offres en base préservées
85 84 - `33dba440` 2026-08-26 [ka6] fix connecteur stl_laval: garde-fou njoyn — une page liste vide/anti-bot (Scrapfly en échec renvoie "") ne passe plus pour un babillard à 0 offre; retente une fois puis lève une erreur (njoyn.py)
85 +- `df3faf02` 2026-08-25 Vague E — 3 nouvelles familles ATS (JazzHR, Teamtailor, Zoho Recruit) + 60 connecteurs, ~547 offres QC
modified docs/connecteurs/cusm_ir.md +19 −19
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 5 Contact : contact@spboucher.ai
6 6 Fichier : docs/connecteurs/cusm_ir.md
7 7 Rôle : Fiche connecteur — Institut de recherche du CUSM (employeur direct, ATS njoyn)
8 −Généré : 2026-10-23 23:33 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
8 +Généré : 2026-10-14 18:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER,
9 9 relancer le script pour régénérer.
10 10 =============================================================================
11 11 -->
@@ -40,33 +40,33 @@ Généré : 2026-10-23 23:33 EDT par scripts/gen_connector_docs.py — NE PAS
40 40
41 41 ## Champs → schéma
42 42
43 −Complétude mesurée sur les **24 offres actives** de la source (base live, 2026-10-23 23:33 EDT).
43 +Complétude mesurée sur les **32 offres actives** de la source (base live, 2026-10-14 18:40 EDT).
44 44
45 45 | Champ (`jobs.*`) | Rôle | Complétude |
46 46 |---|---|---|
47 47 | `title` — Titre | titre du poste | 100 % |
48 48 | `employer` — Employeur | nom de l'entreprise | 100 % |
49 49 | `url` — URL | lien direct vers l'offre originale | 100 % |
50 −| `description` — Description | texte complet (HTML nettoyé) | 96 % |
50 +| `description` — Description | texte complet (HTML nettoyé) | 97 % |
51 51 | `city` — Ville | municipalité normalisée | 0 % |
52 52 | `region` — Région | région administrative | 0 % |
53 53 | `address` — Adresse | adresse du lieu de travail | 0 % |
54 54 | `postal_code` — Code postal | code postal si publié | 0 % |
55 55 | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % |
56 −| `employment_type` — Type | temps_plein / temps_partiel / … | 8 % |
57 −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 96 % |
58 −| `salary_label` — Libellé salaire | texte salarial original | 100 % |
56 +| `employment_type` — Type | temps_plein / temps_partiel / … | 9 % |
57 +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 94 % |
58 +| `salary_label` — Libellé salaire | texte salarial original | 97 % |
59 59 | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % |
60 60 | `requirements` — Exigences | scolarité, expérience, langues (JSON) | 100 % |
61 −| `date_posted` — Date de parution | ISO 8601 | 67 % |
61 +| `date_posted` — Date de parution | ISO 8601 | 69 % |
62 62 | `date_deadline` — Date limite | date limite pour postuler | 0 % |
63 −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 96 % |
64 −| `language` — Langue | fr / en / bilingue (source ou heuristique) | 96 % |
63 +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 97 % |
64 +| `language` — Langue | fr / en / bilingue (source ou heuristique) | 97 % |
65 65 | `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % |
66 66 | `apply_url` — Candidature | lien de candidature directe | 0 % |
67 67 | `gps` — GPS | lat/lng (géocodage sans invention) | 0 % |
68 68
69 −Exemple réel : *Assistant.e de recherche* — ∅ · 50960 $ - 94658.2 $ /année · parue le 2026-10-21.
69 +Exemple réel : *Coordonnateur.trice de recherche clinique* — ∅ · 25.01 $ - 46.42 $ /heure · parue le 2026-10-14.
70 70
71 71 ## Fréquence & budgets
72 72
@@ -81,15 +81,15 @@ Exemple réel : *Assistant.e de recherche* — ∅ · 50960 $ - 94658.2 $ /anné
81 81
82 82 ## Volumétrie & complétude live
83 83
84 −*(mesuré le 2026-10-23 23:33 EDT dans `data/jobka.db`)*
84 +*(mesuré le 2026-10-14 18:40 EDT dans `data/jobka.db`)*
85 85
86 −- **Offres en base** : 99 (dont **24 actives**, 0 masquées comme doublons `dup_of`)
87 −- **Salaire** : 23/24 actives (96 %)
88 −- **GPS** : 0/24 actives (0 %)
89 −- **Mode** : 0/24 actives (0 %)
90 −- **Parution** : 16/24 actives (67 %)
91 −- **Dernier sync** : 2026-10-23 23:32 — trouvées 0, +0, ~0, -0, **ÉCHEC : njoyn cusm_ir: plateforme Njoyn en maintenance planifiée (redirection maintenance.njoyn.co…**
92 −- **Syncs enregistrés** (`sync_log`) : 611
86 +- **Offres en base** : 94 (dont **32 actives**, 0 masquées comme doublons `dup_of`)
87 +- **Salaire** : 30/32 actives (94 %)
88 +- **GPS** : 0/32 actives (0 %)
89 +- **Mode** : 0/32 actives (0 %)
90 +- **Parution** : 22/32 actives (69 %)
91 +- **Dernier sync** : 2026-10-14 18:28 — trouvées 32, +0, ~0, -0
92 +- **Syncs enregistrés** (`sync_log`) : 514
93 93
94 94 ## Erreurs & dépannage
95 95
@@ -97,7 +97,7 @@ Erreurs relevées dans `sync_log` :
97 97
98 98 | Erreur | Occurrences | Dernière fois |
99 99 |---|---|---|
100 −| njoyn cusm_ir: plateforme Njoyn en maintenance planifiée (redirection maintenance.njoyn.co… | 5 | 2026-10-23 23:32 |
100 +| njoyn cusm_ir: plateforme Njoyn en maintenance planifiée (redirection maintenance.njoyn.co… | 2 | 2026-09-06 02:45 |
101 101 | njoyn cusm_ir: page liste illisible (vide ou anti-bot, 29125 octets) — sync avorté | 2 | 2026-09-06 02:01 |
102 102 | njoyn cusm_ir: page liste illisible (vide ou anti-bot, 0 octets) — sync avorté — cause ide… | 1 | 2026-09-04 03:09 |
103 103 | njoyn cusm_ir: page liste illisible (vide ou anti-bot, 0 octets) — sync avorté | 13 | 2026-09-04 00:41 |
modified jobka/connectors/cusm_ir.py +1 −12
@@ -4,19 +4,8 @@
4 4 # Contact : contact@spboucher.ai
5 5 # Fichier : jobka/connectors/jobka/connectors/cusm_ir.py
6 6 # Rôle : Connecteur Institut de recherche du CUSM — recherche en santé, Montréal — Njoyn CUSM
7 −# Créé : 2026-08-25 Modifié : 2026-10-23
7 +# Créé : 2026-08-25 Modifié : 2026-08-25
8 8 # =============================================================================
9 −"""Connecteur Institut de recherche du CUSM (Njoyn CL3/55242).
10 −
11 −Chronologie :
12 −- 2026-10-23 : stale = faux positif, fenêtre de maintenance planifiée de toute
13 − la plateforme Njoyn (récidive du 2026-09-05→07, vendredi soir → dimanche
14 − ~21h EDT). Vert found=24 jusqu'à 18:09 EDT, puis 302 →
15 − maintenance.njoyn.com/.../platform-maintenance.html à 20:36 et 22:59 sur les
16 − 11 tenants Njoyn de l'app. Le garde-fou _MAINT_RE de njoyn.py avorte le sync
17 − et conserve les 24 offres actives ; le tenant reverdit seul à sa rotation
18 − horaire au retour du service. Rien à réparer.
19 −"""
20 9 from .njoyn import NjoynConnector
21 10
22 11
23 12
Menu

Theme