SPB Git forge

spb/job-ka

Public
229commits 1branches 0releases
38.1 MBsize
maindefault branch
4 h agolast push
HTML 82.1% Python 14.6% TypeScript 1.9% CSS 1% JavaScript 0.5%

[ka6] fix connecteur derumarketcatering: employeur situé à Kirkland WASHINGTON (É.-U., zip 98033), pas Kirkland QC — faux positif du filtre Québec sur ville homonyme. is_quebec_location rejette désormais un code de province/État explicitement hors Québec en fin de libellé (« Kirkland, WA », « London, ON »); codes ambigus en français exclus (CA/OR/LA/DE/IN/ME/MT — Val-d'Or, La Prairie…). L'offre américaine résiduelle a été retirée par le pipeline (miss_count=2 → active=0). Volume 0 = comportement correct: la source n'a aucune offre québécoise.

Simon-Pierre Boucher committed 29 days ago (Aug 27, 2026) parent 980f440

1 changed file +16 −1

modified jobka/normalize.py +16 −1
@@ -6,7 +6,7 @@
6 6 # Rôle : Normalisation commune des offres (salaires, dates, mode/type
7 7 # d'emploi, lieu, catégorie, exigences, séniorité) — jamais de
8 8 # valeur inventée
9 −# Créé : 2026-08-17 Modifié : 2026-08-25
9 +# Créé : 2026-08-17 Modifié : 2026-08-26
10 10 # =============================================================================
11 11 """Couche de normalisation commune appelée par JobPosting.finalize().
12 12
@@ -517,6 +517,19 @@ def parse_location(raw: str) -> dict:
517 517 return out
518 518
519 519
520 +# Code de province canadienne ou d'État américain explicitement HORS Québec
521 +# (« Kirkland, WA », « London, ON ») : jamais une offre québécoise, même si la
522 +# ville est homonyme d'une ville du Québec (Kirkland WA ≠ Kirkland QC — bug
523 +# derumarketcatering 2026-08-26 : restaurant de l'État de Washington affiché
524 +# comme Montréal). Codes ambigus avec le français exclus volontairement :
525 +# CA (Canada/Californie), OR (Val-d'Or), LA (La Prairie), DE, IN, ME, MT.
526 +_NON_QC_REGION_RE = re.compile(
527 + r"[,\s](on|bc|ab|sk|mb|ns|nb|pe|pei|nl|yt|nt|nu|"
528 + r"wa|ny|tx|fl|il|ma|md|mi|mn|mo|ms|nc|nd|ne|nh|nj|nm|nv|oh|ok|"
529 + r"pa|ri|sc|sd|tn|ut|va|vt|wi|wv|wy|ak|al|ar|az|co|ct|dc|ga|hi|"
530 + r"ia|id|ks|ky)\.?(?=$|[,\s])")
531 +
532 +
520 533 def is_quebec_location(raw: str) -> bool:
521 534 """Vrai si le libellé pointe vers le Québec (filtre des ATS pancanadiens)."""
522 535 key = _key(clean_text(raw))
@@ -529,6 +542,8 @@ def is_quebec_location(raw: str) -> bool:
529 542 m = _POSTAL_RE.search(raw)
530 543 if m and m.group(1)[0].upper() in "GHJ":
531 544 return True
545 + if _NON_QC_REGION_RE.search(key): # « Kirkland, WA » : homonyme hors QC
546 + return False
532 547 return any(re.search(rf"(?<![a-z]){re.escape(ck)}(?![a-z])", key)
533 548 for ck in _QC_CITIES)
534 549
535 550