SPB Git

spb/job-ka

Public
page 1
  1. 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
  2. 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
  3. 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
  4. Sun, Sep 6, 2026 1

  5. Sat, Sep 5, 2026 1

  6. Fri, Sep 4, 2026 8

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

  8. Sun, Aug 30, 2026 12

    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
    8. [ka6] fix connecteur cultures_genv: repli « détail seulement » pendant les maintenances nocturnes d'ADP WFN — cause de l'échec du 2026-08-29 22:01 : deuxième fenêtre de maintenance planifiée d'ADP Workforce Now (samedi soir ~22:00→02:00 ET, après celle de vendredi déjà documentée), pendant laquelle tout workforcenow.adp.com redirige vers sorry.adp.com et la liste job-requisitions renvoie du HTML (« Expecting value: line 1 column 1 »). TOUS les connecteurs ADP passés entre 22:00 et 23:27 ont échoué à l'identique (cookit, groupe_nordik, h2o_innovation, msi_gestion, mitsubishi_hc_capital, nemaska_lithium, richelieu, etc.) = systémique côté ADP, aucun tenant en cause. Comme le cycle met ~3 h entre deux passages, un seul passage raté pendant la fenêtre dépasse le seuil stale de 4 h. Fix (pattern ciena ae44d7c) : 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 : titre, date, lieux, description — 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 : repli avec liste 502 simulée → 7 offres revalidées live ; run.py sync cultures_genv (chemin normal) → ok, found=7 (= médiane 7.0), 7 actives en base. pm2 restart job-ka-sync OK, site local 200, www.job-ka.com 200.
      Simon-Pierre Boucher · 1 file +112 −3
  9. Sat, Aug 29, 2026 4

    1. Revert "[ka6] snapshot pré-mission triple_boris"
      …
      This reverts commit ba40d49a102e0f41341e0f15cd66a8d749aefd53.
      Simon-Pierre Boucher · 1 file +1 −9
Menu

Theme