diff --git a/app/bot/services/mailing_service/composer.py b/app/bot/services/mailing_service/composer.py
index 2fe4b72..5108659 100644
--- a/app/bot/services/mailing_service/composer.py
+++ b/app/bot/services/mailing_service/composer.py
@@ -1,8 +1,12 @@
# composer.py
-import time
+from datetime import datetime
from typing import Optional, Tuple
-from app.bot.utils.tg_escape_chars import escape_telegram_chars # или твоя функция, если кастомная
+from zoneinfo import ZoneInfo
+
+from app.bot.utils.tg_escape_chars import escape_telegram_chars # или твоя функция, если кастомная
+from config import ZABBIX_TZ
+
def compose_telegram_message(data: dict) -> Tuple[str, Optional[str]]:
"""
@@ -19,6 +23,12 @@ def compose_telegram_message(data: dict) -> Tuple[str, Optional[str]]:
'High': '⚠️',
'Disaster': '⛔️'
}
+ convert_time_format = {
+ "h": "ч",
+ "m": "м",
+ "s": "с"
+ }
+
priority = priority_map.get(data.get('severity', ''), '')
msg = escape_telegram_chars(data.get('msg', ''))
host = escape_telegram_chars(data.get('host', ''))
@@ -26,7 +36,8 @@ def compose_telegram_message(data: dict) -> Tuple[str, Optional[str]]:
severity = escape_telegram_chars(data.get('severity', ''))
status = data.get('status', '').upper()
timestamp = int(data.get('date_reception', 0))
- time_str = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(timestamp))
+ dt = datetime.fromtimestamp(timestamp, tz=ZoneInfo(ZABBIX_TZ))
+ time_str = dt.strftime('%d.%m.%Y %H:%M:%S')
if status == "PROBLEM":
message = (
@@ -36,16 +47,36 @@ def compose_telegram_message(data: dict) -> Tuple[str, Optional[str]]:
f"Время возникновения: {time_str} Мск\n"
)
else:
+ event_duration = data.get('event_duration', '')
+ duration = ' '.join(
+ f"{part[:-1]}{convert_time_format.get(part[-1], part[-1])}"
+ for part in event_duration.split()
+ )
+
+ # Переформатируем event_date из '2025.06.27 16:46:04' в '27.06.2025 16:46:04'
+ event_date_str = data.get('event_date', '')
+ if event_date_str:
+ try:
+ dt_start = datetime.strptime(event_date_str, "%Y.%m.%d %H:%M:%S")
+ # не меняем timezone, просто меняем формат
+ time_start = dt_start.strftime('%d.%m.%Y %H:%M:%S')
+ except Exception:
+ time_start = event_date_str # fallback — оставляем как есть
+ else:
+ time_start = ''
+
message = (
f"✅ {host} ({ip})\n"
f"Описание: {msg}\n"
f"Критичность: {severity}\n"
f"Проблема устранена!\n"
+ f"Время начала: {time_start} Мск\n"
f"Время устранения: {time_str} Мск\n"
+ f"Длительность проблемы: {duration}\n"
)
link = data.get("link")
return message, link
except KeyError as e:
- raise ValueError(f"Missing key in data: {e}")
+ raise ValueError(f"Missing key in data: {e}")
\ No newline at end of file
diff --git a/app/bot/services/mailing_service/utils/link_button.py b/app/bot/services/mailing_service/utils/link_button.py
index 0d81a97..3c11709 100644
--- a/app/bot/services/mailing_service/utils/link_button.py
+++ b/app/bot/services/mailing_service/utils/link_button.py
@@ -12,6 +12,6 @@ def create_link_button(link: Optional[str]) -> Optional[InlineKeyboardMarkup]:
return None
markup = InlineKeyboardMarkup()
- button = InlineKeyboardButton(text="График", url=link)
+ button = InlineKeyboardButton(text="Открыть график", url=link)
markup.add(button)
return markup