MLМаксим Лазовский Руководитель операций
ENRU

Все проекты

Проект Gostockup · с января 2026 · бета

Складское приложение

Как ошибки ручной сборки превратились в своё веб-приложение для склада: от ТЗ в восемь версий до проверки на тестовом заказе.

Каждый день на складе собирают десятки заказов: заморозка, молочка, бакалея, весовой товар. Сборка шла вручную, и человеческие ошибки били сразу в двух местах.

Клиент получал не тот товар или не всё. А остатки на складе расходились с цифрами в системе, и однажды нам пришлось делать полную инвентаризацию. Мне нужен был инструмент, который ведёт упаковщика по сборке шаг за шагом, так что пропустить товар или положить лишний просто нельзя.

Правило проекта

Сначала ТЗ, потом код

Приложение началось с техзадания, которое прошло больше восьми версий. Любое новое требование сначала попадает в ТЗ и только потом в разработку.

Путь заказа на складе

  1. Очередь упаковщик берёт заказ, для остальных он блокируется
  2. Скан каждый товар сканером, счётчик «5 из 5»
  3. Вес весовой товар взвешивается
  4. Фото коробки фотографируются
  5. Счёт печать счёта и число коробок
  6. Этикетка транспортный лейбл
  7. Курьер посылка уходит перевозчику

Статус в магазине меняется сам: «в сборке», «готов», «отгружен». Товар списывается со склада и клиент получает трек-номер только после «отгружен».

Роли

Каждый видит свою часть

Заказы подписчиков программы лояльности собираются первыми, остальные по очереди, от старых к новым.

Роль Что делает Вход
Упаковщик Собирает заказы от очереди до этикетки Личный PIN
Супервайзер Разбирает ошибки, передаёт заказы между людьми, в конце дня отмечает отгрузку Личный PIN
Офис Смотрит журналы, заводит учётные записи склада Пароль
Админ Полные права, любое изменение только с указанием причины Пароль

Защита от ошибок

Ошибка не должна дойти до клиента

Эти правила я заложил в ТЗ до того, как разработчик написал первую строку.

Три неверных скана

Зовём супервайзера. Он вводит свой PIN и решает, что это за товар и кто ошибся.

Товара нет на полке

Всё неотсканированное уходит из заказа, и клиент получает возврат денег без звонков и переписки.

Заказ изменили по ходу

Красный баннер, и упаковщик сразу видит обновлённый список.

Каждый шаг в журнале

Кто, что и когда сделал, плюс фото коробок. Офис видит всю историю заказа. Удалить запись нельзя.

Отгрузку закрывает супервайзер

В конце дня он отмечает посылки, которые забрал курьер. Списание происходит только после реальной передачи.

После «готов» только чтение

Супервайзер правит заказ, пока тот не готов к отправке. Дальше менять могут только офис и админ.

Для любого языка

Один следующий шаг на экране

На складе работают люди, для которых английский не родной. Поэтому интерфейс построен на иконках и крупных кнопках, с переключателем английский, русский, испанский. На каждом экране только одно следующее действие.

Проверка

Тестовый заказ от лица каждой роли

Когда приложение заработало, на склад его сразу не отдали. Тестовый заказ прошёл весь путь по очереди от лица упаковщика, супервайзера и админа, с проверкой каждой кнопки.

Нашлись мелкие ошибки в интерфейсе. Например, счётчик не обновлялся во время сканирования, а отменённая печать засчитывалась как сделанная. Всё найденное я собрал в список для разработчика.

Что дальше

Партнёрские товары, статистика, весы

Для заказов с товарами партнёров, которых нет на нашем складе, я спроектировал отдельную роль. ТЗ на неё уже готово.

Упаковщик

Не видит партнёрские позиции и собирает только свои.

Отдельный сотрудник

Закрывает партнёрскую часть заказа.

Супервайзер

Видит заказ целиком и не может отдать его курьеру, пока обе части не готовы.

Следующие шаги: экран статистики и автоматическое взвешивание на весах вместо ручного ввода.

Что я вынес. Склад нельзя отлаживать на ходу: каждая ошибка сразу уходит клиенту или в остатки. Поэтому порядок всегда один: требование в ТЗ, разработка, проверка на тестовом заказе, и только потом склад.

Весь кейс Gostockup

Быстрее всего написать мне в LinkedIn

Там же вся карьера и заметки о работе

Написать в LinkedIn