# composer.py

import time
from typing import Optional, Tuple
from app.bot.utils.tg_escape_chars import escape_telegram_chars # или твоя функция, если кастомная

def compose_telegram_message(data: dict) -> Tuple[str, Optional[str]]:
    """
    Формирует сообщение для Telegram и возвращает его вместе со ссылкой (если есть).

    Args:
        data (dict): сообщение из очереди

    Returns:
        Tuple[str, Optional[str]]: текст сообщения и ссылка для кнопки (если есть)
    """
    try:
        priority_map = {
            'High': '⚠️',
            'Disaster': '⛔️'
        }
        priority = priority_map.get(data.get('severity', ''), '')
        msg = escape_telegram_chars(data.get('msg', ''))
        host = escape_telegram_chars(data.get('host', ''))
        ip = escape_telegram_chars(data.get('ip', ''))
        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))

        if status == "PROBLEM":
            message = (
                f"{priority} {host} ({ip})\n"
                f"<b>Описание</b>: {msg}\n"
                f"<b>Критичность</b>: {severity}\n"
                f"<b>Время возникновения</b>: {time_str} Мск\n"
            )
        else:
            message = (
                f"✅ {host} ({ip})\n"
                f"<b>Описание</b>: {msg}\n"
                f"<b>Критичность</b>: {severity}\n"
                f"<b>Проблема устранена!</b>\n"
                f"<b>Время устранения</b>: {time_str} Мск\n"
            )

        link = data.get("link")
        return message, link

    except KeyError as e:
        raise ValueError(f"Missing key in data: {e}")
