Skip to content

🛡️Policy Layer

🛡️ Policy Layer (policy_layer) — слой политик доступа и контекстных ограничений

🎯 Назначение

Policy Layer — это единый архитектурный слой, который определяет, кто, когда и какие действия может выполнять в боте.
Он отвечает за проверки:

  • роли и прав пользователя
  • контекста и этапа сценария
  • корректности окружения
  • разрешённости операции в текущем состоянии системы
  • ограничений уровня безопасности
  • лимитов, анти-спама и внутренних правил

Этот слой действует как “щит”, защищающий логику бота от некорректных, опасных или неуместных действий.

📌 Эмодзи-обозначение в документации: 🛡️ Policy Layer

Это служит сигналом, что речь идёт о механизмах безопасности и архитектурных политик верхнего уровня.


🧩 Общие принципы

1. Чистота хендлеров

Хендлеры не должны выполнять проверки доступа самостоятельно.
Они лишь вызывают политики:

if not await policy_layer.ensure_operator(callback, context):
    return

Это исключает хаос, дублирование логики и ошибочные проверки.


2. Минимальная связность

Политики не используют:

  • FSM
  • клавиатуры
  • сервисы
  • Telegram-API
    (кроме получения базовой информации из объекта события)

Политики — это “чистый слой правил”.


3. Независимость от веток

Один policy-layer обслуживает весь бот, а не отдельные модули.
Это гарантирует единообразные правила поведения.


📂 Структура размещения

🔹 Начальный этап (рекомендуется большинству проектов)

На старте допустимо оформить слой одним файлом:

core/
    policy_layer.py

🔹 Этап расширения (бот становится «серьёзным»)

Когда файл превышает 300–400 строк, он становится архитектурной подсистемой.
Тогда применяется полноценная структура:

core/
    policy_layer/
        __init__.py
        access.py             # роли, разрешения, идентификация
        context_rules.py      # проверки контекстов, сценариев
        rate_limits.py        # ограничения частоты действий
        environment.py        # зависимости, состояние системы
        security.py           # чувствительные операции

Это — признак бота высокого класса, попадающего в топ 1% продуманной Telegram-архитектуры.

Обычные боты (99–95%) никогда не доходят до этого уровня
и помещают проверки прямо в хендлеры.
Но в U.L.I. архитектуре мы следуем лучшим практикам больших внутренних систем.