SPB Git forge

spb/fabri-ka

Public

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

217commits 1branches 0releases
66.1 MBsize
maindefault branch
7 h agolast push
Python 38.4% HTML 30.3% TypeScript 17.2% CSS 11% JavaScript 3.2%

Supervision & réparation boutiques : fenêtre sync_log paramétrable, canadel/rose réparées, 91 Wix sans app Boutique désactivées

- /api/stats : nouveau paramètre optionnel syncs_since_h (heures) — retourne
  toutes les entrées du sync_log depuis now-h (ORDER BY ts DESC LIMIT 4000),
  minimum les 20 dernières ; sans paramètre, comportement inchangé (30
  entrées). Corrige l artefact du moniteur central qui voyait « 1723 produits
  vs médiane 8469 » : fenêtre de 30 syncs sur ~1 700 boutiques/cycle, le
  volume réel (355 k produits publiés) n a jamais chuté.
- connecteurs : dépassement de délai par boutique via la clé timeout du
  registre (base.py) — canadel.com (Store API ~50 s/page de 100) passait en
  timeout 30 s puis Scrapfly 422 ; timeout 90 -> 517 produits synchronisés.
- rose.ca : boutique migrée de WooCommerce (Store API vide sur www.rose.ca)
  vers Shopify boutique.rose.ca -> registre mis à jour (url/platform/
  endpoint), 6 produits récupérés (anti-bot Shopify géré par le repli
  Scrapfly existant).
- registre : 91 boutiques Wix désactivées (enabled=false + disabled_reason)
  après audit live des 170 Wix à 0 produit — 90 sans app Wix Stores (jamais
  de catalogue accessible ; build_registry assigne l endpoint Wix par défaut
  dès que la plateforme est wix) + drasca.ca (n est plus un site Wix). Les
  79 autres : app présente mais catalogue réellement vide ou entièrement
  masqué (fermes/CSA saisonnières — vérifié par rendu JS et catalog-reader,
  totalResults=0) -> laissées actives, le 0 est exact.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Simon-Pierre Boucher committed 1 mo ago (Aug 23, 2026) parent 5f69a04

3 changed files +299 −183

