20 lines
1.1 KiB
JavaScript
20 lines
1.1 KiB
JavaScript
import fs from 'node:fs';
|
|
const J = JSON.parse(fs.readFileSync('.cdp/out/items-7d-30d.json', 'utf8'));
|
|
const N = s => Number(s) || 0;
|
|
const L = [];
|
|
for (const dt of ['recent7d', 'recent30d']) {
|
|
const it = J.data[dt].items;
|
|
const dead = it.filter(x => N(x.ord) === 0);
|
|
const deadPv = dead.reduce((a, b) => a + N(b.pv), 0);
|
|
const live = it.filter(x => N(x.ord) > 0);
|
|
// 零成交类目
|
|
const cats = {};
|
|
for (const x of dead) cats[x.c4 || '?'] = (cats[x.c4 || '?'] || 0) + 1;
|
|
const allCats = new Set(it.map(x => x.c4));
|
|
const deadOnlyCats = [...allCats].filter(c => !it.some(x => x.c4 === c && N(x.ord) > 0));
|
|
L.push(`${dt}: 商品 ${it.length} | 零成交 ${dead.length} (${(dead.length / it.length * 100).toFixed(1)}%) | 吃掉曝光 ${deadPv} | 有成交 ${live.length}`);
|
|
L.push(` 涉及类目 ${new Set(dead.map(x => x.c4)).size} 个;其中"整类目 0 成交"的类目 ${deadOnlyCats.length} 个,这些类目共 ${deadOnlyCats.reduce((a, c) => a + cats[c], 0)} 个商品`);
|
|
L.push('');
|
|
}
|
|
fs.writeFileSync('.cdp/out/dead-stats.txt', L.join('\n'), 'utf8');
|