v1.35 КРИТИЧЕСКОЕ ИСПРАВЛЕНИЕ ВЕРИФИКАЦИИ

🐛 ПРОБЛЕМА:
• Жильцы писали номер квартиры — он НЕ СОХРАНЯЛСЯ
• 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 <qwen-coder@alibabacloud.com>
This commit is contained in:
Admin 2026-03-17 18:24:59 +04:00
parent 75a17a3de5
commit 1e61eca60c
2 changed files with 37 additions and 14 deletions

View file

@ -197,8 +197,25 @@ async def process_verification(message: Message, apartment: str):
session.add(user)
else:
logger.info(f'Пользователь найден: verified={user.verified}, apartment={user.apartment}')
# Если уже верифицирован
if user.verified:
# Но квартиры нет — сохраняем!
if not user.apartment:
user.apartment = apartment_upper
await session.commit()
logger.info(f'Сохранена квартира для верифицированного: {apartment_upper}')
await message.answer(
f'✅ <b>Квартира сохранена!</b>\n\n'
f'Квартира: <code>{apartment_upper}</code>\n\n'
f'Вы уже были верифицированы.\n'
f'Теперь ваша квартира привязана к аккаунту!',
parse_mode='HTML'
)
return
else:
# Уже есть квартира
await message.answer(
f'✅ Вы уже верифицированы (кв. {user.apartment})\n\n'
'Если нужно изменить квартиру, обратитесь к администратору.',
@ -206,7 +223,7 @@ async def process_verification(message: Message, apartment: str):
)
return
# Обновляем квартиру
# Обновляем квартиру для неверифицированных
user.apartment = apartment_upper
# Создаём заявку на верификацию (если ещё нет активной)

View file

@ -158,10 +158,16 @@ 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())
@ -175,7 +181,7 @@ async def api_auto_verify_users(username: str = Depends(get_current_admin)):
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")