убрана чувствительность к регистру в никнейме

This commit is contained in:
vrubelroman 2025-11-23 12:51:14 +03:00
parent e6967db17d
commit 4b6790be14
4 changed files with 57 additions and 19 deletions

View file

@ -459,11 +459,15 @@ class StatsService:
winner = game.get('winner')
players = game.get('players', {})
# Определяем цвет игрока
# Определяем цвет игрока (сравниваем имена без учета регистра)
username_lower = username.lower()
user_color = None
if players.get('white', {}).get('user', {}).get('name') == username:
white_name = players.get('white', {}).get('user', {}).get('name', '')
black_name = players.get('black', {}).get('user', {}).get('name', '')
if white_name.lower() == username_lower:
user_color = 'white'
elif players.get('black', {}).get('user', {}).get('name') == username:
elif black_name.lower() == username_lower:
user_color = 'black'
if user_color is None:
@ -483,11 +487,15 @@ class StatsService:
"""
players = game.get('players', {})
# Определяем цвет игрока
# Определяем цвет игрока (сравниваем имена без учета регистра)
username_lower = username.lower()
user_color = None
if players.get('white', {}).get('user', {}).get('name') == username:
white_name = players.get('white', {}).get('user', {}).get('name', '')
black_name = players.get('black', {}).get('user', {}).get('name', '')
if white_name.lower() == username_lower:
user_color = 'white'
elif players.get('black', {}).get('user', {}).get('name') == username:
elif black_name.lower() == username_lower:
user_color = 'black'
if user_color is None:
@ -546,18 +554,30 @@ class StatsService:
# Сортируем игры по времени создания (от старых к новым) для правильного вычисления итогового рейтинга
sorted_games = sorted(games, key=lambda x: x.get('createdAt', 0))
for game in sorted_games:
logger.info(f"🔍 Processing {len(sorted_games)} games for {username}")
for idx, game in enumerate(sorted_games):
speed = game.get('speed', 'unknown')
game_id = game.get('id', 'unknown')
logger.debug(f"🔍 Game {idx+1}/{len(sorted_games)}: id={game_id}, speed={speed}, username={username}")
# Пропускаем неизвестные типы игр
if speed not in stats:
logger.warning(f"⚠️ Skipping game {game_id}: unknown speed '{speed}' (expected: bullet, blitz, rapid, classical, correspondence)")
continue
# Определяем результат игры
result = self._determine_game_result(game, username)
if result == 'unknown':
players = game.get('players', {})
white_name = players.get('white', {}).get('user', {}).get('name', 'N/A')
black_name = players.get('black', {}).get('user', {}).get('name', 'N/A')
logger.warning(f"⚠️ Skipping game {game_id}: cannot determine result for username '{username}' (white: '{white_name}', black: '{black_name}')")
continue
logger.debug(f"✅ Processing game {game_id}: speed={speed}, result={result}")
# Получаем изменение рейтинга и итоговый рейтинг
rating_change, final_rating = self._get_rating_info(game, username)