Антириус Ревизор

Инвентаризация складов и магазинов

Считают не по списку, а по местам на плане объекта

Склад или торговый зал размечается на зоны прямо на плане. У каждого места свой штрихкод, у каждого счётчика свои зоны — и подсчёт идёт по этой карте. Приложение на ТСД и смартфоне работает без сети.

  • Разметка на плане с зонами и штрихкодами мест
  • Скан пишется в устройство и не ждёт сервер
  • Развёртывание в облаке или на мини-ПК на объекте
А-01 Б-01 В-01 П-01 К-01 К-01-03-02 посчитано в работе не начато
Схема: план с зонами и штрихкодами мест, раскраска по прогрессу подсчёта.

Открытый стенд

Систему можно открыть прямо сейчас, без регистрации и разговора

На стенде вымышленный магазин: торговый зал и подсобный склад на плане, дерево зон от стеллажей до полок, штрихкоды мест, справочник товара на три сотни позиций и уже идущая инвентаризация.

  • Редактор плана: зоны рисуются, тянутся и переносятся по дереву
  • Лист этикеток со штрихкодами мест — тот же, что уходит на печать
  • Раздача зон по устройствам: на плане видно, где счёт закрыт, где идёт, а где ещё не начинали
  • Учётный снимок остатков, залитый выгрузкой из учётной системы

Гостевой вход

Адрес
demo.revizorius.ru
Почта
demo@revizorius.ru
Пароль
revizor-demo

Заказчик, магазин, товар и штрихкоды на стенде придуманы для показа: настоящих данных там нет. Стенд общий и раз в час возвращается в исходное состояние, поэтому сделанное на нём не сохраняется, а на время сброса он ненадолго закрывается. Гостю даны права контролёра — те же, с какими на объекте работает человек, ведущий инвентаризацию.

Связка ТСД и учётной системы закрывает только половину задачи

Терминал умеет читать штрихкод товара и отдавать строки в базу. Всё остальное, из-за чего инвентаризация переделывается, остаётся на людях и на бумаге.

Непонятно, что уже прошли

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

Одно место считают дважды

Двое заходят в один стеллаж, соседний не считает никто. Разбирают это уже по расхождениям, задним числом.

В дальнем углу пропадает связь

Wi-Fi добивает не везде, морозильник и металл глушат сигнал. Приложение, которое ждёт ответ сервера, останавливает работу.

Счётчик видит остаток

Когда на экране написано, сколько должно быть, цифру подгоняют под базу. Инвентаризация превращается в театр.

Отличие первое

Объект размечается на плане, а не списком в таблице

Этаж, помещение, стеллаж, секция, полка, ячейка — узлы одного дерева зон. Глубина не ограничена: структура объекта у каждого заказчика своя. Сканируемое место — это то, на что наклеен стикер, будь то ячейка, ящик или палета.

  • Чертёжный редактор, а не рисование мышкой. Подложка калибруется линейкой по известному размеру, дальше работают честные метры. Размеры зоны вводятся числом с клавиатуры.
  • Массив вместо ручной разметки. Нарисован один стеллаж, задано «6 секций на 4 яруса» — получено 24 места с автонумерацией кодов.
  • Вложенность по геометрии. Подзона внутри зоны получает родителя по попаданию контура, а не выбором из списка.
  • Свой код места. Код собирается из кода родителя и номера, но переопределяется вручную: нумерация на объекте часто своя, и менять её нельзя.
  • Работа без плана. Дерево зон живёт и без подложки. Иначе внедрение встаёт на «нарисуйте нам склад».

Редактор совместный: правки идут операциями, а не сохранением плана целиком, чужие изменения приходят сразу, расхождение версий возвращает отказ вместо тихой перезаписи.

