Это документ о двух вещах: (1) как выглядит приложение/сайт — какие в нём разделы и экраны, и (2) полный бизнес-процесс упаковки реального товара на складе — 3 закреплённых этапа + всё, что после них (по схеме из файла).
Один веб-сервис на VPS (как stock-miniapp): открывается в браузере на 2 планшетах/ПК на складе. У ролей Кладовщик и Координатор разный набор экранов. Ф1 — MVP Ф2 — Честный знак
Главный экран: что происходит прямо сейчас по 2 ИП.
Главный рабочий раздел. Список авто-созданных поставок (1 поставка = 1 артикул продавца).
То, что кладовщик видит во время упаковки. Открывается из поставки.
Справочник для сверки. Связь «артикул = баркод» подтягивается из ВБ автоматически — раздел нужен, чтобы это глазами проверить.
2 термопринтера Xprinter XP-365B по Bluetooth/USB + сканер Urovo SR5600 (HID). Печать из браузера — через приложение-мост на планшете.
Закрытие поставок и разбор «дыр».
У каждого своя учётка. Кто, что видит, и кто как работает.
Серверная кухня — никто из склада её не ждёт.
meta/sgtin) · повторы при ошибкахКогда подключим проверку в Честном знаке.
Кто настраивает один раз.
Зелёным отмечено то, что делает программа сама; синим — то, что делает человек руками.
По API ВБ (раздел «Маркетплейс» → сборочные задания) тянем все новые заказы по ИП Коробейников и ИП Леонтьева. Дальше ИП будет больше.
skus) — поэтому ШК печатаем правильный автоматически, искать вручную не надо;requiredMeta содержит sgtin).Программа группирует все взятые заказы по артикулу продавца. Каждый артикул → отдельная ФБС-поставка (POST /api/v3/supplies + добавление в неё заказов). Заказов в поставке сколько угодно, но артикул — ровно один; смешивать артикулы нельзя, даже если их по 1–2 штуки.
Как только группы сформировались — статус меняется на «на сборке» и в ВБ (заказы в поставке), и в нашем приложении. Дальше с поставкой работают на складе.
Заходим в созданную поставку → «Распечатать QR» и «Распечатать ШК» → уходит на 2 принтера Xprinter XP-365B (BT/USB к планшету; печатают по очереди — сначала один, потом второй):
skus в задании) генерируем штрихкод + дата + комплектовщик («Ком-к: ФИО», по фото-образцу). Клеится на банку поверх старого. По одному на единицу;GET …/orders/{id}/sticker). Клеится на транспортную коробку. По одному на заказ.В поставке открывается форма ввода КИЗ. По каждому заказу: скан QR заказа (стикер ВБ) → отрываешь КИЗ с бабины (бабина подписана названием товара) → скан КИЗ (Data Matrix). На самом товаре КИЗ нет — он уйдёт на транспортную коробку.
Скан = программа в кабинете селлера привязывает в этой сохранённой ФБС-поставке код QR (заказ) к КИЗ: PATCH …/orders/{id}/confirm → PUT …/orders/{id}/meta/sgtin {"sgtins":[…]}. Связь «код ↔ заказ ↔ ИП» зафиксирована и в нашей базе, и в ВБ.
Когда в поставке все заказы получили КИЗ — поставка переводится в доставку (PATCH /api/v3/supplies/{id}/deliver, печать QR-листа поставки курьеру ВБ), а бот разрешает открыть новую поставку для работы. Кнопка «Отдать поставку в ВБ» у координатора зелёная только при 100% заказов с КИЗ — поставку с «дырой» отгрузить нельзя.
Родной штрихкод на банке часто устаревший — карточки на ВБ периодически меняются. Актуальный баркод приходит из ВБ (в карточке товара и внутри самого сборочного задания, поле skus). Программа берёт его сама и печатает правильный ШК — ничего вручную сверять не нужно. Но раздел сверки нужен: один раз посмотреть таблицу, увидеть превью наклейки, поймать расхождения.
| Артикул продавца | nmID | Баркод (SKU) | Товар | Статус |
|---|---|---|---|---|
| SER-C-50 | 184320011 | 2039600112345 | Сыворотка C 50 мл | актуален ✅ |
| CHL-X-100 | 207711902 | 2039600198877 | Хлорофилл 100 мл | актуален ✅ |
| CRM-AA-50 | 199004571 | 2039600144556 | Крем Anti-Age 50 мл | на банке старый ⚠ |
Клик по строке → карточка: фото, история баркодов, превью наклейки ШК.
К планшету по Bluetooth в режиме HID: один раз сканируешь штрихкод «HID MODE» из инструкции → планшет видит сканер как клавиатуру. Веб-форма ничего особого не делает — курсор в поле, скан «печатается» сам, в конце Enter. Один сканер на планшет, драйверы не нужны.
203 dpi, языки TSPL/EPL/ZPL/ESC-POS, подключение USB и Bluetooth, есть SDK под Android/iOS. К планшету вешается до ~5 устройств (через USB-хаб/OTG надёжнее, чем по BT). 2 принтера = 2 «адресата»: задание на QR → принтеру 2, на ШК → принтеру 1.
Браузер сам не печатает на термопринтер с точной разметкой ленты. Решение Ф1: маленькое приложение-мост на планшете (или готовое, типа RawBT), которому веб-страница по локальному HTTP отдаёт макет наклейки (TSPL-команды или картинку 40×30 / 58×40 мм), а оно шлёт это в нужный принтер по USB/BT. Это же решает «очередь»: сначала один принтер, потом второй — мост ставит задания в очередь сам.
Сейчас риск в том, что коды живут отдельно (в таблице), заказы — отдельно (в ВБ), и кто-то должен их свести. В новой схеме QR заказа и КИЗ соединяются в одну секунду, в момент упаковки, и эту связь уже нельзя сломать.
01…21…93…PUT /api/v3/orders/48224/meta/sgtinЕдиная база использованных кодов по всем ИП. Один код = один заказ. Повторно — красный экран, не даёт.
GTIN внутри КИЗ сверяется с артикулом поставки. Код от другой позиции → красный экран.
Поставка уже «знает» свой ИП. Код проверяется и отправляется через статичный IP именно этого ИП. ИП полностью изолированы.
Жмёт «Создать поставки ФБС» (или это уже сделал фон). Видит поставки дня по каждому ИП: сколько, что срочно.
Разбирает «проблемные» сразу: заменить единицу → в очередь, либо «отменить в ВБ». Не копит до вечера.
Поставка зелёная? → «Отдать в ВБ» → печать QR поставки → курьеру. Серая? → закрыть «дыры» по списку, потом отдать.
Программа сама шлёт в Telegram: «Поставка WB-GI-… отгружена, N заказов, все с КИЗ ✅». Открывается следующая поставка.
Кладовщик, координатор, админ — каждый входит под собой (логин+пароль, или PIN / бейдж к сканеру). Из учётки берётся ФИО — оно идёт на наклейку ШК («Ком-к: ФИО») и во всю статистику. Один планшет — несколько людей по очереди (выбрал себя на старте смены).
Для каждой роли — галочками, какие разделы видны и доступны. Базовые роли:
Раздел «Пользователи»: создать → выбрать роль (или кастом) → отметить разделы → задать вход. Админов может быть несколько.
Главное число — обработано единиц ÷ время = ед./час (и обратное: сек на единицу). По каждому кладовщику и по смене.
| Кладовщик | Единиц | В сборке | Ед./час | Сек/ед. | 🔴 | Поставок |
|---|---|---|---|---|---|---|
| Алишер Р. | 312 | 5 ч 40 м | 55 | 65 с | 3 | 6 |
| Махмудов | 244 | 4 ч 55 м | 50 | 72 с | 2 | 5 |
| Бахтиёр К. | 198 | 4 ч 10 м | 47 | 76 с | 7 | 4 |
| Смена | 754 | 14 ч 45 м | 51 | 70 с | 12 | 15 |
Все запросы за ИП Коробейников — всегда через IP A, за ИП Леонтьева — через IP B. Никогда не пересекаются. Реализуем как 2 мини-VPS (на AEZA, ~150–300 ₽/мес каждый) с прокси на каждом; в конфиге Станции КИЗ — отдельный прокси на ИП. Каждый новый ИП = ещё один статичный IP. Особенно критично для будущей интеграции с Честным знаком и СБИС — там привязку IP↔юрлицо делаем обязательной, поэтому закладываем сразу.
GET /api/v3/orders/new — задания · POST /api/v3/supplies + добавить заказы · GET …/orders/{id}/sticker — QR заказа · PATCH …/confirm · PUT …/meta/sgtin — привязка КИЗ · GET …/orders — сверка · PATCH /api/v3/supplies/{id}/deliver · GET /api/v3/supplies/{id}/barcode — QR поставки.
auth/key + auth/simpleSignIn (УКЭП ИП, токен ~10 ч) · cises/info — статус кода (нужен INTRODUCED = «в обороте» и владелец = ИНН ИП).
Плохой код сам отвалится на сборке: кладовщик оторвал → пикнул → 🔴 «в брак, оторви следующую» → выбросил, взял другую. Искать не надо.
Проверка на приёмке тут — чтобы заранее знать «на бабине №А ~3 плохих» и дозаказать коды, пока не остался без них.
Когда банки приходят с наклеенным КИЗ от производства — это отдельный поток, и у вас под него уже есть программа (скан КИЗ с банки → поиск оригинала с криптохвостом в PDF). В Станцию КИЗ он не входит. Если позже захотите перенести и его — на приёмке банки сканируем по ячейкам, плохую сразу в карантин.
Программа показывает причину:
| Действие | Где / кто | Время | Кто-то ждёт? |
|---|---|---|---|
| Тянем поставки из ВБ + дробим по артикулу | сервер, фон / по кнопке | секунды | нет |
| Печать QR ВБ + ШК на 2 принтера (на всю поставку) | планшет, при входе в поставку | ~как сейчас печать стикеров | фоном печатает, можно начинать |
| Вход в смену | кладовщик, планшет | ~5 сек | — |
| Скан QR заказа | кладовщик | ~1 сек | нет |
| Скан КИЗ (новый шаг) | кладовщик | ~1 сек | нет (<0,3 сек проверка) |
| Наклеил ШК+QR+КИЗ, упаковал, положил | кладовщик | ~3–5 сек | — |
| Отправка КИЗ в ВБ | сервер, фон после «бипа» | — | нет |
| Сверка «у всех ли заказов код в ВБ» | сервер, каждые 15–30 мин | — | нет |
| Отдать поставку в ВБ + печать QR поставки | координатор | ~30 сек | — |
| Итого на один заказ ФБС | ~5–7 сек у полки (то же, что сейчас + ~1 сек) | — | |
Жёсткий ручной регламент: на каждый маркированный заказ — в ЛК ВБ → «Сборочные задания» → отсканировать Data Matrix в поле кода → только потом в поставку. Поставку не закрывать, если есть маркированный заказ без кода. Это останавливает «кровотечение» уже сейчас.
Это уже закрывает ~90% потерь. Честный знак на этом этапе не нужен — ВБ сам валидирует код при отгрузке.
По каждому ИП — авторизация в ГИС МТ через его IP и УКЭП (или СБИС). На приёмке прогоняем КИЗ пачкой, отсекаем «код не в обороте / чужой ИНН» до наклейки. Раздел «Карантин». На сборке проверка остаётся мгновенной.
Трекинг вернувшихся единиц и их КИЗ (переиспользовать / списать) · KPI-дашборд (заказов · % с КИЗ · отказов валидации · возвратов на ПВЗ · сэкономлено ₽) · разбор по кладовщикам.
Бо́льшая часть вопросов уже закрыта (✅). Осталось: