Когда химия встречается с кодом: история одного JSON
На прошлой неделе мы тестировали интеграцию нового модуля аналитики для одной из производственных площадок — система должна была собирать данные о параметрах химического синтеза в реальном времени и отправлять их на сервер для построения отчётов. Всё шло по плану, пока не случилось... «это».
Сервер упал. Модуль завис. Оператор в цеху начал получать ошибку за ошибкой. Все думали, что проблема в сети или перегрузке — оказалось, всего лишь один недостающий символ в JSON-файле. Да-да, простой неэкранированный апостроф.
На этой неделе мы внедряли новую систему предиктивного анализа состава сырья — модуль отправлял данные о концентрации элементов в JSON-формате. Казалось бы, стандартная история.
Но в одном из пакетов пришёл вот такой JSON:
#json
{
"compound": "NH3",
"pressure": "null",
"concentration": 0.24
}
Наша система считала это как фактическое значение — нулевое давление. И немедленно передала команду остановки на один из ключевых узлов. Всего за 7 минут блок среагировал как положено по протоколу безопасности — аварийная приостановка потока, сброс давления, аварийная вентиляция.
💥 Производство встало. 💥 Персонал эвакуировался из сектора. 💥 Один из складов на автоматике закрылся на блокировку. 💥 Система учёта материалов обнулила остатки по NH₃, KOH и H₂SO₄.
🔥 Закрыли весь блок в систему ручного управления. 🔥 Подняли резервный сервер на последнем снапшоте (слава нашему devops, у которого OCD на бэкапы). 🔥 Провели полный аудит всех входящих интеграций — 14 точек. 🔥 Добавили строгую схему валидации входящих JSON по JSON Schema:
(
{
"type": "object",
"properties": {
"pressure": {
"type": "number",
"minimum": 0.01
}
},
"required": ["pressure"]
}
🔥 Написали короткое ТЗ для всех подрядчиков: если в поле pressure будет null, "-", "n/a" или "0", мы это воспринимаем как угрозу и блокируем весь пакет.
🔥 И самое главное — мы составили свой внутренний документ:
"7 сценариев, когда автоматизация может стать врагом производства"
IT-интеграции в химической отрасли — это не просто "удобство". Это ответственность за безопасность, за людей, за сырьё, за репутацию отрасли.
Промышленная химия — точна. Но когда её описывают строки кода, допуск в 1 символ может привести к остановке.
📌 Поэтому теперь у нас другое мышление: Каждый новый парсер, каждый импорт данных, каждый обмен с подрядчиком мы начинаем с вопроса:
"Что произойдёт, если это значение будет ложным?""А если кто-то поставит null? А если -1? А если ""?"
Мы восстановили всё за 2 часа. Никто не пострадал. Продукты не утратили качества. Но этот случай останется с нами как урок цифровой осторожности.
📍Если вы работаете в производстве, внедряете новые модули, развиваете промышленный IoT — не думайте, что "JSON — это просто текст". Это язык между человеком, машиной и реальностью.
А мы — команда KAZХИМИЯ — продолжаем делать этот язык безопасным, понятным и устойчивым.
#KAZХИМИЯ #цифровизацияпроизводства #автоматизация #jsonfail #ошибкаданных #интеграция #IoTвпромышленности #историиизреальнойжизни
Комментарии 0
Авторизуйтесь чтобы оставить комментарий