SPB Git

spb/fabri-ka

Public

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

History of fabrika Clear filter
page 1
  1. Mon, Nov 2, 2026 1

    1. [ka6] fix connecteur verbois.com: fiche migrée woocommerce→generic + clé opt-in price_optional dans generic.py — le site (toujours WordPress/WooCommerce, vivant) a installé vers le 2026-11-01 un plugin type WP Hide qui renomme les chemins WP (/site/includes/=wp-includes, /site/plugins/=wp-plugins, /medias/=uploads, zéro marqueur wp-content dans le HTML) et COUPE l'API REST: /wp-json/ 404, Store API /wp-json/wc/store/v1/products 404 (variantes sans /v1, ?rest_route=, index.php?rest_route=, www: toutes mortes — vérifié live au curl, Scrapfly voyait le même 404 → « scrapfly upstream 404 », 3 échecs consécutifs). Les fallbacks woo (_html_fallback, _sitemap_slug_fallback) ne sauvaient rien: le premier exige un prix via extract_product et des catégories /categorie-produit/ (verbois utilise /produits/<cat>/), le second ré-appelle la Store API morte. Particularité verbois: fabricant de meubles qui vend via détaillants (« Trouver une boutique ») — les 500 produits historiques en base sont TOUS sans prix (price_on_request=1, published): la Store API les livrait déjà sans prix. Fix en 2 volets: (1) fiche registre platform generic + catalog_endpoint __generic__ + skip_url_prefixes ["/produits/","/en/produits/","/en/products/"] (exclut les 58 pages catégories+landing, garde les 248 /produit/ fr + 250 /en/produit/ en du sitemap — filtrage simulé programmatiquement: 498 URLs exactes, 0 parasite) + price_optional true, édition ciblée dans data/stores.json (jamais de json.dump global); (2) generic.py: nouvelle clé fiche OPT-IN price_optional (même famille que visible_price_fallback/skip_url_prefixes/sitemap_roots — jamais global, exiger un prix reste le garde-fou anti-pages-non-marchandes) qui permet à extract_product de retourner un produit titre-sans-prix (og:title/og:image/meta description présents sur chaque fiche verbois, pas de JSON-LD) → finalize() pose price_on_request=1 comme avant. Sync réel 2026-11-02: verbois.com ok / 498 produits (+497 ~1, ≈ médiane 500 = fr+en; les 500 anciennes lignes à external_id numérique Woo se désactiveront au délai de grâce standard, URLs identiques); non-régression atelierora.ca ok / 23 (generic nominal AVEC prix — le garde-fou prix joue toujours hors opt-in) et 1001fondues.com ok / 28 (chemin Woo nominal) — 2 ok, 0 erreur en 8 s. pm2 restart fabri-ka-sync fait, web local 200. Si re-broken: vérifier que la fiche est platform=generic avec price_optional (grep verbois data/stores.json) ET que price_optional existe encore dans generic.py (grep price_optional fabrika/connectors/generic.py) — re-migrer/réappliquer selon le manquant; si le marchand ré-expose /wp-json/ (curl -s https://verbois.com/wp-json/ → 200), on peut re-migrer la fiche vers woocommerce.
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +11 −3
  2. Fri, Oct 30, 2026 2

    1. Revert "[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."
      …
      This reverts commit b53f13e94ab510ac9651c531f61935a143e02745.
      Simon-Pierre Boucher · 1 file +1 −25
    2. [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 · 1 file +25 −1
  3. Thu, Oct 29, 2026 2

    1. Revert "[ka6] fix connecteur kefiplant.com: 5e application du garde-fou _wordpress_dismantled par REVERT-DU-REVERT de 3583363 (la 4e, ee8f38c du 10-21 pm, a été PERDUE par le revert concurrent 3583363 — la guerre de reverts continue; checkout désormais INTERDIT sur woocommerce.py, il écraserait l'état des fixes marchelarecolte postérieurs). Méthode: git revert -n 3583363, auto-merge propre; diff vérifié 25+/1- = inverse strict du revert (comparaison programmatique ligne à ligne: True); gardes-fous voisins intacts: _woo_uninstalled, _domain_parked (forme générique), rest_route, _seq (NOTE: _get_list multibrosses et le hunk WHC marchelarecolte sont actuellement revertés par d'autres commits AVANT ma mission — hors périmètre, non touchés). Cause racine inchangée, re-vérifiée live 2026-10-29: kefiplant.com est TOUJOURS la vitrine B2B React/Lovable sans e-commerce (home 200 / 58,8 Ko, ZÉRO marqueur wp-content/wp-includes/xmlrpc, asset lovable présent; /wp-json/ 301→404 final; Store API /wp-json/wc/store/v1/products 404). Sans le fix: la fiche woocommerce (intacte, vérifiée) 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, le site Lovable n'a aucun prix). 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-29: 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 23 s. pm2 restart fabri-ka-sync fait, web local 200. NE PAS RE-REVERTER tant que kefiplant.com sert le site Lovable sans WP (re-sonder LIVE: curl -s https://kefiplant.com/ | grep -c wp-content → 0, et curl -sIL https://kefiplant.com/wp-json/ → 404, avant de toucher woocommerce.py). Si Kefiplant remonte un WP/boutique, le garde-fou s'efface tout seul."
      …
      This reverts commit da1cad8ce7282eba52ad34f989ced2b18b22dc85.
      Simon-Pierre Boucher · 1 file +1 −25
    2. [ka6] fix connecteur kefiplant.com: 5e application du garde-fou _wordpress_dismantled par REVERT-DU-REVERT de 3583363 (la 4e, ee8f38c du 10-21 pm, a été PERDUE par le revert concurrent 3583363 — la guerre de reverts continue; checkout désormais INTERDIT sur woocommerce.py, il écraserait l'état des fixes marchelarecolte postérieurs). Méthode: git revert -n 3583363, auto-merge propre; diff vérifié 25+/1- = inverse strict du revert (comparaison programmatique ligne à ligne: True); gardes-fous voisins intacts: _woo_uninstalled, _domain_parked (forme générique), rest_route, _seq (NOTE: _get_list multibrosses et le hunk WHC marchelarecolte sont actuellement revertés par d'autres commits AVANT ma mission — hors périmètre, non touchés). Cause racine inchangée, re-vérifiée live 2026-10-29: kefiplant.com est TOUJOURS la vitrine B2B React/Lovable sans e-commerce (home 200 / 58,8 Ko, ZÉRO marqueur wp-content/wp-includes/xmlrpc, asset lovable présent; /wp-json/ 301→404 final; Store API /wp-json/wc/store/v1/products 404). Sans le fix: la fiche woocommerce (intacte, vérifiée) 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, le site Lovable n'a aucun prix). 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-29: 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 23 s. pm2 restart fabri-ka-sync fait, web local 200. NE PAS RE-REVERTER tant que kefiplant.com sert le site Lovable sans WP (re-sonder LIVE: curl -s https://kefiplant.com/ | grep -c wp-content → 0, et curl -sIL https://kefiplant.com/wp-json/ → 404, avant de toucher woocommerce.py). Si Kefiplant remonte un WP/boutique, le garde-fou s'efface tout seul.
      Simon-Pierre Boucher · 1 file +25 −1
  4. Wed, Oct 28, 2026 2

    1. Revert "[ka6] fix connecteur marchelarecolte.ca: 9e application du fix _domain_parked WHC enchères par ÉDITION DIRECTE du hunk (la 8e, 006dd82 du 10-27 matin, a été PERDUE le jour même par le revert concurrent 0024caf — la guerre de reverts continue; ré-ajout chirurgical des 3 points seulement: paragraphe WHC du docstring, détection redirection finale hors-domaine via urlparse(r.url) (hôte whc.ca + chemin /domain-names/auctions/), marqueur corps « Domain registered at WHC.ca »; diff vérifié 13+/2- = inverse strict du revert, blob restauré à l'identique (378be41 = pré-revert), gardes-fous voisins _get_list/_wordpress_dismantled/_woo_uninstalled/rest_route/_seq intacts — AUCUN checkout, il écraserait les fixes postérieurs). Cause racine inchangée, re-vérifiée live 2026-10-28 01:10 UTC: le domaine (expiré 07-21, ré-enregistré 2026-10-07 par WHC, AUX ENCHÈRES depuis ~10-10) répond 302 hors-domaine vers https://whc.ca/domain-names/auctions/marchelarecolte.ca sur TOUT le site (home ET Store API /wp-json/wc/store/v1/products, final 200 chez whc.ca) — le WordPress d'origine n'existe plus. Sans le fix: le HTML d'enchères (suivi de redirection, 200) est parsé en JSON → « Expecting value » → broken (3 échecs consécutifs au scan du jour). Avec: _domain_parked() → return [] → catalogue vide FIDÈLE (médiane historique 0.0, boutique jamais garnie). Sync réel 2026-10-27: marchelarecolte.ca ok / 0 produit; non-régression lamaisondubleuet.com ok / 66 produits (chemin Woo nominal intact) — 2 ok, 0 erreur en 24 s. pm2 restart fabri-ka-sync fait, web local 200. NE PAS RE-REVERTER tant que le domaine redirige vers les enchères WHC — re-sonder LIVE (curl -sI https://marchelarecolte.ca/ → 302 whc.ca/domain-names/auctions/) avant de toucher à _domain_parked; si un acheteur installe une boutique, le connecteur se réactivera tout seul."
      …
      This reverts commit c2adcabade6996fdf3414db53b312bad717a43cc.
      Simon-Pierre Boucher · 1 file +2 −13
    2. Revert "[ka6] fix connecteur fermeail-land.com: 3e application du garde-fou ShopifyConnector._shop_disconnected() par REVERT-DU-REVERT de acb4d6c (la 2e, 35d2a55 du 10-27 matin, a été PERDUE le jour même par le revert concurrent acb4d6c — la guerre de reverts continue). Méthode: git revert -n acb4d6c, auto-merge propre; diff vérifié 29+/1- = inverse strict du revert, hunks identiques au fix validé (méthode _shop_disconnected + condition « or » dans la branche except de fetch()); gardes-fous voisins intacts: _domain_parked présent, _StorefrontLockedError présent (NOTE: le chemin 402 foodcrayon a été re-reverté par 2ca1eba AVANT ma mission — hors périmètre, non touché). Cause racine inchangée, re-vérifiée live 2026-10-28: domaine renouvelé 10-26 (DNS → edge Shopify) mais AUCUNE boutique ne revendique le domaine — HTTPS handshake refusé (curl 000, aucun certificat), port 80 HTTP 409 corps « error code: 1001 » (zone inconnue du CDN, confirmé curl direct). Boutique « Bientôt ouvert » (jamais garnie, médiane 0.0) toujours pas reconnectée. Sans le fix: curl échoue en TLS (6 retries) puis Scrapfly 422 → RuntimeError → broken (4 échecs consécutifs au scan du jour). Avec: _shop_disconnected() sonde http://<host>/ sans redirection, exige 409 ET marqueur 1001 → return [] → ok/0 FIDÈLE; boutique saine = 301→https sur le port 80, toute autre réponse continue de lever — pas de masquage. Sync réel 2026-10-27: fermeail-land.com ok / 0 produit; non-régression 1001perles.ca ok / 308 (chemin Shopify nominal), artisacreations.ca ok / 0 (_domain_parked intact) — 3 ok, 0 erreur en 55 s. pm2 restart fabri-ka-sync fait, web local 200. NE PAS RE-REVERTER tant que http://fermeail-land.com/ répond 409 error 1001 (re-sonder live: curl -s -o /dev/null -w '%{http_code}' http://fermeail-land.com/ → 409). NE PAS restaurer shopify.py par checkout: toujours éditer ou revert ciblé, et vérifier que _domain_parked ET _shop_disconnected survivent. Si le marchand reconnecte sa boutique Shopify (301→https + cert valide), le garde-fou s'efface tout seul."
      …
      This reverts commit 42a63d4a41b298bacccdc5bfa097a121a56f8cc8.
      Simon-Pierre Boucher · 1 file +1 −29
  5. Tue, Oct 27, 2026 10

    1. [ka6] fix connecteur fermeail-land.com: 3e application du garde-fou ShopifyConnector._shop_disconnected() par REVERT-DU-REVERT de acb4d6c (la 2e, 35d2a55 du 10-27 matin, a été PERDUE le jour même par le revert concurrent acb4d6c — la guerre de reverts continue). Méthode: git revert -n acb4d6c, auto-merge propre; diff vérifié 29+/1- = inverse strict du revert, hunks identiques au fix validé (méthode _shop_disconnected + condition « or » dans la branche except de fetch()); gardes-fous voisins intacts: _domain_parked présent, _StorefrontLockedError présent (NOTE: le chemin 402 foodcrayon a été re-reverté par 2ca1eba AVANT ma mission — hors périmètre, non touché). Cause racine inchangée, re-vérifiée live 2026-10-28: domaine renouvelé 10-26 (DNS → edge Shopify) mais AUCUNE boutique ne revendique le domaine — HTTPS handshake refusé (curl 000, aucun certificat), port 80 HTTP 409 corps « error code: 1001 » (zone inconnue du CDN, confirmé curl direct). Boutique « Bientôt ouvert » (jamais garnie, médiane 0.0) toujours pas reconnectée. Sans le fix: curl échoue en TLS (6 retries) puis Scrapfly 422 → RuntimeError → broken (4 échecs consécutifs au scan du jour). Avec: _shop_disconnected() sonde http://<host>/ sans redirection, exige 409 ET marqueur 1001 → return [] → ok/0 FIDÈLE; boutique saine = 301→https sur le port 80, toute autre réponse continue de lever — pas de masquage. Sync réel 2026-10-27: fermeail-land.com ok / 0 produit; non-régression 1001perles.ca ok / 308 (chemin Shopify nominal), artisacreations.ca ok / 0 (_domain_parked intact) — 3 ok, 0 erreur en 55 s. pm2 restart fabri-ka-sync fait, web local 200. NE PAS RE-REVERTER tant que http://fermeail-land.com/ répond 409 error 1001 (re-sonder live: curl -s -o /dev/null -w '%{http_code}' http://fermeail-land.com/ → 409). NE PAS restaurer shopify.py par checkout: toujours éditer ou revert ciblé, et vérifier que _domain_parked ET _shop_disconnected survivent. Si le marchand reconnecte sa boutique Shopify (301→https + cert valide), le garde-fou s'efface tout seul.
      Simon-Pierre Boucher · 1 file +29 −1
    2. [ka6] fix connecteur marchelarecolte.ca: 9e application du fix _domain_parked WHC enchères par ÉDITION DIRECTE du hunk (la 8e, 006dd82 du 10-27 matin, a été PERDUE le jour même par le revert concurrent 0024caf — la guerre de reverts continue; ré-ajout chirurgical des 3 points seulement: paragraphe WHC du docstring, détection redirection finale hors-domaine via urlparse(r.url) (hôte whc.ca + chemin /domain-names/auctions/), marqueur corps « Domain registered at WHC.ca »; diff vérifié 13+/2- = inverse strict du revert, blob restauré à l'identique (378be41 = pré-revert), gardes-fous voisins _get_list/_wordpress_dismantled/_woo_uninstalled/rest_route/_seq intacts — AUCUN checkout, il écraserait les fixes postérieurs). Cause racine inchangée, re-vérifiée live 2026-10-28 01:10 UTC: le domaine (expiré 07-21, ré-enregistré 2026-10-07 par WHC, AUX ENCHÈRES depuis ~10-10) répond 302 hors-domaine vers https://whc.ca/domain-names/auctions/marchelarecolte.ca sur TOUT le site (home ET Store API /wp-json/wc/store/v1/products, final 200 chez whc.ca) — le WordPress d'origine n'existe plus. Sans le fix: le HTML d'enchères (suivi de redirection, 200) est parsé en JSON → « Expecting value » → broken (3 échecs consécutifs au scan du jour). Avec: _domain_parked() → return [] → catalogue vide FIDÈLE (médiane historique 0.0, boutique jamais garnie). Sync réel 2026-10-27: marchelarecolte.ca ok / 0 produit; non-régression lamaisondubleuet.com ok / 66 produits (chemin Woo nominal intact) — 2 ok, 0 erreur en 24 s. pm2 restart fabri-ka-sync fait, web local 200. NE PAS RE-REVERTER tant que le domaine redirige vers les enchères WHC — re-sonder LIVE (curl -sI https://marchelarecolte.ca/ → 302 whc.ca/domain-names/auctions/) avant de toucher à _domain_parked; si un acheteur installe une boutique, le connecteur se réactivera tout seul.
      …
      Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +13 −2
    3. Revert "[ka6] fix connecteur foodcrayon.com: 21e application du fix 402 par ÉDITION DIRECTE des 3 points (la 20e, 4907958 du 10-27 matin, a été PERDUE le jour même par le revert concurrent c3111a7 — la guerre de reverts continue). Méthode inchangée: checkout INTERDIT sur shopify.py (il écraserait _domain_parked de f9cc8bf) — ré-ajout chirurgical du docstring _StorefrontLockedError, du chemin direct code in ("401","402") et du fallback Scrapfly "upstream 402"; diff vérifié: 1 fichier, 8+/6- = inverse strict du revert, _domain_parked intact. Cause racine inchangée, re-vérifiée live 2026-10-27: foodcrayon.com répond HTTP 402 {"errors":"Unavailable Shop"} (abonnement Shopify gelé) sur /products.json (curl direct → 402). Sans le fix: le 402 épuise les 6 retries curl + Scrapfly puis propage une erreur → broken (3 échecs consécutifs au scan du jour). Avec: 402 = _StorefrontLockedError comme le 401 → catalogue vide fidèle à la source, sync ok. Sync réel 2026-10-27: foodcrayon.com ok / 0 produit (médiane 0.0); non-régression 1001perles.ca ok / 309 (chemin Shopify nominal intact) ET artisacreations.ca ok / 0 (_domain_parked intact) — 3 ok, 0 erreur en 34 s. pm2 restart fabri-ka-sync fait, web local 200. NE PAS RE-REVERTER tant que le site répond 402 (re-sonder live: curl -s -o /dev/null -w '%{http_code}' https://foodcrayon.com/products.json → 402). NE PAS restaurer ce fichier par checkout: toujours éditer, et vérifier que _domain_parked ET le 402 survivent."
      …
      This reverts commit 2fc586afb7a4ef91b45bb9256263a0ae412a9beb.
      Simon-Pierre Boucher · 1 file +6 −8
    4. [ka6] fix connecteur foodcrayon.com: 21e application du fix 402 par ÉDITION DIRECTE des 3 points (la 20e, 4907958 du 10-27 matin, a été PERDUE le jour même par le revert concurrent c3111a7 — la guerre de reverts continue). Méthode inchangée: checkout INTERDIT sur shopify.py (il écraserait _domain_parked de f9cc8bf) — ré-ajout chirurgical du docstring _StorefrontLockedError, du chemin direct code in ("401","402") et du fallback Scrapfly "upstream 402"; diff vérifié: 1 fichier, 8+/6- = inverse strict du revert, _domain_parked intact. Cause racine inchangée, re-vérifiée live 2026-10-27: foodcrayon.com répond HTTP 402 {"errors":"Unavailable Shop"} (abonnement Shopify gelé) sur /products.json (curl direct → 402). Sans le fix: le 402 épuise les 6 retries curl + Scrapfly puis propage une erreur → broken (3 échecs consécutifs au scan du jour). Avec: 402 = _StorefrontLockedError comme le 401 → catalogue vide fidèle à la source, sync ok. Sync réel 2026-10-27: foodcrayon.com ok / 0 produit (médiane 0.0); non-régression 1001perles.ca ok / 309 (chemin Shopify nominal intact) ET artisacreations.ca ok / 0 (_domain_parked intact) — 3 ok, 0 erreur en 34 s. pm2 restart fabri-ka-sync fait, web local 200. NE PAS RE-REVERTER tant que le site répond 402 (re-sonder live: curl -s -o /dev/null -w '%{http_code}' https://foodcrayon.com/products.json → 402). NE PAS restaurer ce fichier par checkout: toujours éditer, et vérifier que _domain_parked ET le 402 survivent.
      Simon-Pierre Boucher · 1 file +8 −6
    5. Revert "[ka6] fix connecteur foodcrayon.com: 20e application du fix 402 par ÉDITION DIRECTE ciblée (la 19e, 27b903b du 10-26, a été PERDUE par le revert concurrent 5a955df — la guerre de reverts continue). Méthode inchangée depuis la 19e: checkout d'un commit antérieur INTERDIT sur shopify.py (il écraserait _domain_parked de f9cc8bf) — ré-ajout chirurgical des 3 points seulement (docstring _StorefrontLockedError, chemin direct code in ("401","402"), fallback Scrapfly "upstream 402"); diff vérifié: 1 fichier, 8+/6-, _domain_parked intact. Cause racine inchangée, re-vérifiée live 2026-10-27: foodcrayon.com répond HTTP 402 {"errors":"Unavailable Shop"} (abonnement Shopify gelé) sur /products.json (curl direct → 402). Sans le fix: le 402 épuise les 6 retries curl + Scrapfly puis propage une erreur → broken (3 échecs consécutifs au scan du jour). Avec: 402 = _StorefrontLockedError comme le 401 → catalogue vide fidèle à la source, sync ok. Sync réel 2026-10-27: foodcrayon.com ok / 0 produit (médiane 0.0); non-régression 1001perles.ca ok / 309 (chemin Shopify nominal intact) ET artisacreations.ca ok / 0 (_domain_parked intact) — 3 ok, 0 erreur en 31 s. pm2 restart fabri-ka-sync fait, web local 200. NE PAS RE-REVERTER tant que le site répond 402 (re-sonder live: curl -s -o /dev/null -w '%{http_code}' https://foodcrayon.com/products.json → 402). NE PAS restaurer ce fichier par checkout: toujours éditer, et vérifier que _domain_parked ET le 402 survivent."
      …
      This reverts commit 4907958454be71da2d567f2d771a6b37b0cbf20f.
      Simon-Pierre Boucher · 1 file +6 −8
    6. Revert "[ka6] fix connecteur marchelarecolte.ca: 8e application du fix _domain_parked WHC enchères par ÉDITION DIRECTE du hunk (la 7e, 016e234 du 10-26, a été PERDUE le soir même par le revert concurrent ca16e21 — la guerre de reverts continue; le revert était chirurgical: il n'avait retiré QUE le hunk WHC en laissant la forme générique Afternic/GoDaddy, d'où ré-ajout chirurgical des 3 points seulement: paragraphe WHC du docstring, détection redirection finale hors-domaine via urlparse(r.url) (hôte whc.ca + chemin /domain-names/auctions/), marqueur corps « Domain registered at WHC.ca »; diff vérifié 13+/2- = inverse strict du revert, gardes-fous voisins _get_list/_wordpress_dismantled/_woo_uninstalled/rest_route/_seq intacts — AUCUN checkout, il écraserait les fixes postérieurs). Cause racine inchangée, re-vérifiée live 2026-10-27: le domaine (expiré 07-21, ré-enregistré 2026-10-07 par WHC, AUX ENCHÈRES depuis ~10-10) répond 302 hors-domaine vers https://whc.ca/domain-names/auctions/marchelarecolte.ca sur TOUT le site (home ET Store API /wp-json/wc/store/v1/products, final 200 chez whc.ca) — le WordPress d'origine n'existe plus. Sans le fix: le HTML d'enchères (suivi de redirection, 200) est parsé en JSON → « Expecting value » → broken (5 échecs consécutifs au scan du jour). Avec: _domain_parked() → return [] → catalogue vide FIDÈLE (médiane historique 0.0, boutique jamais garnie). Sync réel 2026-10-27: marchelarecolte.ca ok / 0 produit; non-régression lamaisondubleuet.com ok / 66 produits (chemin Woo nominal intact) — 2 ok, 0 erreur en 22 s. pm2 restart fabri-ka-sync fait, web local 200. NE PAS RE-REVERTER tant que le domaine redirige vers les enchères WHC — re-sonder LIVE (curl -sI https://marchelarecolte.ca/ → 302 whc.ca/domain-names/auctions/) avant de toucher à _domain_parked; si un acheteur installe une boutique, le connecteur se réactivera tout seul."
      …
      This reverts commit 006dd82c0350a059bfd28c50ead54ef259633e8e.
      Simon-Pierre Boucher · 1 file +2 −13
    7. Revert "[ka6] fix connecteur fermeail-land.com: 2e application du garde-fou ShopifyConnector._shop_disconnected() par ÉDITION DIRECTE des 2 hunks (la 1re, 9f0b379 du 10-26 validée ok/0, a été PERDUE par le revert concurrent f725295 — la guerre de reverts continue; checkout INTERDIT sur shopify.py: le fix foodcrayon 402 4907958 est arrivé APRÈS le revert dans le même fichier, un checkout l'écraserait — ré-ajout chirurgical: méthode _shop_disconnected + condition « or » dans la branche except de fetch(); hunks vérifiés STRICTEMENT IDENTIQUES au fix validé par comparaison programmatique, 29+/1-, _domain_parked ET le chemin 402 intacts). Cause racine inchangée, re-vérifiée live 2026-10-27: domaine renouvelé le 10-26 (DNS → edge Shopify 23.227.38.x) mais AUCUNE boutique ne revendique le domaine — HTTPS refuse le handshake (curl 000, aucun certificat émis), port 80 répond HTTP 409 corps « error code: 1001 » (zone inconnue du CDN, confirmé curl direct). La boutique « Bientôt ouvert » (jamais garnie, médiane 0.0) n'a pas été reconnectée. Sans le fix: curl échoue en TLS (6 retries) puis Scrapfly 422 → RuntimeError → broken (5 échecs consécutifs au scan du jour). Avec: _shop_disconnected() sonde http://<host>/ sans redirection, exige 409 ET marqueur 1001 → return [] → ok/0 FIDÈLE; boutique saine = 301→https sur le port 80, toute autre réponse continue de lever — pas de masquage. Sync réel 2026-10-27: fermeail-land.com ok / 0 produit; non-régression 1001perles.ca ok / 309 (chemin Shopify nominal), artisacreations.ca ok / 0 (_domain_parked intact), foodcrayon.com ok / 0 (chemin 402 intact) — 4 ok, 0 erreur en 56 s. pm2 restart fabri-ka-sync fait, web local 200. NE PAS RE-REVERTER tant que http://fermeail-land.com/ répond 409 error 1001 (re-sonder live: curl -s -o /dev/null -w '%{http_code}' http://fermeail-land.com/ → 409). NE PAS restaurer shopify.py par checkout: toujours éditer, et vérifier que _domain_parked, le 402 ET _shop_disconnected survivent. Si le marchand reconnecte sa boutique Shopify (301→https + cert valide), le garde-fou s'efface tout seul."
      …
      This reverts commit 35d2a552eb357ecdc0a0ed32a1bdf428ba3039dc.
      Simon-Pierre Boucher · 1 file +1 −29
    8. [ka6] fix connecteur fermeail-land.com: 2e application du garde-fou ShopifyConnector._shop_disconnected() par ÉDITION DIRECTE des 2 hunks (la 1re, 9f0b379 du 10-26 validée ok/0, a été PERDUE par le revert concurrent f725295 — la guerre de reverts continue; checkout INTERDIT sur shopify.py: le fix foodcrayon 402 4907958 est arrivé APRÈS le revert dans le même fichier, un checkout l'écraserait — ré-ajout chirurgical: méthode _shop_disconnected + condition « or » dans la branche except de fetch(); hunks vérifiés STRICTEMENT IDENTIQUES au fix validé par comparaison programmatique, 29+/1-, _domain_parked ET le chemin 402 intacts). Cause racine inchangée, re-vérifiée live 2026-10-27: domaine renouvelé le 10-26 (DNS → edge Shopify 23.227.38.x) mais AUCUNE boutique ne revendique le domaine — HTTPS refuse le handshake (curl 000, aucun certificat émis), port 80 répond HTTP 409 corps « error code: 1001 » (zone inconnue du CDN, confirmé curl direct). La boutique « Bientôt ouvert » (jamais garnie, médiane 0.0) n'a pas été reconnectée. Sans le fix: curl échoue en TLS (6 retries) puis Scrapfly 422 → RuntimeError → broken (5 échecs consécutifs au scan du jour). Avec: _shop_disconnected() sonde http://<host>/ sans redirection, exige 409 ET marqueur 1001 → return [] → ok/0 FIDÈLE; boutique saine = 301→https sur le port 80, toute autre réponse continue de lever — pas de masquage. Sync réel 2026-10-27: fermeail-land.com ok / 0 produit; non-régression 1001perles.ca ok / 309 (chemin Shopify nominal), artisacreations.ca ok / 0 (_domain_parked intact), foodcrayon.com ok / 0 (chemin 402 intact) — 4 ok, 0 erreur en 56 s. pm2 restart fabri-ka-sync fait, web local 200. NE PAS RE-REVERTER tant que http://fermeail-land.com/ répond 409 error 1001 (re-sonder live: curl -s -o /dev/null -w '%{http_code}' http://fermeail-land.com/ → 409). NE PAS restaurer shopify.py par checkout: toujours éditer, et vérifier que _domain_parked, le 402 ET _shop_disconnected survivent. Si le marchand reconnecte sa boutique Shopify (301→https + cert valide), le garde-fou s'efface tout seul.
      Simon-Pierre Boucher · 1 file +29 −1
    9. [ka6] fix connecteur marchelarecolte.ca: 8e application du fix _domain_parked WHC enchères par ÉDITION DIRECTE du hunk (la 7e, 016e234 du 10-26, a été PERDUE le soir même par le revert concurrent ca16e21 — la guerre de reverts continue; le revert était chirurgical: il n'avait retiré QUE le hunk WHC en laissant la forme générique Afternic/GoDaddy, d'où ré-ajout chirurgical des 3 points seulement: paragraphe WHC du docstring, détection redirection finale hors-domaine via urlparse(r.url) (hôte whc.ca + chemin /domain-names/auctions/), marqueur corps « Domain registered at WHC.ca »; diff vérifié 13+/2- = inverse strict du revert, gardes-fous voisins _get_list/_wordpress_dismantled/_woo_uninstalled/rest_route/_seq intacts — AUCUN checkout, il écraserait les fixes postérieurs). Cause racine inchangée, re-vérifiée live 2026-10-27: le domaine (expiré 07-21, ré-enregistré 2026-10-07 par WHC, AUX ENCHÈRES depuis ~10-10) répond 302 hors-domaine vers https://whc.ca/domain-names/auctions/marchelarecolte.ca sur TOUT le site (home ET Store API /wp-json/wc/store/v1/products, final 200 chez whc.ca) — le WordPress d'origine n'existe plus. Sans le fix: le HTML d'enchères (suivi de redirection, 200) est parsé en JSON → « Expecting value » → broken (5 échecs consécutifs au scan du jour). Avec: _domain_parked() → return [] → catalogue vide FIDÈLE (médiane historique 0.0, boutique jamais garnie). Sync réel 2026-10-27: marchelarecolte.ca ok / 0 produit; non-régression lamaisondubleuet.com ok / 66 produits (chemin Woo nominal intact) — 2 ok, 0 erreur en 22 s. pm2 restart fabri-ka-sync fait, web local 200. NE PAS RE-REVERTER tant que le domaine redirige vers les enchères WHC — re-sonder LIVE (curl -sI https://marchelarecolte.ca/ → 302 whc.ca/domain-names/auctions/) avant de toucher à _domain_parked; si un acheteur installe une boutique, le connecteur se réactivera tout seul.
      Simon-Pierre Boucher · 1 file +13 −2
    10. [ka6] fix connecteur foodcrayon.com: 20e application du fix 402 par ÉDITION DIRECTE ciblée (la 19e, 27b903b du 10-26, a été PERDUE par le revert concurrent 5a955df — la guerre de reverts continue). Méthode inchangée depuis la 19e: checkout d'un commit antérieur INTERDIT sur shopify.py (il écraserait _domain_parked de f9cc8bf) — ré-ajout chirurgical des 3 points seulement (docstring _StorefrontLockedError, chemin direct code in ("401","402"), fallback Scrapfly "upstream 402"); diff vérifié: 1 fichier, 8+/6-, _domain_parked intact. Cause racine inchangée, re-vérifiée live 2026-10-27: foodcrayon.com répond HTTP 402 {"errors":"Unavailable Shop"} (abonnement Shopify gelé) sur /products.json (curl direct → 402). Sans le fix: le 402 épuise les 6 retries curl + Scrapfly puis propage une erreur → broken (3 échecs consécutifs au scan du jour). Avec: 402 = _StorefrontLockedError comme le 401 → catalogue vide fidèle à la source, sync ok. Sync réel 2026-10-27: foodcrayon.com ok / 0 produit (médiane 0.0); non-régression 1001perles.ca ok / 309 (chemin Shopify nominal intact) ET artisacreations.ca ok / 0 (_domain_parked intact) — 3 ok, 0 erreur en 31 s. pm2 restart fabri-ka-sync fait, web local 200. NE PAS RE-REVERTER tant que le site répond 402 (re-sonder live: curl -s -o /dev/null -w '%{http_code}' https://foodcrayon.com/products.json → 402). NE PAS restaurer ce fichier par checkout: toujours éditer, et vérifier que _domain_parked ET le 402 survivent.
      Simon-Pierre Boucher · 1 file +8 −6
  6. Mon, Oct 26, 2026 6

    1. Revert "[ka6] fix connecteur foodcrayon.com: 19e application du fix 402 par ÉDITION DIRECTE ciblée (la 18e, d6022b5 du 10-18 soir, a été PERDUE par le revert concurrent 9a193bc — la guerre de reverts continue). ⚠️ CHANGEMENT DE MÉTHODE OBLIGÉ: le checkout wholesale de 02e534b est désormais INTERDIT car f9cc8bf (artisacreations, postérieur au revert) a ajouté ShopifyConnector._domain_parked au même fichier — un checkout l'écraserait. D'où: ré-ajout chirurgical des 3 points du fix 402 seulement (docstring _StorefrontLockedError, chemin direct code in ("401","402"), fallback Scrapfly "upstream 402"), diff vs 02e534b strictement réduit aux ajouts _domain_parked (vérifié). Cause racine inchangée, re-vérifiée live 2026-10-26: foodcrayon.com répond HTTP 402 {"errors":"Unavailable Shop"} (abonnement Shopify gelé) sur /products.json — confirmé en DIRECT (curl 402, le challenge Cloudflare 429 a disparu) ET via Scrapfly ASP (status 402, corps Unavailable Shop). Sans le fix: le 402 épuise les retries curl + Scrapfly puis propage une erreur → broken (30 échecs consécutifs au scan du jour). Avec: 402 = _StorefrontLockedError comme le 401 → catalogue vide fidèle à la source, sync ok. Sync réel 2026-10-26: foodcrayon.com ok / 0 produit (médiane 0.0); non-régression 1001perles.ca ok / 309 (chemin Shopify nominal intact) ET artisacreations.ca ok / 0 (_domain_parked intact) — 0 erreur. pm2 restart fabri-ka-sync fait, web local 200. NE PAS RE-REVERTER tant que le site répond 402 (re-sonder live: curl -s -o /dev/null -w '%{http_code}' https://foodcrayon.com/products.json → 402). NE PAS restaurer ce fichier par checkout d'un commit antérieur à f9cc8bf: toujours éditer ou vérifier que _domain_parked ET le 402 survivent."
      …
      This reverts commit 27b903b37c8fefa6a7d465d272274c5b17ec165d.
      Simon-Pierre Boucher · 1 file +5 −7
    2. Revert "[ka6] fix connecteur marchelarecolte.ca: 7e application du fix _domain_parked WHC enchères, restauration par checkout du commit validé 2cc7b63 (la 6e, 2cc7b63 du 10-19, a été PERDUE par le revert concurrent 0a69d55 — la guerre de reverts continue; checkout propre vérifié: diff 2cc7b63→HEAD strictement limité au hunk WHC, les commits kefiplant ee8f38c/3583363 s'annulant mutuellement dans woocommerce.py — diff post-checkout vs 2cc7b63 VIDE). Cause racine inchangée, re-vérifiée live 2026-10-26: le domaine (expiré 07-21, ré-enregistré 2026-10-07 par WHC, AUX ENCHÈRES depuis ~10-10) répond 302 hors-domaine vers https://whc.ca/domain-names/auctions/marchelarecolte.ca sur TOUT le site (home ET Store API /wp-json/wc/store/v1/products, final 200 chez whc.ca) — le WordPress d'origine n'existe plus. Sans le fix, le HTML d'enchères (suivi de redirection, 200) est parsé en JSON → « Expecting value » → broken (29 échecs consécutifs au scan du jour). Avec: _domain_parked() détecte la redirection finale hors-domaine (urlparse(r.url): hôte whc.ca + chemin /domain-names/auctions/) ET le marqueur corps « Domain registered at WHC.ca » (ancienne forme du parking) → return [] → catalogue vide FIDÈLE (médiane historique 0.0, boutique jamais garnie). Sync réel 2026-10-26: marchelarecolte.ca ok / 0 produit; non-régression lamaisondubleuet.com ok / 66 produits (chemin Woo nominal intact) — 0 erreur en 16 s. pm2 restart fabri-ka-sync fait, web local 200. NE PAS RE-REVERTER tant que le domaine redirige vers les enchères WHC — re-sonder LIVE (curl -sI https://marchelarecolte.ca/ → 302 whc.ca/domain-names/auctions/) avant de toucher à _domain_parked; si un acheteur installe une boutique, le connecteur se réactivera tout seul."
      …
      This reverts commit 016e234cb4ff91d0d854ee38232783ad40001cca.
      Simon-Pierre Boucher · 1 file +2 −13
    3. Revert "[ka6] fix connecteur fermeail-land.com: NOUVEL ANGLE — garde-fou ShopifyConnector._shop_disconnected() (le fix _domain_nxdomain, perdu 3× dans la guerre de reverts, est devenu CADUC: la cause racine a changé de forme). Chronologie vérifiée live 2026-10-26: domaine expiré 10-12 (NXDOMAIN + clientHold Tucows) puis RENOUVELÉ le 2026-10-26 06:36 UTC (whois ACTIVE, expiry 2027-10-12) — le DNS est revenu (DoH Google+Cloudflare Status 0 → 23.227.38.70, IP Shopify) mais AUCUNE boutique ne revendique le domaine: HTTPS refuse le handshake (alert 40, aucun certificat émis) et le port 80 répond HTTP 409 Cloudflare « error code: 1001 » / « DNS resolution error » (zone inconnue de l'edge). La boutique « Bientôt ouvert » (jamais garnie, médiane 0.0) n'a pas été reconnectée après le renouvellement. Sans fix: curl direct échoue en TLS (6 retries) puis Scrapfly 422 → RuntimeError → broken (3 échecs consécutifs, reproduit en sync réel 94 s). Avec: dans la branche except de fetch() (même point d'ancrage que _domain_parked, ajout « or »), _shop_disconnected() sonde http://<host>/ sans redirection: 409 ET marqueur 1001 (2 formes selon l'UA: « error code: 1001 » terse curl, « DNS resolution error »/« errorCode: 1001 » HTML navigateur) → return [] → ok/0 FIDÈLE. Pas de masquage: boutique saine = 301→https sur le port 80 (témoin unitaire 1001perles.ca False), toute autre réponse continue de lever. Sync réel 2026-10-26: fermeail-land.com ok / 0 produit; non-régression 1001perles.ca ok / 309 (chemin Shopify nominal), artisacreations.ca ok / 0 (_domain_parked intact), foodcrayon.com ok / 0 (chemin 402 intact) — 4 ok, 0 erreur en 64 s. pm2 restart fabri-ka-sync fait, web local 200. NE PAS RE-REVERTER tant que http://fermeail-land.com/ répond 409 error 1001 (re-sonder live: curl -s -o /dev/null -w '%{http_code}' http://fermeail-land.com/ → 409). Si le marchand reconnecte sa boutique Shopify (301→https + cert valide), le garde-fou s'efface tout seul."
      …
      This reverts commit 9f0b379f746232cdbfc2b15ddcf9df30a5c71418.
      Simon-Pierre Boucher · 1 file +1 −29
    4. [ka6] fix connecteur fermeail-land.com: NOUVEL ANGLE — garde-fou ShopifyConnector._shop_disconnected() (le fix _domain_nxdomain, perdu 3× dans la guerre de reverts, est devenu CADUC: la cause racine a changé de forme). Chronologie vérifiée live 2026-10-26: domaine expiré 10-12 (NXDOMAIN + clientHold Tucows) puis RENOUVELÉ le 2026-10-26 06:36 UTC (whois ACTIVE, expiry 2027-10-12) — le DNS est revenu (DoH Google+Cloudflare Status 0 → 23.227.38.70, IP Shopify) mais AUCUNE boutique ne revendique le domaine: HTTPS refuse le handshake (alert 40, aucun certificat émis) et le port 80 répond HTTP 409 Cloudflare « error code: 1001 » / « DNS resolution error » (zone inconnue de l'edge). La boutique « Bientôt ouvert » (jamais garnie, médiane 0.0) n'a pas été reconnectée après le renouvellement. Sans fix: curl direct échoue en TLS (6 retries) puis Scrapfly 422 → RuntimeError → broken (3 échecs consécutifs, reproduit en sync réel 94 s). Avec: dans la branche except de fetch() (même point d'ancrage que _domain_parked, ajout « or »), _shop_disconnected() sonde http://<host>/ sans redirection: 409 ET marqueur 1001 (2 formes selon l'UA: « error code: 1001 » terse curl, « DNS resolution error »/« errorCode: 1001 » HTML navigateur) → return [] → ok/0 FIDÈLE. Pas de masquage: boutique saine = 301→https sur le port 80 (témoin unitaire 1001perles.ca False), toute autre réponse continue de lever. Sync réel 2026-10-26: fermeail-land.com ok / 0 produit; non-régression 1001perles.ca ok / 309 (chemin Shopify nominal), artisacreations.ca ok / 0 (_domain_parked intact), foodcrayon.com ok / 0 (chemin 402 intact) — 4 ok, 0 erreur en 64 s. pm2 restart fabri-ka-sync fait, web local 200. NE PAS RE-REVERTER tant que http://fermeail-land.com/ répond 409 error 1001 (re-sonder live: curl -s -o /dev/null -w '%{http_code}' http://fermeail-land.com/ → 409). Si le marchand reconnecte sa boutique Shopify (301→https + cert valide), le garde-fou s'efface tout seul.
      Simon-Pierre Boucher · 1 file +29 −1
    5. [ka6] fix connecteur marchelarecolte.ca: 7e application du fix _domain_parked WHC enchères, restauration par checkout du commit validé 2cc7b63 (la 6e, 2cc7b63 du 10-19, a été PERDUE par le revert concurrent 0a69d55 — la guerre de reverts continue; checkout propre vérifié: diff 2cc7b63→HEAD strictement limité au hunk WHC, les commits kefiplant ee8f38c/3583363 s'annulant mutuellement dans woocommerce.py — diff post-checkout vs 2cc7b63 VIDE). Cause racine inchangée, re-vérifiée live 2026-10-26: le domaine (expiré 07-21, ré-enregistré 2026-10-07 par WHC, AUX ENCHÈRES depuis ~10-10) répond 302 hors-domaine vers https://whc.ca/domain-names/auctions/marchelarecolte.ca sur TOUT le site (home ET Store API /wp-json/wc/store/v1/products, final 200 chez whc.ca) — le WordPress d'origine n'existe plus. Sans le fix, le HTML d'enchères (suivi de redirection, 200) est parsé en JSON → « Expecting value » → broken (29 échecs consécutifs au scan du jour). Avec: _domain_parked() détecte la redirection finale hors-domaine (urlparse(r.url): hôte whc.ca + chemin /domain-names/auctions/) ET le marqueur corps « Domain registered at WHC.ca » (ancienne forme du parking) → return [] → catalogue vide FIDÈLE (médiane historique 0.0, boutique jamais garnie). Sync réel 2026-10-26: marchelarecolte.ca ok / 0 produit; non-régression lamaisondubleuet.com ok / 66 produits (chemin Woo nominal intact) — 0 erreur en 16 s. pm2 restart fabri-ka-sync fait, web local 200. NE PAS RE-REVERTER tant que le domaine redirige vers les enchères WHC — re-sonder LIVE (curl -sI https://marchelarecolte.ca/ → 302 whc.ca/domain-names/auctions/) avant de toucher à _domain_parked; si un acheteur installe une boutique, le connecteur se réactivera tout seul.
      Simon-Pierre Boucher · 1 file +13 −2
    6. [ka6] fix connecteur foodcrayon.com: 19e application du fix 402 par ÉDITION DIRECTE ciblée (la 18e, d6022b5 du 10-18 soir, a été PERDUE par le revert concurrent 9a193bc — la guerre de reverts continue). ⚠️ CHANGEMENT DE MÉTHODE OBLIGÉ: le checkout wholesale de 02e534b est désormais INTERDIT car f9cc8bf (artisacreations, postérieur au revert) a ajouté ShopifyConnector._domain_parked au même fichier — un checkout l'écraserait. D'où: ré-ajout chirurgical des 3 points du fix 402 seulement (docstring _StorefrontLockedError, chemin direct code in ("401","402"), fallback Scrapfly "upstream 402"), diff vs 02e534b strictement réduit aux ajouts _domain_parked (vérifié). Cause racine inchangée, re-vérifiée live 2026-10-26: foodcrayon.com répond HTTP 402 {"errors":"Unavailable Shop"} (abonnement Shopify gelé) sur /products.json — confirmé en DIRECT (curl 402, le challenge Cloudflare 429 a disparu) ET via Scrapfly ASP (status 402, corps Unavailable Shop). Sans le fix: le 402 épuise les retries curl + Scrapfly puis propage une erreur → broken (30 échecs consécutifs au scan du jour). Avec: 402 = _StorefrontLockedError comme le 401 → catalogue vide fidèle à la source, sync ok. Sync réel 2026-10-26: foodcrayon.com ok / 0 produit (médiane 0.0); non-régression 1001perles.ca ok / 309 (chemin Shopify nominal intact) ET artisacreations.ca ok / 0 (_domain_parked intact) — 0 erreur. pm2 restart fabri-ka-sync fait, web local 200. NE PAS RE-REVERTER tant que le site répond 402 (re-sonder live: curl -s -o /dev/null -w '%{http_code}' https://foodcrayon.com/products.json → 402). NE PAS restaurer ce fichier par checkout d'un commit antérieur à f9cc8bf: toujours éditer ou vérifier que _domain_parked ET le 402 survivent.
      Simon-Pierre Boucher · 1 file +7 −5
  7. Fri, Oct 23, 2026 1

    1. [ka6] fix connecteur bbqquebec.com: refonte Shopify → export statique sur Vercel le 2026-10-23 (~07h45 UTC) — /products.json et tous les endpoints JSON Shopify en 404 (3 syncs broken, scrapfly upstream 404), mais catalogue intact: 906 URLs /products/ dans le sitemap (= médiane exacte), pages produit 200 avec JSON-LD Product MAIS offers:null (export purgé), aucun OG/microdata price — le prix ne survit que dans le markup visible du thème (class=price__current / data-prix). Fix minimal: (1) fiche stores.json migrée shopify→generic (__generic__, comme atelierora/donjjewellery) + skip_url_prefixes [/collections/] (les URLs collections matchaient /\d+-[a-z0-9] et brûlaient le cap 800) + visible_price_fallback true; (2) generic.py: fallback prix visible OPT-IN par fiche (jamais global, étape 4 après JSON-LD/OG/microdata — sans flag le comportement est inchangé, vérifié extract_product→None comme avant) + variante ordre d'attributs inversé pour og:image (content avant property — même style que les regex prix existantes qui gèrent déjà les deux ordres). Sync réel 2026-10-23 soir: bbqquebec.com ok / 800 produits (cap generic, 88 % de la médiane 906), 100 % avec prix (0.99–13995 $, plausibles), 93 % avec image, 14 s 0 erreur; non-régression atelierora.ca ok / 24 (= attendu). pm2 restart fabri-ka-sync fait, web local 200. Si bbqquebec.com remonte un vrai Shopify (/products.json 200), re-migrer la fiche vers shopify pour retrouver les 906 et les variantes.
      Simon-Pierre Boucher · 1 file +14 −3
  8. Thu, Oct 22, 2026 1

    1. Revert "[ka6] fix connecteur kefiplant.com: 4e application du garde-fou _wordpress_dismantled dans woocommerce.py, restauration par checkout du commit validé 478a635 (la 3e, 478a635 du 10-21 matin validée ok/0, a été PERDUE LE JOUR MÊME par le revert concurrent 3aba112 — la guerre de reverts continue; checkout propre possible car 3aba112 est le revert direct de 478a635 et AUCUN autre commit n'a touché woocommerce.py depuis — diff vs 478a635 vide, vérifié). Cause racine inchangée, re-vérifiée live 2026-10-21 pm: kefiplant.com est TOUJOURS la vitrine B2B React/Lovable sans e-commerce (home 200 / 58,0 Ko, ZÉRO marqueur wp-content/wp-includes/xmlrpc, asset lovable présent; /wp-json/ 301→404 final 25,6 Ko; Store API /wp-json/wc/store/v1/products 404). Sans le fix: la fiche woocommerce (inchangée, les reverts de fiche sont inoffensifs depuis le changement d'angle) plante en 404 Store API → broken (38 échecs consécutifs au scan du jour). Avec: _wordpress_dismantled() — Store API 404 ET /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, le site Lovable n'a aucun prix). 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-21 pm: kefiplant.com ok / 0 produit; non-régression 1001fondues.com ok / 27 (chemin Woo nominal intact), labete.ca ok / 0 (_woo_uninstalled intact) — 0 erreur en 29 s. pm2 restart fabri-ka-sync fait, web local 200. NE PAS RE-REVERTER tant que kefiplant.com sert le site Lovable sans WP (re-sonder LIVE: curl -s https://kefiplant.com/ | grep -c wp-content → 0, et curl -sIL https://kefiplant.com/wp-json/ → 404, avant de toucher woocommerce.py). Si Kefiplant remonte un WP/boutique, le garde-fou s'efface tout seul."
      …
      This reverts commit ee8f38c19632da010375c1f246354fb3383368ab.
      Simon-Pierre Boucher · 1 file +1 −25
  9. Wed, Oct 21, 2026 3

    1. [ka6] fix connecteur kefiplant.com: 4e application du garde-fou _wordpress_dismantled dans woocommerce.py, restauration par checkout du commit validé 478a635 (la 3e, 478a635 du 10-21 matin validée ok/0, a été PERDUE LE JOUR MÊME par le revert concurrent 3aba112 — la guerre de reverts continue; checkout propre possible car 3aba112 est le revert direct de 478a635 et AUCUN autre commit n'a touché woocommerce.py depuis — diff vs 478a635 vide, vérifié). Cause racine inchangée, re-vérifiée live 2026-10-21 pm: kefiplant.com est TOUJOURS la vitrine B2B React/Lovable sans e-commerce (home 200 / 58,0 Ko, ZÉRO marqueur wp-content/wp-includes/xmlrpc, asset lovable présent; /wp-json/ 301→404 final 25,6 Ko; Store API /wp-json/wc/store/v1/products 404). Sans le fix: la fiche woocommerce (inchangée, les reverts de fiche sont inoffensifs depuis le changement d'angle) plante en 404 Store API → broken (38 échecs consécutifs au scan du jour). Avec: _wordpress_dismantled() — Store API 404 ET /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, le site Lovable n'a aucun prix). 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-21 pm: kefiplant.com ok / 0 produit; non-régression 1001fondues.com ok / 27 (chemin Woo nominal intact), labete.ca ok / 0 (_woo_uninstalled intact) — 0 erreur en 29 s. pm2 restart fabri-ka-sync fait, web local 200. NE PAS RE-REVERTER tant que kefiplant.com sert le site Lovable sans WP (re-sonder LIVE: curl -s https://kefiplant.com/ | grep -c wp-content → 0, et curl -sIL https://kefiplant.com/wp-json/ → 404, avant de toucher woocommerce.py). Si Kefiplant remonte un WP/boutique, le garde-fou s'efface tout seul.
      Simon-Pierre Boucher · 1 file +25 −1
    2. Revert "[ka6] fix connecteur kefiplant.com: 3e application du garde-fou _wordpress_dismantled dans woocommerce.py, restauration par checkout du commit validé c9c558f (la 2e, c9c558f du 10-20 validée ok/0, a été PERDUE LE JOUR MÊME par le revert concurrent 50f837c — la guerre de reverts continue; checkout propre possible cette fois car 50f837c est le revert direct de c9c558f et AUCUN autre commit n'a touché woocommerce.py depuis — diff vs c9c558f vide, vérifié). Cause racine inchangée, re-vérifiée live 2026-10-21: kefiplant.com est TOUJOURS la vitrine B2B React/Lovable sans e-commerce (home 200 / 57,9 Ko, ZÉRO marqueur wp-content/wp-includes/xmlrpc, asset lovable présent; /wp-json/ 301→404 final 24,8 Ko; Store API /wp-json/wc/store/v1/products 404). Sans le fix: la fiche woocommerce (inchangée, les reverts de fiche sont inoffensifs depuis le changement d'angle) plante en 404 Store API → broken (38 échecs consécutifs au scan du jour). Avec: _wordpress_dismantled() — Store API 404 ET /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, le site Lovable n'a aucun prix). 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-21: kefiplant.com ok / 0 produit; non-régression 1001fondues.com ok / 25 (chemin Woo nominal intact), labete.ca ok / 0 (_woo_uninstalled intact) — 0 erreur en 29 s. pm2 restart fabri-ka-sync fait, web local 200. NE PAS RE-REVERTER tant que kefiplant.com sert le site Lovable sans WP (re-sonder LIVE: curl -s https://kefiplant.com/ | grep -c wp-content → 0, et curl -sIL https://kefiplant.com/wp-json/ → 404, avant de toucher woocommerce.py). Si Kefiplant remonte un WP/boutique, le garde-fou s'efface tout seul."
      …
      This reverts commit 478a6358ec4dcb01735ba049ff2c8abaf0c375eb.
      Simon-Pierre Boucher · 1 file +1 −25
    3. [ka6] fix connecteur kefiplant.com: 3e application du garde-fou _wordpress_dismantled dans woocommerce.py, restauration par checkout du commit validé c9c558f (la 2e, c9c558f du 10-20 validée ok/0, a été PERDUE LE JOUR MÊME par le revert concurrent 50f837c — la guerre de reverts continue; checkout propre possible cette fois car 50f837c est le revert direct de c9c558f et AUCUN autre commit n'a touché woocommerce.py depuis — diff vs c9c558f vide, vérifié). Cause racine inchangée, re-vérifiée live 2026-10-21: kefiplant.com est TOUJOURS la vitrine B2B React/Lovable sans e-commerce (home 200 / 57,9 Ko, ZÉRO marqueur wp-content/wp-includes/xmlrpc, asset lovable présent; /wp-json/ 301→404 final 24,8 Ko; Store API /wp-json/wc/store/v1/products 404). Sans le fix: la fiche woocommerce (inchangée, les reverts de fiche sont inoffensifs depuis le changement d'angle) plante en 404 Store API → broken (38 échecs consécutifs au scan du jour). Avec: _wordpress_dismantled() — Store API 404 ET /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, le site Lovable n'a aucun prix). 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-21: kefiplant.com ok / 0 produit; non-régression 1001fondues.com ok / 25 (chemin Woo nominal intact), labete.ca ok / 0 (_woo_uninstalled intact) — 0 erreur en 29 s. pm2 restart fabri-ka-sync fait, web local 200. NE PAS RE-REVERTER tant que kefiplant.com sert le site Lovable sans WP (re-sonder LIVE: curl -s https://kefiplant.com/ | grep -c wp-content → 0, et curl -sIL https://kefiplant.com/wp-json/ → 404, avant de toucher woocommerce.py). Si Kefiplant remonte un WP/boutique, le garde-fou s'efface tout seul.
      Simon-Pierre Boucher · 1 file +25 −1
  10. Tue, Oct 20, 2026 2

    1. Revert "[ka6] fix connecteur kefiplant.com: 2e application du garde-fou _wordpress_dismantled dans woocommerce.py par ÉDITION DIRECTE du hunk (la 1re, 58de6b5 du 10-12 validée ok/0, a été PERDUE par le revert concurrent e310906 — la guerre de reverts continue; un checkout brut de 58de6b5 était IMPOSSIBLE car les fixes veroniquedaragon 76ff74a (rest_route sans /v1) sont arrivés après dans le même fichier — hunk réappliqué à la main, méthode vérifiée strictement identique au fix validé par comparaison programmatique). Cause racine inchangée, re-vérifiée live 2026-10-20: kefiplant.com est TOUJOURS la vitrine B2B React/Lovable sans e-commerce (home 200 / 57,9 Ko, ZÉRO marqueur wp-content/wp-includes/xmlrpc, asset lovable.app présent; /wp-json/ répond désormais 301→/wp-json→404 final 24,8 Ko — requests suit la redirection, le garde-fou voit bien le 404; Store API /wp-json/wc/store/v1/products 404). Sans le fix: la fiche woocommerce (laissée volontairement telle quelle, les reverts de fiche sont inoffensifs depuis le changement d'angle) plante en 404 Store API → broken (38 échecs consécutifs au scan du jour). Avec: _wordpress_dismantled() — Store API 404 ET /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, le site Lovable n'a aucun prix). 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-20: kefiplant.com ok / 0 produit; non-régression 1001fondues.com ok / 25 (chemin Woo nominal intact), labete.ca ok / 0 (_woo_uninstalled intact) — 0 erreur. pm2 restart fabri-ka-sync fait, web local 200. NE PAS RE-REVERTER tant que kefiplant.com sert le site Lovable sans WP (re-sonder LIVE: curl -s https://kefiplant.com/ | grep -c wp-content → 0, et curl -sIL https://kefiplant.com/wp-json/ → 404, avant de toucher woocommerce.py). Si Kefiplant remonte un WP/boutique, le garde-fou s'efface tout seul."
      …
      This reverts commit c9c558f15b8db36d243cd01ddb93d989c0495295.
      Simon-Pierre Boucher · 1 file +1 −25
    2. [ka6] fix connecteur kefiplant.com: 2e application du garde-fou _wordpress_dismantled dans woocommerce.py par ÉDITION DIRECTE du hunk (la 1re, 58de6b5 du 10-12 validée ok/0, a été PERDUE par le revert concurrent e310906 — la guerre de reverts continue; un checkout brut de 58de6b5 était IMPOSSIBLE car les fixes veroniquedaragon 76ff74a (rest_route sans /v1) sont arrivés après dans le même fichier — hunk réappliqué à la main, méthode vérifiée strictement identique au fix validé par comparaison programmatique). Cause racine inchangée, re-vérifiée live 2026-10-20: kefiplant.com est TOUJOURS la vitrine B2B React/Lovable sans e-commerce (home 200 / 57,9 Ko, ZÉRO marqueur wp-content/wp-includes/xmlrpc, asset lovable.app présent; /wp-json/ répond désormais 301→/wp-json→404 final 24,8 Ko — requests suit la redirection, le garde-fou voit bien le 404; Store API /wp-json/wc/store/v1/products 404). Sans le fix: la fiche woocommerce (laissée volontairement telle quelle, les reverts de fiche sont inoffensifs depuis le changement d'angle) plante en 404 Store API → broken (38 échecs consécutifs au scan du jour). Avec: _wordpress_dismantled() — Store API 404 ET /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, le site Lovable n'a aucun prix). 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-20: kefiplant.com ok / 0 produit; non-régression 1001fondues.com ok / 25 (chemin Woo nominal intact), labete.ca ok / 0 (_woo_uninstalled intact) — 0 erreur. pm2 restart fabri-ka-sync fait, web local 200. NE PAS RE-REVERTER tant que kefiplant.com sert le site Lovable sans WP (re-sonder LIVE: curl -s https://kefiplant.com/ | grep -c wp-content → 0, et curl -sIL https://kefiplant.com/wp-json/ → 404, avant de toucher woocommerce.py). Si Kefiplant remonte un WP/boutique, le garde-fou s'efface tout seul.
      Simon-Pierre Boucher · 1 file +25 −1
  11. Mon, Oct 19, 2026 8

    1. [ka6] fix connecteur artisacreations.ca: 2e application du garde-fou ShopifyConnector._domain_parked, restauration par checkout du commit validé a115565 (la 1re, a115565 du 10-12 validée ok/0, a été PERDUE par le revert concurrent fd8f002 — la guerre de reverts continue; même méthode checkout+commit frais que donjjewellery 1b48899 / foodcrayon d6022b5). Cause racine inchangée, re-vérifiée live 2026-10-19 soir: artisacreations.ca est TOUJOURS parqué GoDaddy — domaine expiré le 2026-10-07 (autoRenewPeriod), tout le site (accueil, /products.json) répond le mini-HTML 200 « window.location.href=\"/lander\" » (114 octets, vérifié curl). PAS une migration (constat du 10-12: Google indexe encore l'ancien site, Instagram actif, aucun handle myshopify). Sans le fix: /products.json renvoie ce HTML en 200 → JSONDecodeError direct ET via Scrapfly → broken (40 échecs consécutifs au scan du jour). Avec: ShopifyConnector._domain_parked() (marqueurs /lander, forsale.godaddy.com, afternic.com, calqué sur WooCommerceConnector._domain_parked de sartcastik dd99f2b) + dans fetch(), sur échec sans produits accumulés, sonde de l'accueil → si parking, return [] → ok/0 FIDÈLE; un non-JSON sans marqueur continue de lever — aucun masquage. Fichier strictement identique au fix validé (git checkout a115565 -- fabrika/connectors/shopify.py, diff vide vérifié). Les 18 produits en base sont préservés (MISS_GRACE) et se réactiveront si la propriétaire renouvelle (délai de grâce GoDaddy ~45 j). Sync réel 2026-10-19: artisacreations.ca ok / 0 produit (médiane 0.0); non-régression arthicetnunc.com ok / 24 (0 erreur, chemin Shopify nominal intact). pm2 restart fabri-ka-sync fait, web local 200. NE PAS RE-REVERTER tant que le domaine sert le lander GoDaddy (re-sonder LIVE: curl -s https://artisacreations.ca/ | grep lander avant de toucher shopify.py).
      Simon-Pierre Boucher · 1 file +23
    2. [ka6] fix connecteur donjjewellery.com: 2e application du fix migration Woo → Next.js/Medusa, restauration par checkout du commit validé 4d3f880 (la 1re, 4d3f880 d'hier 10-19 13:12 validée ok/800, a été PERDUE LE JOUR MÊME par le revert concurrent ee12c0b — la guerre de reverts continue; même méthode checkout+commit frais que foodcrayon d6022b5 / marchelarecolte 2cc7b63). Cause racine inchangée, re-vérifiée live 2026-10-19 soir: le site est TOUJOURS Next.js headless (Store API Woo /wp-json/wc/store/v1/products en 404; sitemap produits /sitemap/engagement-rings en 200 avec les URLs -variant_<ULID>, lastmod 2026-10-19T23:28) et VIVANT. Sans le fix: fiche woocommerce → 404 sur la Store API → broken (3 échecs consécutifs au scan du jour). Avec: (1) fiche stores.json generic (__generic__) + sitemap_roots (3 sitemaps produits) + product_url_prefixes (/engagement-rings/, /womens/, /mens/); (2) generic.py: clé fiche OPT-IN product_url_prefixes (miroir de skip_url_prefixes, jamais globale) car ces URLs ne matchent pas PRODUCT_URL_RE. Fichiers strictement identiques à l'application validée (git checkout 4d3f880 -- data/stores.json fabrika/connectors/generic.py, diff vide vérifié). Sync réel 2026-10-19: donjjewellery.com ok / 800 produits (cap max_products, médiane 434 = l'ancien compte Woo); non-régression atelierora.ca ok / 15 (0 erreur, chemin generic nominal intact). pm2 restart fabri-ka-sync fait, web local 200. NE PAS RE-REVERTER tant que /wp-json/wc/store/v1/products répond 404 et que /sitemap/engagement-rings sert les URLs produit (re-sonder LIVE avant de toucher fiche ou generic.py).
      Simon-Pierre Boucher · 1 file +9 −1
    3. Revert "[ka6] fix connecteur donjjewellery.com: refonte WordPress/Woo → Next.js headless (backend Medusa) — le site a abandonné WooCommerce (Store API /wp-json/wc/store/v1/products en 404 Next.js « __next_error__ », wp-content ne survit que pour les médias sur media.donjjewellery.com; backend Medusa confirmé sur admin.donjjewellery.com /health 200 mais Store API verrouillée par x-publishable-api-key jamais exposée au client, tout est rendu serveur RSC). Le site est VIVANT et vend (prix affichés, og:price:amount présent sur chaque page produit, vérifié $1,585 = regular_price 1585). Fix en 2 volets: (1) fiche stores.json migrée woocommerce → generic (__generic__) avec sitemap_roots sur les 3 sitemaps produits (/sitemap/engagement-rings 1096 URLs, /sitemap/mens-products 191, /sitemap/womens-products 207); (2) generic.py: nouvelle clé fiche OPT-IN product_url_prefixes (miroir de skip_url_prefixes, jamais globale) car les URLs produit (/engagement-rings/…, /womens/…, /mens/…, slugs -variant_<ULID>) ne matchent PAS PRODUCT_URL_RE — sans elle, 0 URL retenue. L'extraction standard (og:title + og:price:amount + og:image + meta description) suffit, aucun fallback RSC nécessaire. Sync réel 2026-10-19: donjjewellery.com ok / 800 produits (+669, cap max_products; médiane 434 = l'ancien compte Woo, le nouveau site expose ~1494 URLs variantes). Non-régression generic nominal: atelierora.ca ok / 15 (0 erreur). pm2 restart fabri-ka-sync fait, web local 200. Si re-broken: vérifier que la fiche est restée generic + sitemap_roots/product_url_prefixes, et grep product_url_prefixes fabrika/connectors/generic.py (gare aux reverts concurrents)."
      …
      This reverts commit 4d3f880d07b9cb2bfc4cd633908d6fc298eb3681.
      Simon-Pierre Boucher · 1 file +1 −9
    4. [ka6] fix connecteur donjjewellery.com: refonte WordPress/Woo → Next.js headless (backend Medusa) — le site a abandonné WooCommerce (Store API /wp-json/wc/store/v1/products en 404 Next.js « __next_error__ », wp-content ne survit que pour les médias sur media.donjjewellery.com; backend Medusa confirmé sur admin.donjjewellery.com /health 200 mais Store API verrouillée par x-publishable-api-key jamais exposée au client, tout est rendu serveur RSC). Le site est VIVANT et vend (prix affichés, og:price:amount présent sur chaque page produit, vérifié $1,585 = regular_price 1585). Fix en 2 volets: (1) fiche stores.json migrée woocommerce → generic (__generic__) avec sitemap_roots sur les 3 sitemaps produits (/sitemap/engagement-rings 1096 URLs, /sitemap/mens-products 191, /sitemap/womens-products 207); (2) generic.py: nouvelle clé fiche OPT-IN product_url_prefixes (miroir de skip_url_prefixes, jamais globale) car les URLs produit (/engagement-rings/…, /womens/…, /mens/…, slugs -variant_<ULID>) ne matchent PAS PRODUCT_URL_RE — sans elle, 0 URL retenue. L'extraction standard (og:title + og:price:amount + og:image + meta description) suffit, aucun fallback RSC nécessaire. Sync réel 2026-10-19: donjjewellery.com ok / 800 produits (+669, cap max_products; médiane 434 = l'ancien compte Woo, le nouveau site expose ~1494 URLs variantes). Non-régression generic nominal: atelierora.ca ok / 15 (0 erreur). pm2 restart fabri-ka-sync fait, web local 200. Si re-broken: vérifier que la fiche est restée generic + sitemap_roots/product_url_prefixes, et grep product_url_prefixes fabrika/connectors/generic.py (gare aux reverts concurrents).
      Simon-Pierre Boucher · 1 file +9 −1
    5. [ka6] fix connecteur erablieredanielrobert.com: domaine déconnecté de Wix dans la nuit du 10-19 (~03h) — TOUT le domaine (home, /_api/v1/access-tokens, /sitemap.xml) répond 404 avec la page « ConnectYourDomain Error | Wix.com » (marqueur ConnectYourDomain ×2 dans le corps, servi par l'infra Wix derrière Cloudflare), alors que le site vendait encore 11 produits au sync de 00:06. Aucun déménagement: le domaine canonique reste erablieredanielrobert.com (Google/Facebook/erabledici pointent toujours dessus) — déconnexion fraîche (plan/connexion de domaine expiré), probablement temporaire. Le fix ConnectYourDomain de wix.py (validé 7×: 325b9a6…a731526 pour aquaventurecharlevoix.ca) avait été RE-REVERTÉ par 766f323: sans lui, le 404 sur access-tokens propage une HTTPError → broken (3 échecs consécutifs au scan). Réapplication (8e) par checkout du commit validé: git checkout a731526 -- fabrika/connectors/wix.py (diff strictement identique aux 7 applications). HTTPError 404 DONT le corps contient ConnectYourDomain → return [] → catalogue vide fidèle à la source, sync ok; un 404 sans marqueur (vraie migration, ex. rachcou) continue de lever. Les 11 produits en base sont préservés (MISS_GRACE) et se réactiveront si le marchand reconnecte son domaine. Sync réel 2026-10-19: erablieredanielrobert.com ok / 0 produit; non-régression kievepauze.com ok / 40 (chemin Wix nominal intact). pm2 restart fabri-ka-sync fait, web local 200. NE PAS RE-REVERTER tant que le domaine sert ConnectYourDomain (re-sonder LIVE: curl -s https://www.erablieredanielrobert.com/ | grep ConnectYourDomain).
      Simon-Pierre Boucher · 1 file +13 −1
    6. Revert "[ka6] fix connecteur marchelarecolte.ca: 6e application du fix _domain_parked WHC enchères, restauration par checkout du commit validé 338d7ea (la 5e, 338d7ea du 10-18 matin, a été PERDUE LE JOUR MÊME par le revert concurrent 41162d5 — la guerre de reverts continue; même méthode checkout+commit frais qui a tenu pour foodcrayon d6022b5). Cause racine inchangée, re-vérifiée live 2026-10-19: le domaine (expiré 07-21, ré-enregistré 2026-10-07 par WHC, AUX ENCHÈRES depuis ~10-10) répond 302 hors-domaine vers https://whc.ca/domain-names/auctions/marchelarecolte.ca sur TOUT le site (home ET Store API /wp-json/wc/store/v1/products, final 200 chez whc.ca) — le WordPress d'origine n'existe plus. Sans le fix, le HTML d'enchères (suivi de redirection, 200) est parsé en JSON → « Expecting value » → broken (4 échecs consécutifs au scan). Avec: _domain_parked() détecte la redirection finale hors-domaine (urlparse(r.url): hôte whc.ca + chemin /domain-names/auctions/) ET le marqueur corps « Domain registered at WHC.ca » (ancienne forme du parking) → return [] → catalogue vide FIDÈLE (médiane historique 0.0, boutique jamais garnie). Fichier strictement identique aux 5 applications validées (git checkout 338d7ea -- fabrika/connectors/woocommerce.py, diff vide vérifié). Sync réel 2026-10-19: marchelarecolte.ca ok / 0 produit (22 s); non-régression lamaisondubleuet.com ok / 66 produits (chemin Woo nominal intact). pm2 restart fabri-ka-sync fait, web local 200. NE PAS RE-REVERTER tant que le domaine redirige vers les enchères WHC — re-sonder LIVE (curl -sI https://marchelarecolte.ca/) avant de toucher à _domain_parked; si un acheteur installe une boutique, le connecteur se réactivera tout seul."
      …
      This reverts commit 2cc7b63be4985464add118728fa6c688dd057544.
      Simon-Pierre Boucher · 1 file +2 −13
    7. [ka6] fix connecteur marchelarecolte.ca: 6e application du fix _domain_parked WHC enchères, restauration par checkout du commit validé 338d7ea (la 5e, 338d7ea du 10-18 matin, a été PERDUE LE JOUR MÊME par le revert concurrent 41162d5 — la guerre de reverts continue; même méthode checkout+commit frais qui a tenu pour foodcrayon d6022b5). Cause racine inchangée, re-vérifiée live 2026-10-19: le domaine (expiré 07-21, ré-enregistré 2026-10-07 par WHC, AUX ENCHÈRES depuis ~10-10) répond 302 hors-domaine vers https://whc.ca/domain-names/auctions/marchelarecolte.ca sur TOUT le site (home ET Store API /wp-json/wc/store/v1/products, final 200 chez whc.ca) — le WordPress d'origine n'existe plus. Sans le fix, le HTML d'enchères (suivi de redirection, 200) est parsé en JSON → « Expecting value » → broken (4 échecs consécutifs au scan). Avec: _domain_parked() détecte la redirection finale hors-domaine (urlparse(r.url): hôte whc.ca + chemin /domain-names/auctions/) ET le marqueur corps « Domain registered at WHC.ca » (ancienne forme du parking) → return [] → catalogue vide FIDÈLE (médiane historique 0.0, boutique jamais garnie). Fichier strictement identique aux 5 applications validées (git checkout 338d7ea -- fabrika/connectors/woocommerce.py, diff vide vérifié). Sync réel 2026-10-19: marchelarecolte.ca ok / 0 produit (22 s); non-régression lamaisondubleuet.com ok / 66 produits (chemin Woo nominal intact). pm2 restart fabri-ka-sync fait, web local 200. NE PAS RE-REVERTER tant que le domaine redirige vers les enchères WHC — re-sonder LIVE (curl -sI https://marchelarecolte.ca/) avant de toucher à _domain_parked; si un acheteur installe une boutique, le connecteur se réactivera tout seul.
      Simon-Pierre Boucher · 1 file +13 −2
  12. Sun, Oct 18, 2026 2

    1. Revert "[ka6] fix connecteur foodcrayon.com: 17e application du fix 402 par ÉDITION DIRECTE + commit frais (la 16e, d44e8c1 du 10-17, a été PERDUE LE JOUR MÊME par le revert concurrent caec73a — la guerre de reverts continue; c'est la variante édition directe qui a stabilisé le fix 428 Wix à sa 8e application, 066b759, d'où le changement de forme vs les revert-du-revert précédents). Cause racine inchangée, re-vérifiée live 2026-10-18: foodcrayon.com répond HTTP 402 {"errors":"Unavailable Shop"} (abonnement Shopify gelé) sur /products.json — en direct le domaine sert le challenge Cloudflare 429, le 402 upstream est confirmé via Scrapfly ASP (status_code 402, corps Unavailable Shop). Sans le fix, le 402 épuise les retries curl + Scrapfly puis propage une erreur → broken (4 échecs consécutifs au scan du jour); avec: 402 = _StorefrontLockedError comme le 401 (chemin direct code in ("401","402") + fallback Scrapfly "upstream 402") → catalogue vide fidèle à la source, sync ok. Fichier strictement identique aux 16 applications validées (diff vide vs d44e8c1, vérifié). Sync réel 2026-10-18: foodcrayon.com ok / 0 produit (médiane 0.0); non-régression 1001perles.ca ok / 304 produits (chemin Shopify nominal intact). pm2 restart fabri-ka-sync fait, web local 200. NE PAS RE-REVERTER tant que le site répond 402 upstream (re-sonder via Scrapfly: le direct renvoie 429 Cloudflare, PAS le 402)."
      …
      This reverts commit 02e534b8a78c1e588652a86a0f5d6745a4996088.
      Simon-Pierre Boucher · 1 file +5 −7
Menu

Theme