From 3422081f5a09da44de3a0f778f13a2ff92771396 Mon Sep 17 00:00:00 2001 From: JAMIE XIAO Date: Thu, 20 Nov 2025 22:07:32 -0500 Subject: [PATCH 1/4] quick fixes to assignreviewers --- middlewares/hacker.middleware.js | 37 ++++++++++++++++++++++++++------ 1 file changed, 30 insertions(+), 7 deletions(-) diff --git a/middlewares/hacker.middleware.js b/middlewares/hacker.middleware.js index 6b357275..74ea4a64 100644 --- a/middlewares/hacker.middleware.js +++ b/middlewares/hacker.middleware.js @@ -758,15 +758,19 @@ async function assignReviewers(req, res, next) { const REVIEWER_NAMES = req.body.names; console.log('Reviewer names:', REVIEWER_NAMES); - const cutoff = new Date('2025-11-27T17:23:59.000Z'); // EDIT: set your desired cutoff date here + const cutoff = new Date('2025-11-17T23:59:59.000Z'); // EDIT: set your desired cutoff date here const cutoffObjectId = new ObjectId(Math.floor(cutoff.getTime() / 1000).toString(16) + "0000000000000000"); const hackerModel = require('../models/hacker.model'); // find all hackers created before the cutoff date const hackers = await hackerModel.find({ + $or: [ + { reviewerStatus: HACKER_REVIEWER_STATUS_NONE }, + { reviewerStatus2: HACKER_REVIEWER_STATUS_NONE } + ], _id: { $lte: cutoffObjectId } - }).select('_id'); + }).select('_id reviewerStatus reviewerStatus2 accountId'); console.log('Found hackers:', hackers.length); @@ -797,12 +801,31 @@ async function assignReviewers(req, res, next) { for (const hacker of hackers) { const assignedReviewer1 = REVIEWER_NAMES[hackerIndex % revwiewerCount]; const assignedReviewer2 = REVIEWER_NAMES[(hackerIndex + 1) % revwiewerCount]; - - assignments.push({ hackerId: hacker._id, reviewer: assignedReviewer1, reviewer2: assignedReviewer2 }); - updatePromises.push( - Services.Hacker.updateOne(hacker._id, { reviewerName: assignedReviewer1, reviewerName2: assignedReviewer2 }) - ); + + console.log(`Hacker ${hacker.accountId} - Current Statuses: reviewerStatus=${hacker.reviewerStatus}, reviewerStatus2=${hacker.reviewerStatus2}`); + if (hacker.reviewerStatus !== HACKER_REVIEWER_STATUS_NONE) { + console.log(`Assigning reviewer2 ${assignedReviewer2} to hacker ${hacker.accountId}`); + assignments.push({ hackerId: hacker._id, reviewer2: assignedReviewer2 }); + + updatePromises.push( + Services.Hacker.updateOne(hacker._id, { reviewerName2: assignedReviewer2 }) + ); + } else if (hacker.reviewerStatus2 !== HACKER_REVIEWER_STATUS_NONE) { + console.log(`Assigning reviewer1 ${assignedReviewer1} to hacker ${hacker.accountId}`); + assignments.push({ hackerId: hacker._id, reviewer: assignedReviewer1 }); + + updatePromises.push( + Services.Hacker.updateOne(hacker._id, { reviewerName: assignedReviewer1 }) + ); + } else { + console.log(`Assigning reviewer1 ${assignedReviewer1} and reviewer2 ${assignedReviewer2} to hacker ${hacker.accountId} to hacker ${hacker.accountId}`); + assignments.push({ hackerId: hacker._id, reviewer: assignedReviewer1, reviewer2: assignedReviewer2 }); + + updatePromises.push( + Services.Hacker.updateOne(hacker._id, { reviewerName: assignedReviewer1, reviewerName2: assignedReviewer2 }) + ); + } hackerIndex++; } From 08725c82332fae722ae9362b046394a304dcd897 Mon Sep 17 00:00:00 2001 From: JAMIE XIAO Date: Thu, 20 Nov 2025 23:44:43 -0500 Subject: [PATCH 2/4] fixed non existant fields conditional statements for assignReviewers --- middlewares/hacker.middleware.js | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/middlewares/hacker.middleware.js b/middlewares/hacker.middleware.js index 74ea4a64..251d1a0c 100644 --- a/middlewares/hacker.middleware.js +++ b/middlewares/hacker.middleware.js @@ -766,8 +766,10 @@ async function assignReviewers(req, res, next) { // find all hackers created before the cutoff date const hackers = await hackerModel.find({ $or: [ - { reviewerStatus: HACKER_REVIEWER_STATUS_NONE }, - { reviewerStatus2: HACKER_REVIEWER_STATUS_NONE } + { reviewerStatus: 'None' }, + { reviewerStatus2: 'None' }, + { reviewerStatus: { $exists: false } }, + { reviewerStatus2: { $exists: false } } ], _id: { $lte: cutoffObjectId } }).select('_id reviewerStatus reviewerStatus2 accountId'); @@ -802,24 +804,19 @@ async function assignReviewers(req, res, next) { const assignedReviewer1 = REVIEWER_NAMES[hackerIndex % revwiewerCount]; const assignedReviewer2 = REVIEWER_NAMES[(hackerIndex + 1) % revwiewerCount]; - - console.log(`Hacker ${hacker.accountId} - Current Statuses: reviewerStatus=${hacker.reviewerStatus}, reviewerStatus2=${hacker.reviewerStatus2}`); - if (hacker.reviewerStatus !== HACKER_REVIEWER_STATUS_NONE) { - console.log(`Assigning reviewer2 ${assignedReviewer2} to hacker ${hacker.accountId}`); + if (hacker.reviewerStatus !== HACKER_REVIEWER_STATUS_NONE && ("reviewerStatus" in hacker)) { assignments.push({ hackerId: hacker._id, reviewer2: assignedReviewer2 }); updatePromises.push( Services.Hacker.updateOne(hacker._id, { reviewerName2: assignedReviewer2 }) ); - } else if (hacker.reviewerStatus2 !== HACKER_REVIEWER_STATUS_NONE) { - console.log(`Assigning reviewer1 ${assignedReviewer1} to hacker ${hacker.accountId}`); + } else if (hacker.reviewerStatus2 !== HACKER_REVIEWER_STATUS_NONE && ("reviewerStatus2" in hacker)) { assignments.push({ hackerId: hacker._id, reviewer: assignedReviewer1 }); updatePromises.push( Services.Hacker.updateOne(hacker._id, { reviewerName: assignedReviewer1 }) ); } else { - console.log(`Assigning reviewer1 ${assignedReviewer1} and reviewer2 ${assignedReviewer2} to hacker ${hacker.accountId} to hacker ${hacker.accountId}`); assignments.push({ hackerId: hacker._id, reviewer: assignedReviewer1, reviewer2: assignedReviewer2 }); updatePromises.push( From 07cd2bd349ac3caed4146d4acd17371e4336d0a3 Mon Sep 17 00:00:00 2001 From: JAMIE XIAO Date: Fri, 21 Nov 2025 00:40:23 -0500 Subject: [PATCH 3/4] need to fix: reviewer1 & 2 have same name --- middlewares/hacker.middleware.js | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/middlewares/hacker.middleware.js b/middlewares/hacker.middleware.js index 251d1a0c..c7c721ba 100644 --- a/middlewares/hacker.middleware.js +++ b/middlewares/hacker.middleware.js @@ -772,7 +772,7 @@ async function assignReviewers(req, res, next) { { reviewerStatus2: { $exists: false } } ], _id: { $lte: cutoffObjectId } - }).select('_id reviewerStatus reviewerStatus2 accountId'); + }).select('_id reviewerStatus reviewerStatus2 accountId reviewerName reviewerName2'); console.log('Found hackers:', hackers.length); @@ -801,16 +801,26 @@ async function assignReviewers(req, res, next) { // assign reviewers to hackers for (const hacker of hackers) { - const assignedReviewer1 = REVIEWER_NAMES[hackerIndex % revwiewerCount]; - const assignedReviewer2 = REVIEWER_NAMES[(hackerIndex + 1) % revwiewerCount]; + let assignedReviewer1 = REVIEWER_NAMES[hackerIndex % revwiewerCount]; + let assignedReviewer2 = REVIEWER_NAMES[(hackerIndex + 1) % revwiewerCount]; if (hacker.reviewerStatus !== HACKER_REVIEWER_STATUS_NONE && ("reviewerStatus" in hacker)) { + // console.log(`${hacker.reviewerName2} , ${assignedReviewer2} assigned to reviewer 2 for hacker ${hacker._id}. equals: ${hacker.reviewerName2 === assignedReviewer2}`); + if (hacker.reviewerName2 === assignedReviewer2) { + assignedReviewer2 = assignedReviewer1; + } + assignments.push({ hackerId: hacker._id, reviewer2: assignedReviewer2 }); updatePromises.push( Services.Hacker.updateOne(hacker._id, { reviewerName2: assignedReviewer2 }) ); } else if (hacker.reviewerStatus2 !== HACKER_REVIEWER_STATUS_NONE && ("reviewerStatus2" in hacker)) { + + if (hacker.reviewerName === assignedReviewer1) { + assignedReviewer1 = assignedReviewer2; + } + assignments.push({ hackerId: hacker._id, reviewer: assignedReviewer1 }); updatePromises.push( From 7b767cae75b0f2fa4771e8c51d5149d918c73778 Mon Sep 17 00:00:00 2001 From: JAMIE XIAO Date: Fri, 21 Nov 2025 01:09:04 -0500 Subject: [PATCH 4/4] fixed duplicate names --- middlewares/hacker.middleware.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/middlewares/hacker.middleware.js b/middlewares/hacker.middleware.js index c7c721ba..ee5023f5 100644 --- a/middlewares/hacker.middleware.js +++ b/middlewares/hacker.middleware.js @@ -805,8 +805,7 @@ async function assignReviewers(req, res, next) { let assignedReviewer2 = REVIEWER_NAMES[(hackerIndex + 1) % revwiewerCount]; if (hacker.reviewerStatus !== HACKER_REVIEWER_STATUS_NONE && ("reviewerStatus" in hacker)) { - // console.log(`${hacker.reviewerName2} , ${assignedReviewer2} assigned to reviewer 2 for hacker ${hacker._id}. equals: ${hacker.reviewerName2 === assignedReviewer2}`); - if (hacker.reviewerName2 === assignedReviewer2) { + if (hacker.reviewerName === assignedReviewer2) { assignedReviewer2 = assignedReviewer1; } @@ -817,7 +816,7 @@ async function assignReviewers(req, res, next) { ); } else if (hacker.reviewerStatus2 !== HACKER_REVIEWER_STATUS_NONE && ("reviewerStatus2" in hacker)) { - if (hacker.reviewerName === assignedReviewer1) { + if (hacker.reviewerName2 === assignedReviewer1) { assignedReviewer1 = assignedReviewer2; }