SPB Git

spb/fabri-ka

Public

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

Revert "[ka6] fix connecteur designgama.com: domaine expiré + clientHold registrar → NXDOMAIN mondial, gestion _wix_domain_nxdomain → catalogue vide fidèle. Cause racine vérifiée live 2026-10-03: le domaine a expiré le 2026-10-02 (registrar Wix.com Ltd.) et a été mis en clientHold le 03 à 08:49 UTC — retiré de la zone DNS, NXDOMAIN mondial (résolveur local, 8.8.8.8, DoH dns.google Status 3 sur www ET apex), timing qui colle au 1er échec de sync (~08:51 UTC). L'entreprise est vivante (Serper: Facebook/Instagram/LinkedIn actifs, expansion récente) et Google n'indexe que designgama.com — pas de migration, panne d'adresse probablement temporaire (renouvellement en grâce). Sans le fix: le direct échoue en ConnectionError, la chaîne de secours remonte un 200 à CORPS VIDE, r.json() plante → « Expecting value » (3 échecs) → broken; _wix_domain_parked ne matche pas (port 80 injoignable en NXDOMAIN). Fix minimal wix.py, même philosophie que _wix_domain_parked (b7cb895)/_domain_parked (dd99f2b): corps non-JSON sur /_api/v1/access-tokens ET NXDOMAIN confirmé chez un résolveur public en DoH (dns.google, Status 3 exigé sur l'hôte ET l'apex — insensible à une panne du résolveur local du nœud) → return [] (0 fidèle, sync ok). Un non-JSON sans ce marqueur continue de lever l'erreur — pas de masquage. Sync réel 2026-10-03: designgama.com ok / 0 produit, removed=0 (les 138 produits en base préservés, active=138, réactivation auto si le domaine est renouvelé); non-régression kievepauze.com ok / 40 produits (chemin Wix nominal intact) + témoin _wix_domain_nxdomain False sur kievepauze. pm2 restart fabri-ka-sync fait, web local 200. Si le domaine revient (renouvellement), le sync repartira tout seul; si le clientHold persiste des mois, envisager site_source_mort."

This reverts commit 524c7435f07ddf9637478e4ee0df9aa9735d0e91.
Simon-Pierre Boucher committed (Oct 4, 2026) parent 524c743 Browse files

1 changed file +4 −26

Unified Split
modified fabrika/connectors/wix.py +4 −26
@@ -44,12 +44,10 @@ class WixConnector(BaseConnector):
44 44 # Corps non-JSON (souvent un 200 vide remonté par la chaîne de
45 45 # secours quand le direct échoue). Si le domaine est déconnecté de
46 46 # Wix — parking « expiredwixdomain.com » servi par l'infra Wix
47 − # elle-même sur le port 80 (ex. baraqueapots.com) — ou carrément
48 − # retiré de la zone DNS (NXDOMAIN mondial, ex. designgama.com
49 − # expiré + clientHold 2026-10-03) — la boutique n'existe plus à
50 − # cette adresse : catalogue vide fidèle. Sans l'un de ces
51 − # marqueurs, on propage l'erreur comme avant (pas de masquage).
52 − if self._wix_domain_parked() or self._wix_domain_nxdomain():
47 + # elle-même sur le port 80 (ex. baraqueapots.com) — la boutique
48 + # n'existe plus à cette adresse : catalogue vide fidèle. Sans ce
49 + # marqueur, on propage l'erreur comme avant (pas de masquage).
50 + if self._wix_domain_parked():
53 51 return []
54 52 raise
55 53 apps = body.get("apps", {})
@@ -77,26 +75,6 @@ class WixConnector(BaseConnector):
77 75 return (r.status_code in (301, 302)
78 76 and "expiredwixdomain" in (r.headers.get("Location") or ""))
79 77
80 − def _wix_domain_nxdomain(self) -> bool:
81 − """True si le domaine a disparu du DNS mondial : NXDOMAIN (Status 3)
82 − chez un résolveur public pour l'hôte ET son apex — typiquement un
83 − domaine expiré mis en clientHold par le registrar, donc retiré de la
84 − zone (ex. designgama.com, expiré 2026-10-02, clientHold Wix le 03).
85 − Vérifié en DNS-over-HTTPS (dns.google) pour ne pas confondre avec une
86 − panne du résolveur local du nœud ; en cas de doute (DoH injoignable,
87 − Status != 3) on renvoie False et l'erreur se propage — pas de masquage."""
88 − host = (_urlsplit(self.base).netloc or self.base).split(":")[0]
89 − apex = host[4:] if host.startswith("www.") else host
90 − for name in {host, apex}:
91 − try:
92 − r = _requests.get("https://dns.google/resolve",
93 − params={"name": name, "type": "A"}, timeout=15)
94 − if r.json().get("Status") != 3:
95 − return False
96 − except (ValueError, _requests.RequestException):
97 − return False
98 − return True
99 −
100 78 # ------------------------------------------------------------------ V3 --
101 79 def _fetch_v3(self, inst: str) -> list[Product]:
102 80 """Catalogue V3 : POST wixapis.com/stores/v3/products/query, le jeton
103 81
Menu

Theme