[object Object]

← back to Dw Domain Fleet

TK-11200: isShowroomVendor guard — filter showroom-only vendors from all microsite catalog slices

71985bf9a33a2b1762c66bf0238c8713465e1be4 · 2026-09-04 04:10:35 -0700 · Steve

Phillip Jeffries and any future showroom-only vendors (config/showroom-vendors.json)
are excluded from CLEAN pool so no microsite niche slice ever surfaces them.
Matches fix-live-board canonical list. Prod redeploy to Kamatera is gated.
Undo: git revert HEAD

Files touched

Diff

commit 71985bf9a33a2b1762c66bf0238c8713465e1be4
Author: Steve <steve@designerwallcoverings.com>
Date:   Fri Sep 4 04:10:35 2026 -0700

    TK-11200: isShowroomVendor guard — filter showroom-only vendors from all microsite catalog slices
    
    Phillip Jeffries and any future showroom-only vendors (config/showroom-vendors.json)
    are excluded from CLEAN pool so no microsite niche slice ever surfaces them.
    Matches fix-live-board canonical list. Prod redeploy to Kamatera is gated.
    Undo: git revert HEAD
---
 config/showroom-vendors.json |  1 +
 shared/catalog.js            | 18 ++++++++++++++++--
 2 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/config/showroom-vendors.json b/config/showroom-vendors.json
new file mode 100644
index 0000000..095e28f
--- /dev/null
+++ b/config/showroom-vendors.json
@@ -0,0 +1 @@
+["Phillip Jeffries"]
diff --git a/shared/catalog.js b/shared/catalog.js
index 82cc25c..c233070 100644
--- a/shared/catalog.js
+++ b/shared/catalog.js
@@ -25,7 +25,21 @@ function isJunk(p) {
   return false;
 }
 
-const CLEAN = RAW.filter(p => !isJunk(p));
+// Showroom-only vendors (addressable but not discoverable on microsites).
+// Source of truth: config/showroom-vendors.json — matches fix-live-board canonical list. (TK-11200)
+const SHOWROOM_VENDORS = (() => {
+  try {
+    return JSON.parse(fs.readFileSync(path.join(__dirname, '..', 'config', 'showroom-vendors.json'), 'utf8'))
+      .map(v => v.toLowerCase());
+  } catch { return []; }
+})();
+
+function isShowroomVendor(p) {
+  if (!p.vendor || !SHOWROOM_VENDORS.length) return false;
+  return SHOWROOM_VENDORS.includes(String(p.vendor).toLowerCase());
+}
+
+const CLEAN = RAW.filter(p => !isJunk(p) && !isShowroomVendor(p));
 
 // --- product-type normalization ---
 function normType(t) {
@@ -75,4 +89,4 @@ function siteExtras(slug) {
   } catch { return []; }
 }
 
-module.exports = { RAW, CLEAN, isJunk, normType, nicheSlice, siteExtras, count: CLEAN.length };
+module.exports = { RAW, CLEAN, isJunk, isShowroomVendor, normType, nicheSlice, siteExtras, count: CLEAN.length };

← 3161f75 Fleet: keep showroom-only vendors (Phillip Jeffries) out of  ·  back to Dw Domain Fleet  ·  add .trim() to isShowroomVendor vendor string comparison (TK ddc73f9 →