Задача
Компания планировала работу трёх цехов в Excel. Каждый мастер вёл свою таблицу, сводную собирали вручную по пятницам, и к понедельнику она уже устаревала. Нужно было единое место, где видна загрузка людей и оборудования и где план не расходится с реальностью.
Как устроено
Интерфейс — приложение на React с доской, которая рисует только видимое, и временной шкалой. Сервер на Node.js хранит задачи в PostgreSQL и раздаёт изменения через WebSocket, Redis используется как шина событий между копиями сервера.
Отдельный модуль импортирует исторические таблицы, чтобы в первый же день у команды был не пустой сервис, а их собственный план за последние полгода.
Сложности и как мы их решили
01Двое двигают одну и ту же задачу одновременно
Проблема
Руководители смен планируют параллельно. Когда два человека перетаскивали одну задачу, побеждал последний, а первый даже не узнавал, что его изменение пропало.
Решение
Каждое действие — это операция с версией. Сервер применяет их по порядку, а при конфликте клиент получает актуальное состояние и мягкую подсказку, кто и что поменял. Ничего не теряется молча.
02Доска на 2 000 задач тормозила при перетаскивании
Проблема
На реальных данных производственного цеха перетаскивание работало на 15 кадрах в секунду, а на офисных ноутбуках — ещё хуже.
Решение
Перевели доску на виртуализацию — рисуются только видимые строки и временной диапазон. Перетаскивание обрабатывается на отдельном слое без перерисовки всей сетки. Стабильные 60 кадров в секунду.
03Правила планирования жили в головах
Проблема
«Сварщик не может работать больше двух ночных смен подряд», «этот станок занят по четвергам» — десятки правил нигде не были записаны.
Решение
Провели серию интервью с мастерами и собрали правила в движок ограничений. Система подсвечивает нарушение прямо при перетаскивании и объясняет, какое правило сработало.
Результат
Через два месяца после запуска все три цеха перешли на «Поток», а пятничная сводка исчезла как процесс — её заменила сводная панель. Руководители экономят около трёх часов в неделю, а число сорванных из-за накладок смен сократилось вдвое.
Технологии
- TypeScript
- React
- Node.js
- WebSocket
- PostgreSQL
- Redis
- Docker