Загрузка данных


def parse_event(event_value: str) -> tuple[str | None, str | None]:
    """
    Разделяет строку события на имя и причину, вложенную в скобки
    """
    if not event_value or not isinstance(event_value, str):
        return None, None

    # Паттерн для "Состояние режима (Причина)"
    pattern = r'^([^\(]+?)\s*\(([^\)]+)\)\s*$'
    match = re.match(pattern, event_value)

    if match:
        mode_part = match.group(1).strip()
        reason_part = match.group(2).strip()
        return mode_part if mode_part else None, reason_part if reason_part else None
    # Если значение события не соответствует паттерну, возвращаю текст, если нет текста, тогда None
    return event_value.strip(), None