From 0c9a66a73cf3f037d660f1c65cee1a2f36a58ebd Mon Sep 17 00:00:00 2001 From: vrubelroman Date: Thu, 20 Nov 2025 13:16:15 +0300 Subject: [PATCH] fix bug today yesterday --- LichessWebServices/stats_service.py | 34 ++++++++++++++++++++++++----- 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/LichessWebServices/stats_service.py b/LichessWebServices/stats_service.py index 1b1d8d0..bbc0bb1 100644 --- a/LichessWebServices/stats_service.py +++ b/LichessWebServices/stats_service.py @@ -231,6 +231,8 @@ class StatsService: # Ищем активность за сегодня # Lichess возвращает интервалы, которые могут начинаться вчера, но включать активность сегодня + # Для "сегодня" нужен интервал, который НАЧИНАЕТСЯ сегодня (start_date == today) + # Если интервал начинается вчера и заканчивается сегодня, это интервал за вчера (еще не закрыт) today_activity = None for activity in activity_data: interval = activity['interval'] @@ -242,10 +244,11 @@ class StatsService: logger.debug(f"🔍 Checking activity interval: {start_date} to {end_date} vs today: {today}") - # Проверяем, попадает ли сегодняшняя дата в интервал - if start_date <= today <= end_date: + # Проверяем, что интервал НАЧИНАЕТСЯ СЕГОДНЯ + # Это гарантирует, что мы берем интервал за сегодняшний день + if start_date == today: today_activity = activity - logger.info(f"✅ Found today activity for {username} (interval: {start_date} to {end_date})") + logger.info(f"✅ Found today activity for {username} (interval starts today: {start_date} to {end_date})") break if not today_activity: @@ -299,17 +302,36 @@ class StatsService: message=f"Пользователь {username} не найден или неактивен" ) - yesterday = date.today() - timedelta(days=1) + today = date.today() + yesterday = today - timedelta(days=1) + logger.info(f"🔍 Looking for activity for yesterday: {yesterday} (today: {today})") # Ищем активность за вчера + # Lichess возвращает интервалы, которые могут начинаться позавчера, но включать активность вчера + # Для "вчера" нужен интервал, который: + # 1. ЗАКАНЧИВАЕТСЯ вчера (end_date == yesterday) - закрытый интервал за вчера + # 2. ИЛИ начинается вчера и заканчивается сегодня (start_date == yesterday and end_date == today) - открытый интервал за вчера yesterday_activity = None for activity in activity_data: - activity_date = self._parse_lichess_interval(activity['interval']) - if activity_date == yesterday: + interval = activity['interval'] + # Парсим начало и конец интервала + start_timestamp = interval['start'] / 1000 + end_timestamp = interval['end'] / 1000 + start_date = datetime.fromtimestamp(start_timestamp).date() + end_date = datetime.fromtimestamp(end_timestamp).date() + + logger.debug(f"🔍 Checking activity interval: {start_date} to {end_date} vs yesterday: {yesterday}, today: {today}") + + # Проверяем два случая: + # 1. Интервал заканчивается вчера (закрытый интервал за вчера) + # 2. Интервал начинается вчера и заканчивается сегодня (открытый интервал за вчера, еще не закрыт) + if end_date == yesterday or (start_date == yesterday and end_date == today): yesterday_activity = activity + logger.info(f"✅ Found yesterday activity for {username} (interval: {start_date} to {end_date})") break if not yesterday_activity: + logger.info(f"ℹ️ No activity found for yesterday ({yesterday}) for {username}") return ActivityResponse( message=f"Активности за вчерашний день ({yesterday}) не было" )