Skip to content

🧭 Director

⬅️ Back | 🏠 Docs Root

Модуль director выступает центральным координатором межфичевых переходов в фреймворке codex-bot.


🧠 Почему так?

Развязка фич (Decoupling)

В большом боте фичам часто нужно переходить от одной к другой (например, из «Профиля» в «Бронирование»). Без центрального координатора фичи должны были бы импортировать друг друга, создавая циклические зависимости. Director решает это, используя DI-контейнер и Протоколы для развязки фич.

Stateless Контекст

Поскольку оркестраторы не хранят состояние, им нужен способ доступа к контексту текущего запроса (user ID, chat ID, FSM state). Director инстанцируется на каждый входящий запрос и передает себя как аргумент в методы оркестратора. Это гарантирует изоляцию данных пользователя внутри экземпляра Director.


🔄 Поток данных (The Flow)

  1. Инициализация: Хендлер создает экземпляр Director с текущим FSMContext, user_id и chat_id.
  2. Переход: Хендлер вызывает director.set_scene(feature="booking", payload=...).
  3. Поиск: Director получает нужный оркестратор из реестра features DI-контейнера.
  4. Смена состояния: Если оркестратор объявил expected_state, Director автоматически устанавливает FSM-стейт пользователя.
  5. Исполнение: Director вызывает метод оркестратора handle_entry(director=self, payload=...).
  6. Обогащение: Director обогащает результат UnifiedViewDTO метаданными роутинга перед возвратом.

🗺️ Карта модуля

Компонент Описание
📄 API Reference Технические детали класса Director.
📄 Protocols OrchestratorProtocol, ContainerProtocol и SceneConfig.

Последнее обновление: 2025-02-07