← back to Novasuede Min Fix

analyze.mjs

35 lines

import fs from 'fs';
const all = JSON.parse(fs.readFileSync('live-novasuede.json','utf8'));
// tally product-level min metafield values
const prodMin={}, prodUnits={};
const variantTitleMinMap={}; // variantTitle -> {minValue: count}
let perYardVariants=0, perYardMinSummary={};
const sampleTitles=new Set();

for(const p of all){
  const pm = p.metafields.nodes.find(m=>m.namespace==='global'&&m.key==='v_prods_quantity_order_min');
  prodMin[pm?pm.value:'(none)']=(prodMin[pm?pm.value:'(none)']||0)+1;
  const pu = p.metafields.nodes.find(m=>m.namespace==='global'&&m.key==='v_prods_quantity_order_units');
  prodUnits[pu?pu.value:'(none)']=(prodUnits[pu?pu.value:'(none)']||0)+1;

  for(const v of p.variants.nodes){
    const t=v.title;
    // variant-level min metafield
    const vm = v.metafields.nodes.find(m=> (m.key==='v_prod_quantity_order_min'||m.key==='v_prods_quantity_order_min'));
    const key = t+' :: '+(vm?vm.namespace+'.'+vm.key+'='+vm.value : 'NO-MIN-MF');
    variantTitleMinMap[key]=(variantTitleMinMap[key]||0)+1;
  }
}
console.log('=== PRODUCT-LEVEL global.v_prods_quantity_order_min value distribution ===');
console.log(prodMin);
console.log('=== PRODUCT-LEVEL global.v_prods_quantity_order_units ===');
console.log(prodUnits);
console.log('\n=== VARIANT TITLE :: min-metafield distribution ===');
for(const [k,c] of Object.entries(variantTitleMinMap).sort()) console.log(`  [${c}]  ${k}`);

// list distinct variant titles
const titles={};
for(const p of all) for(const v of p.variants.nodes) titles[v.title]=(titles[v.title]||0)+1;
console.log('\n=== DISTINCT VARIANT TITLES ===');
console.log(titles);