Appearance
Журнал событий
Все события системы в хронологическом порядке — от входа пользователя до срабатывания алерта. Единый поток для мониторинга, диагностики и анализа.
Как открыть
Боковое меню → Аналитика → События
Зачем нужен журнал событий
EventLog — иммутабельный (APPEND-ONLY) поток всех событий системы. В отличие от журнала аудита, который фиксирует изменения данных, журнал событий охватывает все действия: вход в систему, переходы партий между статусами, срабатывание алертов, принятие решений.
Используется для:
- Мониторинг в реальном времени — что происходит прямо сейчас
- Диагностика инцидентов — восстановление цепочки событий
- ML-обучение — данные для тренировки AI-рекомендаций
- Compliance — полная хронология для аудиторских проверок
APPEND-ONLY
Записи журнала событий никогда не изменяются и не удаляются. Timestamp хранится с микросекундной точностью для точного восстановления последовательности.
Что на экране
Таблица событий
| Столбец | Описание | Пример |
|---|---|---|
| Время | Дата и время с точностью до секунды | 20.03.2026 14:32:15 |
| Тип события | Категория события | batch.status_changed |
| Действие | Что произошло | start, complete, pause, create |
| Серьёзность | Цветной индикатор | 🔵 info / 🟡 warning / 🔴 critical |
| Источник | Откуда произошло | web_ui / mobile_app / system |
| Сущность | Тип + ID затронутого объекта | batch: 3f2a...8c1b |
| Пользователь | Кто инициировал (пусто для системных) | Иванов А.П. |
Фильтры
| Фильтр | Варианты |
|---|---|
| Период | Последний час / Сегодня / Неделя / Произвольный |
| Тип события | Все / batch.* / order.* / workplace.* / alert.* / system.* |
| Серьёзность | Все / info / warning / error / critical |
| Источник | Все / Веб / Мобильное / Система / API / Датчик |
| Сущность | batch / order / workplace / buffer / defect / alert / user / material |
| Пользователь | Все / конкретный пользователь |
| Поиск | По UUID сущности или correlation_id |
Типы событий
Производство (M4)
| Тип события | Описание | Серьёзность |
|---|---|---|
| batch.status_changed | Партия сменила статус (created → started → completed) | info / warning |
| batch.moved | Партия перемещена на другое РМ | info |
| workplace.paused | Рабочее место приостановлено | warning |
| workplace.fault | Авария рабочего места | error |
| buffer.overflow | Накопитель превысил порог | warning |
Планирование (M3)
| Тип события | Описание | Серьёзность |
|---|---|---|
| order.launched | Заказ запущен в производство | info |
| order.completed | Заказ полностью выполнен | info |
| order.delayed | Заказ выходит за дедлайн | warning |
Качество (M6)
| Тип события | Описание | Серьёзность |
|---|---|---|
| defect.detected | Обнаружен дефект | warning / critical |
| inspection.completed | Проверка качества завершена | info |
Алерты и решения (M7)
| Тип события | Описание | Серьёзность |
|---|---|---|
| alert.triggered | Сработал алерт | warning / error |
| alert.resolved | Алерт решён | info |
| decision.made | Принято решение мастером | info |
Персонал и система
| Тип события | Описание | Серьёзность |
|---|---|---|
| employee.clock_in | Сотрудник отметил приход | info |
| employee.clock_out | Сотрудник отметил уход | info |
| system.login | Вход в систему | info |
| stock.receive | Приёмка материала на склад | info |
Уровни серьёзности
| Уровень | Цвет | Когда используется | Пример |
|---|---|---|---|
| info | 🔵 Синий | Штатные операции | Партия завершена, смена началась |
| warning | 🟡 Жёлтый | Отклонения от нормы | Партия приостановлена, накопитель 80% |
| error | 🟠 Оранжевый | Ошибки требующие вмешательства | Авария станка, ошибка API |
| critical | 🔴 Красный | Критические инциденты | Массовый брак (> 5 дефектов), каскадная остановка |
Автоматическая серьёзность
Система автоматически повышает серьёзность по правилам:
batch.status_changedс переходом вpausedилиfault→ warningdefect.detectedс количеством > 5 → critical
Источники событий
| Источник | Код | Описание |
|---|---|---|
| Веб-интерфейс | web_ui | Действия пользователя в браузере |
| Мобильное приложение | mobile_app | Действия оператора через Flutter-приложение |
| Система | system | Автоматические события (алерты, пересчёт метрик) |
| API | api | Внешние интеграции |
| Датчик/SCADA | sensor | Сигналы от оборудования |
Корреляция событий
Связанные события группируются по correlation_id — это позволяет проследить полный жизненный цикл заказа или партии.
Пример цепочки (один correlation_id):
| # | Время | Тип события | Действие |
|---|---|---|---|
| 1 | 08:00 | order.launched | create |
| 2 | 08:01 | batch.status_changed | create |
| 3 | 08:15 | batch.status_changed | start |
| 4 | 09:30 | defect.detected | create |
| 5 | 09:31 | batch.status_changed | pause |
| 6 | 09:35 | decision.made | create |
| 7 | 09:40 | batch.status_changed | resume |
| 8 | 10:15 | batch.status_changed | complete |
Причинно-следственные связи
Поле causation_id указывает на событие-причину. В примере выше: событие #5 (пауза) имеет causation_id = ID события #4 (дефект). Это позволяет строить DAG (граф) причинно-следственных связей.
Детали записи события
При клике на строку видны дополнительные данные:
| Поле | Описание |
|---|---|
| Изменения | JSON: {поле: {old: ..., new: ...}} |
| Метаданные | Контекст: |
| Сессия | UUID сессии браузера/мобильного |
| IP-адрес | IPv4/IPv6 |
| User-Agent | Браузер или мобильное приложение |
| Transaction ID | PostgreSQL txid |
| Correlation ID | UUID группы связанных событий |
| Causation ID | UUID события-причины |
Срок хранения
| Период | Режим | Описание |
|---|---|---|
| 0-90 дней | HOT | Полный доступ, быстрый поиск (TimescaleDB) |
| 90-730 дней | WARM | Сжатые данные, поиск с задержкой |
| > 2 лет | COLD | Архив, восстановление по запросу |
Связанные разделы
- Журнал аудита — детальные изменения данных с бизнес-контекстом
- Оповещения — алерты, создаваемые на основе событий
- Мониторинг — визуальное представление текущего состояния