diff --git a/src/modules/learning-activity/growth.service.ts b/src/modules/learning-activity/growth.service.ts index eac4ff4..946bf3f 100644 --- a/src/modules/learning-activity/growth.service.ts +++ b/src/modules/learning-activity/growth.service.ts @@ -13,16 +13,21 @@ export class GrowthService { where: { userId }, orderBy: { date: 'desc' }, select: { date: true }, - distinct: ['date'], take: 365, }); if (activities.length === 0) return { currentStreak: 0, longestStreak: 0 }; - const dates = activities.map(a => new Date(a.date).toISOString().slice(0, 10)); - let currentStreak = 1; - let longestStreak = 1; - let streak = 1; + // Dedupe by date + const seen = new Set(); + const dates: string[] = []; + for (const a of activities) { + const d = new Date(a.date).toISOString().slice(0, 10); + if (!seen.has(d)) { seen.add(d); dates.push(d); } + } + let currentStreak = dates.length > 0 ? 1 : 0; + let longestStreak = currentStreak; + let streak = currentStreak; for (let i = 1; i < dates.length; i++) { const prev = new Date(dates[i - 1]);