diff --git a/utils/courses/completion_requirements.registry.js b/utils/courses/completion_requirements.registry.js index 6b0152f..b8cf32e 100644 --- a/utils/courses/completion_requirements.registry.js +++ b/utils/courses/completion_requirements.registry.js @@ -142,8 +142,11 @@ const TYPE_HANDLERS = { }); if (!progress) return false; if (progress.completed) return true; - const minPercent = requirement.min_percent ?? 100; - return (progress.progress_percent ?? 0) >= minPercent; + // CockroachDB returns INTEGER columns as strings over the wire (same class of + // issue as the BigInt precision fix) — without Number() coercion this becomes a + // lexicographic string comparison, where e.g. "7" >= "100" is true. + const minPercent = Number(requirement.min_percent ?? 100); + return Number(progress.progress_percent ?? 0) >= minPercent; }, }, // watch_video / listen_audio: unlike watch_percent (one aggregate figure across