Группы ошибок
Каждая ошибка в Makbool попадает в группу — не создаётся отдельная запись на каждый случай. Это ключевое отличие от простого логирования.
Когда та же ошибка происходит снова, счётчик группы увеличивается и обновляется last_seen. Вы сразу видите: «эта ошибка случилась 847 раз за последний час».
Fingerprinting
Группировка основана на fingerprint — SHA256-хеше нормализованного сообщения и стектрейса.
Перед хешированием Makbool убирает из стектрейса:
- UUID и хеши (например, Vite-хеши вида
Button.abc123.js)
- Номера строк и столбцов
- Переменные части путей к файлам
Это означает, что ошибка Cannot read property 'x' of undefined в Button.js будет в одной группе независимо от версии бандла.
Статусы ошибок
| Статус | Значение |
|---|
active | Ошибка происходит прямо сейчас |
resolved | Вы пометили ошибку как исправленную |
Если resolved-ошибка появится снова, она автоматически вернётся в active.
Breadcrumbs
Breadcrumbs — это история событий, которые произошли перед ошибкой. SDK автоматически собирает:
- HTTP-запросы (fetch и XHR) — URL, метод, статус, время
- Навигацию — переходы между страницами
- Консольные логи
SDK хранит последние 50 breadcrumbs (кольцевой буфер). Все они отправляются вместе с ошибкой.
AI-объяснения
На странице ошибки есть кнопка «Объяснить». Makbool анализирует сообщение и стектрейс с помощью AI и возвращает:
- Что произошло и почему
- Наиболее вероятную причину
- Как исправить
Объяснение генерируется один раз и кэшируется. Повторные нажатия вернут сохранённый результат.
AI-объяснения входят в лимит вашего плана. На Free плане — 10 объяснений в месяц.
Retention (хранение данных)
Ошибки хранятся в течение периода, определённого вашим планом. По истечении этого срока они удаляются автоматически:
| План | Хранение |
|---|
| Free | 7 дней |
| Pro | 30 дней |
| Team | 90 дней |
Rate limiting
SDK имеет встроенный rate limit: если ваш план исчерпан, сервер отвечает 429 и SDK перестаёт отправлять ошибки до конца месяца. Это защищает от случайного переполнения лимита в цикле.
SSE (Server-Sent Events)
Дашборд получает новые ошибки в реальном времени через SSE без перезагрузки страницы. Соединение устанавливается автоматически при открытии дашборда и переподключается при разрыве.