From 1e61eca60cf6a3ada5133d023ad3f631356289b2 Mon Sep 17 00:00:00 2001 From: Admin Date: Tue, 17 Mar 2026 18:24:59 +0400 Subject: [PATCH] =?UTF-8?q?v1.35=20=D0=9A=D0=A0=D0=98=D0=A2=D0=98=D0=A7?= =?UTF-8?q?=D0=95=D0=A1=D0=9A=D0=9E=D0=95=20=D0=98=D0=A1=D0=9F=D0=A0=D0=90?= =?UTF-8?q?=D0=92=D0=9B=D0=95=D0=9D=D0=98=D0=95=20=D0=92=D0=95=D0=A0=D0=98?= =?UTF-8?q?=D0=A4=D0=98=D0=9A=D0=90=D0=A6=D0=98=D0=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 🐛 ПРОБЛЕМА: • Жильцы писали номер квартиры — он НЕ СОХРАНЯЛСЯ • 11 человек верифицированы БЕЗ квартиры! • Авто-верификация верифицировала без проверки квартиры 🔧 ИСПРАВЛЕНИЯ: 1️⃣ web/app.py — auto_verify: • Теперь верифицирует ТОЛЬКО с квартирой • Проверка: apartment != None AND apartment != '' 2️⃣ handlers/verification.py — process_verification: • Если верифицирован БЕЗ квартиры → СОХРАНЯЕТ! • Если верифицирован С квартирой → сообщение • Для неверифицированных → как раньше ✅ РЕЗУЛЬТАТ: • Жильцы смогут добавить квартиру постфактум • Авто-верификация не сломает данные • 11 человек смогут восстановить квартиры 📝 ФАЙЛЫ: • web/app.py: auto_verify fix • handlers/verification.py: apartment save fix Co-authored-by: Qwen-Coder --- handlers/verification.py | 33 +++++++++++++++++++++++++-------- web/app.py | 18 ++++++++++++------ 2 files changed, 37 insertions(+), 14 deletions(-) diff --git a/handlers/verification.py b/handlers/verification.py index 7f7f241..a882cc8 100644 --- a/handlers/verification.py +++ b/handlers/verification.py @@ -197,16 +197,33 @@ async def process_verification(message: Message, apartment: str): session.add(user) else: logger.info(f'Пользователь найден: verified={user.verified}, apartment={user.apartment}') + # Если уже верифицирован if user.verified: - await message.answer( - f'✅ Вы уже верифицированы (кв. {user.apartment})\n\n' - 'Если нужно изменить квартиру, обратитесь к администратору.', - parse_mode='HTML' - ) - return - - # Обновляем квартиру + # Но квартиры нет — сохраняем! + if not user.apartment: + user.apartment = apartment_upper + await session.commit() + logger.info(f'Сохранена квартира для верифицированного: {apartment_upper}') + + await message.answer( + f'✅ Квартира сохранена!\n\n' + f'Квартира: {apartment_upper}\n\n' + f'Вы уже были верифицированы.\n' + f'Теперь ваша квартира привязана к аккаунту!', + parse_mode='HTML' + ) + return + else: + # Уже есть квартира + await message.answer( + f'✅ Вы уже верифицированы (кв. {user.apartment})\n\n' + 'Если нужно изменить квартиру, обратитесь к администратору.', + parse_mode='HTML' + ) + return + + # Обновляем квартиру для неверифицированных user.apartment = apartment_upper # Создаём заявку на верификацию (если ещё нет активной) diff --git a/web/app.py b/web/app.py index c63526b..348ccc0 100644 --- a/web/app.py +++ b/web/app.py @@ -158,13 +158,19 @@ async def users_page(request: Request, search: str = "", filter: str = "", usern @app.post("/api/users/auto_verify") async def api_auto_verify_users(username: str = Depends(get_current_admin)): - """Автоверификация активных пользователей""" + """Автоверификация активных пользователей (ТОЛЬКО с квартирой!)""" async with AsyncSessionLocal() as session: # Находим активных (50+ сообщений) которые не верифицированы - stmt = select(User).where(User.verified == False, User.message_count >= 50) + # И у которых УЖЕ ЕСТЬ квартира! + stmt = select(User).where( + User.verified == False, + User.message_count >= 50, + User.apartment != None, + User.apartment != '' + ) result = await session.execute(stmt) active_users = list(result.scalars().all()) - + # Верифицируем всех verified_count = 0 for user in active_users: @@ -172,10 +178,10 @@ async def api_auto_verify_users(username: str = Depends(get_current_admin)): if not user.verification_date: user.verification_date = datetime.utcnow() verified_count += 1 - + await session.commit() - - return JSONResponse({"success": True, "message": f"Верифицировано {verified_count} активных пользователей"}) + + return JSONResponse({"success": True, "message": f"Верифицировано {verified_count} активных пользователей с квартирой"}) @app.post("/api/user/{user_id}/update")