🛡️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. архитектуре мы следуем лучшим практикам больших внутренних систем.