Когда химия встречается с кодом: история одного 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ХИМИЯ — продолжаем делать этот язык безопасным, понятным и устойчивым.

 qazchem.kz

#KAZХИМИЯ #цифровизацияпроизводства #автоматизация #jsonfail #ошибкаданных #интеграция #IoTвпромышленности #историиизреальнойжизни  

Комментарии 0

Авторизуйтесь чтобы оставить комментарий