Skip to content

Диаграмма компонентов

Общая архитектура SuperBotGo — от пользователя до базы данных.

Обзор системы

Описание компонентов

internal/channel

КомпонентФайлНазначение
ChannelManagermanager.goТочка входа для входящих сообщений. Резолвит пользователя и передаёт в TriggerRouter
AdapterRegistryregistry.goРеестр каналов; маршрутизация исходящих сообщений по ChannelType
Telegram Adaptertelegram/Приём и отправка сообщений через Telegram Bot API. Режимы: long polling / webhook
Discord Adapterdiscord/Приём и отправка сообщений через Discord Gateway. Поддержка шардинга
Dedup Middlewarededup/Дедупликация входящих обновлений через Redis SET NX

Подробно про входящий и исходящий поток, capability matrix и platform-specific особенности: Канальный слой.

internal/state

КомпонентФайлНазначение
StateManagermanager.goУправление многошаговыми диалогами. Хранит состояние в Redis

internal/authz

КомпонентФайлНазначение
Authorizerauthorizer.goRBAC-авторизация с TTL-кешем и expr-lang для оценки политик. Управление ролями

internal/plugin

КомпонентФайлНазначение
PluginManagermanager.goРеестр и жизненный цикл плагинов (native + WASM)
SenderAPIsender.goВысокоуровневый API для отправки сообщений из плагинов

internal/wasm

КомпонентФайлНазначение
Runtimeruntime/Движок WebAssembly на базе wazero. Пул инстансов, AOT-кеш, лимиты памяти
Loaderadapter/loader.goЗагрузка .wasm модулей, reload/reconfigure, валидация манифеста, регистрация HTTP policy
Host APIhostapi/Функции хоста для WASM: HTTP, KV, SQL, уведомления, RPC между плагинами
EventBuseventbus/Pub/sub для плагинов. Memory backend для single-instance и Postgres backend для cluster-wide durable delivery, retry и DLQ
Registryregistry/Версии, зависимости, подписи плагинов

internal/trigger

КомпонентФайлНазначение
TriggerRouterrouter.goЕдиная точка маршрутизации всех событий (Messenger, HTTP, Cron, Event) в плагины
CronSchedulercron.goРаспределённый cron с блокировкой через Redis
HTTP Handlerhttp.goПриём webhook-запросов

internal/notification

КомпонентФайлНазначение
NotifyAPInotify.goМаршрутизация уведомлений с учётом приоритета, рабочих часов, предпочтений канала. Failover между каналами

internal/i18n + internal/locale

КомпонентНазначение
i18nМультиязычность: резолвинг локали пользователя/чата, TOML-файлы переводов

internal/admin

КомпонентФайлНазначение
SPAweb/admin/React-приложение для управления платформой
Admin APIapi/REST API: загрузка/установка плагинов, управление правами, статусы каналов. Lifecycle операций для WASM идут через PluginLifecycleService

Внешние хранилища

КомпонентНазначение
PostgreSQLОсновная БД: пользователи, чаты, роли, плагины, уведомления, авторизация
RedisСостояние диалогов, распределённые блокировки, TTL-кеш
BlobStoreХранение .wasm файлов (Local FS или S3/MinIO). Используется Admin API и Loader
FileStoreХранение файлов пользователей (фото, документы). Local FS или S3, с метаданными и TTL. Используется адаптерами каналов и Host API

Потоки данных

Обработка сообщения пользователя

Загрузка WASM-плагина

Выполнение WASM host-вызова