[object Object]

← back to Designer Wallcoverings

Designtex fill-in Step 4 COMPLETE: verified 0/130 discontinued colorways present on Shopify (none live). Discontinued flagged in dw_unified Step 1; no archive action needed.

20c4425239eebf52e66fd6350dbab0a64981d3c1 · 2026-06-23 16:04:58 -0700 · Steve

Files touched

Diff

commit 20c4425239eebf52e66fd6350dbab0a64981d3c1
Author: Steve <steve@designerwallcoverings.com>
Date:   Tue Jun 23 16:04:58 2026 -0700

    Designtex fill-in Step 4 COMPLETE: verified 0/130 discontinued colorways present on Shopify (none live). Discontinued flagged in dw_unified Step 1; no archive action needed.
---
 .../designtex-uom-fix/check-discontinued-live.mjs  | 22 ++++++++++++++++++++++
 .../designtex-uom-fix/discontinued-live-check.json |  5 +++++
 2 files changed, 27 insertions(+)

diff --git a/audits/designtex-uom-fix/check-discontinued-live.mjs b/audits/designtex-uom-fix/check-discontinued-live.mjs
new file mode 100644
index 00000000..fe9e643d
--- /dev/null
+++ b/audits/designtex-uom-fix/check-discontinued-live.mjs
@@ -0,0 +1,22 @@
+import fs from 'fs'; import os from 'os'; import path from 'path';
+const TOK = fs.readFileSync(path.join(os.homedir(),'Projects/secrets-manager/.env'),'utf8').match(/^SHOPIFY_ADMIN_TOKEN=(.+)$/m)[1].trim();
+const DOMAIN='designer-laboratory-sandbox.myshopify.com', VER='2024-10';
+async function gql(q,v){for(let a=0;a<6;a++){const r=await fetch(`https://${DOMAIN}/admin/api/${VER}/graphql.json`,{method:'POST',headers:{'X-Shopify-Access-Token':TOK,'Content-Type':'application/json'},body:JSON.stringify({query:q,variables:v})});const j=await r.json();if(j.errors&&/throttl/i.test(JSON.stringify(j.errors))){await new Promise(x=>setTimeout(x,3000));continue;}return j;}return{};}
+const disc = process.argv[2].split(',').map(s=>s.trim()).filter(Boolean);
+console.log('discontinued SKUs to check:',disc.length);
+// query Shopify by sku for each; a product is "live" if status ACTIVE
+const q=`query($q:String){products(first:5,query:$q){edges{node{id title status}}}}`;
+const live=[], present=[];
+for(const sku of disc){
+  const j=await gql(q,{q:`sku:${sku}`});
+  const edges=j.data?.products?.edges||[];
+  if(edges.length){
+    present.push(sku);
+    for(const e of edges){ if(e.node.status==='ACTIVE') live.push({sku,id:e.node.id,title:e.node.title,status:e.node.status}); }
+  }
+  await new Promise(x=>setTimeout(x,150));
+}
+console.log('present on Shopify (any status):',present.length);
+console.log('LIVE (ACTIVE) discontinued:',live.length);
+console.log(JSON.stringify(live,null,1));
+fs.writeFileSync('/tmp/discontinued-live-result.json',JSON.stringify({checked:disc.length,present,live},null,2));
diff --git a/audits/designtex-uom-fix/discontinued-live-check.json b/audits/designtex-uom-fix/discontinued-live-check.json
new file mode 100644
index 00000000..2b70ec7c
--- /dev/null
+++ b/audits/designtex-uom-fix/discontinued-live-check.json
@@ -0,0 +1,5 @@
+{
+  "checked": 130,
+  "present": [],
+  "live": []
+}
\ No newline at end of file

← b813d7d8 Designtex fill-in Step 2 COMPLETE: UOM flip verified 0 'Pric  ·  back to Designer Wallcoverings  ·  Designtex fill-in Step 3 COMPLETE: spec metafields (global.* 8726db5e →