Архитектура системы
EasyDesk построен вокруг трёх ключевых принципов:
1. Канальная агностичность — ядро системы (core, service/*) не зависит от конкретных мессенджеров. Весь платформенный код изолирован в модулях channel/* и реализует единый контракт channel:api.
2. Supervisor-agnostic модель — платформенные ID (Telegram user_id, topic_id) хранятся в таблицах привязок отдельно от доменных сущностей. Ядро оперирует только абстрактными agent_id и ticket_id.
3. EventBus (SharedFlow) — значимые события (создание тикета, смена статуса, назначение) публикуются в шину и доставляются подписчикам. Каждый подписчик сам отвечает за персистентность нужных ему данных.