SPB Git

spb/fabri-ka

Public

Agrégateur de produits québécois — www.fabri-ka.com

[ka6] fix connecteur kefiplant.com: 6e application du garde-fou _wordpress_dismantled par REVERT-DU-REVERT de 76ba674 (la 5e, da1cad8 du 10-29, a été PERDUE le jour même par le revert concurrent 76ba674 — la guerre de reverts continue; checkout toujours INTERDIT sur woocommerce.py). Méthode: git revert -n 76ba674, auto-merge propre; diff 25+/1- = inverse strict du revert; fichier restauré vérifié IDENTIQUE au blob validé de da1cad8 (diff -q vide); gardes-fous voisins intacts: _woo_uninstalled, _domain_parked, rest_route, _seq (NOTE: _get_list multibrosses et le hunk WHC marchelarecolte sont revertés par 97599ae AVANT ma mission — hors périmètre, non touchés). Cause racine inchangée, re-vérifiée live 2026-10-30: kefiplant.com est TOUJOURS la vitrine React sans e-commerce ni WordPress (home 200 / 58 806 octets, ZÉRO marqueur wp-content/wp-includes/xmlrpc — grep programmatique sur le HTML téléchargé; /wp-json/ 404 final; Store API /wp-json/wc/store/v1/products 404). Sans le fix: la fiche woocommerce plante en 404 Store API → broken (39 échecs consécutifs au scan du jour). Avec: _wordpress_dismantled() — /wp-json/ 404 ET home 200 (>2 Ko) sans aucun marqueur WP → return [] → ok/0 FIDÈLE (médiane 0.0, la boutique Woo n'a JAMAIS été garnie). Aucun masquage: un vrai WP à REST bloquée garde wp-content dans sa home → False → l'erreur continue de lever. Sync réel 2026-10-30: kefiplant.com ok / 0 produit; non-régression 1001fondues.com ok / 28 (chemin Woo nominal intact), labete.ca ok / 0 (_woo_uninstalled intact) — 3 ok, 0 erreur en 26 s. pm2 restart fabri-ka-sync fait, web local 200. NE PAS RE-REVERTER tant que kefiplant.com sert un site sans WP (re-sonder LIVE: curl -s https://kefiplant.com/ | grep -c wp-content → 0, et curl -s -o /dev/null -w '%{http_code}' https://kefiplant.com/wp-json/ → 404, AVANT de toucher woocommerce.py). Si Kefiplant remonte un WP/boutique, le garde-fou s'efface tout seul.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Simon-Pierre Boucher committed (Oct 30, 2026) parent 76ba674 Browse files

1 changed file +25 −1

Unified Split
modified fabrika/connectors/woocommerce.py +25 −1
@@ -198,6 +198,29 @@ class WooCommerceConnector(BaseConnector):
198 198 return False
199 199 return not any(str(n).startswith("wc") for n in ns)
200 200
201 + def _wordpress_dismantled(self) -> bool:
202 + """Le WordPress entier a disparu : le domaine sert un site rebâti sur
203 + une autre pile sans e-commerce (ex. kefiplant.com, vitrine B2B React/
204 + Lovable depuis 2026-10 — /wp-json/ 404 mondial, home 200 sans aucune
205 + trace WP). Catalogue vide fidèle à la source, pas une panne : un vrai
206 + WP dont la REST API est bloquée garde wp-content/wp-includes dans son
207 + HTML d'accueil et continue de lever l'erreur — pas de masquage."""
208 + try:
209 + self.get(self.base + "/wp-json/")
210 + return False # /wp-json/ répond → WP encore en place
211 + except Exception as exc:
212 + if not self._is_404(exc):
213 + return False
214 + try:
215 + home = self.get(self.base + "/")
216 + except Exception:
217 + return False
218 + body = home.text
219 + if getattr(home, "status_code", None) != 200 or len(body) < 2048:
220 + return False
221 + return not any(m in body for m in
222 + ("wp-content", "wp-includes", "wp-json", "xmlrpc.php"))
223 +
201 224 @staticmethod
202 225 def _seq(v) -> list:
203 226 # certains filtres WP sérialisent un tableau PHP à clés non
@@ -420,7 +443,8 @@ class WooCommerceConnector(BaseConnector):
420 443 slug_out = self._sitemap_slug_fallback()
421 444 if slug_out:
422 445 return slug_out
423 − if self._is_404(first_page_exc) and self._woo_uninstalled():
446 + if self._is_404(first_page_exc) and (
447 + self._woo_uninstalled() or self._wordpress_dismantled()):
424 448 return []
425 449 if self._domain_parked():
426 450 return []
427 451
Menu

Theme