← 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);