[ka2] fix connecteur logiluxx: échec honnête au lieu d'un « 0 trouvé ok » qui menaçait les 9 annonces. Le sync du 2026-09-07 12:10 a rapporté found=0 ok=1 (dérive vs médiane 9, retraits suspendus par le garde-fou) : le fetch() avalait toute exception par immeuble (`except Exception: continue` sur les 3 mini-sites) — une erreur réseau transitoire devenait un succès à 0 résultat, invisible du disjoncteur d'ingest.py. Reproduit en live : les 3 pages (sthubert, sthubert2, boucherville) répondent 200 (~42 Ko) et les 9 typologies se parsent — la source est saine, seul le silence sur erreur était fautif. On laisse désormais l'exception remonter (ingest journalise ok=0) et on lève RuntimeError si un immeuble ne parse aucune typologie (garde contre un rendu partiel 200, même pattern que les fix gwlra, cinquante_ans_plus et le_fjord). Testé : run.py sync logiluxx → found=9 ok (St-Hubert I/II 3½ 1 941 $, 4½ 2 154 $, 5½ 2 671 $, Boucherville 3 typologies), pm2 restart lou-ka-sync, site :8095 → 200.
1 changed file +9 −5
modified
louka/connectors/logiluxx.py
+9 −5
@@ -65,13 +65,17 @@ class LogiluxxConnector(BaseConnector): | ||
| 65 | 65 | return html, re.sub(r"\s+", " ", soup.get_text(" ", strip=True)) |
| 66 | 66 | |
| 67 | 67 | def fetch(self) -> list[Listing]: |
| 68 | + # échec HONNÊTE : une erreur réseau/parse sur un immeuble doit lever | |
| 69 | + # (ok=0 dans sync_log) et non être avalée — un « 0 trouvé ok » déclenche | |
| 70 | + # la dérive et menace les 9 annonces (vu le 2026-09-07 12:10) | |
| 68 | 71 | listings: list[Listing] = [] |
| 69 | 72 | for bid, base, name, sector, city in BUILDINGS: |
| 70 | − try: | |
| 71 | − listings.extend(self._fetch_building(bid, base, name, | |
| 72 | − sector, city)) | |
| 73 | − except Exception: | |
| 74 | − continue | |
| 73 | + found = self._fetch_building(bid, base, name, sector, city) | |
| 74 | + if not found: | |
| 75 | + raise RuntimeError( | |
| 76 | + f"logiluxx : aucune typologie parsée sur {base} " | |
| 77 | + "(rendu partiel ou site restructuré)") | |
| 78 | + listings.extend(found) | |
| 75 | 79 | return listings |
| 76 | 80 | |
| 77 | 81 | def _fetch_building(self, bid: str, base: str, name: str, |
| 78 | 82 | |