From 4a464911d6da5bba5079d7c50bfd12aa55803040 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=94=D0=B5=D0=BD=D0=B8=D1=81=20=D0=9A=D1=80=D0=B8=D0=B2?= =?UTF-8?q?=D0=BE=D1=87=D0=B5=D0=BD=D0=BA=D0=BE?= Date: Fri, 31 Jul 2026 00:26:24 +0700 Subject: [PATCH] fix: add email alerts for all SD module errors --- service_desk/handlers.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/service_desk/handlers.py b/service_desk/handlers.py index af91c7f..dd53cea 100644 --- a/service_desk/handlers.py +++ b/service_desk/handlers.py @@ -149,6 +149,7 @@ async def create_ticket_in_sd(requester_email: str, subject: str, description: s except (httpx.RequestError, httpx.HTTPStatusError, Exception) as e: logger.error(f"❌ [SD Network Error] Не удалось подключиться к ServiceDesk: {e}") sd_workflow_logger.error(f"❌ [SD Network Error] {e}") + _sd_log_and_notify_email("Подключение к ServiceDesk", str(e)) return None return None @@ -273,6 +274,7 @@ async def _create_ticket_and_attach_files(user_id, msg_text, session, msg, login except Exception as e: logger.exception(f"❌ [SD Ticket Error] {user_id}: {e}") sd_workflow_logger.error(f"❌ [SD Ticket Error] {user_id}: {e}") + _sd_log_and_notify_email(f"Создание заявки для {user_id}", str(e)) session["step"] = "need_text" await msg.answer(system_error_text(EMOJI_DIGITS), parse_mode="html") @@ -295,6 +297,7 @@ async def _wait_for_attachments_and_create(user_id, session): except Exception as e: logger.exception(f"❌ [SD Ticket Failed] user={user_id}: {e}") sd_workflow_logger.error(f"❌ [SD Ticket] {e}") + _sd_log_and_notify_email(f"Создание заявки для {user_id}", str(e)) session["step"] = "need_text" try: await msg.answer(system_error_text(EMOJI_DIGITS), parse_mode="html") @@ -310,6 +313,7 @@ def _on_sd_timer_done(task: asyncio.Task, user_id: str): except Exception as e: logger.error(f"❌ Ошибка в таске таймера SD для {user_id}: {e}") sd_workflow_logger.error(f"❌ [SD Timer Error] {user_id}: {e}") + _sd_log_and_notify_email(f"Таймер создания заявки для {user_id}", str(e)) @router.message() async def sd_module_handler(msg: Message): @@ -415,14 +419,18 @@ async def sd_module_handler(msg: Message): log_menu_stats(user_id, "Service Desk", f"Добавление файла к заявке #{ticket_id}") await msg.answer(sd_file_attached(), parse_mode="html") else: + _sd_log_and_notify_email(f"Загрузка файла к заявке #{ticket_id}", f"file={att.get('file_name', 'unknown')}") await msg.answer(system_error_text(EMOJI_DIGITS), parse_mode="html") elif msg_text.strip(): await msg.answer(UNKNOWN_MAIN_CMD_TEXT, parse_mode="html") return except Exception as e: - logger.exception(f"❌ [SD Fatal Error] user={getattr(msg.from_user, 'id', 'unknown')}: {e}") + user_id = getattr(msg.from_user, 'id', 'unknown') + logger.exception(f"❌ [SD Fatal Error] user={user_id}: {e}") sd_workflow_logger.error(f"❌ [SD Fatal] {e}") + _sd_log_and_notify_email(f"Обработка сообщения от {user_id}", str(e)) try: await msg.answer(system_error_text(EMOJI_DIGITS), parse_mode="html") except Exception: - pass \ No newline at end of file + pass +