105 lines
3.3 KiB
JavaScript
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(); |