Цель
Создать единую базу событий XIOT-PLC, по которой пользователь, интегратор и аналитический бот смогут восстановить полную картину работы объекта:
- какая конфигурация была загружена и применена;
- когда запускался, останавливался и обновлялся контроллер;
- было ли подключение к облаку;
- какие драйверы и устройства были доступны;
- когда подключались и отключались панели;
- кто и почему отправил команду;
- получила ли команда подтверждение;
- какое событие стало причиной работы сценария;
- сколько длилась неисправность и когда система восстановилась;
- какие сообщения ещё не переданы в облако.
Что уже работает
- Все устройства и сценарии используют общий модуль сообщений.
- В редакторе определены уровни «Отладка», «События», «Сводки», «Информация», «Предупреждения», «Тревоги», «Ошибки в работе» и «Критические ошибки».
- Сообщения, кроме отладки, сохраняются в локальном журнале.
- Команды устройств и сценариев умеют показывать отправку, ожидание обратной связи, подтверждение и ошибку ожидания.
- Для аварийных команд крана, защитного реле и сирены используется критическая ошибка.
- Защита от протечки, пожарная сигнализация и охрана разделяют тревогу, итог выполнения и техническую неисправность.
- Драйверы уже публикуют признаки подключения, доступности и ошибок, но эти переходы почти не попадают в общий журнал.
- Панели уже передают heartbeat, комнату, версию приложения и состояние локальной и облачной связи.
- Modbus уже различает состояние порта, устройства и отдельного канала.
- Есть локальная история, фильтры, постраничное чтение и временная шкала сообщений.
Критические пробелы
| Проблема |
Последствие
|
| В облако передаются не все уровни сообщений |
Бот не получает обычные события, ошибки в работе и критические ошибки
|
| При ошибке облачной отправки пакет удаляется |
События безвозвратно теряются при отсутствии интернета или недоступности сервера
|
| Очередь облачной отправки хранится только в памяти |
Перезапуск контроллера удаляет ещё не отправленные события
|
| В журнале остаётся в основном русский текст |
Бот вынужден угадывать объект, причину, старое и новое состояние по формулировке
|
| Причинный контекст не сохраняется в базе |
После закрытия онлайн-диагностики теряется цепочка «источник → команда → устройство → подтверждение»
|
| Не сохраняется версия конфигурации и сессия запуска |
Нельзя уверенно связать проблему с конкретной загрузкой или перезапуском
|
| Имя, тип и комната объекта не фиксируются вместе с событием |
После переименования или удаления устройства старая история становится неоднозначной
|
| Переходы драйверов остаются в служебном логе и тегах |
Пользовательский журнал и бот не видят состояние инфраструктуры
|
| Нет единого правила задержки и восстановления |
Прямое добавление сообщений во все драйверы создаст поток ложных отключений и переподключений
|
| Завершение процесса не гарантирует запись очереди |
Сообщения перед перезапуском или остановкой могут потеряться
|
| Горячее создание объекта определяется неверно |
Новый объект может ошибочно отмечаться как обновлённый, а событие создания не появляется
|
| Настройка видимости уровней сохраняется неполно |
После перезапуска фильтры журнала могут не соответствовать выбору пользователя
|
Целевая модель события
Русский текст остаётся основным представлением для человека, но каждое сообщение получает сохраняемые аналитические данные.
| Данные |
Назначение
|
| Уникальный идентификатор события |
Защита от дублей при повторной облачной доставке
|
| Машинный код события |
Стабильное понимание смысла независимо от русского текста
|
| Уровень сообщения |
Отображение и уведомления
|
| Вид события |
Команда, состояние, подключение, конфигурация, инцидент, сводка
|
| Состояние |
Открыто, активно, восстановлено, завершено, отклонено
|
| Время возникновения и время получения |
Правильный порядок при задержанной доставке
|
| Контроллер и сессия запуска |
Связь событий с конкретным запуском PLC
|
| Версия PLC и версия конфигурации |
Поиск проблем после обновления
|
| Тип, постоянный адрес и сохранённое имя объекта |
Надёжная история после переименования или удаления
|
| Этаж и комната |
Привязка события к месту
|
| Предыдущее и новое состояние |
Анализ перехода без разбора текста
|
| Инициатор и причина |
Кто вызвал изменение и почему
|
| Действие и результат |
Что система пыталась выполнить и чем это закончилось
|
| Связь с исходным событием |
Построение цепочки команды или сценария
|
| Номер инцидента |
Объединение отключения, повторов и восстановления
|
| Длительность и число повторов |
Оценка устойчивости системы
|
| Статус облачной доставки |
Контроль полноты данных бота
|
Секреты, токены, пароли, полный текст конфигурации и персональные данные в аналитические поля не записываются.
Единый каталог событий
Для каждого машинного кода необходимо один раз определить:
- русский шаблон;
- допустимый уровень;
- категорию;
- обязательные аналитические поля;
- правило открытия и закрытия инцидента;
- задержку подтверждения;
- правило повторов;
- возможность передачи в облако;
- срок хранения;
- допустимые источники события.
Первый набор категорий:
| Категория |
Примеры
|
| Контроллер |
запуск, остановка, аварийное завершение, обновление
|
| Конфигурация |
загрузка начата, принята, применена, отклонена, не изменилась
|
| Облако |
подключение, потеря связи, восстановление, ошибка авторизации
|
| Драйвер |
запущен, выключен, недоступен, восстановлен, ошибка настройки
|
| Устройство |
обнаружено, добавлено, недоступно, восстановлено, удалено
|
| Панель |
обнаружена, подключена, отключена, перенесена, удалена, обновлена
|
| Команда |
отправлена, подтверждена, повторена, не подтверждена
|
| Сценарий |
запущен, завершён, пропущен, остановлен, завершён с ошибкой
|
| Инцидент |
открыт, изменён, закрыт, повторился
|
| Хранилище |
почти заполнено, ошибка записи, восстановлено, очистка
|
| Сеть и время |
изменился маршрут, нет сети, сеть восстановлена, скорректировано время
|
| Авторизация |
контроллер привязан, авторизация истекла, привязка сброшена
|
Архитектурные доработки
Основа — обязательный этап
| № |
Доработка |
Результат |
Приоритет
|
| 1 |
Утвердить единый каталог машинных кодов событий |
Один смысл не создаётся под разными текстами в разных модулях |
Критический
|
| 2 |
Разделить уровень, вид и состояние события |
Тревожность не смешивается с назначением сообщения |
Критический
|
| 3 |
Добавить новую таблицу аналитических событий с безопасной миграцией |
Старый журнал продолжает работать, новые события получают полную структуру |
Критический
|
| 4 |
Оставить один компонент, управляющий схемой базы |
Исключаются конфликтующие создания и миграции таблиц |
Критический
|
| 5 |
Сохранять нормализованную цепочку причины и действия |
Бот видит инициатора, причину, маршрут и результат после факта |
Критический
|
| 6 |
Сохранять снимок названия, типа и комнаты объекта |
История не ломается после изменения конфигурации |
Высокий
|
| 7 |
Добавить идентификатор запуска и версию конфигурации |
Все события можно привязать к перезапуску и загрузке |
Критический
|
| 8 |
Ввести последовательный номер события внутри запуска |
События с одинаковым временем имеют однозначный порядок |
Высокий
|
| 9 |
Сохранить старый формат ответа для совместимости |
Действующие панели и редактор продолжают работать во время перехода |
Критический
|
| 10 |
Исправить сохранение пользовательских фильтров уровней |
Настройки журнала переживают перезапуск |
Средний
|
Надёжность локальной записи и облака
| № |
Доработка |
Результат |
Приоритет
|
| 11 |
Заменить память очереди записи на постоянную очередь |
События не теряются при перезапуске или временной ошибке базы |
Критический
|
| 12 |
Создать постоянную очередь облачной доставки |
Неотправленные события переживают отсутствие сети и рестарт |
Критический
|
| 13 |
Передавать в облако все сохраняемые уровни |
Бот получает события, ошибки в работе и критические ошибки |
Критический
|
| 14 |
Не удалять пакет при ошибке отправки |
Повторная доставка выполняется после восстановления связи |
Критический
|
| 15 |
Подтверждать облачную доставку по уникальному идентификатору |
Повтор не создаёт дубль на сервере |
Критический
|
| 16 |
Добавить нарастающие интервалы повторной отправки |
Недоступное облако не создаёт постоянную нагрузку |
Высокий
|
| 17 |
Ограничить очередь по классу и возрасту, а не простым обрезанием |
Критические и ещё не доставленные события не вытесняются обычными |
Высокий
|
| 18 |
Добавить состояние самой доставки |
Видны размер очереди, возраст старейшего события и задержка облака |
Высокий
|
| 19 |
Гарантированно завершать запись перед штатной остановкой |
Последнее событие и причина перезапуска не теряются |
Критический
|
| 20 |
Передавать события между отдельными процессами через постоянную очередь |
Обновлятор и вспомогательные службы попадают в общий журнал |
Высокий
|
Единый наблюдатель состояния
| № |
Доработка |
Результат |
Приоритет
|
| 21 |
Добавить единый наблюдатель системных переходов |
Драйверы используют одинаковые формулировки и правила |
Критический
|
| 22 |
Не создавать отключение до получения первого достоверного состояния |
Стартовые значения не выглядят как аварии |
Критический
|
| 23 |
Добавить задержку подтверждения отключения |
Короткий сетевой дребезг не засоряет журнал |
Критический
|
| 24 |
Подавлять повтор одного состояния |
На один период недоступности создаётся одно основное сообщение |
Критический
|
| 25 |
Создавать парное сообщение о восстановлении |
Каждый зафиксированный разрыв получает завершение и длительность |
Критический
|
| 26 |
Различать штатную остановку и неисправность |
Перезапуск драйвера при применении конфигурации не считается аварией |
Высокий
|
| 27 |
Агрегировать повторные ошибки |
Вместо сотен строк хранится число повторов и последняя причина |
Высокий
|
| 28 |
Не наблюдать собственные теги журнала |
Исключается цикл создания сообщений |
Критический
|
| 29 |
Сохранять открытые инциденты между перезапусками |
Восстановление после рестарта закрывает исходную неисправность |
Высокий
|
Системные источники сообщений
Контроллер и конфигурация
| № |
Доработка |
Сообщения
|
| 30 |
Жизненный цикл контроллера |
Запущен; планово останавливается; предыдущая работа завершилась аварийно; восстановлен после перезапуска
|
| 31 |
Причина перезапуска |
Применение конфигурации; обновление; команда интегратора; восстановление службы; неизвестная причина
|
| 32 |
Загрузка конфигурации |
Загрузка начата; конфигурация принята; конфигурация не изменилась; загрузка отклонена
|
| 33 |
Фактическое применение конфигурации |
Конфигурация применена; количество устройств и сценариев; версия конфигурации
|
| 34 |
Сравнение конфигураций |
Какие устройства и сценарии добавлены, изменены и удалены
|
| 35 |
Горячее обновление объектов |
Устройство или сценарий создан, обновлён, удалён; ошибка обновления
|
| 36 |
Исправить определение нового объекта |
Событие создания действительно отличается от события обновления
|
Сообщение «конфигурация применена» создаётся после успешного запуска с новым вариантом, а не только после записи файла. Ожидающий результат должен переживать перезапуск.
Облако контроллера и внутренняя шина
| № |
Доработка |
Сообщения и правила
|
| 37 |
Подключение контроллера к облаку |
Подключён; связь потеряна; восстановлена с длительностью
|
| 38 |
Авторизация облака |
Нет авторизации; срок истёк; авторизация отклонена; авторизация восстановлена
|
| 39 |
Подписка облачного соединения |
Подписка не подтверждена после исчерпания повторов; восстановлена
|
| 40 |
Сертификат облака |
Не удалось получить или проверить сертификат; проверка сертификата выключена
|
| 41 |
Состояние облачной доставки журнала |
Доставка задерживается; очередь переполнена; доставка восстановлена
|
| 42 |
Внутренняя шина сообщений PLC |
Недоступна; перезапускается; восстановлена с длительностью
|
Факт подключения к облаку следует считать подтверждённым только после успешной подписки, а не сразу после открытия сетевого соединения.
Панели управления
| № |
Доработка |
Сообщения и правила
|
| 43 |
Первая регистрация панели |
Подключена новая панель, комната и версия приложения
|
| 44 |
Потеря heartbeat |
Панель не выходит на связь после действующего таймаута
|
| 45 |
Возврат панели |
Связь восстановлена с длительностью простоя
|
| 46 |
Привязка комнаты |
Панель назначена или перенесена в другую комнату
|
| 47 |
Удаление панели |
Панель удалена из контроллера
|
| 48 |
Обновление приложения панели |
Старая и новая версия
|
| 49 |
Каналы связи панели |
Локальная или облачная связь панели потеряна и восстановлена
|
Heartbeat, последняя активность, открытая страница, яркость и громкость в журнал не записываются.
Драйверы первой очереди
| № |
Драйвер |
Что добавить
|
| 50 |
Wiren Board |
Подключение линии; потеря; восстановление; ошибка устройства или канала; устранение ошибки
|
| 51 |
Modbus |
Состояние порта; порт занят; нет прав; устройство недоступно; устройство восстановлено; ошибка настройки канала
|
| 52 |
Zigbee2MQTT |
Мост подключён; мост недоступен; открыт режим добавления; устройство обнаружено; подключено; ошибка опроса; удалено; недоступно; восстановлено
|
| 53 |
Внешние MQTT-подключения |
Брокер подключён; авторизация или TLS отклонены; связь потеряна; восстановлена; команды не доставлены
|
| 54 |
Пользовательский MQTT-брокер |
Служба запущена; недоступна; клиент впервые подключён; клиент превысил таймаут; вернулся
|
| 55 |
REST и TCP |
Связь потеряна после нескольких опросов; восстановлена; неверный адрес или шаблон; повторные ошибки команд агрегированы
|
| 56 |
DMX |
Выходной порт недоступен; передача кадров восстановлена; нельзя заявлять доступность конечного светильника
|
Интеграции второй очереди
| № |
Интеграция |
Что добавить
|
| 57 |
HomeKit |
Мост запущен; неожиданно остановлен; запуск не выполнен; сопряжение добавлено или сброшено; конфигурация обновлена
|
| 58 |
Яндекс Алиса |
Нет авторизации; доставка событий задерживается; очередь восстановлена; событие отклонено; хранилище очереди повреждено
|
| 59 |
Russound |
Подключение, разрыв, восстановление и ошибки обмена
|
| 60 |
Удалённое управление |
Настоящий таймаут ответа вместо переключения состояния на каждом опросе
|
| 61 |
1-Wire |
Датчик добавлен; удалён; недоступен по окну ошибок; восстановлен
|
| 62 |
Elsner |
Нет корректных данных; связь восстановлена после нескольких правильных кадров
|
| 63 |
Global Caché |
Команда не доставлена; доставка восстановлена; отдельная проверка доступности при необходимости
|
| 64 |
Погода и интернет-медиа |
Данные устарели; источник недоступен после нескольких попыток; обновление восстановлено
|
| 65 |
Маршрутизация интернета |
Основной канал потерян; включён резервный; основной восстановлен; убраны дубли технических строк
|
Неактивные или не подключённые к текущему запуску драйверы не включаются в обязательную базу до их фактической активации.
Физические устройства
| № |
Доработка |
Правило
|
| 66 |
Разделить доступность драйвера и устройства |
Работающий порт не означает, что каждое устройство отвечает
|
| 67 |
Добавить обнаружение и подключение нового оборудования |
Записывать только подтверждённое обнаружение или завершённое добавление
|
| 68 |
Добавить длительную недоступность устройства |
Использовать правила конкретного протокола, а не один общий таймаут
|
| 69 |
Добавить восстановление устройства |
Указывать длительность и число неудачных проверок
|
| 70 |
Агрегировать ошибки каналов |
Не создавать отдельный поток для каждого регистра или контрола
|
| 71 |
Сохранять последний успешный обмен |
Бот понимает свежесть данных устройства
|
Команды, сценарии и инциденты
| № |
Доработка |
Результат
|
| 72 |
Присваивать одной команде единый идентификатор |
Отправка, повтор, подтверждение и таймаут образуют одну цепочку
|
| 73 |
Связывать запуск сценария с исходным событием |
Видно, какой датчик или пользователь запустил сценарий
|
| 74 |
Добавить итог сценария |
Завершён, пропущен, остановлен или завершён с ошибкой
|
| 75 |
Не писать каждое промежуточное действие в историю |
Подробные шаги остаются в отладке
|
| 76 |
Открывать инцидент при устойчивой проблеме |
Все повторы и восстановление объединяются одной карточкой
|
| 77 |
Закрывать инцидент только парным восстановлением |
Отсутствие новых ошибок не считается восстановлением
|
| 78 |
Объединять зависимые отказы |
Потеря внутренней шины объясняет одновременное отключение нескольких драйверов
|
| 79 |
Формировать суточную сводку здоровья объекта |
Доступность облака, драйверов, панелей, устройств и число инцидентов
|
Хранение и обслуживание
| № |
Доработка |
Результат
|
| 80 |
Разные сроки хранения по классу события |
Частая диагностика не вытесняет конфигурацию и аварии
|
| 81 |
Не удалять открытые, критические и неотправленные события |
Сохраняется расследуемая информация
|
| 82 |
Хранить долгие суточные итоги после удаления подробностей |
Аналитика доступности сохраняется при ограниченном месте
|
| 83 |
Выполнять очистку небольшими фоновыми пакетами |
Запись новых событий не блокируется
|
| 84 |
Выполнять полное уплотнение базы по расписанию |
Обслуживание не запускается после каждого удаления
|
| 85 |
Сообщать о заполнении и ошибках записи журнала |
Система наблюдает за собственной аналитикой
|
| 86 |
Связать журнал с историей измерений по времени и объекту |
Бот может запросить телеметрию вокруг инцидента без объединения двух баз
|
Рекомендуемые сроки:
- подробная отладка — 7–30 дней, если будет включено её сохранение;
- частые события — 90–180 дней;
- команды, системные переходы и обычные инциденты — 12–24 месяца;
- конфигурация, обновления, безопасность и аварии — 3–5 лет в облаке;
- суточные итоги доступности — дольше подробных событий.
Доступ для аналитического бота
| № |
Доработка |
Возможности
|
| 87 |
Единый защищённый API событий |
Период, уровень, категория, код, объект, драйвер, инцидент, конфигурация
|
| 88 |
Надёжная постраничная навигация |
Однозначный курсор по времени и идентификатору события
|
| 89 |
API открытых и закрытых инцидентов |
Причина, длительность, связанные объекты, восстановление
|
| 90 |
API сводок |
Доступность, число отказов, среднее время восстановления, частота неподтверждённых команд
|
| 91 |
API здоровья журнала |
Размер базы, длина очереди, старейшее неотправленное событие, задержка облака
|
| 92 |
Поток новых событий |
Один формат для истории и событий реального времени
|
| 93 |
Версия формата ответа |
Бот и интерфейсы безопасно переживают развитие схемы
|
Интерфейс журнала
| № |
Доработка
|
| 94 |
Добавить категории «Система», «Подключения», «Устройства», «Сценарии», «Безопасность», «Обновления»
|
| 95 |
Показывать все уровни сообщений с русскими названиями редактора
|
| 96 |
Добавить отдельный фильтр сводок, событий, предупреждений и инцидентов
|
| 97 |
Показывать длительность отключения и признак восстановления
|
| 98 |
Открывать цепочку исходного события, команд и подтверждений
|
| 99 |
Показывать действующую версию конфигурации и запуск контроллера
|
| 100 |
Отображать задержку облачной доставки без смешивания её с событиями объекта
|
Обновления, сеть и состояние самого PLC
| № |
Доработка |
Результат
|
| 101 |
Передавать результат обновления XIOT через постоянную очередь |
Отдельный процесс обновления попадает в единый журнал
|
| 102 |
Проверять новую версию после перезапуска |
Успех обновления подтверждает уже запущенный контроллер, а не установщик
|
| 103 |
Создавать один итог на каждую операцию обновления |
Проценты загрузки остаются в окне обновления, журнал получает запрос, установку, успех или ошибку
|
| 104 |
Обновлять пользовательское приложение через промежуточный каталог |
Действующее приложение не удаляется до успешной загрузки и проверки нового архива
|
| 105 |
Ограничить повторы загрузки приложения |
После исчерпания попыток создаётся одна итоговая ошибка и открытый инцидент
|
| 106 |
Разделить сетевой интерфейс, основной маршрут, доступ в интернет и облако |
Одна неисправность не маскируется другим общим признаком «нет связи»
|
| 107 |
Убрать двойные сообщения при переключении основного и резервного интернета |
Один переход создаёт одно событие
|
| 108 |
Записывать успешную смену часового пояса и отказ операции |
Известно, почему изменилось отображаемое время
|
| 109 |
Обнаруживать существенный скачок системных часов |
Аналитика учитывает нарушение временного порядка
|
| 110 |
Контролировать свободное место, запись журнала, историю и постоянные настройки |
Проблема хранения видна до потери данных
|
| 111 |
Сообщать об ошибке базы через резервную постоянную очередь |
Неисправный журнал способен сообщить о собственной неисправности после восстановления
|
| 112 |
Формировать итог готовности запуска |
Указывается число запущенных и не запущенных драйверов, устройств и сценариев
|
| 113 |
Различать готовый и частично готовый запуск |
Общая строка «контроллер запущен» не скрывает ошибки отдельных компонентов
|
| 114 |
Записывать таймаут незавершённой загрузки конфигурации |
Бот видит брошенную загрузку, если были приняты части данных
|
| 115 |
Не считать отсутствие авторизации ошибкой непривязанного контроллера |
Ошибка появляется только при потере ранее действовавшей авторизации или при отклонении входа
|
Правила защиты от потока сообщений
- Начальное неизвестное состояние не считается отключением.
- Отключение подтверждается таймаутом или несколькими одинаковыми ошибками.
- Повтор одного состояния увеличивает счётчик, но не создаёт новую строку.
- Восстановление создаётся только после ранее записанной неисправности.
- В сообщении о восстановлении указывается длительность.
- Штатное выключение при обновлении конфигурации не считается аварией.
- Ошибки нескольких каналов одного устройства агрегируются.
- Каждая попытка сетевого повтора остаётся в отладке, а не в истории.
- Heartbeat и успешные опросы не сохраняются как отдельные события.
- Для батарейных Zigbee-устройств используются признаки доступности протокола, а не короткий общий таймаут.
- DMX сообщает о доступности выходного порта, но не утверждает доступность светильника без обратной связи.
Тесты
| Группа |
Обязательные проверки
|
| Миграция |
Старая база обновляется без потери истории; повторная миграция безопасна
|
| Порядок событий |
Несколько событий в одну миллисекунду читаются без пропусков и дублей
|
| Перезапуск |
Ожидающая конфигурация, причина рестарта, открытые инциденты и облачная очередь сохраняются
|
| Аварийное завершение |
Новый запуск определяет незакрытую предыдущую сессию
|
| Облако недоступно |
События остаются локально и отправляются после восстановления
|
| Повторная доставка |
Сервер не создаёт дубль одного события
|
| Поток ошибок |
Тысячи одинаковых переходов превращаются в один инцидент со счётчиком
|
| Дребезг связи |
Короткий разрыв до таймаута не попадает в историю
|
| Восстановление |
У каждого записанного разрыва есть парное закрытие и длительность
|
| Конфигурация |
Различаются принятая и фактически применённая конфигурация
|
| Драйверы |
Для каждого драйвера проверяются подключение, отключение, восстановление и штатная остановка
|
| Хранение |
Низкоприоритетные записи удаляются раньше критических, открытых и неотправленных
|
| Безопасность |
Токены, пароли и полный конфиг не попадают в базу и облако
|
| Совместимость |
Старый редактор и панели продолжают читать журнал
|
Этапы внедрения
| Этап |
Состав |
Критерий готовности
|
| 1. Надёжная основа |
Новая запись события, миграция, постоянная локальная и облачная очереди, все уровни, защита от дублей |
Событие не теряется при отключении сети и перезапуске
|
| 2. Контроллер и конфигурация |
Запуск, остановка, аварийное завершение, загрузка и применение конфигурации, версия запуска |
Бот точно знает, какая конфигурация и версия работали в любой момент
|
| 3. Облако и панели |
Облачное подключение контроллера, доставка журнала, полный жизненный цикл панелей |
Все разрывы имеют восстановление и длительность
|
| 4. Основные драйверы |
Wiren Board, Modbus, Zigbee2MQTT, MQTT, REST/TCP, DMX |
Единая сводка доступности основных интеграций
|
| 5. Устройства и инциденты |
Доступность физических устройств, корреляция команд и сценариев, открытие и закрытие инцидентов |
Можно восстановить причинную цепочку отказа
|
| 6. Остальные интеграции |
HomeKit, Алиса, Russound, 1-Wire, Elsner, маршрутизация и другие активные модули |
Все используемые драйверы покрыты едиными правилами
|
| 7. API и аналитика |
API событий, инцидентов, сводок, здоровья; связь с телеметрией |
Бот получает полную структурированную картину без разбора служебного лога
|
| 8. Интерфейс и эксплуатация |
Новые фильтры, цепочки, длительности, настройки хранения и контроль очередей |
Журнал одинаково понятен пользователю и интегратору
|
Первый рабочий релиз
Первый релиз не должен пытаться сразу покрыть все драйверы. В него входят:
- новая совместимая запись аналитического события;
- постоянная очередь облачной доставки без удаления при ошибке;
- передача всех сохраняемых уровней;
- идентификатор запуска и версия конфигурации;
- запуск, остановка и аварийное завершение контроллера;
- принятие и фактическое применение конфигурации;
- подключение, потеря и восстановление облака контроллера;
- жизненный цикл панелей;
- единый наблюдатель переходов;
- защищённый API чтения для бота;
- тесты сети, рестарта, миграции и защиты секретов.
После этого новые драйверы можно подключать к единой базе небольшими адаптерами, не меняя правила хранения и аналитики.
Связанные страницы