🧭 Director
Модуль director выступает центральным координатором межфичевых переходов в фреймворке codex-bot.
🧠 Почему так?
Развязка фич (Decoupling)
В большом боте фичам часто нужно переходить от одной к другой (например, из «Профиля» в «Бронирование»). Без центрального координатора фичи должны были бы импортировать друг друга, создавая циклические зависимости. Director решает это, используя DI-контейнер и Протоколы для развязки фич.
Stateless Контекст
Поскольку оркестраторы не хранят состояние, им нужен способ доступа к контексту текущего запроса (user ID, chat ID, FSM state). Director инстанцируется на каждый входящий запрос и передает себя как аргумент в методы оркестратора. Это гарантирует изоляцию данных пользователя внутри экземпляра Director.
🔄 Поток данных (The Flow)
- Инициализация: Хендлер создает экземпляр
Directorс текущимFSMContext,user_idиchat_id. - Переход: Хендлер вызывает
director.set_scene(feature="booking", payload=...). - Поиск:
Directorполучает нужный оркестратор из реестраfeaturesDI-контейнера. - Смена состояния: Если оркестратор объявил
expected_state,Directorавтоматически устанавливает FSM-стейт пользователя. - Исполнение:
Directorвызывает метод оркестратораhandle_entry(director=self, payload=...). - Обогащение:
Directorобогащает результатUnifiedViewDTOметаданными роутинга перед возвратом.
🗺️ Карта модуля
| Компонент | Описание |
|---|---|
| 📄 API Reference | Технические детали класса Director. |
| 📄 Protocols | OrchestratorProtocol, ContainerProtocol и SceneConfig. |
Последнее обновление: 2025-02-07