Объект Торговый зал Склад Ряд А Ряд Б Палета П-01 А-01-01 А-01-02 штрихкод места Стикер хранится отдельной записью: переклейка гасит старую и заводит новую, прежние сканы остаются привязаны к месту.
Дерево зон: любая глубина, сканируемое место — признак узла.

Отличие второе

Приложение считает без сети, а не «умеет офлайн-режим»

Интерфейс отдаётся из бандла приложения, а не с сервера. Скан пишется в локальную базу устройства и рисуется на экране сразу — сеть в этот момент не участвует ни на одном экране.

  • Журнал только пополняется. Скан не редактируется и не удаляется: правка и отмена — новые события со ссылкой на прежнее. Итог зоны всегда пересчитывается из журнала.
  • Очередь уходит пачками. При появлении связи накопленное отправляется партиями, с короткими таймаутами и разбежкой по времени, чтобы двадцать устройств не ударили в сервер разом.
  • Повторная отправка ничего не дублирует. Идентификатор скана выдаёт устройство, сервер принимает пачку идемпотентно. Отслеживать «что дошло» не нужно.
  • Связь проверяется по ответу сервера. Значок системы врёт: Wi-Fi подключён, сервер за стеной недостижим. На экране постоянно виден счётчик неотправленного.

Данные на объекте невосстановимы, поэтому клиент нативный, а хранилище — SQLite в каталоге приложения. Браузерное хранилище система вправе вычистить сама.

ТСД / смартфон место А-01-02 товар · 12 шт не ушло: 47 Локальный журнал Очередь отправки связь пропала вернулась — уходит пачками Сервер: облако или мини-ПК повторная пачка не создаёт дублей
Путь скана: устройство пишет к себе, очередь уходит при первой связи.

Отличие третье

Брак инвентаризации предотвращается на выдаче зон, а не на разборе расхождений

Два главных источника переделки — посчитанное дважды место и подогнанная под учёт цифра. Оба закрываются порядком работы, а не дисциплиной бригады.

Пакет данных на устройство Счётчик 1 Счётчик 2 А-01А-02А-03 Б-01Б-02Б-03 Зоны выданы до выхода в зал. Пересечения нет, значит занимать участок по сети не нужно: в мёртвом углу двое не посчитают один стеллаж.

Зоны выдаются устройству заранее

Распределение приходит вместе с пакетом данных на объект, до выхода в зал. Это снимает единственный конфликт, который в такой работе бывает: двое посчитали одно место, не зная друг о друге.

Слепой пересчёт

Роль счётчика не видит учётный остаток. Это не настройка, которую можно отключить «на сегодня», а поведение роли. Подогнать цифру не под что.

Проходы по зоне

Первый проход — вслепую. Расхождение выше порога отправляет зону на второй проход, его делает другой человек и тоже не видит первую цифру. Совпало — принято. Не совпало — третий проход с контролёром. Сама сверка с учётом и пороги расхождений — предмет ближайшего этапа, о готовности сказано ниже.

Пустое место сказано вслух

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

Подготовка объекта

Размечать объект можно с устройства, прямо на складе

Не всегда есть план и не всегда есть время рисовать его заранее. Ревизор обходит склад, сканирует уже наклеенные стикеры и задаёт места на месте: стикер привязывается к существующей зоне либо создаёт новую потомком найденного родителя. Геометрия задаётся пальцем на плане, углы тянутся за размер.

Разметка вынесена в отдельный режим намеренно: скан стикера во время подсчёта не должен переклеивать место.

Печать этикеток мест

Пакетная печать по диапазону мест, QR или Code128. QR устойчивее к грязи и читается смартфоном под углом, Code128 привычнее для терминала. Человекочитаемый код дублируется на этикетке.

1 Скан стикера на стеллаже Код уже наклеен на объекте 2 Привязка или новое место Потомок найденного родителя 3 Прямоугольник на плане Углы тянутся за размер новое место Б-02-04
Разметка на объекте: скан, привязка, геометрия.

Устройства и развёртывание

