📦 Base
Модуль base определяет основные строительные блоки фреймворка codex-bot: иммутабельные DTO и абстрактный Оркестратор.
🧠 Почему так?
Иммутабельность (Immutability)
Все DTO в codex-bot заморожены (frozen=True). В асинхронной среде aiogram передача мутабельных объектов между сервисами может привести к непредсказуемым состояниям гонки (race conditions). Иммутабельность гарантирует, что после создания объекта его нельзя изменить, что упрощает отладку и понимание системы.
Stateless Оркестраторы
Оркестраторы — это сердце каждой фичи. Они спроектированы как Stateless Singletons. Это означает, что один экземпляр оркестратора обрабатывает запросы всех пользователей одновременно. Они не хранят данные пользователя в self. Весь контекст (user ID, chat ID, FSM state) передается через Director и payload.
🔄 Поток данных (The Flow)
- Вход: Хендлер получает событие Telegram и извлекает
payload. - Обработка:
Directorвызывает метод оркестратораrender_content(payload, director). - Выход: Оркестратор возвращает
ViewResultDTO(текст + клавиатура). - Сборка: Базовый класс оборачивает результат в
UnifiedViewDTO, обогащая его метаданными роутинга (chat_id, session_key).
🗺️ Карта модуля
| Компонент | Описание |
|---|---|
| 📄 API Reference | Технические детали BaseBotOrchestrator и DTO. |
| 📄 View DTOs | UnifiedViewDTO, ViewResultDTO и MessageCoordsDTO. |
| 📄 Context DTO | BaseBotContext для нормализации данных события. |
Последнее обновление: 2025-02-07