fix: separate ticket check from creation in Trueconf flow

This commit is contained in:
Денис Кривоченко
2026-07-27 23:43:15 +07:00
parent 9b65ec1e7e
commit 9a24f48259
+5 -10
View File
@@ -205,7 +205,6 @@ async def _find_existing_trueconf_ticket(requester_email: str) -> str | None:
async def create_sd_ticket_for_trueconf(user_id: str, cn: str) -> str | None: async def create_sd_ticket_for_trueconf(user_id: str, cn: str) -> str | None:
""" """
Создать заявку в Service Desk для запроса доступа к Trueconf. Создать заявку в Service Desk для запроса доступа к Trueconf.
Если уже есть открытая заявка — возвращает её ID.
""" """
subject = "Запрос доступа к Trueconf" subject = "Запрос доступа к Trueconf"
@@ -214,12 +213,6 @@ async def create_sd_ticket_for_trueconf(user_id: str, cn: str) -> str | None:
requester_email = ad_info.get("mail") or DEFAULT_REQUESTER requester_email = ad_info.get("mail") or DEFAULT_REQUESTER
city = ad_info.get("city", "Кемерово") if ad_info else "Кемерово" city = ad_info.get("city", "Кемерово") if ad_info else "Кемерово"
# Сначала ищем существующую открытую заявку
existing_ticket = await _find_existing_trueconf_ticket(requester_email)
if existing_ticket:
logger.info(f"Returning existing ticket #{existing_ticket} for {cn}")
return existing_ticket
description = ( description = (
f"Пользователь {cn} ({user_id}) запросил инструкцию по Trueconf, " f"Пользователь {cn} ({user_id}) запросил инструкцию по Trueconf, "
f"но не имеет группы 2FA. Требуется выдача доступа." f"но не имеет группы 2FA. Требуется выдача доступа."
@@ -300,11 +293,13 @@ async def instruct_router_handler(msg: Message):
await msg.answer(text, parse_mode="html") await msg.answer(text, parse_mode="html")
else: else:
# Нет доступа — проверяем, есть ли уже открытая заявка # Нет доступа — проверяем, есть ли уже открытая заявка
ticket_id = await create_sd_ticket_for_trueconf(user_id, cn) ad_info = get_ad_user_info(user_id)
if ticket_id: requester_email = ad_info.get("mail") or DEFAULT_REQUESTER
existing_ticket = await _find_existing_trueconf_ticket(requester_email)
if existing_ticket:
# Заявка уже существует — показываем информацию # Заявка уже существует — показываем информацию
set_state(user_id, "INSTRUCT_TRUECONF_VIEW") set_state(user_id, "INSTRUCT_TRUECONF_VIEW")
text = INSTRUCT_TRUECONF_WITH_AD(EMOJI_DIGITS, cn, ticket_id) text = INSTRUCT_TRUECONF_WITH_AD(EMOJI_DIGITS, cn, existing_ticket)
await msg.answer(text, parse_mode="html") await msg.answer(text, parse_mode="html")
else: else:
# Заявки нет — показываем промпт с запросом # Заявки нет — показываем промпт с запросом