[ka2] fix connecteur novelo: échec honnête si aucune section « Appartement — … » parsée — un « 0 trouvé ok » menaçait les 4 annonces. Contexte du broken (3 syncs) : 2 échecs DNS à 14:15/15:22 le 2026-09-10 étaient SYSTÉMIQUES (372 connecteurs touchés en même temps, panne réseau/DNS du nœud, rien à corriger côté connecteur), mais le 3e sync (19:19) a rapporté found=0 ok=1 missed=4 sur une page 200 — un rendu partiel avalé en silence, invisible du disjoncteur, qui aurait dépublié les 4 annonces. Or la page /louer-un-appartement/ saine affiche TOUJOURS les 4 sections par type (Loft, 3½, 4½, 5½ — granularité par type, prix « à partir de », jamais de vrai zéro) : on lève désormais RuntimeError si 0 section parsée (ok=0 dans sync_log), même pattern que le_fjord 472920e, logiluxx 1814e48 et thrace e5379b0. Distinct du cas lienard (rollback d1571fc) : ici la source est SAINE et le volume est restauré. Testé : reproduit live 4/4 via venv (loft 901 $, 3½ 1 090 $, 4½ 1 160 $, 5½ 1 415 $), pytest fixtures 2 passed, run.py sync novelo → found=4 ok (médiane 2, doc 4 actives), pm2 restart lou-ka-sync, site :8095 → 200.
1 changed file +8 −0
modified
louka/connectors/novelo.py
+8 −0
@@ -53,6 +53,14 @@ class NoveloConnector(BaseConnector): | ||
| 53 | 53 | self._parse_section(h, m.group(1).strip(), listings) |
| 54 | 54 | except Exception: |
| 55 | 55 | continue |
| 56 | + # échec HONNÊTE : une page saine affiche TOUJOURS les 4 sections par | |
| 57 | + # type (granularité par type, jamais de vrai zéro) — un rendu partiel | |
| 58 | + # servi 200 doit lever (ok=0) et non dépublier les annonces via un | |
| 59 | + # « 0 trouvé ok » (vu le 2026-09-10 19:19, missed=4) | |
| 60 | + if not listings: | |
| 61 | + raise RuntimeError( | |
| 62 | + "appartementsnovelo.com : aucune section « Appartement — … » " | |
| 63 | + "parsée (rendu partiel ou page restructurée)") | |
| 56 | 64 | return list(listings.values()) |
| 57 | 65 | |
| 58 | 66 | # -- section « Appartement — <type> » --------------------------------------------- |
| 59 | 67 | |