modified data/stores.json +273 −180
@@ -2841,7 +2841,8 @@
2841 2841 "ecommerce": true,
2842 2842 "verification_date": "2026-08-12",
2843 2843 "status": "probable",
2844 − "enabled": true
2844 + "enabled": false,
2845 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
2845 2846 },
2846 2847 {
2847 2848 "id": "alimentsmeretmonde.com",
@@ -6814,7 +6815,7 @@
6814 6815 "ecommerce": true,
6815 6816 "verification_date": "2026-08-12",
6816 6817 "status": "verified",
6817 − "enabled": true,
6818 + "enabled": false,
6818 6819 "geo": {
6819 6820 "lat": 46.6996,
6820 6821 "lng": -72.643,
@@ -6827,7 +6828,8 @@
6827 6828 "detail": "Certification Les Produits du Québec",
6828 6829 "source": "lesproduitsduquebec_ent"
6829 6830 }
6830 − ]
6831 + ],
6832 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
6831 6833 },
6832 6834 {
6833 6835 "id": "ateliermajuli.com",
@@ -7163,13 +7165,14 @@
7163 7165 "ecommerce": true,
7164 7166 "verification_date": "2026-08-12",
7165 7167 "status": "verified",
7166 − "enabled": true,
7168 + "enabled": false,
7167 7169 "geo": {
7168 7170 "lat": 46.8524,
7169 7171 "lng": -72.0259,
7170 7172 "city": "Capitale-Nationale (Stoneham)",
7171 7173 "precision": "fsa"
7172 − }
7174 + },
7175 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
7173 7176 },
7174 7177 {
7175 7178 "id": "ateliervcuir.com",
@@ -8387,13 +8390,14 @@
8387 8390 "ecommerce": true,
8388 8391 "verification_date": "2026-08-12",
8389 8392 "status": "probable",
8390 − "enabled": true,
8393 + "enabled": false,
8391 8394 "geo": {
8392 8395 "lat": 47.6259,
8393 8396 "lng": -70.0967,
8394 8397 "city": "La Malbaie",
8395 8398 "precision": "fsa"
8396 − }
8399 + },
8400 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
8397 8401 },
8398 8402 {
8399 8403 "id": "aubergelesunshine.com",
@@ -8821,13 +8825,14 @@
8821 8825 "ecommerce": true,
8822 8826 "verification_date": "2026-08-12",
8823 8827 "status": "verified",
8824 − "enabled": true,
8828 + "enabled": false,
8825 8829 "geo": {
8826 8830 "lat": 47.6525,
8827 8831 "lng": -70.4067,
8828 8832 "city": "Le Fjord (Forestville)",
8829 8833 "precision": "fsa"
8830 − }
8834 + },
8835 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
8831 8836 },
8832 8837 {
8833 8838 "id": "aucoeurdesbois.ca",
@@ -10750,13 +10755,14 @@
10750 10755 "ecommerce": true,
10751 10756 "verification_date": "2026-08-12",
10752 10757 "status": "probable",
10753 − "enabled": true,
10758 + "enabled": false,
10754 10759 "geo": {
10755 10760 "lat": 46.8524,
10756 10761 "lng": -72.0259,
10757 10762 "city": "Capitale-Nationale (Stoneham)",
10758 10763 "precision": "fsa"
10759 − }
10764 + },
10765 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
10760 10766 },
10761 10767 {
10762 10768 "id": "ayke.ca",
@@ -10988,13 +10994,14 @@
10988 10994 "ecommerce": true,
10989 10995 "verification_date": "2026-08-12",
10990 10996 "status": "verified",
10991 − "enabled": true,
10997 + "enabled": false,
10992 10998 "geo": {
10993 10999 "lat": 47.4454,
10994 11000 "lng": -70.5199,
10995 11001 "city": "Baie-Saint-Paul",
10996 11002 "precision": "fsa"
10997 − }
11003 + },
11004 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
10998 11005 },
10999 11006 {
11000 11007 "id": "baiesaintpaul.com",
@@ -11073,13 +11080,14 @@
11073 11080 "ecommerce": true,
11074 11081 "verification_date": "2026-08-12",
11075 11082 "status": "verified",
11076 − "enabled": true,
11083 + "enabled": false,
11077 11084 "geo": {
11078 11085 "lat": 47.6525,
11079 11086 "lng": -70.4067,
11080 11087 "city": "Le Fjord (Forestville)",
11081 11088 "precision": "fsa"
11082 − }
11089 + },
11090 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
11083 11091 },
11084 11092 {
11085 11093 "id": "baiestpomme.com",
@@ -14468,13 +14476,14 @@
14468 14476 "ecommerce": true,
14469 14477 "verification_date": "2026-08-12",
14470 14478 "status": "verified",
14471 − "enabled": true,
14479 + "enabled": false,
14472 14480 "geo": {
14473 14481 "lat": 45.72,
14474 14482 "lng": -74.0327,
14475 14483 "city": "Mirabel Southwest",
14476 14484 "precision": "fsa"
14477 − }
14485 + },
14486 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
14478 14487 },
14479 14488 {
14480 14489 "id": "bistrostcharles.com",
@@ -14549,13 +14558,14 @@
14549 14558 "ecommerce": true,
14550 14559 "verification_date": "2026-08-12",
14551 14560 "status": "verified",
14552 − "enabled": true,
14561 + "enabled": false,
14553 14562 "geo": {
14554 14563 "lat": 47.4454,
14555 14564 "lng": -70.5199,
14556 14565 "city": "Baie-Saint-Paul",
14557 14566 "precision": "fsa"
14558 − }
14567 + },
14568 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
14559 14569 },
14560 14570 {
14561 14571 "id": "bizzcoop.com",
@@ -15767,13 +15777,14 @@
15767 15777 "ecommerce": true,
15768 15778 "verification_date": "2026-08-12",
15769 15779 "status": "probable",
15770 − "enabled": true,
15780 + "enabled": false,
15771 15781 "geo": {
15772 15782 "lat": 45.8373,
15773 15783 "lng": -74.1387,
15774 15784 "city": "Lanaudière-Sud (Prévost)",
15775 15785 "precision": "fsa"
15776 − }
15786 + },
15787 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
15777 15788 },
15778 15789 {
15779 15790 "id": "boisechoquette.com",
@@ -19611,13 +19622,14 @@
19611 19622 "ecommerce": true,
19612 19623 "verification_date": "2026-08-12",
19613 19624 "status": "verified",
19614 − "enabled": true,
19625 + "enabled": false,
19615 19626 "geo": {
19616 19627 "lat": 48.3133,
19617 19628 "lng": -70.8557,
19618 19629 "city": "La Baie",
19619 19630 "precision": "fsa"
19620 − }
19631 + },
19632 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
19621 19633 },
19622 19634 {
19623 19635 "id": "brasseriesirjohn.com",
@@ -27203,13 +27215,14 @@
27203 27215 "ecommerce": true,
27204 27216 "verification_date": "2026-08-12",
27205 27217 "status": "verified",
27206 − "enabled": true,
27218 + "enabled": false,
27207 27219 "geo": {
27208 27220 "lat": 47.695,
27209 27221 "lng": -70.2239,
27210 27222 "city": "Clermont",
27211 27223 "precision": "fsa"
27212 − }
27224 + },
27225 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
27213 27226 },
27214 27227 {
27215 27228 "id": "chaloupecommere.ca",
@@ -27704,13 +27717,14 @@
27704 27717 "ecommerce": true,
27705 27718 "verification_date": "2026-08-12",
27706 27719 "status": "verified",
27707 − "enabled": true,
27720 + "enabled": false,
27708 27721 "geo": {
27709 27722 "lat": 48.4337,
27710 27723 "lng": -71.0225,
27711 27724 "city": "Chicoutimi East",
27712 27725 "precision": "fsa"
27713 − }
27726 + },
27727 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
27714 27728 },
27715 27729 {
27716 27730 "id": "charcuteriefortin.com",
@@ -30326,13 +30340,14 @@
30326 30340 "ecommerce": true,
30327 30341 "verification_date": "2026-08-12",
30328 30342 "status": "verified",
30329 − "enabled": true,
30343 + "enabled": false,
30330 30344 "geo": {
30331 30345 "lat": 45.5462,
30332 30346 "lng": -73.2339,
30333 30347 "city": "Beloeil West",
30334 30348 "precision": "fsa"
30335 − }
30349 + },
30350 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
30336 30351 },
30337 30352 {
30338 30353 "id": "cidreriedragos.com",
@@ -30446,13 +30461,14 @@
30446 30461 "ecommerce": true,
30447 30462 "verification_date": "2026-08-12",
30448 30463 "status": "verified",
30449 − "enabled": true,
30464 + "enabled": false,
30450 30465 "geo": {
30451 30466 "lat": 46.8524,
30452 30467 "lng": -72.0259,
30453 30468 "city": "Capitale-Nationale (Stoneham)",
30454 30469 "precision": "fsa"
30455 − }
30470 + },
30471 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
30456 30472 },
30457 30473 {
30458 30474 "id": "cidreriemilton.com",
@@ -33586,7 +33602,7 @@
33586 33602 "ecommerce": true,
33587 33603 "verification_date": "2026-08-12",
33588 33604 "status": "verified",
33589 − "enabled": true,
33605 + "enabled": false,
33590 33606 "geo": {
33591 33607 "lat": 49.1633,
33592 33608 "lng": -68.3335,
@@ -33605,7 +33621,8 @@
33605 33621 "source": "cartv_bio",
33606 33622 "match": "domaine"
33607 33623 }
33608 − ]
33624 + ],
33625 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
33609 33626 },
33610 33627 {
33611 33628 "id": "cooplackeno.ca",
@@ -34432,7 +34449,7 @@
34432 34449 "ecommerce": true,
34433 34450 "verification_date": "2026-08-12",
34434 34451 "status": "verified",
34435 − "enabled": true,
34452 + "enabled": false,
34436 34453 "geo": {
34437 34454 "lat": 46.9055,
34438 34455 "lng": -70.7456,
@@ -34445,7 +34462,8 @@
34445 34462 "detail": "Arrêt gourmand certifié (Chaudière-Appalaches)",
34446 34463 "source": "arretsgourmands"
34447 34464 }
34448 − ]
34465 + ],
34466 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
34449 34467 },
34450 34468 {
34451 34469 "id": "courgescie.com",
@@ -37990,7 +38008,7 @@
37990 38008 "ecommerce": true,
37991 38009 "verification_date": "2026-08-12",
37992 38010 "status": "verified",
37993 − "enabled": true,
38011 + "enabled": false,
37994 38012 "geo": {
37995 38013 "lat": 46.9055,
37996 38014 "lng": -70.7456,
@@ -38003,7 +38021,8 @@
38003 38021 "detail": "Arrêt gourmand certifié (Chaudière-Appalaches)",
38004 38022 "source": "arretsgourmands"
38005 38023 }
38006 − ]
38024 + ],
38025 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
38007 38026 },
38008 38027 {
38009 38028 "id": "metamorphoseonaturel.ca",
@@ -39824,7 +39843,7 @@
39824 39843 "ecommerce": true,
39825 39844 "verification_date": "2026-08-12",
39826 39845 "status": "verified",
39827 − "enabled": true,
39846 + "enabled": false,
39828 39847 "geo": {
39829 39848 "lat": 45.6587,
39830 39849 "lng": -73.5236,
@@ -39837,7 +39856,8 @@
39837 39856 "detail": "Certification Les Produits du Québec",
39838 39857 "source": "lesproduitsduquebec_ent"
39839 39858 }
39840 − ]
39859 + ],
39860 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
39841 39861 },
39842 39862 {
39843 39863 "id": "dmgpharma.com",
@@ -40729,13 +40749,14 @@
40729 40749 "ecommerce": true,
40730 40750 "verification_date": "2026-08-12",
40731 40751 "status": "verified",
40732 − "enabled": true,
40752 + "enabled": false,
40733 40753 "geo": {
40734 40754 "lat": 45.3973,
40735 40755 "lng": -72.8797,
40736 40756 "city": "Estrie-Ouest (Fulford)",
40737 40757 "precision": "fsa"
40738 − }
40758 + },
40759 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
40739 40760 },
40740 40761 {
40741 40762 "id": "domainedelarivieresamson.com",
@@ -42162,7 +42183,7 @@
42162 42183 "ecommerce": true,
42163 42184 "verification_date": "2026-08-12",
42164 42185 "status": "verified",
42165 − "enabled": true,
42186 + "enabled": false,
42166 42187 "geo": {
42167 42188 "lat": 47.6843,
42168 42189 "lng": -68.8681,
@@ -42183,7 +42204,8 @@
42183 42204 "source": "cartv_bio",
42184 42205 "match": "domaine"
42185 42206 }
42186 − ]
42207 + ],
42208 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
42187 42209 },
42188 42210 {
42189 42211 "id": "dominicdufourjoaillier.com",
@@ -42632,7 +42654,7 @@
42632 42654 "ecommerce": true,
42633 42655 "verification_date": "2026-08-12",
42634 42656 "status": "probable",
42635 − "enabled": true,
42657 + "enabled": false,
42636 42658 "geo": {
42637 42659 "lat": 45.0784,
42638 42660 "lng": -73.0291,
@@ -42645,7 +42667,8 @@
42645 42667 "detail": "Certification Aliments du Québec (adhérent vérifié)",
42646 42668 "source": "alimentsduquebec_ent"
42647 42669 }
42648 − ]
42670 + ],
42671 + "disabled_reason": "n'est plus un site Wix (access-tokens 404) — plateforme inconnue, à re-sonder (2026-08-23)"
42649 42672 },
42650 42673 {
42651 42674 "id": "druidebio.com",
@@ -44525,7 +44548,7 @@
44525 44548 "ecommerce": true,
44526 44549 "verification_date": "2026-08-12",
44527 44550 "status": "verified",
44528 − "enabled": true,
44551 + "enabled": false,
44529 44552 "geo": {
44530 44553 "lat": 46.7557,
44531 44554 "lng": -71.124,
@@ -44549,7 +44572,8 @@
44549 44572 "source": "cartv_bio",
44550 44573 "match": "domaine"
44551 44574 }
44552 − ]
44575 + ],
44576 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
44553 44577 },
44554 44578 {
44555 44579 "id": "entreluneetsol.com",
@@ -52452,7 +52476,7 @@
52452 52476 "ecommerce": true,
52453 52477 "verification_date": "2026-08-12",
52454 52478 "status": "verified",
52455 − "enabled": true,
52479 + "enabled": false,
52456 52480 "geo": {
52457 52481 "lat": 46.9055,
52458 52482 "lng": -70.7456,
@@ -52465,7 +52489,8 @@
52465 52489 "detail": "Arrêt gourmand certifié (Chaudière-Appalaches)",
52466 52490 "source": "arretsgourmands"
52467 52491 }
52468 − ]
52492 + ],
52493 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
52469 52494 },
52470 52495 {
52471 52496 "id": "fermelesmoutaines.com",
@@ -52499,13 +52524,14 @@
52499 52524 "ecommerce": true,
52500 52525 "verification_date": "2026-08-12",
52501 52526 "status": "verified",
52502 − "enabled": true,
52527 + "enabled": false,
52503 52528 "geo": {
52504 52529 "lat": 48.3942,
52505 52530 "lng": -71.6775,
52506 52531 "city": "Hébertville",
52507 52532 "precision": "fsa"
52508 − }
52533 + },
52534 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
52509 52535 },
52510 52536 {
52511 52537 "id": "fermelucdufour.com",
@@ -53625,7 +53651,7 @@
53625 53651 "ecommerce": true,
53626 53652 "verification_date": "2026-08-12",
53627 53653 "status": "verified",
53628 − "enabled": true,
53654 + "enabled": false,
53629 53655 "geo": {
53630 53656 "lat": 46.9055,
53631 53657 "lng": -70.7456,
@@ -53638,7 +53664,8 @@
53638 53664 "detail": "Arrêt gourmand certifié (Chaudière-Appalaches)",
53639 53665 "source": "arretsgourmands"
53640 53666 }
53641 − ]
53667 + ],
53668 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
53642 53669 },
53643 53670 {
53644 53671 "id": "fermestecatherine.ca",
@@ -60847,13 +60874,14 @@
60847 60874 "ecommerce": true,
60848 60875 "verification_date": "2026-08-12",
60849 60876 "status": "verified",
60850 − "enabled": true,
60877 + "enabled": false,
60851 60878 "geo": {
60852 60879 "lat": 46.2635,
60853 60880 "lng": -70.7929,
60854 60881 "city": "Chaudière-Nord (Saint-Joseph- De-Beauce)",
60855 60882 "precision": "fsa"
60856 − }
60883 + },
60884 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
60857 60885 },
60858 60886 {
60859 60887 "id": "gibou.ca",
@@ -65461,13 +65489,14 @@
65461 65489 "ecommerce": true,
65462 65490 "verification_date": "2026-08-12",
65463 65491 "status": "verified",
65464 − "enabled": true,
65492 + "enabled": false,
65465 65493 "geo": {
65466 65494 "lat": 48.4359,
65467 65495 "lng": -71.2318,
65468 65496 "city": "Jonquière Central",
65469 65497 "precision": "fsa"
65470 − }
65498 + },
65499 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
65471 65500 },
65472 65501 {
65473 65502 "id": "horacejewelry.com",
@@ -68709,7 +68738,7 @@
68709 68738 "ecommerce": true,
68710 68739 "verification_date": "2026-08-12",
68711 68740 "status": "verified",
68712 − "enabled": true,
68741 + "enabled": false,
68713 68742 "geo": {
68714 68743 "lat": 48.5592,
68715 68744 "lng": -71.6416,
@@ -68728,7 +68757,8 @@
68728 68757 "source": "cartv_bio",
68729 68758 "match": "nom_unique"
68730 68759 }
68731 − ]
68760 + ],
68761 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
68732 68762 },
68733 68763 {
68734 68764 "id": "jardinsnaturlutte.com",
@@ -72726,7 +72756,7 @@
72726 72756 "ecommerce": true,
72727 72757 "verification_date": "2026-08-12",
72728 72758 "status": "verified",
72729 − "enabled": true,
72759 + "enabled": false,
72730 72760 "geo": {
72731 72761 "lat": 46.2635,
72732 72762 "lng": -70.7929,
@@ -72739,7 +72769,8 @@
72739 72769 "detail": "Arrêt gourmand certifié (Chaudière-Appalaches)",
72740 72770 "source": "arretsgourmands"
72741 72771 }
72742 − ]
72772 + ],
72773 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
72743 72774 },
72744 72775 {
72745 72776 "id": "laboucheedouble.com",
@@ -75078,7 +75109,7 @@
75078 75109 "ecommerce": true,
75079 75110 "verification_date": "2026-08-12",
75080 75111 "status": "verified",
75081 − "enabled": true,
75112 + "enabled": false,
75082 75113 "geo": {
75083 75114 "lat": 46.6996,
75084 75115 "lng": -72.643,
@@ -75099,7 +75130,8 @@
75099 75130 "source": "cartv_bio",
75100 75131 "match": "domaine"
75101 75132 }
75102 − ]
75133 + ],
75134 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
75103 75135 },
75104 75136 {
75105 75137 "id": "lafermettedupape.com",
@@ -75213,7 +75245,7 @@
75213 75245 "ecommerce": true,
75214 75246 "verification_date": "2026-08-12",
75215 75247 "status": "verified",
75216 − "enabled": true,
75248 + "enabled": false,
75217 75249 "geo": {
75218 75250 "lat": 45.6125,
75219 75251 "lng": -72.5205,
@@ -75226,7 +75258,8 @@
75226 75258 "detail": "Certification Aliments du Québec (adhérent vérifié)",
75227 75259 "source": "alimentsduquebec_ent"
75228 75260 }
75229 − ]
75261 + ],
75262 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
75230 75263 },
75231 75264 {
75232 75265 "id": "laforgedumalt.com",
@@ -76570,13 +76603,14 @@
76570 76603 "ecommerce": true,
76571 76604 "verification_date": "2026-08-12",
76572 76605 "status": "verified",
76573 − "enabled": true,
76606 + "enabled": false,
76574 76607 "geo": {
76575 76608 "lat": 45.242,
76576 76609 "lng": -72.0177,
76577 76610 "city": "Estrie-Est (Stanstead)",
76578 76611 "precision": "fsa"
76579 − }
76612 + },
76613 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
76580 76614 },
76581 76615 {
76582 76616 "id": "lalibellulerestoconvivial.com",
@@ -76609,7 +76643,7 @@
76609 76643 "ecommerce": true,
76610 76644 "verification_date": "2026-08-12",
76611 76645 "status": "verified",
76612 − "enabled": true,
76646 + "enabled": false,
76613 76647 "geo": {
76614 76648 "lat": 46.9055,
76615 76649 "lng": -70.7456,
@@ -76622,7 +76656,8 @@
76622 76656 "detail": "Arrêt gourmand certifié (Chaudière-Appalaches)",
76623 76657 "source": "arretsgourmands"
76624 76658 }
76625 − ]
76659 + ],
76660 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
76626 76661 },
76627 76662 {
76628 76663 "id": "lalichee.co",
@@ -76961,7 +76996,7 @@
76961 76996 "ecommerce": true,
76962 76997 "verification_date": "2026-08-12",
76963 76998 "status": "verified",
76964 − "enabled": true,
76999 + "enabled": false,
76965 77000 "geo": {
76966 77001 "lat": 46.9055,
76967 77002 "lng": -70.7456,
@@ -76974,7 +77009,8 @@
76974 77009 "detail": "Certification Aliments du Québec (adhérent vérifié)",
76975 77010 "source": "alimentsduquebec_ent"
76976 77011 }
76977 − ]
77012 + ],
77013 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
76978 77014 },
76979 77015 {
76980 77016 "id": "lamaisondebibi.com",
@@ -77369,7 +77405,7 @@
77369 77405 "ecommerce": true,
77370 77406 "verification_date": "2026-08-12",
77371 77407 "status": "verified",
77372 − "enabled": true,
77408 + "enabled": false,
77373 77409 "geo": {
77374 77410 "lat": 46.9055,
77375 77411 "lng": -70.7456,
@@ -77382,7 +77418,8 @@
77382 77418 "detail": "Arrêt gourmand certifié (Chaudière-Appalaches)",
77383 77419 "source": "arretsgourmands"
77384 77420 }
77385 − ]
77421 + ],
77422 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
77386 77423 },
77387 77424 {
77388 77425 "id": "microbrasserielamemphre.com",
@@ -84409,13 +84446,14 @@
84409 84446 "ecommerce": true,
84410 84447 "verification_date": "2026-08-12",
84411 84448 "status": "verified",
84412 − "enabled": true,
84449 + "enabled": false,
84413 84450 "geo": {
84414 84451 "lat": 48.5468,
84415 84452 "lng": -71.6399,
84416 84453 "city": "Alma Southeast",
84417 84454 "precision": "fsa"
84418 − }
84455 + },
84456 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
84419 84457 },
84420 84458 {
84421 84459 "id": "lesaintfut.com",
@@ -87364,13 +87402,14 @@
87364 87402 "ecommerce": true,
87365 87403 "verification_date": "2026-08-12",
87366 87404 "status": "verified",
87367 − "enabled": true,
87405 + "enabled": false,
87368 87406 "geo": {
87369 87407 "lat": 48.5044,
87370 87408 "lng": -72.2165,
87371 87409 "city": "Roberval",
87372 87410 "precision": "fsa"
87373 − }
87411 + },
87412 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
87374 87413 },
87375 87414 {
87376 87415 "id": "lespinsonsdesrives.com",
@@ -88300,13 +88339,14 @@
88300 88339 "ecommerce": true,
88301 88340 "verification_date": "2026-08-12",
88302 88341 "status": "verified",
88303 − "enabled": true,
88342 + "enabled": false,
88304 88343 "geo": {
88305 88344 "lat": 46.2635,
88306 88345 "lng": -70.7929,
88307 88346 "city": "Chaudière-Nord (Saint-Joseph- De-Beauce)",
88308 88347 "precision": "fsa"
88309 − }
88348 + },
88349 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
88310 88350 },
88311 88351 {
88312 88352 "id": "lesviandesdautrefois.com",
@@ -90739,7 +90779,7 @@
90739 90779 "ecommerce": true,
90740 90780 "verification_date": "2026-08-12",
90741 90781 "status": "verified",
90742 − "enabled": true,
90782 + "enabled": false,
90743 90783 "geo": {
90744 90784 "lat": 46.1134,
90745 90785 "lng": -71.3108,
@@ -90752,7 +90792,8 @@
90752 90792 "detail": "Arrêt gourmand certifié (Chaudière-Appalaches)",
90753 90793 "source": "arretsgourmands"
90754 90794 }
90755 − ]
90795 + ],
90796 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
90756 90797 },
90757 90798 {
90758 90799 "id": "m0851.com",
@@ -91163,14 +91204,15 @@
91163 91204 "ecommerce": true,
91164 91205 "verification_date": "2026-08-12",
91165 91206 "status": "probable",
91166 − "enabled": true,
91207 + "enabled": false,
91167 91208 "store_kind": "revendeur",
91168 91209 "geo": {
91169 91210 "lat": 45.5252,
91170 91211 "lng": -73.5744,
91171 91212 "city": "Centre-Sud South",
91172 91213 "precision": "fsa"
91173 − }
91214 + },
91215 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
91174 91216 },
91175 91217 {
91176 91218 "id": "magasingeneralduquai.ca",
@@ -96323,7 +96365,8 @@
96323 96365 "ecommerce": true,
96324 96366 "verification_date": "2026-08-12",
96325 96367 "status": "verified",
96326 − "enabled": true
96368 + "enabled": false,
96369 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
96327 96370 },
96328 96371 {
96329 96372 "id": "menuverger.com",
@@ -98933,13 +98976,14 @@
98933 98976 "ecommerce": true,
98934 98977 "verification_date": "2026-08-12",
98935 98978 "status": "verified",
98936 − "enabled": true,
98979 + "enabled": false,
98937 98980 "geo": {
98938 98981 "lat": 45.1563,
98939 98982 "lng": -71.8095,
98940 98983 "city": "Coaticook",
98941 98984 "precision": "fsa"
98942 − }
98985 + },
98986 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
98943 98987 },
98944 98988 {
98945 98989 "id": "miels-liaison.ca",
@@ -99055,13 +99099,14 @@
99055 99099 "ecommerce": true,
99056 99100 "verification_date": "2026-08-12",
99057 99101 "status": "verified",
99058 − "enabled": true,
99102 + "enabled": false,
99059 99103 "geo": {
99060 99104 "lat": 45.242,
99061 99105 "lng": -72.0177,
99062 99106 "city": "Estrie-Est (Stanstead)",
99063 99107 "precision": "fsa"
99064 − }
99108 + },
99109 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
99065 99110 },
99066 99111 {
99067 99112 "id": "milleetunenoix.ca",
@@ -101133,13 +101178,14 @@
101133 101178 "ecommerce": true,
101134 101179 "verification_date": "2026-08-12",
101135 101180 "status": "verified",
101136 − "enabled": true,
101181 + "enabled": false,
101137 101182 "geo": {
101138 101183 "lat": 47.6525,
101139 101184 "lng": -70.4067,
101140 101185 "city": "Le Fjord (Forestville)",
101141 101186 "precision": "fsa"
101142 − }
101187 + },
101188 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
101143 101189 },
101144 101190 {
101145 101191 "id": "montellier.ca",
@@ -101677,13 +101723,14 @@
101677 101723 "ecommerce": true,
101678 101724 "verification_date": "2026-08-12",
101679 101725 "status": "verified",
101680 − "enabled": true,
101726 + "enabled": false,
101681 101727 "geo": {
101682 101728 "lat": 47.6525,
101683 101729 "lng": -70.4067,
101684 101730 "city": "Le Fjord (Forestville)",
101685 101731 "precision": "fsa"
101686 − }
101732 + },
101733 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
101687 101734 },
101688 101735 {
101689 101736 "id": "motelboutiquehygge.com",
@@ -101969,7 +102016,7 @@
101969 102016 "ecommerce": true,
101970 102017 "verification_date": "2026-08-12",
101971 102018 "status": "verified",
101972 − "enabled": true,
102019 + "enabled": false,
101973 102020 "geo": {
101974 102021 "lat": 45.3135,
101975 102022 "lng": -74.0573,
@@ -101993,7 +102040,8 @@
101993 102040 "source": "cartv_bio",
101994 102041 "match": "domaine"
101995 102042 }
101996 − ]
102043 + ],
102044 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
101997 102045 },
101998 102046 {
101999 102047 "id": "moulinmichel.com",
@@ -103359,13 +103407,14 @@
103359 103407 "ecommerce": true,
103360 103408 "verification_date": "2026-08-12",
103361 103409 "status": "verified",
103362 − "enabled": true,
103410 + "enabled": false,
103363 103411 "geo": {
103364 103412 "lat": 48.5774,
103365 103413 "lng": -72.441,
103366 103414 "city": "Saint-Prime",
103367 103415 "precision": "fsa"
103368 − }
103416 + },
103417 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
103369 103418 },
103370 103419 {
103371 103420 "id": "mushup.ca",
@@ -105597,13 +105646,14 @@
105597 105646 "ecommerce": true,
105598 105647 "verification_date": "2026-08-12",
105599 105648 "status": "verified",
105600 − "enabled": true,
105649 + "enabled": false,
105601 105650 "geo": {
105602 105651 "lat": 47.6525,
105603 105652 "lng": -70.4067,
105604 105653 "city": "Le Fjord (Forestville)",
105605 105654 "precision": "fsa"
105606 − }
105655 + },
105656 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
105607 105657 },
105608 105658 {
105609 105659 "id": "notrevraienature.com",
@@ -108052,14 +108102,15 @@
108052 108102 "ecommerce": true,
108053 108103 "verification_date": "2026-08-12",
108054 108104 "status": "probable",
108055 − "enabled": true,
108105 + "enabled": false,
108056 108106 "certifications": [
108057 108107 {
108058 108108 "label": "Les Produits du Québec",
108059 108109 "detail": "Certification Les Produits du Québec",
108060 108110 "source": "lesproduitsduquebec_ent"
108061 108111 }
108062 − ]
108112 + ],
108113 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
108063 108114 },
108064 108115 {
108065 108116 "id": "osekb.com",
@@ -109182,14 +109233,15 @@
109182 109233 "ecommerce": true,
109183 109234 "verification_date": "2026-08-12",
109184 109235 "status": "verified",
109185 − "enabled": true,
109236 + "enabled": false,
109186 109237 "store_kind": "revendeur",
109187 109238 "geo": {
109188 109239 "lat": 45.6488,
109189 109240 "lng": -73.8466,
109190 109241 "city": "Sainte-Thérèse- de-Blainville Northwest",
109191 109242 "precision": "fsa"
109192 − }
109243 + },
109244 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
109193 109245 },
109194 109246 {
109195 109247 "id": "papeteriesaintgilles.com",
@@ -109408,13 +109460,14 @@
109408 109460 "ecommerce": true,
109409 109461 "verification_date": "2026-08-12",
109410 109462 "status": "verified",
109411 − "enabled": true,
109463 + "enabled": false,
109412 109464 "geo": {
109413 109465 "lat": 47.6525,
109414 109466 "lng": -70.4067,
109415 109467 "city": "Le Fjord (Forestville)",
109416 109468 "precision": "fsa"
109417 − }
109469 + },
109470 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
109418 109471 },
109419 109472 {
109420 109473 "id": "paramedic-canada.com",
@@ -111282,7 +111335,8 @@
111282 111335 "ecommerce": true,
111283 111336 "verification_date": "2026-08-12",
111284 111337 "status": "verified",
111285 − "enabled": true
111338 + "enabled": false,
111339 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
111286 111340 },
111287 111341 {
111288 111342 "id": "perrotsweetmaple.com",
@@ -112184,14 +112238,15 @@
112184 112238 "ecommerce": true,
112185 112239 "verification_date": "2026-08-12",
112186 112240 "status": "probable",
112187 − "enabled": true,
112241 + "enabled": false,
112188 112242 "certifications": [
112189 112243 {
112190 112244 "label": "Aliments du Québec",
112191 112245 "detail": "Certification Aliments du Québec (adhérent vérifié)",
112192 112246 "source": "alimentsduquebec_ent"
112193 112247 }
112194 − ]
112248 + ],
112249 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
112195 112250 },
112196 112251 {
112197 112252 "id": "pierresdailleurs.ca",
@@ -113316,7 +113371,7 @@
113316 113371 "ecommerce": true,
113317 113372 "verification_date": "2026-08-12",
113318 113373 "status": "verified",
113319 − "enabled": true,
113374 + "enabled": false,
113320 113375 "geo": {
113321 113376 "lat": 46.8524,
113322 113377 "lng": -72.0259,
@@ -113329,7 +113384,8 @@
113329 113384 "detail": "Certification Aliments du Québec (adhérent vérifié)",
113330 113385 "source": "alimentsduquebec_ent"
113331 113386 }
113332 − ]
113387 + ],
113388 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
113333 113389 },
113334 113390 {
113335 113391 "id": "polysleep.ca",
@@ -115765,13 +115821,14 @@
115765 115821 "ecommerce": true,
115766 115822 "verification_date": "2026-08-12",
115767 115823 "status": "probable",
115768 − "enabled": true,
115824 + "enabled": false,
115769 115825 "geo": {
115770 115826 "lat": 46.6996,
115771 115827 "lng": -72.643,
115772 115828 "city": "Mauricie (Parent)",
115773 115829 "precision": "fsa"
115774 − }
115830 + },
115831 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
115775 115832 },
115776 115833 {
115777 115834 "id": "publoursnoir.com",
@@ -116643,13 +116700,14 @@
116643 116700 "ecommerce": true,
116644 116701 "verification_date": "2026-08-12",
116645 116702 "status": "verified",
116646 − "enabled": true,
116703 + "enabled": false,
116647 116704 "geo": {
116648 116705 "lat": 45.242,
116649 116706 "lng": -72.0177,
116650 116707 "city": "Estrie-Est (Stanstead)",
116651 116708 "precision": "fsa"
116652 − }
116709 + },
116710 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
116653 116711 },
116654 116712 {
116655 116713 "id": "rangementplus.com",
@@ -120042,14 +120100,15 @@
120042 120100 "ecommerce": true,
120043 120101 "verification_date": "2026-08-12",
120044 120102 "status": "verified",
120045 − "enabled": true,
120103 + "enabled": false,
120046 120104 "store_kind": "hors_mission",
120047 120105 "geo": {
120048 120106 "lat": 45.9914,
120049 120107 "lng": -72.3216,
120050 120108 "city": "Centre-du- Québec-Ouest (Saint- Bonaventure)",
120051 120109 "precision": "fsa"
120052 − }
120110 + },
120111 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
120053 120112 },
120054 120113 {
120055 120114 "id": "rucherboltonnois.net",
@@ -120166,7 +120225,7 @@
120166 120225 "ecommerce": true,
120167 120226 "verification_date": "2026-08-12",
120168 120227 "status": "verified",
120169 − "enabled": true,
120228 + "enabled": false,
120170 120229 "geo": {
120171 120230 "lat": 46.9055,
120172 120231 "lng": -70.7456,
@@ -120179,7 +120238,8 @@
120179 120238 "detail": "Certification Aliments du Québec (adhérent vérifié)",
120180 120239 "source": "alimentsduquebec_ent"
120181 120240 }
120182 − ]
120241 + ],
120242 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
120183 120243 },
120184 120244 {
120185 120245 "id": "rudimenterre.com",
@@ -129116,13 +129176,14 @@
129116 129176 "ecommerce": true,
129117 129177 "verification_date": "2026-08-12",
129118 129178 "status": "verified",
129119 − "enabled": true,
129179 + "enabled": false,
129120 129180 "geo": {
129121 129181 "lat": 47.6259,
129122 129182 "lng": -70.0967,
129123 129183 "city": "La Malbaie",
129124 129184 "precision": "fsa"
129125 − }
129185 + },
129186 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
129126 129187 },
129127 129188 {
129128 129189 "id": "tendreatelier.com",
@@ -131283,13 +131344,14 @@
131283 131344 "ecommerce": true,
131284 131345 "verification_date": "2026-08-12",
131285 131346 "status": "verified",
131286 − "enabled": true,
131347 + "enabled": false,
131287 131348 "geo": {
131288 131349 "lat": 47.6525,
131289 131350 "lng": -70.4067,
131290 131351 "city": "Le Fjord (Forestville)",
131291 131352 "precision": "fsa"
131292 − }
131353 + },
131354 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
131293 131355 },
131294 131356 {
131295 131357 "id": "triguena.ca",
@@ -135592,13 +135654,14 @@
135592 135654 "ecommerce": true,
135593 135655 "verification_date": "2026-08-12",
135594 135656 "status": "verified",
135595 − "enabled": true,
135657 + "enabled": false,
135596 135658 "geo": {
135597 135659 "lat": 45.282,
135598 135660 "lng": -72.139,
135599 135661 "city": "Magog",
135600 135662 "precision": "fsa"
135601 − }
135663 + },
135664 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
135602 135665 },
135603 135666 {
135604 135667 "id": "vignobledesbattures.com",
@@ -135632,13 +135695,14 @@
135632 135695 "ecommerce": true,
135633 135696 "verification_date": "2026-08-12",
135634 135697 "status": "verified",
135635 − "enabled": true,
135698 + "enabled": false,
135636 135699 "geo": {
135637 135700 "lat": 48.3448,
135638 135701 "lng": -70.9869,
135639 135702 "city": "Saguenay- Lac-St-Jean (Alouette)",
135640 135703 "precision": "fsa"
135641 − }
135704 + },
135705 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
135642 135706 },
135643 135707 {
135644 135708 "id": "vignobledomainebresee.com",
@@ -139102,13 +139166,14 @@
139102 139166 "ecommerce": true,
139103 139167 "verification_date": "2026-08-18",
139104 139168 "status": "probable",
139105 − "enabled": true,
139169 + "enabled": false,
139106 139170 "geo": {
139107 139171 "lat": 45.5428,
139108 139172 "lng": -73.5083,
139109 139173 "city": "Longueuil West",
139110 139174 "precision": "fsa"
139111 − }
139175 + },
139176 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
139112 139177 },
139113 139178 {
139114 139179 "id": "aubergegaspe.com",
@@ -139800,13 +139865,14 @@
139800 139865 "ecommerce": true,
139801 139866 "verification_date": "2026-08-18",
139802 139867 "status": "probable",
139803 − "enabled": true,
139868 + "enabled": false,
139804 139869 "geo": {
139805 139870 "lat": 46.8128,
139806 139871 "lng": -71.2194,
139807 139872 "city": "Quebec City East",
139808 139873 "precision": "fsa"
139809 − }
139874 + },
139875 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
139810 139876 },
139811 139877 {
139812 139878 "id": "boucherielapetitepatrie.ca",
@@ -143408,13 +143474,14 @@
143408 143474 "ecommerce": true,
143409 143475 "verification_date": "2026-08-18",
143410 143476 "status": "probable",
143411 − "enabled": true,
143477 + "enabled": false,
143412 143478 "geo": {
143413 143479 "lat": 45.5423,
143414 143480 "lng": -73.5616,
143415 143481 "city": "Hochelaga",
143416 143482 "precision": "fsa"
143417 − }
143483 + },
143484 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
143418 143485 },
143419 143486 {
143420 143487 "id": "insertech.ca",
@@ -144106,13 +144173,14 @@
144106 144173 "ecommerce": true,
144107 144174 "verification_date": "2026-08-18",
144108 144175 "status": "verified",
144109 − "enabled": true,
144176 + "enabled": false,
144110 144177 "geo": {
144111 144178 "lat": 45.0131,
144112 144179 "lng": -74.1744,
144113 144180 "city": "Montérégie- Ouest (Saint-Anicet)",
144114 144181 "precision": "fsa"
144115 − }
144182 + },
144183 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
144116 144184 },
144117 144185 {
144118 144186 "id": "lapausemagique.com",
@@ -144242,13 +144310,14 @@
144242 144310 "ecommerce": true,
144243 144311 "verification_date": "2026-08-18",
144244 144312 "status": "probable",
144245 − "enabled": true,
144313 + "enabled": false,
144246 144314 "geo": {
144247 144315 "lat": 46.2634,
144248 144316 "lng": -74.7687,
144249 144317 "city": "Laurentides-Nord (Montcalm)",
144250 144318 "precision": "fsa"
144251 − }
144319 + },
144320 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
144252 144321 },
144253 144322 {
144254 144323 "id": "lasublimeasperge.com",
@@ -144863,7 +144932,8 @@
144863 144932 "ecommerce": true,
144864 144933 "verification_date": "2026-08-18",
144865 144934 "status": "verified",
144866 − "enabled": true
144935 + "enabled": false,
144936 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
144867 144937 },
144868 144938 {
144869 144939 "id": "lesfromagesduverger.com",
@@ -144925,13 +144995,14 @@
144925 144995 "ecommerce": true,
144926 144996 "verification_date": "2026-08-18",
144927 144997 "status": "verified",
144928 − "enabled": true,
144998 + "enabled": false,
144929 144999 "geo": {
144930 145000 "lat": 46.3111,
144931 145001 "lng": -72.5718,
144932 145002 "city": "Trois-Rivières South",
144933 145003 "precision": "fsa"
144934 − }
145004 + },
145005 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
144935 145006 },
144936 145007 {
144937 145008 "id": "lespiegle.com",
@@ -146523,13 +146594,14 @@
146523 146594 "ecommerce": true,
146524 146595 "verification_date": "2026-08-18",
146525 146596 "status": "verified",
146526 − "enabled": true,
146597 + "enabled": false,
146527 146598 "geo": {
146528 146599 "lat": 46.3647,
146529 146600 "lng": -72.5558,
146530 146601 "city": "Trois-Rivières East",
146531 146602 "precision": "fsa"
146532 − }
146603 + },
146604 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
146533 146605 },
146534 146606 {
146535 146607 "id": "perrotperk.com",
@@ -147262,9 +147334,9 @@
147262 147334 {
147263 147335 "id": "rose.ca",
147264 147336 "name": "Produits du terroir - Fleuriste - Café",
147265 − "url": "https://www.rose.ca",
147266 − "platform": "woocommerce",
147267 − "catalog_endpoint": "/wp-json/wc/store/v1/products",
147337 + "url": "https://boutique.rose.ca",
147338 + "platform": "shopify",
147339 + "catalog_endpoint": "/products.json",
147268 147340 "city": "",
147269 147341 "region": "Centre-du-Québec",
147270 147342 "postal_prefix": "J2B",
@@ -147295,7 +147367,8 @@
147295 147367 "lng": -72.4841,
147296 147368 "city": "Drummondville South",
147297 147369 "precision": "fsa"
147298 − }
147370 + },
147371 + "migration_note": "boutique migrée de WooCommerce (www.rose.ca, Store API vide) vers Shopify boutique.rose.ca — 2026-08-23"
147299 147372 },
147300 147373 {
147301 147374 "id": "rubanbleu.ca",
@@ -149010,13 +149083,14 @@
149010 149083 "ecommerce": true,
149011 149084 "verification_date": "2026-08-18",
149012 149085 "status": "probable",
149013 − "enabled": true,
149086 + "enabled": false,
149014 149087 "geo": {
149015 149088 "lat": 45.5289,
149016 149089 "lng": -73.5928,
149017 149090 "city": "Plateau Mont-Royal North Central",
149018 149091 "precision": "fsa"
149019 − }
149092 + },
149093 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
149020 149094 },
149021 149095 {
149022 149096 "id": "visitecumberland.com",
@@ -149835,7 +149909,7 @@
149835 149909 "ecommerce": true,
149836 149910 "verification_date": "2026-08-19",
149837 149911 "status": "probable",
149838 − "enabled": true,
149912 + "enabled": false,
149839 149913 "certifications": [
149840 149914 {
149841 149915 "label": "Biologique — CARTV",
@@ -149854,7 +149928,8 @@
149854 149928 "lng": -73.6048,
149855 149929 "city": "Saint-Léonard North",
149856 149930 "precision": "fsa"
149857 − }
149931 + },
149932 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
149858 149933 },
149859 149934 {
149860 149935 "id": "alimentationnaturelle.ca",
@@ -151164,7 +151239,7 @@
151164 151239 "ecommerce": true,
151165 151240 "verification_date": "2026-08-19",
151166 151241 "status": "verified",
151167 − "enabled": true,
151242 + "enabled": false,
151168 151243 "certifications": [
151169 151244 {
151170 151245 "label": "Biologique — CARTV",
@@ -151183,7 +151258,8 @@
151183 151258 "lng": -73.6048,
151184 151259 "city": "Saint-Léonard North",
151185 151260 "precision": "fsa"
151186 − }
151261 + },
151262 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
151187 151263 },
151188 151264 {
151189 151265 "id": "barry-callebaut.com",
@@ -151511,7 +151587,8 @@
151511 151587 "ecommerce": true,
151512 151588 "verification_date": "2026-08-19",
151513 151589 "status": "verified",
151514 − "enabled": true
151590 + "enabled": false,
151591 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
151515 151592 },
151516 151593 {
151517 151594 "id": "bernards.ca",
@@ -151975,7 +152052,7 @@
151975 152052 "ecommerce": true,
151976 152053 "verification_date": "2026-08-19",
151977 152054 "status": "verified",
151978 − "enabled": true,
152055 + "enabled": false,
151979 152056 "certifications": [
151980 152057 {
151981 152058 "label": "Biologique — CARTV",
@@ -151995,7 +152072,8 @@
151995 152072 "lng": -74.1387,
151996 152073 "city": "Lanaudière-Sud (Prévost)",
151997 152074 "precision": "fsa"
151998 − }
152075 + },
152076 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
151999 152077 },
152000 152078 {
152001 152079 "id": "bocoboco.ca",
@@ -156162,13 +156240,14 @@
156162 156240 "ecommerce": true,
156163 156241 "verification_date": "2026-08-19",
156164 156242 "status": "verified",
156165 − "enabled": true,
156243 + "enabled": false,
156166 156244 "geo": {
156167 156245 "lat": 45.0131,
156168 156246 "lng": -74.1744,
156169 156247 "city": "Montérégie- Ouest (Saint-Anicet)",
156170 156248 "precision": "fsa"
156171 − }
156249 + },
156250 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
156172 156251 },
156173 156252 {
156174 156253 "id": "ernestine.ca",
@@ -157069,7 +157148,7 @@
157069 157148 "ecommerce": true,
157070 157149 "verification_date": "2026-08-19",
157071 157150 "status": "verified",
157072 − "enabled": true,
157151 + "enabled": false,
157073 157152 "certifications": [
157074 157153 {
157075 157154 "label": "Biologique — CARTV",
@@ -157088,7 +157167,8 @@
157088 157167 "lng": -74.4624,
157089 157168 "city": "Laurentides-Sud (Chénéville)",
157090 157169 "precision": "fsa"
157091 − }
157170 + },
157171 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
157092 157172 },
157093 157173 {
157094 157174 "id": "fermelarosace.com",
@@ -157118,7 +157198,7 @@
157118 157198 "ecommerce": true,
157119 157199 "verification_date": "2026-08-19",
157120 157200 "status": "verified",
157121 − "enabled": true,
157201 + "enabled": false,
157122 157202 "certifications": [
157123 157203 {
157124 157204 "label": "Biologique — CARTV",
@@ -157137,7 +157217,8 @@
157137 157217 "lng": -72.8043,
157138 157218 "city": "Bois-Francs-Nord (Odanak)",
157139 157219 "precision": "fsa"
157140 − }
157220 + },
157221 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
157141 157222 },
157142 157223 {
157143 157224 "id": "fermelaterreentiere.com",
@@ -158959,7 +159040,7 @@
158959 159040 "ecommerce": true,
158960 159041 "verification_date": "2026-08-19",
158961 159042 "status": "probable",
158962 − "enabled": true,
159043 + "enabled": false,
158963 159044 "certifications": [
158964 159045 {
158965 159046 "label": "Biologique — CARTV",
@@ -158978,7 +159059,8 @@
158978 159059 "lng": -72.4369,
158979 159060 "city": "Becancour",
158980 159061 "precision": "fsa"
158981 − }
159062 + },
159063 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
158982 159064 },
158983 159065 {
158984 159066 "id": "innovactiv.com",
@@ -159420,7 +159502,7 @@
159420 159502 "ecommerce": true,
159421 159503 "verification_date": "2026-08-19",
159422 159504 "status": "verified",
159423 − "enabled": true,
159505 + "enabled": false,
159424 159506 "certifications": [
159425 159507 {
159426 159508 "label": "Biologique — CARTV",
@@ -159439,7 +159521,8 @@
159439 159521 "lng": -73.2793,
159440 159522 "city": "Montérégie-Nord (Saint-Antoine- Sur-Richelieu)",
159441 159523 "precision": "fsa"
159442 − }
159524 + },
159525 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
159443 159526 },
159444 159527 {
159445 159528 "id": "jardinsdacote.com",
@@ -160435,7 +160518,8 @@
160435 160518 "ecommerce": true,
160436 160519 "verification_date": "2026-08-19",
160437 160520 "status": "verified",
160438 − "enabled": true
160521 + "enabled": false,
160522 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
160439 160523 },
160440 160524 {
160441 160525 "id": "kerry.com",
@@ -162500,7 +162584,7 @@
162500 162584 "ecommerce": true,
162501 162585 "verification_date": "2026-08-19",
162502 162586 "status": "verified",
162503 − "enabled": true,
162587 + "enabled": false,
162504 162588 "certifications": [
162505 162589 {
162506 162590 "label": "Biologique — CARTV",
@@ -162519,7 +162603,8 @@
162519 162603 "lng": -70.7929,
162520 162604 "city": "Chaudière-Nord (Saint-Joseph- De-Beauce)",
162521 162605 "precision": "fsa"
162522 − }
162606 + },
162607 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
162523 162608 },
162524 162609 {
162525 162610 "id": "lesjardinsdelamarmotte.com",
@@ -164035,13 +164120,14 @@
164035 164120 "ecommerce": true,
164036 164121 "verification_date": "2026-08-19",
164037 164122 "status": "verified",
164038 − "enabled": true,
164123 + "enabled": false,
164039 164124 "geo": {
164040 164125 "lat": 45.4036,
164041 164126 "lng": -72.7097,
164042 164127 "city": "Granby East",
164043 164128 "precision": "fsa"
164044 − }
164129 + },
164130 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
164045 164131 },
164046 164132 {
164047 164133 "id": "mosaicflavors.com",
@@ -165180,13 +165266,14 @@
165180 165266 "ecommerce": true,
165181 165267 "verification_date": "2026-08-19",
165182 165268 "status": "probable",
165183 − "enabled": true,
165269 + "enabled": false,
165184 165270 "geo": {
165185 165271 "lat": 45.6352,
165186 165272 "lng": -72.9726,
165187 165273 "city": "Saint-Hyacinthe Southwest",
165188 165274 "precision": "fsa"
165189 − }
165275 + },
165276 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
165190 165277 },
165191 165278 {
165192 165279 "id": "pizzeriadavis.com",
@@ -169669,7 +169756,8 @@
169669 169756 "lng": -72.9382,
169670 169757 "city": "Louiseville",
169671 169758 "precision": "fsa"
169672 − }
169759 + },
169760 + "timeout": 90
169673 169761 },
169674 169762 {
169675 169763 "id": "candexcustom.com",
@@ -170534,7 +170622,8 @@
170534 170622 "ecommerce": true,
170535 170623 "verification_date": "2026-08-21",
170536 170624 "status": "verified",
170537 − "enabled": true
170625 + "enabled": false,
170626 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
170538 170627 },
170539 170628 {
170540 170629 "id": "fermelavillandroise.com",
@@ -171419,13 +171508,14 @@
171419 171508 "ecommerce": true,
171420 171509 "verification_date": "2026-08-21",
171421 171510 "status": "probable",
171422 − "enabled": true,
171511 + "enabled": false,
171423 171512 "geo": {
171424 171513 "lat": 45.5356,
171425 171514 "lng": -73.6144,
171426 171515 "city": "Petite-Patrie Southwest",
171427 171516 "precision": "fsa"
171428 − }
171517 + },
171518 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
171429 171519 },
171430 171520 {
171431 171521 "id": "labrumeuse.ca",
@@ -171494,13 +171584,14 @@
171494 171584 "ecommerce": true,
171495 171585 "verification_date": "2026-08-21",
171496 171586 "status": "verified",
171497 − "enabled": true,
171587 + "enabled": false,
171498 171588 "geo": {
171499 171589 "lat": 45.5234,
171500 171590 "lng": -76.4392,
171501 171591 "city": "Outaouais-Sud (Thurso)",
171502 171592 "precision": "fsa"
171503 − }
171593 + },
171594 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
171504 171595 },
171505 171596 {
171506 171597 "id": "lapoissonneriesherbrooke.com",
@@ -171699,13 +171790,14 @@
171699 171790 "ecommerce": true,
171700 171791 "verification_date": "2026-08-21",
171701 171792 "status": "verified",
171702 − "enabled": true,
171793 + "enabled": false,
171703 171794 "geo": {
171704 171795 "lat": 45.384,
171705 171796 "lng": -73.5591,
171706 171797 "city": "Saint-Constant",
171707 171798 "precision": "fsa"
171708 − }
171799 + },
171800 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
171709 171801 },
171710 171802 {
171711 171803 "id": "lesruchesdemayalabeille.com",
@@ -172735,13 +172827,14 @@
172735 172827 "ecommerce": true,
172736 172828 "verification_date": "2026-08-21",
172737 172829 "status": "probable",
172738 − "enabled": true,
172830 + "enabled": false,
172739 172831 "geo": {
172740 172832 "lat": 45.5716,
172741 172833 "lng": -73.5985,
172742 172834 "city": "Saint-Léonard Southeast",
172743 172835 "precision": "fsa"
172744 − }
172836 + },
172837 + "disabled_reason": "site actif mais app Wix Stores absente — aucune boutique en ligne (audit 2026-08-23)"
172745 172838 },
172746 172839 {
172747 172840 "id": "paraventsdesign.com",
modified fabrika/connectors/base.py +7 −0
@@ -34,6 +34,13 @@ class BaseConnector:
34 34 self.store = store
35 35 self.store_id = store["id"]
36 36 self.base = (store.get("url") or f"https://{store['id']}").rstrip("/")
37 + # dépassement par boutique (clé "timeout" du registre) : sites lents,
38 + # ex. canadel.com dont la Store API met ~50 s par page de 100 produits
39 + try:
40 + if store.get("timeout"):
41 + self.timeout = int(store["timeout"])
42 + except (TypeError, ValueError):
43 + pass
37 44 self.session = requests.Session()
38 45 self.session.headers["User-Agent"] = USER_AGENT
39 46 self.session.headers["Accept-Language"] = "fr-CA,fr;q=0.9,en;q=0.8"
modified fabrika/web.py +19 −3
@@ -8,6 +8,7 @@ from __future__ import annotations
8 8 import json
9 9 import sqlite3
10 10 import threading
11 +import time
11 12 from datetime import date
12 13 from pathlib import Path
13 14
@@ -414,7 +415,13 @@ def stats_report(period: str = "30j",
414 415
415 416
416 417 @app.get("/api/stats")
417 −def stats():
418 +def stats(syncs_since_h: float | None = None):
419 + """Stats globales. `syncs_since_h` (heures) : fenêtre du sync_log exposé —
420 + sans le paramètre, comportement historique (30 dernières entrées) ; avec,
421 + toutes les entrées depuis now-syncs_since_h (LIMIT 4000), et au moins les
422 + 20 dernières si la fenêtre en contient moins (supervision multi-boutiques :
423 + fabri-ka fait tourner ~1 700 boutiques par cycle, 30 entrées ne couvrent
424 + qu'une poignée de magasins)."""
418 425 con = db.connect()
419 426 try:
420 427 totals = q(con, """SELECT
@@ -425,8 +432,17 @@ def stats():
425 432 """)[0]
426 433 by_region = q(con, """SELECT region, COUNT(*) AS stores, SUM(product_count) AS products
427 434 FROM stores WHERE region<>'' GROUP BY region ORDER BY products DESC""")
428 − recent = q(con, """SELECT ts, store_id, found, added, updated, removed, status
429 − FROM sync_log ORDER BY ts DESC LIMIT 30""")
435 + if syncs_since_h is not None:
436 + cutoff = time.time() - syncs_since_h * 3600
437 + recent = q(con, """SELECT ts, store_id, found, added, updated, removed, status
438 + FROM sync_log WHERE ts >= ? ORDER BY ts DESC LIMIT 4000""",
439 + (cutoff,))
440 + if len(recent) < 20:
441 + recent = q(con, """SELECT ts, store_id, found, added, updated, removed, status
442 + FROM sync_log ORDER BY ts DESC LIMIT 20""")
443 + else:
444 + recent = q(con, """SELECT ts, store_id, found, added, updated, removed, status
445 + FROM sync_log ORDER BY ts DESC LIMIT 30""")
430 446 return {"totals": totals, "by_region": by_region, "sync_log": recent}
431 447 finally:
432 448 con.close()
433 449