fastcheck/server/investigate-emilio-evaluationjobs.cjs
2026-04-08 13:58:46 -04:00

169 lines
5.9 KiB
JavaScript

const { MongoClient, ObjectId } = require('mongodb');
const MONGO_URI = 'mongodb://localhost:27017/duxiter';
async function investigateEmilioEvaluationJobs() {
const client = new MongoClient(MONGO_URI);
try {
await client.connect();
console.log('🔌 Connected to MongoDB');
const db = client.db();
const emilioTenantId = '687a6922d620ed7f184952a6';
console.log('\n🔍 Investigating Emilio Tenant EvaluationJobs');
console.log('================================================================================');
console.log(`Tenant ID: ${emilioTenantId}`);
// Find tenant info
const tenant = await db.collection('tenants').findOne({
_id: new ObjectId(emilioTenantId)
});
if (tenant) {
console.log(`Tenant Name: ${tenant.name}`);
} else {
console.log('❌ Tenant not found');
}
// Search for EvaluationJobs with this exact tenantId
console.log('\n📊 Searching EvaluationJobs with exact tenantId match...');
// Try different variations of tenantId matching
const queries = [
{ tenantId: emilioTenantId },
{ tenantId: new ObjectId(emilioTenantId) },
{ 'tenantId': emilioTenantId },
{ 'tenantId': new ObjectId(emilioTenantId) }
];
for (let i = 0; i < queries.length; i++) {
const query = queries[i];
console.log(`\n🔍 Query ${i + 1}: ${JSON.stringify(query, null, 2)}`);
const jobs = await db.collection('evaluationjobs').find(query).toArray();
console.log(` Found: ${jobs.length} jobs`);
if (jobs.length > 0) {
console.log(' 📋 Job Details:');
jobs.forEach((job, index) => {
console.log(` Job ${index + 1}:`);
console.log(` - ID: ${job._id}`);
console.log(` - TenantId: ${job.tenantId} (type: ${typeof job.tenantId})`);
console.log(` - Status: ${job.status}`);
console.log(` - Type: ${job.type}`);
console.log(` - Total Evaluations: ${job.totalEvaluations || 0}`);
console.log(` - Completed Evaluations: ${job.completedEvaluations || 0}`);
console.log(` - Failed Evaluations: ${job.failedEvaluations || 0}`);
console.log(` - Created: ${job.createdAt}`);
});
}
}
// Check all EvaluationJobs to see tenantId formats
console.log('\n🔍 Checking all EvaluationJobs to understand tenantId formats...');
const allJobs = await db.collection('evaluationjobs').find({}).limit(10).toArray();
console.log(`Total EvaluationJobs in collection: ${await db.collection('evaluationjobs').countDocuments()}`);
console.log('\nSample tenantId formats:');
const tenantIdFormats = new Set();
allJobs.forEach((job, index) => {
const tenantIdType = typeof job.tenantId;
const tenantIdValue = job.tenantId;
const format = `${tenantIdType}: ${tenantIdValue}`;
if (!tenantIdFormats.has(format)) {
tenantIdFormats.add(format);
console.log(` ${index + 1}. TenantId: ${tenantIdValue} (type: ${tenantIdType})`);
}
});
// Check if there are jobs with Emilio's tenantId in any format
console.log('\n🔍 Searching for any jobs that might belong to Emilio...');
const emilioJobs = await db.collection('evaluationjobs').find({
$or: [
{ tenantId: emilioTenantId },
{ tenantId: new ObjectId(emilioTenantId) },
{ 'createdBy': new ObjectId(emilioTenantId) },
{ 'evaluation.tenantId': emilioTenantId },
{ 'evaluation.tenantId': new ObjectId(emilioTenantId) }
]
}).toArray();
console.log(`Found ${emilioJobs.length} jobs potentially related to Emilio`);
if (emilioJobs.length > 0) {
console.log('\n📋 Related Jobs Details:');
emilioJobs.forEach((job, index) => {
console.log(` Job ${index + 1}:`);
console.log(` - ID: ${job._id}`);
console.log(` - TenantId: ${job.tenantId}`);
console.log(` - CreatedBy: ${job.createdBy}`);
console.log(` - Status: ${job.status}`);
console.log(` - Total Evaluations: ${job.totalEvaluations || 0}`);
console.log(` - Completed: ${job.completedEvaluations || 0}`);
console.log(` - Failed: ${job.failedEvaluations || 0}`);
});
}
// Test the aggregation query used in the controller
console.log('\n🧪 Testing controller aggregation query...');
const aggregationResult = await db.collection('evaluationjobs').aggregate([
{
$match: {
tenantId: emilioTenantId,
$and: [
{ tenantId: { $ne: null } },
{ tenantId: { $exists: true } }
]
}
},
{
$group: {
_id: null,
totalEvaluations: { $sum: '$totalEvaluations' },
completedEvaluations: { $sum: '$completedEvaluations' },
failedEvaluations: { $sum: '$failedEvaluations' }
}
}
]).toArray();
console.log('Aggregation result (string tenantId):', aggregationResult);
// Try with ObjectId
const aggregationResultObjectId = await db.collection('evaluationjobs').aggregate([
{
$match: {
tenantId: new ObjectId(emilioTenantId),
$and: [
{ tenantId: { $ne: null } },
{ tenantId: { $exists: true } }
]
}
},
{
$group: {
_id: null,
totalEvaluations: { $sum: '$totalEvaluations' },
completedEvaluations: { $sum: '$completedEvaluations' },
failedEvaluations: { $sum: '$failedEvaluations' }
}
}
]).toArray();
console.log('Aggregation result (ObjectId tenantId):', aggregationResultObjectId);
} catch (error) {
console.error('❌ Error:', error);
} finally {
await client.close();
console.log('🔌 Disconnected from MongoDB');
}
}
investigateEmilioEvaluationJobs();