Задача 004: Интеграция Redis Stream с FSM
Приоритет: Высокий Статус: Запланировано Категория: Инфраструктура / Redis
🎯 Цель
Обеспечить прямой доступ к состояниям FSM пользователя внутри обработчиков Redis Stream. Это позволит фоновым событиям бесшовно инициировать смену состояний и обновление UI.
🛠 Постановка проблемы
В данный момент обработчики Redis получают только сырой payload и container. Для изменения состояния пользователя разработчики должны вручную взаимодействовать с хранилищем Redis.
🚀 Предлагаемое решение
- Сборка контекста: Обновить
BotRedisDispatcher, чтобы он искалuser_id(и опциональноchat_id) во входящей полезной нагрузке сообщения Redis. - Async Director: При наличии ID, диспетчер автоматически создаст экземпляры
FSMContextиDirector. - Инъекция в обработчик: Позволить обработчикам Redis принимать аргумент
director: Director, предоставляя тот же API, что и обычные обработчики Telegram.
✅ Определение готовности
- Обработчики Redis могут выполнять
await director.set_scene(). BaseStateManagerработает внутри обработчиков Redis.- Документировано соглашение о ключе
user_idв полезной нагрузке Redis.