diff --git a/sql/reports/topcoder/leaderboard-generic.sql b/sql/reports/topcoder/leaderboard-generic.sql index 6563e27..19cee7e 100644 --- a/sql/reports/topcoder/leaderboard-generic.sql +++ b/sql/reports/topcoder/leaderboard-generic.sql @@ -65,7 +65,7 @@ member_submissions AS ( ON s."challengeId" = cc.challenge_id AND s."memberId" IS NOT NULL LEFT JOIN LATERAL ( - SELECT rs."aggregateScore", rs."scorecardId" + SELECT rs."aggregateScore", rs."scorecardId", rs."isPassing" FROM reviews."reviewSummation" AS rs WHERE rs."submissionId" = s.id AND COALESCE(rs."isFinal", TRUE) = TRUE @@ -131,8 +131,14 @@ member_submissions AS ( AND UPPER(ai_decision.status::text) = 'PASSED') OR ( NOT challenge_reviewers.is_ai_only_challenge - AND COALESCE(final_review."aggregateScore", s."finalScore"::double precision, s."initialScore"::double precision) - >= COALESCE(sc."minimumPassingScore", sc."minScore", 0) + AND ( + final_review."isPassing" IS TRUE + OR ( + final_review."isPassing" IS NULL + AND COALESCE(final_review."aggregateScore", s."finalScore"::double precision, s."initialScore"::double precision) + >= COALESCE(sc."minimumPassingScore", sc."minScore", 0) + ) + ) ) ) ), diff --git a/src/reports/topcoder/topcoder-reports.service.ts b/src/reports/topcoder/topcoder-reports.service.ts index f0d659b..0853fff 100644 --- a/src/reports/topcoder/topcoder-reports.service.ts +++ b/src/reports/topcoder/topcoder-reports.service.ts @@ -1070,7 +1070,7 @@ export class TopcoderReportsService implements OnModuleDestroy { row.durationDays * (filters.pointsPerDay ?? 0); const relativeRank = row.placement / Math.max(1, row.submissionsCount); const sqrt = Math.sqrt(relativeRank); - const pointsByWin = Math.round(log / sqrt); + const pointsByWin = log / sqrt; entriesByUser[row.userId].points += pointsByWin; entriesByUser[row.userId].wins[row.challengeId] = pointsByWin;