fix bug today yesterday

This commit is contained in:
vrubelroman 2025-11-20 13:16:15 +03:00
parent 123749415a
commit 0c9a66a73c

View file

@ -231,6 +231,8 @@ class StatsService:
# Ищем активность за сегодня # Ищем активность за сегодня
# Lichess возвращает интервалы, которые могут начинаться вчера, но включать активность сегодня # Lichess возвращает интервалы, которые могут начинаться вчера, но включать активность сегодня
# Для "сегодня" нужен интервал, который НАЧИНАЕТСЯ сегодня (start_date == today)
# Если интервал начинается вчера и заканчивается сегодня, это интервал за вчера (еще не закрыт)
today_activity = None today_activity = None
for activity in activity_data: for activity in activity_data:
interval = activity['interval'] interval = activity['interval']
@ -242,10 +244,11 @@ class StatsService:
logger.debug(f"🔍 Checking activity interval: {start_date} to {end_date} vs today: {today}") 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 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 break
if not today_activity: if not today_activity:
@ -299,17 +302,36 @@ class StatsService:
message=f"Пользователь {username} не найден или неактивен" 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 yesterday_activity = None
for activity in activity_data: for activity in activity_data:
activity_date = self._parse_lichess_interval(activity['interval']) interval = activity['interval']
if activity_date == yesterday: # Парсим начало и конец интервала
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 yesterday_activity = activity
logger.info(f"✅ Found yesterday activity for {username} (interval: {start_date} to {end_date})")
break break
if not yesterday_activity: if not yesterday_activity:
logger.info(f" No activity found for yesterday ({yesterday}) for {username}")
return ActivityResponse( return ActivityResponse(
message=f"Активности за вчерашний день ({yesterday}) не было" message=f"Активности за вчерашний день ({yesterday}) не было"
) )