fastcheck/server/check-emilio-tenant.cjs
2026-04-08 13:58:46 -04:00

105 lines
3.3 KiB
JavaScript

const { MongoClient, ObjectId } = require('mongodb');
const MONGO_URI = 'mongodb://localhost:27017/dux2';
async function checkEmilioTenant() {
const client = new MongoClient(MONGO_URI);
try {
await client.connect();
console.log('Connected to MongoDB');
const db = client.db();
// Find Emilio's tenant
const emilioTenant = await db.collection('tenants').findOne({
name: { $regex: /emilio/i }
});
if (!emilioTenant) {
console.log('Tenant Emilio not found');
return;
}
console.log('\n=== EMILIO TENANT DATA ===');
console.log('Tenant ID:', emilioTenant._id);
console.log('Name:', emilioTenant.name);
console.log('Credit Balance:', emilioTenant.creditBalance);
// Check credit operations
const creditOps = await db.collection('creditoperations').find({
tenantId: emilioTenant._id
}).toArray();
console.log('\n=== CREDIT OPERATIONS ===');
console.log('Total credit operations:', creditOps.length);
let totalCreditsUsed = 0;
let totalCreditsAdded = 0;
const operationTypes = {};
creditOps.forEach(op => {
if (op.operationType === 'evaluation') {
totalCreditsUsed += op.creditsUsed || 0;
} else if (op.operationType === 'credit_purchase') {
totalCreditsAdded += op.creditsAdded || 0;
}
operationTypes[op.operationType] = (operationTypes[op.operationType] || 0) + 1;
});
console.log('Operation types:', operationTypes);
console.log('Total credits used (from ops):', totalCreditsUsed);
console.log('Total credits added (from ops):', totalCreditsAdded);
// Check Results
const resultCount = await db.collection('results').countDocuments({
tenantId: emilioTenant._id
});
console.log('\n=== RESULTS ===');
console.log('Total Results:', resultCount);
// Check Summaries
const summaryCount = await db.collection('summaries').countDocuments({
tenantId: emilioTenant._id
});
console.log('\n=== SUMMARIES ===');
console.log('Total Summaries:', summaryCount);
// Check for consistency
console.log('\n=== CONSISTENCY CHECK ===');
const expectedCreditsUsed = totalCreditsUsed;
const actualCreditsUsed = emilioTenant.creditBalance?.totalCreditsUsed || 0;
console.log('Expected total credits used:', expectedCreditsUsed);
console.log('Actual total credits used:', actualCreditsUsed);
if (expectedCreditsUsed !== actualCreditsUsed) {
console.log('❌ INCONSISTENCY FOUND: Credit usage mismatch');
console.log('Difference:', expectedCreditsUsed - actualCreditsUsed);
} else {
console.log('✅ Credit usage is consistent');
}
// Check evaluation operations count vs results
const evaluationOpsCount = operationTypes.evaluation || 0;
console.log('\nEvaluation operations:', evaluationOpsCount);
console.log('Result records:', resultCount);
if (evaluationOpsCount !== resultCount) {
console.log('❌ INCONSISTENCY: Evaluation ops vs Results mismatch');
} else {
console.log('✅ Evaluation operations match Result records');
}
} catch (error) {
console.error('Error:', error);
} finally {
await client.close();
console.log('\nDisconnected from MongoDB');
}
}
checkEmilioTenant();