#!/usr/bin/env node const { MongoClient } = require('mongodb'); (async () => { const client = await MongoClient.connect('mongodb://localhost:27017/tractatus_dev'); const db = client.db(); const docs = await db.collection('documents') .find({visibility: 'public'}, {projection: {title: 1, slug: 1, sections: 1}}) .sort({order: 1}) .toArray(); console.log('═══════════════════════════════════════════════════════════'); console.log(' SECTION CATEGORY AUDIT - 22 Public Documents'); console.log('═══════════════════════════════════════════════════════════\n'); let totalDocs = 0; let docsWithSections = 0; const categoryStats = {}; docs.forEach(doc => { totalDocs++; if (!doc.sections || doc.sections.length === 0) { console.log(`${doc.title}:`); console.log(' ⚠️ NO SECTIONS (traditional view)\n'); return; } docsWithSections++; const categories = {}; doc.sections.forEach(s => { const cat = s.category || 'uncategorized'; categories[cat] = (categories[cat] || 0) + 1; categoryStats[cat] = (categoryStats[cat] || 0) + 1; }); console.log(`${doc.title}:`); console.log(` Sections: ${doc.sections.length}`); Object.entries(categories).sort((a,b) => b[1] - a[1]).forEach(([cat, count]) => { const percent = Math.round(count / doc.sections.length * 100); console.log(` - ${cat}: ${count} (${percent}%)`); }); console.log(''); }); console.log('═══════════════════════════════════════════════════════════'); console.log(' OVERALL STATISTICS'); console.log('═══════════════════════════════════════════════════════════\n'); console.log(`Total documents: ${totalDocs}`); console.log(`Documents with sections: ${docsWithSections}`); console.log(`Documents without sections: ${totalDocs - docsWithSections}\n`); console.log('Category distribution across ALL sections:'); const sortedStats = Object.entries(categoryStats).sort((a,b) => b[1] - a[1]); const totalSections = sortedStats.reduce((sum, [,count]) => sum + count, 0); sortedStats.forEach(([cat, count]) => { const percent = Math.round(count / totalSections * 100); console.log(` - ${cat}: ${count} sections (${percent}%)`); }); console.log('\n'); await client.close(); })();