From 7b3f459b809f086f611ba2ece41701828d835429 Mon Sep 17 00:00:00 2001 From: "Andrew K. Choi" Date: Mon, 17 Nov 2025 08:45:47 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=D0=B8=D1=81=D0=BF=D0=BE=D0=BB=D1=8C?= =?UTF-8?q?=D0=B7=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20AccountService=20?= =?UTF-8?q?=D0=B2=D0=BC=D0=B5=D1=81=D1=82=D0=BE=20UserService=20=D0=B4?= =?UTF-8?q?=D0=BB=D1=8F=20=D0=BF=D0=BE=D0=B8=D1=81=D0=BA=D0=B0=20=D0=B2?= =?UTF-8?q?=D0=BB=D0=B0=D0=B4=D0=B5=D0=BB=D1=8C=D1=86=D0=B5=D0=B2=20=D1=81?= =?UTF-8?q?=D1=87=D0=B5=D1=82=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Проблема: - UserService.get_user_by_account() искал в User.account_number (старое поле) - Новая система хранит счета в отдельной таблице Account Решение: - Заменен на AccountService.get_account_owner() в обеих функциях - add_participants_by_accounts_bulk() - remove_participants_by_accounts_bulk() - Теперь правильно находит владельцев через таблицу Account - Улучшены сообщения об ошибках с указанием номера карты --- .bot.pid | 2 +- src/core/services.py | 20 ++++++++++++-------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/.bot.pid b/.bot.pid index d251503..2f67fc2 100644 --- a/.bot.pid +++ b/.bot.pid @@ -1 +1 @@ -843174 +846125 diff --git a/src/core/services.py b/src/core/services.py index 3ccc4e1..a72e040 100644 --- a/src/core/services.py +++ b/src/core/services.py @@ -571,13 +571,15 @@ class ParticipationService: formatted_account = format_account_number(account_number) if not formatted_account: results["invalid_accounts"].append(account_input) - results["errors"].append(f"Неверный формат счета: {account_number}") + results["errors"].append(f"Неверный формат счета: {account_input}") continue - # Ищем пользователя по номеру счёта - user = await UserService.get_user_by_account(session, formatted_account) + # Ищем владельца счёта через таблицу Account + from ..core.registration_services import AccountService + user = await AccountService.get_account_owner(session, formatted_account) if not user: - results["errors"].append(f"Пользователь с счётом {formatted_account} не найден") + card_info = f" (карта: {card_number})" if card_number else "" + results["errors"].append(f"Пользователь с счётом {formatted_account}{card_info} не найден") continue # Пробуем добавить в розыгрыш @@ -634,14 +636,16 @@ class ParticipationService: formatted_account = format_account_number(account_number) if not formatted_account: results["invalid_accounts"].append(account_input) - results["errors"].append(f"Неверный формат счета: {account_number}") + results["errors"].append(f"Неверный формат счета: {account_input}") continue - # Ищем пользователя по номеру счёта - user = await UserService.get_user_by_account(session, formatted_account) + # Ищем владельца счёта через таблицу Account + from ..core.registration_services import AccountService + user = await AccountService.get_account_owner(session, formatted_account) if not user: + card_info = f" (карта: {card_number})" if card_number else "" results["not_found"] += 1 - results["details"].append(f"Не найден: {formatted_account}") + results["details"].append(f"Не найден: {formatted_account}{card_info}") continue # Пробуем удалить из розыгрыша