Одно приложение на все платформы бригады. Сервер ставится там, где заказчику удобнее, включая объект вообще без интернета.

Терминалы сбора данных

Zebra, Urovo, Honeywell. Аппаратная кнопка даёт мгновенный скан без камеры — основной режим на складе. Профили сканирования настраиваются, префикс и суффикс учитываются.

Смартфоны Android и iPhone

Камера через нативное распознавание. Подходит там, где терминалов не хватает или считают силами магазина.

Сервер: облако или мини-ПК

Развёртывание одинаковое. На объекте — мини-ПК или ноутбук с фиксированным адресом, адрес раздаётся устройствам QR-кодом. Интернет для подсчёта не нужен.

Приложение собрано на общем коде для iOS, Android-смартфонов и Android-терминалов. Логика подсчёта отделена от интерфейса, сканер и хранилище спрятаны за интерфейсами.

Кому подходит

Задачи у двух сторон разные, и система смотрит на них по-разному.

Розничные сети и предприятия

Считают свой товар своими силами

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

  • Покрытие видно по плану: закончен зал или остались два ряда, понятно без обхода.
  • Свои же сотрудники считают вслепую, без учётного остатка на экране.
  • Стикеры мест наклеиваются один раз и работают дальше от инвентаризации к инвентаризации.
  • Морозильник, дальний угол и подсобка перестают быть местом, где приложение встаёт.
  • Выборочный пересчёт по отдельным зонам — та же механика, только меньше объём.

Подрядчики по инвентаризации

Считают чужие склады по договору

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

  • Зоны распределяются по счётчикам заранее — бригада не спорит о границах на месте.
  • Незнакомый объект размечается с устройства в день выезда, без ожидания планов от заказчика.
  • Свой парк терминалов и смартфонов работает на одном приложении.
  • На объекте без интернета сервер ставится там же, на мини-ПК.
  • Каждый скан несёт устройство, человека и зону: спор «кто это насчитал» решается журналом.

Модель оплаты обсуждается под сценарий работы: за объект, за устройство или подпиской. Условия называем после разговора о задаче.

Что уже работает, а что ещё делается

Продукт в разработке, и мы говорим об этом прямо. Ниже — состояние на сегодня, без округления в свою пользу.

Работает

  • Сервер, роли и права, дерево зон любой глубины, перенос поддерева
  • Админка: объекты, зоны, редактор планов с подложкой
  • Штрихкоды мест и пакетная печать этикеток
  • Импорт учётных остатков из CSV
  • Протокол синхронизации: пакет данных дельтой, заливка пачек без дублей
  • Живой канал: чужие правки и присутствие в редакторе
  • Мобильный клиент: загрузка пакета, экран счёта, правка и отмена, ручной ввод
  • Распределение зон по устройствам на стороне сервера
  • Сборки под Android-терминалы, Android-смартфоны и iOS

В работе и в плане

  • Режим разметки объекта с устройства
  • Прогресс подсчёта на плане в админке в реальном времени
  • Экран распределения зон в админке
  • Выдача штрихкодов мест самой системой, а не только привязка наклеенных
  • Проверка сборок на живых терминалах и смартфонах
  • Свой корневой сертификат и пиннинг на устройствах
  • Разбор весовых кодов и упаковок, неизвестных штрихкодов
  • Сверка факта с учётным снимком и пороги расхождений
  • Сличительная ведомость и выгрузка в учётную систему
  • Производительность бригады, полевой хаб, версионирование планов

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

Поговорить о задаче

Расскажите про объект: что считаете, сколько мест, какие устройства уже есть и как сейчас проходит инвентаризация. Ответим по существу и покажем систему на данных, похожих на ваши.

  • Демонстрация админки, редактора планов и приложения счётчика
  • Разбор сценария под сеть или под подрядные работы
  • Ответ на вопрос, что из нужного вам уже готово, а что ещё нет