bug today

This commit is contained in:
vrubelroman 2025-11-20 03:14:06 +03:00
parent faf6ec0c35
commit 4dc5539da2
5 changed files with 189 additions and 38 deletions

View file

@ -213,29 +213,49 @@ class StatsService:
Returns:
ActivityResponse с данными статистики или сообщением об ошибке
"""
logger.info(f"🔍 StatsService.get_today_stats: username={username}")
try:
logger.info(f"🔍 Calling lichess_client.get_user_activity for {username}")
activity_data = await self.lichess_client.get_user_activity(username)
logger.info(f"🔍 Activity data received: {activity_data is not None}, type={type(activity_data)}")
if not activity_data:
logger.warning(f"⚠️ No activity data for {username}")
return ActivityResponse(
message=f"Пользователь {username} не найден или неактивен"
)
logger.info(f"🔍 Activity data length: {len(activity_data) if isinstance(activity_data, list) else 'not a list'}")
today = date.today()
logger.info(f"🔍 Looking for activity for today: {today}")
# Ищем активность за сегодня
# Lichess возвращает интервалы, которые могут начинаться вчера, но включать активность сегодня
today_activity = None
for activity in activity_data:
activity_date = self._parse_lichess_interval(activity['interval'])
if activity_date == today:
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 today: {today}")
# Проверяем, попадает ли сегодняшняя дата в интервал
if start_date <= today <= end_date:
today_activity = activity
logger.info(f"✅ Found today activity for {username} (interval: {start_date} to {end_date})")
break
if not today_activity:
logger.info(f" No activity found for today ({today}) for {username}")
return ActivityResponse(
message=f"Активности за сегодняшний день ({today}) не было"
)
# Обрабатываем данные
logger.info(f"🔍 Processing activity data for {username}")
games_stats = self._process_games_by_mode(today_activity.get('games', {}))
tasks_stats = self._process_tasks(today_activity.get('puzzles', {}))
@ -245,13 +265,16 @@ class StatsService:
games=GamesStats(**games_stats)
)
logger.info(f"✅ Successfully processed stats for {username}")
return ActivityResponse(
message="Статистика за сегодняшний день",
data=user_stats
)
except Exception as e:
logger.error(f"Ошибка при получении статистики за сегодня: {e}")
logger.error(f"❌ Ошибка при получении статистики за сегодня для {username}: {e}")
import traceback
logger.error(traceback.format_exc())
return ActivityResponse(
message=f"Ошибка при получении статистики: {str(e)}"
)