#!/usr/bin/env node const mongoose = require('mongoose'); async function main() { await mongoose.connect('mongodb://localhost:27017/tractatus_dev'); const db = mongoose.connection.db; const auditLogs = db.collection('auditLogs'); // Phase 3 was likely deployed around 2025-10-27 (today) // Let's check decisions from the last 24 hours const oneDayAgo = new Date(); oneDayAgo.setHours(oneDayAgo.getHours() - 24); console.log('═══════════════════════════════════════════════════════════'); console.log(' ACTUAL PARTICIPATION RATE (Recent Decisions Only)'); console.log('═══════════════════════════════════════════════════════════'); console.log(''); console.log(`Analyzing decisions since: ${oneDayAgo.toISOString()}`); console.log(''); // Recent decisions (last 24h) const recentTotal = await auditLogs.countDocuments({ timestamp: { $gte: oneDayAgo } }); const recentWithGuidance = await auditLogs.countDocuments({ timestamp: { $gte: oneDayAgo }, 'metadata.framework_backed_decision': true }); const recentRate = recentTotal > 0 ? ((recentWithGuidance / recentTotal) * 100).toFixed(1) : 0; console.log('Overall (Last 24 Hours):'); console.log('─'.repeat(50)); console.log(` Total Decisions: ${recentTotal}`); console.log(` With Guidance: ${recentWithGuidance}`); console.log(` Participation Rate: ${recentRate}%`); console.log(''); // Break down by service const serviceBreakdown = await auditLogs.aggregate([ { $match: { timestamp: { $gte: oneDayAgo } } }, { $group: { _id: '$service', total: { $sum: 1 }, withGuidance: { $sum: { $cond: [{ $eq: ['$metadata.framework_backed_decision', true] }, 1, 0] } } } }, { $sort: { total: -1 } } ]).toArray(); console.log('By Service (Last 24 Hours):'); console.log('─'.repeat(50)); console.log('Service Name Total With Guidance Rate'); console.log('───────────────────────────────────────────────────────────────'); serviceBreakdown.forEach(service => { const serviceName = service._id || 'Unknown'; const rate = service.total > 0 ? ((service.withGuidance / service.total) * 100).toFixed(0) : 0; console.log(`${serviceName.padEnd(30)} ${String(service.total).padStart(7)} ${String(service.withGuidance).padStart(13)} ${String(rate).padStart(4)}%`); }); console.log(''); // Comparison: All time vs Recent const allTimeTotal = await auditLogs.countDocuments({}); const allTimeWithGuidance = await auditLogs.countDocuments({ 'metadata.framework_backed_decision': true }); const allTimeRate = allTimeTotal > 0 ? ((allTimeWithGuidance / allTimeTotal) * 100).toFixed(1) : 0; console.log('Comparison: All Time vs Recent:'); console.log('─'.repeat(50)); console.log(` All Time Rate: ${allTimeRate}% (includes pre-Phase 3 data)`); console.log(` Recent Rate (24h): ${recentRate}% (Phase 3 active)`); console.log(''); if (parseFloat(recentRate) > parseFloat(allTimeRate)) { const improvement = parseFloat(recentRate) - parseFloat(allTimeRate); console.log(` ✓ IMPROVEMENT: +${improvement.toFixed(1)}% since Phase 3 deployment`); } else { console.log(` → No significant change detected`); } console.log(''); // Target assessment console.log('Target Assessment:'); console.log('─'.repeat(50)); const target = 60; if (parseFloat(recentRate) >= target) { console.log(` 🎉 TARGET MET: ${recentRate}% ≥ ${target}% target`); } else { const gap = target - parseFloat(recentRate); console.log(` ⚠ BELOW TARGET: ${recentRate}% (need +${gap.toFixed(1)}% to reach ${target}%)`); } console.log(''); console.log('═══════════════════════════════════════════════════════════'); await mongoose.disconnect(); } main().catch(console.error);