SPB Git

spb/job-ka

Public

[ka6] connecteur nortekinc: broken = fenêtre de maintenance planifiée Workday (systémique, terminée) — rien à réparer côté flux, sync rejoué found=4 = médiane 4.0 + artefact vague C corrigé (url vide → nortekair.com). Broken = faux positif: 3 syncs ok=0 « Workday en maintenance planifiée » (00:20, 02:21 et 07:09 le 2026-10-17) après dernier sync vert 22:01 la veille found=4, même fenêtre que puma/valmet/quadreal, détection maintenance de workday.py a proprement nommé la cause, AUCUN retrait. Fenêtre terminée à la mission (09:17): board live 200, 41 postes, sync isolé rejoué found=4 = médiane en 5,2 s, 4 offres QC actives (Montréal/St-Léonard-d'Aston/Québec x2) miss_count=0. Pas de migration: nortekair.com/careers (200) référence toujours myworkdayjobs.com/en-US/NortekAirSolutions. Artefact vague C: url vide dans sources.json → https://www.nortekair.com (200 vérifié live; nortekinc.com ne répond plus, marque opérante = Nortek Air Solutions). Docstring chronologie 1re intervention, fiches nortekinc.md/INDEX.md régénérées. 107 tests verts, pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.

Simon-Pierre Boucher committed (Oct 17, 2026) parent a8e0c58 Browse files

4 changed files +36 −12

modified data/sources.json +1 −1
@@ -11520,7 +11520,7 @@
11520 { 11520 {
11521 "id": "nortekinc", 11521 "id": "nortekinc",
11522 "name": "Nortekinc", 11522 "name": "Nortekinc",
11523− "url": "", 11523+ "url": "https://www.nortekair.com",
11524 "careers_url": "https://nortekinc.wd503.myworkdayjobs.com/NortekAirSolutions", 11524 "careers_url": "https://nortekinc.wd503.myworkdayjobs.com/NortekAirSolutions",
11525 "sectors": [ 11525 "sectors": [
11526 "TI", 11526 "TI",
modified docs/connecteurs/INDEX.md +3 −3
@@ -5,14 +5,14 @@ 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-17 09:04 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, 8+Généré : 2026-10-17 09:19 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-17 09:04 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-17 09:19 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** — **25566 offres actives** (23016 directes, 2550 portails ; 116 masquées comme doublons inter-sources, soit 25450 visibles). 1134 fiches. 17 **1104 employeurs directs** connectés via **25 plateformes ATS** + **3 portails agrégateurs** + le canal de **dépôt direct** — **25566 offres actives** (23016 directes, 2550 portails ; 116 masquées comme doublons inter-sources, soit 25450 visibles). 1134 fiches.
18 18
@@ -688,7 +688,7 @@ Conformité : voir [`docs/CONFORMITE.md`](../CONFORMITE.md). Chaque offre conser
688 | [Msd](msd.md) | [`workday`](ats-workday.md) | 4 | 100 % | 100 % | ✅ | 688 | [Msd](msd.md) | [`workday`](ats-workday.md) | 4 | 100 % | 100 % | ✅ |
689 | [Nmédia](nmdia.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 4 | 0 % | 100 % | ✅ | 689 | [Nmédia](nmdia.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 4 | 0 % | 100 % | ✅ |
690 | [Norbert Health](norbert_health.md) | [`breezy`](ats-breezy.md) | 4 | 0 % | 100 % | ✅ | 690 | [Norbert Health](norbert_health.md) | [`breezy`](ats-breezy.md) | 4 | 0 % | 100 % | ✅ |
691−| [Nortekinc](nortekinc.md) | [`workday`](ats-workday.md) | 4 | 25 % | 100 % | ❌ | 691+| [Nortekinc](nortekinc.md) | [`workday`](ats-workday.md) | 4 | 25 % | 100 % | ✅ |
692 | [Nssl](nssl.md) | [`dayforce`](ats-dayforce.md) | 4 | 0 % | 100 % | ✅ | 692 | [Nssl](nssl.md) | [`dayforce`](ats-dayforce.md) | 4 | 0 % | 100 % | ✅ |
693 | [Nuvei](nuvei.md) | [`workable`](ats-workable.md) | 4 | 0 % | 100 % | ✅ | 693 | [Nuvei](nuvei.md) | [`workable`](ats-workable.md) | 4 | 0 % | 100 % | ✅ |
694 | [O-I](o_i.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 4 | 25 % | 100 % | ✅ | 694 | [O-I](o_i.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 4 | 25 % | 100 % | ✅ |
modified docs/connecteurs/nortekinc.md +12 −7
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher
5 Contact : contact@spboucher.ai 5 Contact : contact@spboucher.ai
6 Fichier : docs/connecteurs/nortekinc.md 6 Fichier : docs/connecteurs/nortekinc.md
7 Rôle : Fiche connecteur — Nortekinc (employeur direct, ATS workday) 7 Rôle : Fiche connecteur — Nortekinc (employeur direct, ATS workday)
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-17 09:19 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 -->
@@ -16,7 +16,7 @@ Généré : 2026-10-14 18:40 EDT par scripts/gen_connector_docs.py — NE PAS
16 16
17 ## Description 17 ## Description
18 18
19−- **Site** : [Nortekinc]() 19+- **Site** : [Nortekinc](https://www.nortekair.com)
20 - **Page carrières** : https://nortekinc.wd503.myworkdayjobs.com/NortekAirSolutions 20 - **Page carrières** : https://nortekinc.wd503.myworkdayjobs.com/NortekAirSolutions
21 - **Secteurs** : TI, Services 21 - **Secteurs** : TI, Services
22 - **Région** : Montréal 22 - **Région** : Montréal
@@ -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 **4 offres actives** de la source (base live, 2026-10-14 18:40 EDT). 41+Complétude mesurée sur les **4 offres actives** de la source (base live, 2026-10-17 09:19 EDT).
42 42
43 | Champ (`jobs.*`) | Rôle | Complétude | 43 | Champ (`jobs.*`) | Rôle | Complétude |
44 |---|---|---| 44 |---|---|---|
@@ -79,19 +79,24 @@ Exemple réel : *Assembleur 1 - Fin de semaine* — Montréal · Un salaire de d
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-17 09:19 EDT dans `data/jobka.db`)*
83 83
84 - **Offres en base** : 21 (dont **4 actives**, 0 masquées comme doublons `dup_of`) 84 - **Offres en base** : 21 (dont **4 actives**, 0 masquées comme doublons `dup_of`)
85 - **Salaire** : 1/4 actives (25 %) 85 - **Salaire** : 1/4 actives (25 %)
86 - **GPS** : 4/4 actives (100 %) 86 - **GPS** : 4/4 actives (100 %)
87 - **Mode** : 0/4 actives (0 %) 87 - **Mode** : 0/4 actives (0 %)
88 - **Parution** : 4/4 actives (100 %) 88 - **Parution** : 4/4 actives (100 %)
89−- **Dernier sync** : 2026-10-14 15:45 — trouvées 4, +0, ~0, -0 89+- **Dernier sync** : 2026-10-17 09:18 — trouvées 4, +0, ~2, -0
90−- **Syncs enregistrés** (`sync_log`) : 473 90+- **Syncs enregistrés** (`sync_log`) : 496
91 91
92 ## Erreurs & dépannage 92 ## Erreurs & dépannage
93 93
94−Aucune erreur dans `sync_log` pour cette source. 94+Erreurs relevées dans `sync_log` :
95+
96+| Erreur | Occurrences | Dernière fois |
97+|---|---|---|
98+| Workday en maintenance planifiée (redirigé vers https://community.workday.com/maintenance-… | 2 | 2026-10-17 07:09 |
99+| Workday en maintenance planifiée (redirigé vers https://static.community.workday.com/maint… | 1 | 2026-10-17 02:21 |
95 100
96 - Rejouer un sync isolé : `.venv/bin/python run.py sync nortekinc` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='nortekinc' ORDER BY ts DESC LIMIT 5;"` 101 - Rejouer un sync isolé : `.venv/bin/python run.py sync nortekinc` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='nortekinc' ORDER BY ts DESC LIMIT 5;"`
97 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`. 102 - Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`.
modified jobka/connectors/nortekinc.py +20 −1
@@ -5,11 +5,30 @@
5 # Fichier : jobka/connectors/nortekinc.py 5 # Fichier : jobka/connectors/nortekinc.py
6 # Rôle : Connecteur Nortekinc — workday (tenant nortekinc.wd503, site NortekAirSolutions) 6 # Rôle : Connecteur Nortekinc — workday (tenant nortekinc.wd503, site NortekAirSolutions)
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-17
9 # ============================================================================= 9 # =============================================================================
10 from .workday import WorkdayConnector 10 from .workday import WorkdayConnector
11 11
12 12
13+# Chronologie des interventions
14+# -----------------------------
15+# 2026-10-17 (ka6, 1re intervention) — « broken » = fenêtre de maintenance
16+# PLANIFIÉE Workday (POST cxs redirigé vers community.workday.com/
17+# maintenance-page), systémique : 3 syncs ok=0 « maintenance planifiée »
18+# à 00:20, 02:21 et 07:09 le 2026-10-17, même fenêtre que puma/valmet/
19+# quadreal (~20 tenants Workday du repo). Dernier sync vert la veille
20+# 22:01 found=4 = médiane 4.0, AUCUN retrait. Fenêtre TERMINÉE au moment
21+# de la mission (09:17) : board live 200 avec 41 postes, sync rejoué
22+# found=4 = médiane en 5,2 s, 4 offres QC actives (Montréal,
23+# St-Léonard-d'Aston, Québec x2) miss_count=0. Rien à réparer côté flux.
24+# Pas de migration : nortekair.com/careers (200) référence toujours
25+# myworkdayjobs.com/en-US/NortekAirSolutions. Seul correctif : artefact
26+# vague C « url vide » dans data/sources.json -> https://www.nortekair.com
27+# (200 vérifié live ; nortekinc.com ne répond plus — Nortek Inc. absorbée
28+# par Madison Industries, la marque opérante est Nortek Air Solutions).
29+# Ne pas diagnostiquer tenant par tenant pendant ces fenêtres : repart seul.
30+
31+
13 class NortekincConnector(WorkdayConnector): 32 class NortekincConnector(WorkdayConnector):
14 source_id = 'nortekinc' 33 source_id = 'nortekinc'
15 EMPLOYER = 'Nortekinc' 34 EMPLOYER = 'Nortekinc'
16 35
Menu

Theme