SPB Git

spb/job-ka

Public
page 1
  1. Fri, Sep 11, 2026 1

    1. [ka6] fix connecteur euromoneyplc: balayage fr-CA + en-CA + en-GB dans la plateforme dayforce (tenant seul) — la dernière offre QC du tenant (4827 « Partenaire, Acquisition de talent », Montréal, publiée en français) a été dépubliée par l'employeur le 2026-09-11 entre 09h19 et 11h40 EDT ; le tenant euromoneyplc publie désormais 0 poste TOTAL (vérifié en direct : boards CANDIDATEPORTAL + EUROMONEY × cultures fr-CA/en-CA/en-GB/en-US = 0 partout, détail id bidon → 404) → volume 0 légitime AUJOURD'HUI. Mais la recherche Dayforce étant PARTITIONNÉE par culture de publication (cf. harrisrebar 788bfb4) et le portail officiel de l'employeur étant en-GB (delinian.com/careers → dayforcehcm CandidatePortal en-GB du même tenant), fr-CA seul rendrait le connecteur aveugle à toute future offre QC publiée en anglais : fetch() balaie désormais fr-CA PUIS en-CA PUIS en-GB (pattern harrisrebar : CULTURE permuté en attribut d'instance, dédup par jobPostingId, version française gagnante — la classe plateforme dayforce et les autres tenants sont intacts). Correction au passage de EMPLOYER, artefact de génération (intitulé de poste) : « Talent Acquisition Partner » → « Delinian (ex-Euromoney) » (Euromoney Institutional Investor plc rebrandé Delinian en 2023, bureau de Montréal au 1001 De Maisonneuve Ouest). Sync isolé rejoué : found=0 en 7,2 s (exact, l'offre 4827 avait déjà été retirée par le mécanisme normal miss_count=2 au sync de 14h04), statut ok. 101 tests pytest verts. pm2 restart job-ka-sync OK, site 200.
      Simon-Pierre Boucher · 1 file +32 −3
  2. Thu, Sep 10, 2026 6

    1. [ka6] fix connecteur harrisrebar: balayage en-CA complémentaire dans la plateforme dayforce (tenant seul) — la recherche Dayforce est PARTITIONNÉE par culture de publication, sans repli serveur (vérifié : lavieenrose fr-CA 172 / en-CA 281, soprema fr 23 / en 20). Le tenant harrisrebar (Harris Rebar, rebrandé Nucor Rebar Fabrication — harrisrebar.com redirige vers nucor.com) publie ses 12 postes actuels (ON/AB/NS/NB/BC) en en-CA seulement : la recherche fr-CA du connecteur renvoie 0 poste TOTAL. L'unique offre QC historique (16804 « AIDE À L'EXPÉDITION/À LA RÉCEPTION », Montréal, publiée en français) a été dépubliée par l'employeur le 2026-09-10 entre 10h04 et 14h35 EDT — absente des listings des 2 boards (CANDIDATEPORTAL + HarrisCanada) × 2 cultures, mot-clé compris ; le détail API 200 est un rendu résiduel (createdTimestampUTC = heure de la requête ; id bidon → 404). Volume 0 légitime AUJOURD'HUI, mais fr-CA seul rendrait le connecteur aveugle à toute future offre QC publiée en anglais : fetch() balaie désormais fr-CA PUIS en-CA (dédup par jobPostingId, version française gagnante, CULTURE restaurée en attribut d'instance — la classe plateforme et les ~124 autres tenants dayforce sont intacts). Correction au passage de EMPLOYER, artefact de génération (titre de poste) → « Nucor Rebar Fabrication (Harris Rebar) ». Test réel : fr-CA 0 + en-CA 12 postes scannés → 0 offre QC (exact). Sync isolé rejoué : found=0, removed=1 (16804 retirée par le mécanisme normal miss_count=2), statut ok. 101 tests pytest verts. pm2 restart job-ka-sync OK, site 200.
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +28 −3
    2. Simon-Pierre Boucher · 1 file +14 −2
  3. Wed, Sep 9, 2026 6

    1. [ka6] fix connecteur sante_montreal: Radware étendu au domaine personnalisé post-maintenance Njoyn — bascule Scrapfly + sessions Scrapfly pour la pagination
      …
      Depuis la maintenance Njoyn du 2026-09-05→07, Radware Bot Manager couvre aussi
      emplois.santemontreal.qc.ca (avant : seulement *.njoyn.com). Chronologie des
      syncs : 731 offres (08/09 14h32) → 50 (POST de pagination rejeté) → 0 (page
      liste bloquée). La page « Radware Block Page » embarque l'URL Xweb.asp dans ses
      paramètres et passait le garde-fou de _fetch_listing → faux « 0 offre, ok ».
      
      - sante_montreal.py : USE_SCRAPFLY = True (pattern des 10 autres tenants Njoyn)
      - njoyn.py : détection _RADWARE_RE (Radware Block Page/shieldsquare/perfdrive)
        dans _html avec bascule Scrapfly pour tout le reste du sync ; sessions
        Scrapfly (_sf_session) partagées entre GET liste / POST pagination / détails
        — sans session le tbtoken (lié aux cookies ASP du GET) est rejeté en
        400 Bad Request au POST ; casse Xweb.asp forcée sur l'action du formulaire
        (gotcha 2026-09-02)
      - base.py : kwarg optionnel session sur scrapfly()/get_scrapfly()
        (session + session_sticky_proxy), rétrocompatible
      
      Sync rejoué : 726 offres (médiane historique ~706), removed=16 offres
      dépubliées pendant la panne. pm2 restart job-ka-sync OK, site 200.
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 3 files +52 −12
  4. Tue, Sep 8, 2026 2

    1. [ka6] connecteur neweratech: volume 0 légitime — les 2 offres QC (« Infraction Review Technician » 8684549002 et « Représentant service à la clientèle - Révision des infractions » 8684559002, Saint-Jean-sur-Richelieu) ont été dépubliées par l'employeur le 2026-09-08 entre 14h19 et 17h39 EDT (détail → 404). Multinationale TI américaine à volume QC naturellement très faible (médiane 2.0, seules ses offres de contrôle du stationnement à Saint-Jean sont québécoises). Vérifications réelles : boards-api Greenhouse 200 avec 61 offres (É.-U./Inde/Asie-Pacifique/Remote, aucune mention Québec — toutes correctement rejetées par is_quebec_location, 0 faux positif), board vivant, neweratech.com/careers consomme toujours boards-api.greenhouse.io/v1/boards/neweratech (pas de migration d'ATS). Le statut stale venait du volume 0 compté comme échec par la supervision ; le connecteur est sain (tous les syncs ok=1, 0.1 s). Purge par le mécanisme normal : sync isolé rejoué → miss_count=2 → active=0 (found=0, removed=2, statut ok). Test final : fetch réel = 61 bruts, 0 retenus (QC) = comportement correct, les offres QC réapparaîtront d'elles-mêmes quand New Era republiera à Saint-Jean-sur-Richelieu. Même famille de vides légitimes que rollstack (8636932), vasco (d6009d3), tefron (e62dc72), altom_transport (2fa16cd), onrunning (1155f22). Note de contexte ajoutée au connecteur, aucun changement de logique. pm2 restart job-ka-sync OK, site 200.
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +13 −1
  5. Mon, Sep 7, 2026 3

    1. feat(fiche): refonte premium mobile-first de la fiche d'offre (2026-09-07)
      …
      Même socle que les fiches Lou-Ka v3 / Immo-Ka v3 (frontend/src/fiche/,
      préfixe jk-, tokens --jk-*, fond papier, cartes blanches bord 1 px, cyan
      réservé aux CTA/salaire ; header encre conservé en version compacte) :
      héro (logo + employeur · lieu, salaire en exergue + équivalent annuel,
      capsules marché / nouveau / offre directe, titre, actions favoris / partage /
      Postuler) ; « En bref » déterministe (salaire vs médiane de la catégorie,
      source directe ou portail, exigences, mode/type/niveau, fraîcheur et date
      limite, volume de l'employeur, avantages) ; navigation sticky ; « Salaire et
      marché » (KPI, jauge P25–P75 du point médian, historique du salaire affiché,
      méthodologie — jamais d'estimation) ; « Le poste » (grille icône/valeur,
      rangées, avantages, description tronquée, champs bruts en accordéon) ; « Où
      travailler » (carte OSM) ; Dossier de l'offre ; Sources et méthodologie. CTA
      sticky après le héro, aside desktop sticky, « Demander à Ka » via le widget
      KA Agent. Header compact sur /emploi/ (favoris + partage via fiche/current.ts,
      badge masqué). Rangées d'offres de la liste : surface blanche, bord 1 px,
      ombre légère au survol. Icons.tsx (pictos partagés) ajouté. Aucun order CSS ;
      pas de scrollIntoView à l'ouverture. Scripts QA : preview.mjs,
      check-order.mjs, shots.mjs, interactions.mjs (Playwright via lien vers
      vrai-prix/node_modules).
      
      Validé sur M3U96a : tsc + vite build, check-order OK, interactions OK,
      captures 6 largeurs ; dist basculé, aucun changement API.
      Simon-Pierre Boucher · 18 files +2,150 −193
  6. Sun, Sep 6, 2026 1

  7. Sat, Sep 5, 2026 1

  8. Fri, Sep 4, 2026 8

    1. Simon-Pierre Boucher · 1 file +19 −2
  9. Mon, Aug 31, 2026 3

  10. Sun, Aug 30, 2026 9

    1. Simon-Pierre Boucher · 1 file +18 −4
    2. Simon-Pierre Boucher · 1 file +115 −4
    3. Simon-Pierre Boucher · 1 file +115 −4
    4. Simon-Pierre Boucher · 1 file +114 −3
    5. Simon-Pierre Boucher · 1 file +116 −4
    6. Simon-Pierre Boucher · 1 file +115 −3
    7. [ka6] fix connecteur msi_gestion: repli « détail seulement » pendant les maintenances nocturnes d'ADP WFN — cause de l'échec du 2026-08-29 22:51 : fenêtre de maintenance planifiée d'ADP Workforce Now du samedi soir (~22:00→02:00 ET, même événement systémique que cultures_genv a57f452, groupe_nordik a17b979, h2o_innovation 644a2d4 et mitsubishi_hc_capital 9d9e3f4), pendant laquelle workforcenow.adp.com redirige vers sorry.adp.com et la liste job-requisitions renvoie du HTML (« Expecting value: line 1 column 1 »). Un seul passage raté + cycle ~3 h suffit à dépasser le seuil stale de 4 h. Fix (pattern cultures_genv/groupe_nordik/h2o_innovation/mitsubishi_hc_capital/ciena) : si la liste échoue en 5xx/non-JSON, revalidation une à une des offres actives connues via l'API détail job-requisitions/<itemID> (réquisition complète live — aucune donnée inventée) ; 404 = offre retirée ; si RIEN n'est validable (maintenance totale) l'erreur d'origine est propagée (sync en échec, inventaire préservé). Le chemin liste normal reprend seul dès la fin de la maintenance. Tests réels (2026-08-30 00:50-00:51 ET, juste avant le retour de la fenêtre de maintenance) : run.py sync msi_gestion (chemin normal) → ok, found=5 (= médiane 5.0), 5 actives en base ; repli avec liste 502 simulée → 5 offres revalidées live (descriptions complètes). À 00:52 ET la maintenance totale a repris (liste ET détail 302 → sorry.adp.com) : le repli propage alors l'erreur comme conçu. pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      Simon-Pierre Boucher · 1 file +113 −4
Menu

Theme