From 610d6176023a88c5c0b5f2b089fe4de28c9b3900 Mon Sep 17 00:00:00 2001 From: "Andrew K. Choi" Date: Mon, 17 Nov 2025 16:11:03 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D1=82=D1=8C=20=D0=B4=D0=B5=D1=82=D0=B0=D0=BB=D1=8C=D0=BD=D0=BE?= =?UTF-8?q?=D0=B5=20=D0=BB=D0=BE=D0=B3=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D0=B4=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F=20=D1=80=D0=BE=D0=B7=D1=8B=D0=B3=D1=80=D1=8B=D1=88?= =?UTF-8?q?=D0=B0=20=D0=B4=D0=BB=D1=8F=20=D0=B4=D0=B8=D0=B0=D0=B3=D0=BD?= =?UTF-8?q?=D0=BE=D1=81=D1=82=D0=B8=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/services.py | 11 +++++++++++ src/handlers/admin_panel.py | 9 ++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/core/services.py b/src/core/services.py index 9545a4f..040362a 100644 --- a/src/core/services.py +++ b/src/core/services.py @@ -264,10 +264,16 @@ class LotteryService: @staticmethod async def conduct_draw(session: AsyncSession, lottery_id: int) -> Dict[int, Dict[str, Any]]: """Провести розыгрыш с учетом ручных победителей""" + import logging + logger = logging.getLogger(__name__) + + logger.info(f"conduct_draw: начало для lottery_id={lottery_id}") lottery = await LotteryService.get_lottery(session, lottery_id) if not lottery or lottery.is_completed: + logger.warning(f"conduct_draw: lottery не найден или завершён") return {} + logger.info(f"conduct_draw: получаем участников") # Получаем всех участников (включая тех, у кого нет user) participants = [] for p in lottery.participations: @@ -282,7 +288,9 @@ class LotteryService: 'account_number': p.account_number })()) + logger.info(f"conduct_draw: участников {len(participants)}") if not participants: + logger.warning(f"conduct_draw: нет участников") return {} # Определяем количество призовых мест @@ -336,6 +344,7 @@ class LotteryService: session.add(winner) # Обновляем статус розыгрыша + logger.info(f"conduct_draw: обновляем статус lottery") lottery.is_completed = True lottery.draw_results = {} for place, info in results.items(): @@ -349,7 +358,9 @@ class LotteryService: 'is_manual': info['is_manual'] } + logger.info(f"conduct_draw: коммитим изменения") await session.commit() + logger.info(f"conduct_draw: успешно завершено, победителей: {len(results)}") return results @staticmethod diff --git a/src/handlers/admin_panel.py b/src/handlers/admin_panel.py index 628601e..a0fecac 100644 --- a/src/handlers/admin_panel.py +++ b/src/handlers/admin_panel.py @@ -2701,7 +2701,14 @@ async def conduct_lottery_draw(callback: CallbackQuery): await callback.answer("⏳ Проводится розыгрыш...", show_alert=True) # Проводим розыгрыш через сервис - winners_dict = await LotteryService.conduct_draw(session, lottery_id) + logger.info(f"Начинаем проведение розыгрыша {lottery_id}") + try: + winners_dict = await LotteryService.conduct_draw(session, lottery_id) + logger.info(f"Розыгрыш {lottery_id} проведён, победителей: {len(winners_dict)}") + except Exception as e: + logger.error(f"Ошибка при проведении розыгрыша {lottery_id}: {e}", exc_info=True) + await callback.answer(f"❌ Ошибка: {e}", show_alert=True) + return if winners_dict: # Отправляем уведомления победителям