fix: add email alerts for all SD module errors

This commit is contained in:
Денис Кривоченко
2026-07-31 00:26:24 +07:00
parent 2fe74b08d8
commit 4a464911d6
+10 -2
View File
@@ -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
pass